[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:
John Doty 2024-01-07 08:05:55 -08:00
parent ebad7fe295
commit 308114f8cf
4 changed files with 119 additions and 45 deletions

View file

@ -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 {

View file

@ -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