Janet implementation of Lox from the book Crafting Interpreters

handle empty return statements

Changed files
+11 -1
lox
test
+1 -1
lox/interpreter.janet
··· 83 83 nil "nil" 84 84 val (string val))) 85 85 [:expr expr] (xprintf (dyn :expr-out @"") "%Q" (evaluate expr)) 86 - [:return word val] (yield (evaluate val)) 86 + [:return word val] (yield (when val (evaluate val))) 87 87 [:if cond then else] (do 88 88 (cond 89 89 (evaluate cond) (execute then)
+10
test/test_main.janet
··· 54 54 52 55 55 102 56 56 `) 57 + (test-stdout (process ` 58 + fun p() { 59 + print 1; 60 + return; 61 + print 2; 62 + } 63 + p(); 64 + `) ` 65 + 1 66 + `) 57 67 58 68 (test-error (process "none = nil;") "Undefined variable 'none'.") 59 69 (test-error (process "print none;") "Undefined variable 'none'.")