Browse Source

Fix `@(default_calling_convention)` check on wasm

gingerBill 2 years ago
parent
commit
356f66784f
1 changed files with 4 additions and 5 deletions
  1. 4 5
      src/checker.cpp

+ 4 - 5
src/checker.cpp

@@ -3889,7 +3889,10 @@ gb_internal void check_collect_value_decl(CheckerContext *c, Ast *decl) {
 					GB_ASSERT(pl->type->kind == Ast_ProcType);
 					auto cc = pl->type->ProcType.calling_convention;
 					if (cc == ProcCC_ForeignBlockDefault) {
-						if (is_arch_wasm()) {
+						cc = ProcCC_CDecl;
+						if (c->foreign_context.default_cc > 0) {
+							cc = c->foreign_context.default_cc;
+						} else if (is_arch_wasm()) {
 							begin_error_block();
 							error(init, "For wasm related targets, it is required that you either define the"
 							            " @(default_calling_convention=<string>) on the foreign block or"
@@ -3897,10 +3900,6 @@ gb_internal void check_collect_value_decl(CheckerContext *c, Ast *decl) {
 							error_line("\tSuggestion: when dealing with normal Odin code (e.g. js_wasm32), use \"contextless\"; when dealing with Emscripten like code, use \"c\"\n");
 							end_error_block();
 						}
-						cc = ProcCC_CDecl;
-						if (c->foreign_context.default_cc > 0) {
-							cc = c->foreign_context.default_cc;
-						}
 					}
 					e->Procedure.link_prefix = c->foreign_context.link_prefix;