From abd7f7960aaea0bd268b7f598657516c0652db41 Mon Sep 17 00:00:00 2001 From: Alek Ratzloff Date: Fri, 11 Feb 2022 11:38:43 -0800 Subject: [PATCH] Fix T and F builtins to be values, not functions * T and F were builtins that were created as functions. They have been changed to just be global values instead, so you don't need to suffix them with ! to get the creamy value inside. Signed-off-by: Alek Ratzloff --- examples/branch.sy | 17 ++++++++++------- src/vm/builtins.rs | 12 +++--------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/examples/branch.sy b/examples/branch.sy index d00dfec..060f83d 100644 --- a/examples/branch.sy +++ b/examples/branch.sy @@ -1,7 +1,10 @@ -0 [ "fail - 0 is not truthy" println! ] [ "OK" println! ] if! -1 [ "OK" println! ] [ "fail - 1 is truthy" println! ] if! -1.1 [ "OK" println! ] [ "fail - 1.1 is truthy" println! ] if! -0.1 [ "OK" println! ] [ "fail - 0.1 is truthy" println! ] if! --0.1 [ "OK" println! ] [ "fail - -0.1 is truthy" println! ] if! --0.0 [ "fail - -0.0 is not truthy" println! ] [ "OK" println! ] if! -0.0 [ "fail - 0.0 is not truthy" println! ] [ "OK" println! ] if! \ No newline at end of file +0 [ "fail - 0 is not truthy" ] [ "OK" ] if! println! +1 [ "OK" ] [ "fail - 1 is truthy" ] if! println! +1.1 [ "OK" ] [ "fail - 1.1 is truthy" ] if! println! +0.1 [ "OK" ] [ "fail - 0.1 is truthy" ] if! println! +-0.1 [ "OK" ] [ "fail - -0.1 is truthy" ] if! println! +-0.0 [ "fail - -0.0 is not truthy" ] [ "OK" ] if! println! +0.0 [ "fail - 0.0 is not truthy" ] [ "OK" ] if! println! + +T [ "OK" ] [ "fail - T should push True to the stack" ] if! println! +F [ "fail - F should push False to the stack" ] [ "OK" ] if! println! \ No newline at end of file diff --git a/src/vm/builtins.rs b/src/vm/builtins.rs index b9b6e32..fa77154 100644 --- a/src/vm/builtins.rs +++ b/src/vm/builtins.rs @@ -23,15 +23,9 @@ impl MachineBuilder { panic!(); }); - self.register_builtin_fun("T", |machine, _| { - machine.stack_push(BoolObj::new(true))?; - Ok(BuiltinExit::Return) - }); - - self.register_builtin_fun("F", |machine, _| { - machine.stack_push(BoolObj::new(false))?; - Ok(BuiltinExit::Return) - }); + // True and false values + self.register_global("T", BoolObj::new(true)); + self.register_global("F", BoolObj::new(false)); // // if