From da7e99a4ff129ca3b0ca23ed008d8c5ea29a54dd Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Sat, 16 Jan 2021 16:35:47 +0300 Subject: feat(tazjin/rlox): Use variable depth for env lookup Finishes the binding implementation from https://craftinginterpreters.com/resolving-and-binding.html Change-Id: I1e2c1f4139d9e77ce0b99e38db26edd4cdb56ad2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2404 Reviewed-by: tazjin Tested-by: BuildkiteCI --- users/tazjin/rlox/src/interpreter/tests.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'users/tazjin/rlox/src/interpreter') diff --git a/users/tazjin/rlox/src/interpreter/tests.rs b/users/tazjin/rlox/src/interpreter/tests.rs index 875116593e..4698583dfc 100644 --- a/users/tazjin/rlox/src/interpreter/tests.rs +++ b/users/tazjin/rlox/src/interpreter/tests.rs @@ -1,10 +1,13 @@ use super::*; +use crate::resolver; /// Evaluate a code snippet, returning a value. fn parse_eval(code: &str) -> Value { let chars: Vec = code.chars().collect(); let tokens = scanner::scan(&chars).expect("could not scan code"); - let program = parser::parse(tokens).expect("could not parse code"); + let mut program = parser::parse(tokens).expect("could not parse code"); + program = resolver::resolve(program).expect("could not resolve code"); + Interpreter::create() .interpret(&program) .expect("could not eval code") -- cgit 1.4.1