From fe215a452d567d533f99eef3de9012659b50d09d Mon Sep 17 00:00:00 2001 From: Richard Feldman Date: Thu, 9 Oct 2025 13:28:02 -0400 Subject: [PATCH] Fix Bool index in Bool.roc --- src/build/builtin_compiler/main.zig | 5 ++--- src/canonicalize/Can.zig | 6 ++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/build/builtin_compiler/main.zig b/src/build/builtin_compiler/main.zig index 04af418dcf..ce015b23a2 100644 --- a/src/build/builtin_compiler/main.zig +++ b/src/build/builtin_compiler/main.zig @@ -46,14 +46,13 @@ pub fn main() !void { const set_roc_source = try std.fs.cwd().readFileAlloc(gpa, "src/build/roc/Set.roc", 1024 * 1024); defer gpa.free(set_roc_source); - // Compile Bool.roc without injecting Bool (it defines Bool itself) - // We still inject Result since Bool.roc might use it + // Compile Bool.roc without injecting anything (it's completely self-contained) const bool_env = try compileModule( gpa, "Bool", bool_roc_source, &.{}, // No module dependencies - .{ .inject_bool = false, .inject_result = true }, + .{ .inject_bool = false, .inject_result = false }, ); defer { bool_env.deinit(); diff --git a/src/canonicalize/Can.zig b/src/canonicalize/Can.zig index e096f8def9..f82f542bcf 100644 --- a/src/canonicalize/Can.zig +++ b/src/canonicalize/Can.zig @@ -171,8 +171,14 @@ pub fn deinit( self.scratch_free_vars.deinit(gpa); } +/// Options for initializing the canonicalizer. +/// Controls which built-in types are injected into the module's scope. pub const InitOptions = struct { + /// Whether to inject the Bool type declaration (`Bool := [True, False]`). + /// Set to false when compiling Bool.roc itself to avoid duplication. inject_bool: bool = true, + /// Whether to inject the Result type declaration (`Result(ok, err) := [Ok(ok), Err(err)]`). + /// Set to false when compiling Result.roc itself (if it exists). inject_result: bool = true, };