variable initializations are now mandatory

use `undefined` if you want uninitialized memory
This commit is contained in:
Andrew Kelley
2016-01-25 23:56:46 -07:00
parent b215a3e0b6
commit 4e43973413
8 changed files with 29 additions and 32 deletions
+3 -5
View File
@@ -2625,7 +2625,7 @@ static VariableTableEntry *analyze_variable_declaration_raw(CodeGen *g, ImportTa
}
TypeTableEntry *implicit_type = nullptr;
if (variable_declaration->expr != nullptr) {
if (variable_declaration->expr) {
implicit_type = analyze_expression(g, import, context, explicit_type, variable_declaration->expr);
if (implicit_type->id == TypeTableEntryIdInvalid) {
// ignore the poison value
@@ -2657,10 +2657,8 @@ static VariableTableEntry *analyze_variable_declaration_raw(CodeGen *g, ImportTa
buf_sprintf("global variable initializer requires constant expression"));
}
}
}
if (implicit_type == nullptr && is_const) {
add_node_error(g, source_node, buf_sprintf("const variable missing initialization"));
} else {
add_node_error(g, source_node, buf_sprintf("variables must be initialized"));
implicit_type = g->builtin_types.entry_invalid;
}