Architecture phase A1.1a. Introduce src/ir/program_index.zig as the single storage owner for declaration-name / import / visibility facts, and move the three low-fanout maps out of the Lowering state bag: - import_flags (owned by ProgramIndex) - module_scopes (borrowed pointer into a core.zig-owned map) - import_graph (borrowed pointer into a core.zig-owned map) Lowering embeds one ProgramIndex by value and reaches every moved fact through self.program_index.<field>; later phases hand collaborator modules a *ProgramIndex instead of *Lowering. 8 call sites in lower.zig + 2 setters in core.zig repointed. No duplicate storage, no fallback path; zig build enforces no missed reference. Mutation-heavy registration (registerStructDecl etc.) stays in Lowering and now writes import_flags through the index. High-fanout maps are deferred to A1.1b. Adds src/ir/program_index.test.zig (init-empty, import_flags round-trip, borrowed-view ownership) wired into the ir.zig barrel. Behavior-preserving: zig build, zig build test, and bash tests/run_examples.sh (350 passed, 0 failed) all green.
62 lines
2.2 KiB
Zig
62 lines
2.2 KiB
Zig
pub const types = @import("types.zig");
|
|
pub const inst = @import("inst.zig");
|
|
pub const module = @import("module.zig");
|
|
pub const print = @import("print.zig");
|
|
pub const interp = @import("interp.zig");
|
|
pub const lower = @import("lower.zig");
|
|
pub const program_index = @import("program_index.zig");
|
|
|
|
pub const TypeId = types.TypeId;
|
|
pub const TypeInfo = types.TypeInfo;
|
|
pub const TypeTable = types.TypeTable;
|
|
pub const StringId = types.StringId;
|
|
pub const StringPool = types.StringPool;
|
|
|
|
pub const Ref = inst.Ref;
|
|
pub const BlockId = inst.BlockId;
|
|
pub const FuncId = inst.FuncId;
|
|
pub const GlobalId = inst.GlobalId;
|
|
pub const Inst = inst.Inst;
|
|
pub const Op = inst.Op;
|
|
pub const Block = inst.Block;
|
|
pub const Function = inst.Function;
|
|
pub const Global = inst.Global;
|
|
pub const ConstantValue = inst.ConstantValue;
|
|
|
|
pub const Module = module.Module;
|
|
pub const Builder = module.Builder;
|
|
pub const ImplTable = module.ImplTable;
|
|
|
|
pub const printModule = print.printModule;
|
|
pub const Interpreter = interp.Interpreter;
|
|
pub const Value = interp.Value;
|
|
pub const Lowering = lower.Lowering;
|
|
pub const ProgramIndex = program_index.ProgramIndex;
|
|
|
|
pub const compiler_hooks = @import("compiler_hooks.zig");
|
|
pub const emit_llvm = @import("emit_llvm.zig");
|
|
pub const LLVMEmitter = emit_llvm.LLVMEmitter;
|
|
|
|
pub const type_bridge = @import("type_bridge.zig");
|
|
pub const resolveAstType = type_bridge.resolveAstType;
|
|
pub const bridgeType = type_bridge.bridgeType;
|
|
|
|
pub const jni_descriptor = @import("jni_descriptor.zig");
|
|
pub const jni_java_emit = @import("jni_java_emit.zig");
|
|
|
|
pub const types_tests = @import("types.test.zig");
|
|
pub const inst_tests = @import("inst.test.zig");
|
|
pub const module_tests = @import("module.test.zig");
|
|
pub const print_tests = @import("print.test.zig");
|
|
pub const interp_tests = @import("interp.test.zig");
|
|
pub const lower_tests = @import("lower.test.zig");
|
|
pub const program_index_tests = @import("program_index.test.zig");
|
|
pub const type_bridge_tests = @import("type_bridge.test.zig");
|
|
pub const emit_llvm_tests = @import("emit_llvm.test.zig");
|
|
pub const jni_descriptor_tests = @import("jni_descriptor.test.zig");
|
|
pub const jni_java_emit_tests = @import("jni_java_emit.test.zig");
|
|
|
|
test {
|
|
@import("std").testing.refAllDecls(@This());
|
|
}
|