From 4710c261de4011c1ecf8940c73a716f6c2814afe Mon Sep 17 00:00:00 2001 From: Anton Dalgren Date: Tue, 9 Jun 2026 10:45:33 +0200 Subject: [PATCH] Add missing requires so each src file compiles standalone Each .cr in src/ now declares its own dependencies via require, so crystal build --no-codegen --error-on-warnings -Dpreview_mt -Dexecution_context succeeds for any single file rather than only via the src/raft.cr aggregator. Verified for every src/ file (incl. tui). Suite, format, and ameba all still green. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/raft/http/handler.cr | 2 ++ src/raft/log.cr | 4 ++++ src/raft/log_entry.cr | 2 ++ src/raft/message.cr | 2 ++ src/raft/metrics.cr | 1 + src/raft/node.cr | 8 ++++++++ src/raft/peer.cr | 2 ++ src/raft/server.cr | 4 ++++ src/raft/transport.cr | 3 +++ src/raft/transport/memory_transport.cr | 2 ++ src/raft/transport/tcp_transport.cr | 3 +++ 11 files changed, 33 insertions(+) diff --git a/src/raft/http/handler.cr b/src/raft/http/handler.cr index d63ed54..ee50f59 100644 --- a/src/raft/http/handler.cr +++ b/src/raft/http/handler.cr @@ -1,5 +1,7 @@ require "http/server/handler" require "json" +require "../node" +require "../transport/tcp_transport" module Raft module HTTP diff --git a/src/raft/log.cr b/src/raft/log.cr index db06cd8..f7f4637 100644 --- a/src/raft/log.cr +++ b/src/raft/log.cr @@ -1,3 +1,7 @@ +require "./config" +require "./log_entry" +require "./log/segment" + module Raft class Log(T) getter last_index : UInt64 = 0_u64 diff --git a/src/raft/log_entry.cr b/src/raft/log_entry.cr index 942903d..fa4a840 100644 --- a/src/raft/log_entry.cr +++ b/src/raft/log_entry.cr @@ -1,3 +1,5 @@ +require "./message" + module Raft struct LogEntry(T) getter term : UInt64 diff --git a/src/raft/message.cr b/src/raft/message.cr index 1f706f0..7500416 100644 --- a/src/raft/message.cr +++ b/src/raft/message.cr @@ -1,3 +1,5 @@ +require "./config" + module Raft enum EntryType : UInt8 Normal = 0 diff --git a/src/raft/metrics.cr b/src/raft/metrics.cr index f116984..66eba61 100644 --- a/src/raft/metrics.cr +++ b/src/raft/metrics.cr @@ -1,4 +1,5 @@ require "sync/exclusive" +require "./config" module Raft class Metrics diff --git a/src/raft/node.cr b/src/raft/node.cr index c94ddb2..a51cf21 100644 --- a/src/raft/node.cr +++ b/src/raft/node.cr @@ -1,3 +1,11 @@ +require "./config" +require "./message" +require "./peer" +require "./log_entry" +require "./log" +require "./state_machine" +require "./metrics" + module Raft # Implements the Raft consensus protocol for a single peer in a single # group. Generic over `T`, the application's command type. diff --git a/src/raft/peer.cr b/src/raft/peer.cr index ffd1ef0..0997efb 100644 --- a/src/raft/peer.cr +++ b/src/raft/peer.cr @@ -1,3 +1,5 @@ +require "./config" + module Raft struct Peer enum Role : UInt8 diff --git a/src/raft/server.cr b/src/raft/server.cr index cbec210..682e0e9 100644 --- a/src/raft/server.cr +++ b/src/raft/server.cr @@ -1,4 +1,8 @@ require "sync/shared" +require "./config" +require "./message" +require "./node" +require "./state_machine" module Raft class Server(T) diff --git a/src/raft/transport.cr b/src/raft/transport.cr index 5d38762..67309dd 100644 --- a/src/raft/transport.cr +++ b/src/raft/transport.cr @@ -1,3 +1,6 @@ +require "./config" +require "./message" + module Raft abstract class Transport abstract def outbox : Channel({NodeID, Message}) diff --git a/src/raft/transport/memory_transport.cr b/src/raft/transport/memory_transport.cr index 207f83b..0db433a 100644 --- a/src/raft/transport/memory_transport.cr +++ b/src/raft/transport/memory_transport.cr @@ -1,6 +1,8 @@ require "sync/exclusive" require "sync/shared" +require "../config" require "../message" +require "../transport" module Raft # In-memory transport backed by IO pipes. Wire format is identical to diff --git a/src/raft/transport/tcp_transport.cr b/src/raft/transport/tcp_transport.cr index f97215d..69e09a3 100644 --- a/src/raft/transport/tcp_transport.cr +++ b/src/raft/transport/tcp_transport.cr @@ -1,6 +1,9 @@ require "socket" require "sync/exclusive" require "sync/shared" +require "../config" +require "../message" +require "../transport" module Raft class TCPTransport < Transport