Commit 0d1f64b08c

Andrew Kelley <superjoe30@gmail.com>
2017-09-21 07:22:50
parse-c: fix undefined array literals
1 parent 3378487
Changed files (2)
src/parsec.cpp
@@ -2777,7 +2777,7 @@ static void visit_var_decl(Context *c, const VarDecl *var_decl) {
                     init_node = trans_create_node_apint(c, ap_value->getInt());
                     break;
                 case APValue::Uninitialized:
-                    init_node = trans_create_node_symbol_str(c, "undefined");
+                    init_node = trans_create_node(c, NodeTypeUndefinedLiteral);
                     break;
                 case APValue::Float:
                 case APValue::ComplexInt:
@@ -2794,7 +2794,7 @@ static void visit_var_decl(Context *c, const VarDecl *var_decl) {
                     return;
             }
         } else {
-            init_node = trans_create_node_symbol_str(c, "undefined");
+            init_node = trans_create_node(c, NodeTypeUndefinedLiteral);
         }
 
         AstNode *var_node = trans_create_node_var_decl_global(c, is_const, name, var_type, init_node);
test/parsec.zig
@@ -490,4 +490,10 @@ pub fn addCases(cases: &tests.ParseCContext) {
     ,
         \\export fn foo() {}
     );
+
+    cases.add("undefined array global",
+        \\int array[100];
+    ,
+        \\pub var array: [100]c_int = undefined;
+    );
 }