aboutsummaryrefslogtreecommitdiff
path: root/src/analyze.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2016-02-01 17:05:07 -0700
committerAndrew Kelley <superjoe30@gmail.com>2016-02-01 17:05:07 -0700
commit122b7b99660f2ce354930749ca545b363bf7849d (patch)
tree08cd9acef8f4a8d0a6fc1fca34bee043723eaa23 /src/analyze.cpp
parentc7eb8aaec566588048965e3ebecb1bb792656427 (diff)
downloadzig-122b7b99660f2ce354930749ca545b363bf7849d.tar.gz
zig-122b7b99660f2ce354930749ca545b363bf7849d.zip
c_import top level decl supports pub
See #88
Diffstat (limited to 'src/analyze.cpp')
-rw-r--r--src/analyze.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp
index 13d2212a8d..be67b9c933 100644
--- a/src/analyze.cpp
+++ b/src/analyze.cpp
@@ -1252,6 +1252,13 @@ static void resolve_c_import_decl(CodeGen *g, ImportTableEntry *parent_import, A
child_import->block_context = new_block_context(child_import->root, nullptr);
child_import->importers.append({parent_import, node});
+ if (node->data.c_import.visib_mod != VisibModPrivate) {
+ for (int i = 0; i < parent_import->importers.length; i += 1) {
+ ImporterInfo importer = parent_import->importers.at(i);
+ child_import->importers.append(importer);
+ }
+ }
+
detect_top_level_decl_deps(g, child_import, child_import->root);
analyze_top_level_decls_root(g, child_import, child_import->root);
}
@@ -4743,7 +4750,9 @@ static void collect_expr_decl_deps(CodeGen *g, ImportTableEntry *import, AstNode
collect_expr_decl_deps(g, import, node->data.prefix_op_expr.primary_expr, decl_node);
break;
case NodeTypeFnCallExpr:
- collect_expr_decl_deps(g, import, node->data.fn_call_expr.fn_ref_expr, decl_node);
+ if (!node->data.fn_call_expr.is_builtin) {
+ collect_expr_decl_deps(g, import, node->data.fn_call_expr.fn_ref_expr, decl_node);
+ }
for (int i = 0; i < node->data.fn_call_expr.params.length; i += 1) {
AstNode *arg_node = node->data.fn_call_expr.params.at(i);
collect_expr_decl_deps(g, import, arg_node, decl_node);