aboutsummaryrefslogtreecommitdiff
path: root/src/analyze.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-09-30 18:58:41 -0400
committerAndrew Kelley <superjoe30@gmail.com>2017-09-30 20:21:57 -0400
commitc6295fe9abf5508d522ab4000b577a6f30a98a88 (patch)
treede5ff247f235fbf8f9cfe6f8ad2267c897c4d022 /src/analyze.cpp
parent6db589fff5be05e3e782a34443a1133ebc6ef17d (diff)
downloadzig-c6295fe9abf5508d522ab4000b577a6f30a98a88.tar.gz
zig-c6295fe9abf5508d522ab4000b577a6f30a98a88.zip
remove zigrt
adds test case for #394 partially reverts a32b5929ccf8cbf79396d8924097a1a911985dac
Diffstat (limited to 'src/analyze.cpp')
-rw-r--r--src/analyze.cpp55
1 files changed, 7 insertions, 48 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp
index fbe96fb91f..1a39140e66 100644
--- a/src/analyze.cpp
+++ b/src/analyze.cpp
@@ -2072,11 +2072,10 @@ static void resolve_decl_fn(CodeGen *g, TldFn *tld_fn) {
if (fn_def_node)
g->fn_defs.append(fn_table_entry);
- if (g->have_pub_main && scope_is_root_decls(tld_fn->base.parent_scope) &&
- ((!g->is_test_build && import == g->root_import) ||
- (g->is_test_build && import == g->test_runner_import)))
+ if (scope_is_root_decls(tld_fn->base.parent_scope) &&
+ (import == g->root_import || import->package == g->panic_package))
{
- if (buf_eql_str(&fn_table_entry->symbol_name, "main")) {
+ if (g->have_pub_main && buf_eql_str(&fn_table_entry->symbol_name, "main")) {
g->main_fn = fn_table_entry;
if (tld_fn->base.visib_mod != VisibModExport) {
@@ -2088,13 +2087,12 @@ static void resolve_decl_fn(CodeGen *g, TldFn *tld_fn) {
buf_ptr(&actual_return_type->name)));
}
}
- } else if (buf_eql_str(&fn_table_entry->symbol_name, "panic")) {
+ } else if ((import->package == g->panic_package || g->have_pub_panic) &&
+ buf_eql_str(&fn_table_entry->symbol_name, "panic"))
+ {
+ g->panic_fn = fn_table_entry;
typecheck_panic_fn(g, fn_table_entry);
}
- } else if (import->package == g->zigrt_package && scope_is_root_decls(tld_fn->base.parent_scope)) {
- if (buf_eql_str(&fn_table_entry->symbol_name, "__zig_panic")) {
- g->extern_panic_fn = fn_table_entry;
- }
}
}
} else if (source_node->type == NodeTypeTestDecl) {
@@ -2272,14 +2270,6 @@ void scan_decls(CodeGen *g, ScopeDecls *decls_scope, AstNode *node) {
tld_fn->extern_lib_name = node->data.fn_proto.lib_name;
add_top_level_decl(g, decls_scope, &tld_fn->base);
- ImportTableEntry *import = get_scope_import(&decls_scope->base);
- if (import == g->root_import && scope_is_root_decls(&decls_scope->base) &&
- buf_eql_str(fn_name, "panic"))
- {
- update_compile_var(g, buf_create_from_str("__zig_panic_implementation_provided"),
- create_const_bool(g, true));
- }
-
break;
}
case NodeTypeUse:
@@ -4606,37 +4596,6 @@ ConstParent *get_const_val_parent(CodeGen *g, ConstExprValue *value) {
return nullptr;
}
-FnTableEntry *get_extern_panic_fn(CodeGen *g) {
- if (g->extern_panic_fn)
- return g->extern_panic_fn;
-
- FnTypeId fn_type_id = {0};
- fn_type_id.cc = CallingConventionCold;
- fn_type_id.param_count = 2;
- fn_type_id.param_info = allocate<FnTypeParamInfo>(2);
- fn_type_id.next_param_index = 0;
- fn_type_id.param_info[0].type = get_pointer_to_type(g, g->builtin_types.entry_u8, true);
- fn_type_id.param_info[1].type = g->builtin_types.entry_usize;
- fn_type_id.return_type = g->builtin_types.entry_unreachable;
-
- TypeTableEntry *fn_type = get_fn_type(g, &fn_type_id);
- assert(!type_is_invalid(fn_type));
-
- FnTableEntry *fn_entry = create_fn_raw(FnInlineAuto, GlobalLinkageIdStrong);
- buf_init_from_str(&fn_entry->symbol_name, "__zig_panic");
-
- TldFn *tld_fn = allocate<TldFn>(1);
- init_tld(&tld_fn->base, TldIdFn, &fn_entry->symbol_name, VisibModPrivate, nullptr, nullptr);
- tld_fn->fn_entry = fn_entry;
-
- g->external_prototypes.put_unique(tld_fn->base.name, &tld_fn->base);
-
- fn_entry->type_entry = fn_type;
-
- g->extern_panic_fn = fn_entry;
- return g->extern_panic_fn;
-}
-
static const TypeTableEntryId all_type_ids[] = {
TypeTableEntryIdMetaType,
TypeTableEntryIdVoid,