[fine] Fixup let environment
Also handle circular references in types and environments without exploding, and tweak test output a little bit.
This commit is contained in:
parent
ebad7fe295
commit
308114f8cf
4 changed files with 119 additions and 45 deletions
|
|
@ -107,6 +107,7 @@ fn report_semantic_error(semantics: &Semantics, tr: Option<TreeRef>, message: &s
|
|||
}
|
||||
|
||||
if let Some(tr) = tr {
|
||||
println!("About the tree: {:?}", &tree[tr]);
|
||||
println!("The logical parent chain of the tree was:\n");
|
||||
let mut current = Some(tr);
|
||||
while let Some(c) = current {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,10 @@
|
|||
// | LiteralExpression
|
||||
// | Number:'"23"'
|
||||
// | Semicolon:'";"'
|
||||
// | ExpressionStatement
|
||||
// | LetStatement
|
||||
// | Let:'"let"'
|
||||
// | Identifier:'"y"'
|
||||
// | Equal:'"="'
|
||||
// | BinaryExpression
|
||||
// | Identifier
|
||||
// | Identifier:'"x"'
|
||||
|
|
@ -15,9 +18,14 @@
|
|||
// | LiteralExpression
|
||||
// | Number:'"2"'
|
||||
// | Semicolon:'";"'
|
||||
// | ExpressionStatement
|
||||
// | Identifier
|
||||
// | Identifier:'"y"'
|
||||
// | Semicolon:'";"'
|
||||
// |
|
||||
|
||||
let x = 23;
|
||||
x * 2;
|
||||
let y = x * 2;
|
||||
y;
|
||||
|
||||
// @type: 416 f64
|
||||
// @type: 590 f64
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue