bugfix: return simple structures from dyncall procedures
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Sat, 11 Mar 2023 01:06:37 +0000 (19:06 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Sat, 11 Mar 2023 01:06:37 +0000 (19:06 -0600)
compiler/src/wasm_emit.c

index f73fba2d242adf03f50e384ffe4e5d52a903d56f..1fda5143ef43019c0dadc4f661e3bae1e4cd8ad1 100644 (file)
@@ -4120,6 +4120,11 @@ static void emit_function(OnyxWasmModule* mod, AstFunction* fd) {
 }
 
 static char encode_type_as_dyncall_symbol(Type *t) {
+    if (type_struct_is_just_one_basic_value(t)) {
+        Type *inner = type_struct_is_just_one_basic_value(t);
+        return encode_type_as_dyncall_symbol(inner);
+    }
+
     if (t->kind == Type_Kind_Slice)   return 's';
     if (t->kind == Type_Kind_Pointer) return 'p';
     if (t->kind == Type_Kind_Enum)    return encode_type_as_dyncall_symbol(t->Enum.backing);