Commit 4bd23aefe7

Andrew Kelley <superjoe30@gmail.com>
2017-09-12 04:58:06
local var
1 parent 373785a
Changed files (2)
src/parsec.cpp
@@ -188,11 +188,11 @@ static AstNode *trans_create_node_array_type(Context *c, AstNode *size_node, Ast
     return node;
 }
 
-static AstNode *trans_create_node_var_decl(Context *c, bool is_const, Buf *var_name, AstNode *type_node,
-        AstNode *init_node)
+static AstNode *trans_create_node_var_decl(Context *c, VisibMod visib_mod, bool is_const, Buf *var_name,
+        AstNode *type_node, AstNode *init_node)
 {
     AstNode *node = trans_create_node(c, NodeTypeVariableDeclaration);
-    node->data.variable_declaration.visib_mod = c->visib_mod;
+    node->data.variable_declaration.visib_mod = visib_mod;
     node->data.variable_declaration.symbol = var_name;
     node->data.variable_declaration.is_const = is_const;
     node->data.variable_declaration.type = type_node;
@@ -200,6 +200,18 @@ static AstNode *trans_create_node_var_decl(Context *c, bool is_const, Buf *var_n
     return node;
 }
 
+static AstNode *trans_create_node_var_decl_global(Context *c, bool is_const, Buf *var_name, AstNode *type_node,
+        AstNode *init_node)
+{
+    return trans_create_node_var_decl(c, c->visib_mod, is_const, var_name, type_node, init_node);
+}
+
+static AstNode *trans_create_node_var_decl_local(Context *c, bool is_const, Buf *var_name, AstNode *type_node,
+        AstNode *init_node)
+{
+    return trans_create_node_var_decl(c, VisibModPrivate, is_const, var_name, type_node, init_node);
+}
+
 
 static AstNode *trans_create_node_inline_fn(Context *c, Buf *fn_name, Buf *var_name, AstNode *src_proto_node) {
     AstNode *fn_def = trans_create_node(c, NodeTypeFnDef);
@@ -268,7 +280,7 @@ static AstNode *get_global(Context *c, Buf *name) {
 static AstNode *add_global_var(Context *c, Buf *var_name, AstNode *value_node) {
     bool is_const = true;
     AstNode *type_node = nullptr;
-    AstNode *node = trans_create_node_var_decl(c, is_const, var_name, type_node, value_node);
+    AstNode *node = trans_create_node_var_decl_global(c, is_const, var_name, type_node, value_node);
     c->root->data.root.top_level_decls.append(node);
     return node;
 }
@@ -1166,7 +1178,7 @@ static AstNode *trans_local_declaration(Context *c, AstNode *block, DeclStmt *st
                 if (type_node == nullptr)
                     return nullptr;
 
-                AstNode *node = trans_create_node_var_decl(c, qual_type.isConstQualified(),
+                AstNode *node = trans_create_node_var_decl_local(c, qual_type.isConstQualified(),
                         buf_create_from_str(decl_name(var_decl)), type_node, init_node);
                 block->data.block.statements.append(node);
                 continue;
@@ -2396,13 +2408,13 @@ static void visit_var_decl(Context *c, const VarDecl *var_decl) {
             init_node = trans_create_node_symbol_str(c, "undefined");
         }
 
-        AstNode *var_node = trans_create_node_var_decl(c, is_const, name, var_type, init_node);
+        AstNode *var_node = trans_create_node_var_decl_global(c, is_const, name, var_type, init_node);
         c->root->data.root.top_level_decls.append(var_node);
         return;
     }
 
     if (is_extern) {
-        AstNode *var_node = trans_create_node_var_decl(c, is_const, name, var_type, nullptr);
+        AstNode *var_node = trans_create_node_var_decl_global(c, is_const, name, var_type, nullptr);
         var_node->data.variable_declaration.is_extern = true;
         c->root->data.root.top_level_decls.append(var_node);
         return;
test/tests.zig
@@ -776,7 +776,7 @@ pub const ParseCContext = struct {
             });
         }
 
-        pub fn addExpectedError(self: &TestCase, text: []const u8) {
+        pub fn addExpectedLine(self: &TestCase, text: []const u8) {
             %%self.expected_lines.append(text);
         }
     };
@@ -901,7 +901,7 @@ pub const ParseCContext = struct {
         tc.addSourceFile("source.h", source);
         comptime var arg_i = 0;
         inline while (arg_i < expected_lines.len) : (arg_i += 1) {
-            tc.addExpectedError(expected_lines[arg_i]);
+            tc.addExpectedLine(expected_lines[arg_i]);
         }
         return tc;
     }