diff --git a/kclvm/sema/src/resolver/schema.rs b/kclvm/sema/src/resolver/schema.rs index 9825584b6..1164b15c2 100644 --- a/kclvm/sema/src/resolver/schema.rs +++ b/kclvm/sema/src/resolver/schema.rs @@ -285,7 +285,12 @@ impl<'ctx> Resolver<'ctx> { self.clear_config_expr_context(init_stack_depth as usize, false); value_ty } - _ => self.expr(expr), + _ => { + self.ctx.config_expr_context.push(None); + let value_ty = self.expr(expr); + self.ctx.config_expr_context.pop(); + value_ty + } }; self.must_assignable_to( value_ty.clone(), diff --git a/test/grammar/types/args/lambda_types_03/main.k b/test/grammar/types/args/lambda_types_03/main.k new file mode 100644 index 000000000..1fa97edaa --- /dev/null +++ b/test/grammar/types/args/lambda_types_03/main.k @@ -0,0 +1,11 @@ +schema Cluster: + name: str + extra: int + +a: Cluster = { name = "abc", extra = 6 } + +enrich = lambda value { + [a] +} + +result_typesafe: [Cluster] = enrich({name = "abc", extra = 6 }) diff --git a/test/grammar/types/args/lambda_types_03/stdout.golden b/test/grammar/types/args/lambda_types_03/stdout.golden new file mode 100644 index 000000000..379287eeb --- /dev/null +++ b/test/grammar/types/args/lambda_types_03/stdout.golden @@ -0,0 +1,6 @@ +a: + name: abc + extra: 6 +result_typesafe: +- name: abc + extra: 6