From cfcb3f042bf30e56dc8ee3605660a2a272e4e98a Mon Sep 17 00:00:00 2001 From: Adam Wick Date: Thu, 11 Apr 2024 09:15:08 -0700 Subject: [PATCH] Fix broken struct type inference. --- examples/basic/{broken0003.ngr => struct0002.ngr} | 0 src/type_infer/convert.rs | 4 +++- 2 files changed, 3 insertions(+), 1 deletion(-) rename examples/basic/{broken0003.ngr => struct0002.ngr} (100%) diff --git a/examples/basic/broken0003.ngr b/examples/basic/struct0002.ngr similarity index 100% rename from examples/basic/broken0003.ngr rename to examples/basic/struct0002.ngr diff --git a/src/type_infer/convert.rs b/src/type_infer/convert.rs index 85f7224..b16a1e4 100644 --- a/src/type_infer/convert.rs +++ b/src/type_infer/convert.rs @@ -307,10 +307,12 @@ fn convert_expression( merge_prereq(&mut prereqs, prereq); } + let result_type = ir::TypeOrVar::Structure(type_fields); + constraint_db.push(Constraint::NamedTypeIs( loc.clone(), name.clone().intern(), - ir::TypeOrVar::Structure(type_fields), + result_type.clone(), )); let result = ir::Expression::Construct(loc, result_type.clone(), name.intern(), result_fields);