From af3686e04740835b0b1c1f4cfe7dfd5975ecf9c1 Mon Sep 17 00:00:00 2001 From: peefy Date: Mon, 21 Oct 2024 13:31:42 +0800 Subject: [PATCH] fix: irrelevant order var load in the lambda Signed-off-by: peefy --- kclvm/evaluator/src/scope.rs | 2 +- test/grammar/schema/irrelevant_order/simple_11/main.k | 9 +++++++++ .../schema/irrelevant_order/simple_11/stdout.golden | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 test/grammar/schema/irrelevant_order/simple_11/main.k create mode 100644 test/grammar/schema/irrelevant_order/simple_11/stdout.golden diff --git a/kclvm/evaluator/src/scope.rs b/kclvm/evaluator/src/scope.rs index 6c143a0df..fea41f3ac 100644 --- a/kclvm/evaluator/src/scope.rs +++ b/kclvm/evaluator/src/scope.rs @@ -544,7 +544,7 @@ impl<'ctx> Evaluator<'ctx> { self.is_local_var(name), ) { // Get variable from the global lazy scope. - (false, false, false) => { + (false, _, false) => { let variable = self.get_variable(name); match self.resolve_variable_level(name) { // Closure variable or local variables diff --git a/test/grammar/schema/irrelevant_order/simple_11/main.k b/test/grammar/schema/irrelevant_order/simple_11/main.k new file mode 100644 index 000000000..58306e7f0 --- /dev/null +++ b/test/grammar/schema/irrelevant_order/simple_11/main.k @@ -0,0 +1,9 @@ +v = f1() + +f0 = lambda { + "value" +} + +f1 = lambda { + {f0 = f0()} +} diff --git a/test/grammar/schema/irrelevant_order/simple_11/stdout.golden b/test/grammar/schema/irrelevant_order/simple_11/stdout.golden new file mode 100644 index 000000000..78a499fb1 --- /dev/null +++ b/test/grammar/schema/irrelevant_order/simple_11/stdout.golden @@ -0,0 +1,2 @@ +v: + f0: value