Initial implementation of unformed state for local variables. (#1387)

Allows unformed state for local variables. Reports a run-time error when an unformed local variable is used.
- Added declaration without initialization for local variables in the parser.
- Made the init expression of VariableDefinition optional.
- Expanded (alive, dead) to (uninitialized, alive, dead) in the Heap.

Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
This commit is contained in:
Zenong Zhang
2022-07-20 16:03:52 -04:00
committed by GitHub
co-authored by Jon Ross-Perkins
parent 04cfcc1dc2
commit 52ee050019
22 changed files with 327 additions and 43 deletions
+5 -1
View File
@@ -53,7 +53,11 @@ void Statement::PrintDepth(int depth, llvm::raw_ostream& out) const {
if (var.is_returned()) {
out << "returned ";
}
out << "var " << var.pattern() << " = " << var.init() << ";";
out << "var " << var.pattern();
if (var.has_init()) {
out << " = " << var.init();
}
out << ";";
break;
}
case StatementKind::ExpressionStatement: