0
@@ -2,7 +2,11 @@ $LOAD_PATH << File.dirname(__FILE__)
0
class BusScheme::Lambda
0
- attr_accessor :body, :formals, :environment
0
+ attr_accessor :body, :formals, :enclosing_scope
0
class BusSchemeLambdaTest < Test::Unit::TestCase
0
@@ -67,15 +71,14 @@ class BusSchemeLambdaTest < Test::Unit::TestCase
0
-# def test_args_work_right
0
-# eval "(define fib (lambda (x)
0
-# (ruby \"p Lambda.scope\")
0
-# (+ (fib (- x 1)) (fib (- x 2))))))"
0
-# assert_evals_to 3, "(fib 3)"
0
+ def test_nested_function_calls_dont_affect_caller
0
+ eval "(define fib (lambda (x)
0
+ (+ (fib (- x 1)) (fib (- x 2))))))"
0
+ assert_evals_to 5, "(fib 5)"
0
def test_lambda_rest_args
0
eval "(define rest (lambda args args))"
0
@@ -104,4 +107,16 @@ class BusSchemeLambdaTest < Test::Unit::TestCase
0
eval "#{"\n" * 7} (define fab 'warble)"
0
assert_equal 7, Lambda[:fab.sym].line
0
+ def test_stack_gets_popped
0
+ eval "(define gimme-trace (lambda () (stacktrace)))"
0
+ eval "(define nest-trace (lambda () (gimme-trace)))"
0
+ assert_equal([[:'gimme-trace'.sym, "(eval)", 0],
0
+ [:'nest-trace'.sym, "(eval)", 0]],
Comments
No one has commented yet.