From e4b0435946ded78b2d4664bf4cf3cf387fe4a12e Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Fri, 29 Jan 2016 16:06:17 -0700 Subject: parseh understands variable declarations and some initializers such as integers --- src/analyze.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/analyze.cpp') diff --git a/src/analyze.cpp b/src/analyze.cpp index 38b2a8faca..88c9ba0323 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -90,6 +90,8 @@ static AstNode *first_executing_node(AstNode *node) { } ErrorMsg *add_node_error(CodeGen *g, AstNode *node, Buf *msg) { + // if this assert fails, then parseh generated code that + // failed semantic analysis, which isn't supposed to happen assert(!node->owner->c_import_node); ErrorMsg *err = err_msg_create_with_line(node->owner->path, node->line, node->column, @@ -2768,6 +2770,7 @@ static VariableTableEntry *analyze_variable_declaration_raw(CodeGen *g, ImportTa { bool is_const = variable_declaration->is_const; bool is_export = (variable_declaration->visib_mod == VisibModExport); + bool is_extern = variable_declaration->is_extern; TypeTableEntry *explicit_type = nullptr; if (variable_declaration->type != nullptr) { @@ -2812,7 +2815,7 @@ static VariableTableEntry *analyze_variable_declaration_raw(CodeGen *g, ImportTa buf_sprintf("global variable initializer requires constant expression")); } } - } else { + } else if (!is_extern) { add_node_error(g, source_node, buf_sprintf("variables must be initialized")); implicit_type = g->builtin_types.entry_invalid; } -- cgit v1.2.3