From 181d05e0f97e53f92c86c753fe736e3ba102c010 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Tue, 23 Jun 2026 15:05:58 +0000 Subject: [PATCH] WIP: Cross-module recursive_type_set import-merge fix (04_infer.dag:5422/5551 --- src/v1/04_infer.dag | 8 ++++---- src/v1/stage0/src/v1_compiler_infer.rs | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/v1/04_infer.dag b/src/v1/04_infer.dag index b7f73562f4b..23d4ef644a2 100644 --- a/src/v1/04_infer.dag +++ b/src/v1/04_infer.dag @@ -5483,10 +5483,10 @@ fn build_type_env(module: ResolvedModule, parent_index: Map map_insert(acc, b.name, node_type_deps(n: b.resolved, source_indices: source_indices)) ) - let str_bindings = fold(merged.bindings |> map_values, init: empty_map(), f: (acc, b) => + let local_str_bindings = fold(pre_local_env.bindings |> map_values, init: empty_map(), f: (acc, b) => map_insert(acc, b.name, b) ) - let cycle_set_str = detect_type_cycles_kahn(deps_map: all_deps_map, bindings: str_bindings) + let cycle_set_str = detect_type_cycles_kahn(deps_map: all_deps_map, bindings: local_str_bindings) let cycle_set = cycle_set_str |> map(name => intern(table: intern_table, s: name).id) let cross_type_all_names = concat(cycle_set_str, map_keys(compiler_recursive_types)) let cross_type_set_str = fold(cross_type_all_names, init: empty_set(), f: (acc, name) => set_insert(acc, name)) @@ -5575,10 +5575,10 @@ fn build_type_env_unresolved(module: ResolvedModule, parent_index: Map map_values, init: empty_map(), f: (acc, b) => + let local_str_bindings = fold(pre_local_env.bindings |> map_values, init: empty_map(), f: (acc, b) => map_insert(acc, b.name, b) ) - let cycle_set_str = detect_type_cycles_kahn(deps_map: all_deps_map, bindings: str_bindings) + let cycle_set_str = detect_type_cycles_kahn(deps_map: all_deps_map, bindings: local_str_bindings) let cycle_set = cycle_set_str |> map(name => intern(table: intern_table, s: name).id) let cross_type_all_names = concat(cycle_set_str, map_keys(compiler_recursive_types)) let cross_type_set_str = fold(cross_type_all_names, init: empty_set(), f: (acc, name) => set_insert(acc, name)) diff --git a/src/v1/stage0/src/v1_compiler_infer.rs b/src/v1/stage0/src/v1_compiler_infer.rs index ab0f0bd8b9d..8dfdcb92e28 100644 --- a/src/v1/stage0/src/v1_compiler_infer.rs +++ b/src/v1/stage0/src/v1_compiler_infer.rs @@ -12104,7 +12104,7 @@ pub fn build_type_env( ) }, ); - let str_bindings = Rc::new(v1_rt::map_values(&merged.bindings.clone())) + let local_str_bindings = Rc::new(v1_rt::map_values(&pre_local_env.bindings.clone())) .iter() .cloned() .fold( @@ -12113,7 +12113,7 @@ pub fn build_type_env( v1_rt::rc_map_insert(acc, b.name.clone(), b.clone()) }, ); - let cycle_set_str = detect_type_cycles_kahn(all_deps_map.clone(), str_bindings); + let cycle_set_str = detect_type_cycles_kahn(all_deps_map.clone(), local_str_bindings); let cycle_set = Rc::new({ let mut __result = Vec::new(); for name in cycle_set_str.clone().iter().cloned() { @@ -12572,7 +12572,7 @@ pub fn build_type_env_unresolved( ) }, ); - let str_bindings = Rc::new(v1_rt::map_values(&merged.bindings.clone())) + let local_str_bindings = Rc::new(v1_rt::map_values(&pre_local_env.bindings.clone())) .iter() .cloned() .fold(