diff --git a/src-self-hosted/stage1.zig b/src-self-hosted/stage1.zig index 1747e049da..baa4c17ed0 100644 --- a/src-self-hosted/stage1.zig +++ b/src-self-hosted/stage1.zig @@ -33,12 +33,6 @@ export fn stage2_panic(ptr: [*]const u8, len: usize) void { @panic(ptr[0..len]); } -// ABI warning -const TranslateMode = extern enum { - import, - translate, -}; - // ABI warning const Error = extern enum { None, @@ -99,14 +93,10 @@ export fn stage2_translate_c( out_errors_len: *usize, args_begin: [*]?[*]const u8, args_end: [*]?[*]const u8, - mode: TranslateMode, resources_path: [*]const u8, ) Error { var errors: []translate_c.ClangErrMsg = undefined; - out_ast.* = translate_c.translate(std.heap.c_allocator, args_begin, args_end, switch (mode) { - .import => translate_c.Mode.import, - .translate => translate_c.Mode.translate, - }, &errors, resources_path) catch |err| switch (err) { + out_ast.* = translate_c.translate(std.heap.c_allocator, args_begin, args_end, &errors, resources_path) catch |err| switch (err) { error.SemanticAnalyzeFail => { out_errors_ptr.* = errors.ptr; out_errors_len.* = errors.len; diff --git a/src-self-hosted/translate_c.zig b/src-self-hosted/translate_c.zig index 384c4fc147..d4a783634c 100644 --- a/src-self-hosted/translate_c.zig +++ b/src-self-hosted/translate_c.zig @@ -7,11 +7,6 @@ const ast = std.zig.ast; const Token = std.zig.Token; usingnamespace @import("clang.zig"); -pub const Mode = enum { - import, - translate, -}; - const CallingConvention = std.builtin.TypeInfo.CallingConvention; pub const ClangErrMsg = Stage2ErrorMsg; @@ -104,7 +99,6 @@ const Context = struct { source_manager: *ZigClangSourceManager, decl_table: DeclTable, global_scope: *Scope.Root, - mode: Mode, ptr_params: std.BufSet, clang_context: *ZigClangASTContext, @@ -133,7 +127,6 @@ pub fn translate( backing_allocator: *std.mem.Allocator, args_begin: [*]?[*]const u8, args_end: [*]?[*]const u8, - mode: Mode, errors: *[]ClangErrMsg, resources_path: [*]const u8, ) !*ast.Tree { @@ -185,7 +178,6 @@ pub fn translate( .err = undefined, .decl_table = DeclTable.init(arena), .global_scope = try arena.create(Scope.Root), - .mode = mode, .ptr_params = std.BufSet.init(arena), .clang_context = ZigClangASTUnit_getASTContext(ast_unit).?, }; @@ -262,7 +254,7 @@ fn visitFnDecl(c: *Context, fn_decl: *const ZigClangFunctionDecl) Error!void { .storage_class = storage_class, .scope = &scope, .is_export = switch (storage_class) { - .None => has_body and c.mode != .import, + .None => has_body, .Extern, .Static => false, .PrivateExtern => return failDecl(c, fn_decl_loc, fn_name, "unsupported storage class: private extern", .{}), .Auto => unreachable, // Not legal on functions diff --git a/src/codegen.cpp b/src/codegen.cpp index 5b0899544d..0ba2c23dbe 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -9020,10 +9020,6 @@ void codegen_translate_c(CodeGen *g, Buf *full_path, FILE *out_file, bool use_us init(g); - Stage2TranslateMode trans_mode = buf_ends_with_str(full_path, ".h") ? - Stage2TranslateModeImport : Stage2TranslateModeTranslate; - - ZigList clang_argv = {0}; add_cc_args(g, clang_argv, nullptr, true); @@ -9047,10 +9043,10 @@ void codegen_translate_c(CodeGen *g, Buf *full_path, FILE *out_file, bool use_us if (use_userland_implementation) { err = stage2_translate_c(&ast, &errors_ptr, &errors_len, - &clang_argv.at(0), &clang_argv.last(), trans_mode, resources_path); + &clang_argv.at(0), &clang_argv.last(), resources_path); } else { - err = parse_h_file(g, &root_node, &errors_ptr, &errors_len, &clang_argv.at(0), &clang_argv.last(), - trans_mode, resources_path); + err = parse_h_file(g, &root_node, &errors_ptr, &errors_len, &clang_argv.at(0), + &clang_argv.last(), resources_path); } if (err == ErrorCCompileErrors && errors_len > 0) { diff --git a/src/ir.cpp b/src/ir.cpp index 8b588b5dee..cb854303e4 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -23343,7 +23343,7 @@ static IrInstruction *ir_analyze_instruction_c_import(IrAnalyze *ira, IrInstruct const char *resources_path = buf_ptr(ira->codegen->zig_c_headers_dir); if ((err = parse_h_file(ira->codegen, &root_node, &errors_ptr, &errors_len, - &clang_argv.at(0), &clang_argv.last(), Stage2TranslateModeImport, resources_path))) + &clang_argv.at(0), &clang_argv.last(), resources_path))) { if (err != ErrorCCompileErrors) { ir_add_error_node(ira, node, buf_sprintf("C import failed: %s", err_str(err))); diff --git a/src/translate_c.cpp b/src/translate_c.cpp index eb207231f0..35830e2990 100644 --- a/src/translate_c.cpp +++ b/src/translate_c.cpp @@ -64,8 +64,6 @@ struct TransScopeWhile { struct Context { AstNode *root; - VisibMod visib_mod; - bool want_export; HashMap decl_table; HashMap macro_table; HashMap global_table; @@ -367,7 +365,7 @@ static AstNode *trans_create_node_var_decl(Context *c, VisibMod visib_mod, bool 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); + return trans_create_node_var_decl(c, VisibModPub, 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, @@ -379,7 +377,7 @@ static AstNode *trans_create_node_var_decl_local(Context *c, bool is_const, Buf static AstNode *trans_create_node_inline_fn(Context *c, Buf *fn_name, AstNode *ref_node, AstNode *src_proto_node) { AstNode *fn_def = trans_create_node(c, NodeTypeFnDef); AstNode *fn_proto = trans_create_node(c, NodeTypeFnProto); - fn_proto->data.fn_proto.visib_mod = c->visib_mod; + fn_proto->data.fn_proto.visib_mod = VisibModPub; fn_proto->data.fn_proto.name = fn_name; fn_proto->data.fn_proto.fn_inline = FnInlineAlways; fn_proto->data.fn_proto.return_type = src_proto_node->data.fn_proto.return_type; // TODO ok for these to alias? @@ -4091,10 +4089,10 @@ static void visit_fn_decl(Context *c, const ZigClangFunctionDecl *fn_decl) { ZigClangStorageClass sc = ZigClangFunctionDecl_getStorageClass(fn_decl); if (sc == ZigClangStorageClass_None) { - proto_node->data.fn_proto.visib_mod = c->visib_mod; - proto_node->data.fn_proto.is_export = ZigClangFunctionDecl_hasBody(fn_decl) ? c->want_export : false; + proto_node->data.fn_proto.visib_mod = VisibModPub; + proto_node->data.fn_proto.is_export = ZigClangFunctionDecl_hasBody(fn_decl); } else if (sc == ZigClangStorageClass_Extern || sc == ZigClangStorageClass_Static) { - proto_node->data.fn_proto.visib_mod = c->visib_mod; + proto_node->data.fn_proto.visib_mod = VisibModPub; } else if (sc == ZigClangStorageClass_PrivateExtern) { emit_warning(c, ZigClangFunctionDecl_getLocation(fn_decl), "unsupported storage class: private extern"); return; @@ -5113,18 +5111,11 @@ static void process_preprocessor_entities(Context *c, ZigClangASTUnit *unit) { Error parse_h_file(CodeGen *codegen, AstNode **out_root_node, Stage2ErrorMsg **errors_ptr, size_t *errors_len, const char **args_begin, const char **args_end, - Stage2TranslateMode mode, const char *resources_path) + const char *resources_path) { Context context = {0}; Context *c = &context; c->warnings_on = codegen->verbose_cimport; - if (mode == Stage2TranslateModeImport) { - c->visib_mod = VisibModPub; - c->want_export = false; - } else { - c->visib_mod = VisibModPub; - c->want_export = true; - } c->decl_table.init(8); c->macro_table.init(8); c->global_table.init(8); diff --git a/src/translate_c.hpp b/src/translate_c.hpp index 4eac26ddb5..5b7f1dcdd6 100644 --- a/src/translate_c.hpp +++ b/src/translate_c.hpp @@ -14,6 +14,6 @@ Error parse_h_file(CodeGen *codegen, AstNode **out_root_node, Stage2ErrorMsg **errors_ptr, size_t *errors_len, const char **args_begin, const char **args_end, - Stage2TranslateMode mode, const char *resources_path); + const char *resources_path); #endif diff --git a/src/userland.cpp b/src/userland.cpp index a36dfa69a8..263ef0cbc3 100644 --- a/src/userland.cpp +++ b/src/userland.cpp @@ -9,8 +9,7 @@ Error stage2_translate_c(struct Stage2Ast **out_ast, struct Stage2ErrorMsg **out_errors_ptr, size_t *out_errors_len, - const char **args_begin, const char **args_end, enum Stage2TranslateMode mode, - const char *resources_path) + const char **args_begin, const char **args_end, const char *resources_path) { const char *msg = "stage0 called stage2_translate_c"; stage2_panic(msg, strlen(msg)); diff --git a/src/userland.h b/src/userland.h index 1d01257175..fe3f072ae5 100644 --- a/src/userland.h +++ b/src/userland.h @@ -80,12 +80,6 @@ enum Error { ErrorImportOutsidePkgPath, }; -// ABI warning -enum Stage2TranslateMode { - Stage2TranslateModeImport, - Stage2TranslateModeTranslate, -}; - // ABI warning struct Stage2ErrorMsg { const char *filename_ptr; // can be null @@ -104,8 +98,7 @@ struct Stage2Ast; // ABI warning ZIG_EXTERN_C enum Error stage2_translate_c(struct Stage2Ast **out_ast, struct Stage2ErrorMsg **out_errors_ptr, size_t *out_errors_len, - const char **args_begin, const char **args_end, enum Stage2TranslateMode mode, - const char *resources_path); + const char **args_begin, const char **args_end, const char *resources_path); // ABI warning ZIG_EXTERN_C void stage2_free_clang_errors(struct Stage2ErrorMsg *ptr, size_t len);