refactor(ir): extract ErrorAnalysis (error_analysis.zig) for error-set convergence (A5.1 step 2)
Error-set convergence now lives in src/ir/error_analysis.zig behind a *Lowering facade (ErrorAnalysis), mirroring the other domain extractions. Moved verbatim: - convergeInferredErrorSets (whole-program inferred-`!` SCC fix-point), - convergeClosureShapeSets, - collectErrorSites / collectClosureShapes (the AST collectors). Added ErrorFacts (the PLAN-ARCH shape: inferred_error_sets + shape_inferred_sets) + a facts() view over the maps, which stay on Lowering for now (consumers read them via self.*). recordClosureShape and its deep type/shape helper web stay in Lowering; it reaches the moved collectErrorSites via self.errorAnalysis(). Lowering keeps convergeInferredErrorSets / convergeClosureShapeSets as thin pub wrappers (the lowering pipeline + the E1.4b unit test call them); collectErrorSites / collectClosureShapes are deleted (no fallback). New pub: isErrorTagLiteralNode / callTargetName / astIsPureBareInferred / astPureNamedSet / containsTag / namedSetTags / recordClosureShape (the moved collectors / facade reach them). lower.zig net -216 lines. The 2 convergence unit tests (transitive SCC across a try edge; closure-shape union) moved from lower.test.zig to error_analysis.test.zig and now drive the facade directly; the E1.4b test stays in lower.test.zig via the wrapper. Module named error_analysis.zig, NOT errors.zig (src/errors.zig is the DiagnosticList). zig build, zig build test, tests/run_examples.sh (357/0) all green — no .ir churn.
This commit is contained in:
@@ -12,6 +12,7 @@ pub const calls = @import("calls.zig");
|
||||
pub const generics = @import("generics.zig");
|
||||
pub const protocols = @import("protocols.zig");
|
||||
pub const conversions = @import("conversions.zig");
|
||||
pub const error_analysis = @import("error_analysis.zig");
|
||||
pub const semantic_diagnostics = @import("semantic_diagnostics.zig");
|
||||
|
||||
pub const TypeId = types.TypeId;
|
||||
@@ -50,6 +51,8 @@ pub const GenericResolver = generics.GenericResolver;
|
||||
pub const ProtocolResolver = protocols.ProtocolResolver;
|
||||
pub const CoercionResolver = conversions.CoercionResolver;
|
||||
pub const CoercionPlan = conversions.CoercionResolver.CoercionPlan;
|
||||
pub const ErrorAnalysis = error_analysis.ErrorAnalysis;
|
||||
pub const ErrorFacts = error_analysis.ErrorFacts;
|
||||
|
||||
pub const compiler_hooks = @import("compiler_hooks.zig");
|
||||
pub const emit_llvm = @import("emit_llvm.zig");
|
||||
@@ -76,6 +79,7 @@ pub const calls_tests = @import("calls.test.zig");
|
||||
pub const generics_tests = @import("generics.test.zig");
|
||||
pub const protocols_tests = @import("protocols.test.zig");
|
||||
pub const conversions_tests = @import("conversions.test.zig");
|
||||
pub const error_analysis_tests = @import("error_analysis.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");
|
||||
|
||||
Reference in New Issue
Block a user