language: implement let definitions

This commit is contained in:
alex committed 2023-09-11 04:57:13 -04:00
1 parent 5d53381b82
commit 8f60039d6e
12 files changed
+95 -8

No files matched your search

@@ -39,6 +39,10 @@ class CompilationUnitContext(
private fun definitionValue(definition: Definition): Any = when (definition) {
is FunctionDefinition -> FunctionContext(this, definition)
is LetDefinition -> {
EvaluationVisitor(internalScope.fork("let ${definition.symbol.id}"))
.visit(definition.value)
}
}
private fun processAllImports() {
@@ -30,6 +30,10 @@ class EvaluationVisitor(root: Scope) : NodeVisitor<Any> {
return value
}
override fun visitLetDefinition(node: LetDefinition): Any {
topLevelUsedError("LetDefinition", "CompilationUnitContext")
}
override fun visitSymbolReference(node: SymbolReference): Any =
currentScope.value(node.symbol.id)