language: introduce the requirement to use return to return a value from a function

This commit is contained in:
2023-11-21 04:28:46 -08:00
parent 5540918e7c
commit 0a2d029c5c
27 changed files with 115 additions and 19 deletions

View File

@ -30,6 +30,7 @@ class StubOpEmitter(val compiler: Compiler, val symbol: CompilableSymbol) : Func
fun exit() {
code.localState.popScope()
code.emit(Opcode.None)
code.emit(Opcode.Return)
}
@ -211,6 +212,11 @@ class StubOpEmitter(val compiler: Compiler, val symbol: CompilableSymbol) : Func
}
}
override fun visitReturn(node: Return) {
node.value.visit(this)
code.emit(Opcode.Return)
}
override fun visitSetAssignment(node: SetAssignment) {
val stubVarOrCall = code.localState.resolve(node.symbol)
if (stubVarOrCall.stubVar == null) {