|
@@ -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;
|
|
|
|