Add back another test revealing a scope error
This commit is contained in:
parent
df41da84b4
commit
8ceaa734d2
2
TODO.md
2
TODO.md
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
## Symbols
|
## Symbols
|
||||||
|
|
||||||
|
* Add some good printf-debugging impls for SymbolTable-related items
|
||||||
|
|
||||||
* the symbol table should probably *only* be for global definitions (maybe rename it to reflect this?)
|
* the symbol table should probably *only* be for global definitions (maybe rename it to reflect this?)
|
||||||
* dealing with variable lookup w/in functions/closures should probably happen in AST -> ReducedAST
|
* dealing with variable lookup w/in functions/closures should probably happen in AST -> ReducedAST
|
||||||
* b/c that's where we go from a string name to a canonical ID (for e.g. 2nd param in 3rd enclosing scope)
|
* b/c that's where we go from a string name to a canonical ID (for e.g. 2nd param in 3rd enclosing scope)
|
||||||
|
@ -62,3 +62,27 @@ fn scopes() {
|
|||||||
eval_assert(scope_ok, "20");
|
eval_assert(scope_ok, "20");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn basic_lambda_evaluation_1() {
|
||||||
|
let source = r#"
|
||||||
|
let q = \(x, y) { x * y }
|
||||||
|
let x = q(5, 2)
|
||||||
|
let y = \(m, n, o) { m + n + o }(1,2,3)
|
||||||
|
(x, y)
|
||||||
|
"#;
|
||||||
|
|
||||||
|
eval_assert(source, r"(10, 6)");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn basic_lambda_evaluation_2() {
|
||||||
|
let source = r#"
|
||||||
|
fn milta() {
|
||||||
|
\(x) { x + 33 }
|
||||||
|
}
|
||||||
|
milta()(10)
|
||||||
|
"#;
|
||||||
|
|
||||||
|
eval_assert(source, "43");
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user