summaryrefslogtreecommitdiff
path: root/test/example/c-api-kitchen-sink.c
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2021-03-02 23:41:16 +0000
committerGitHub <noreply@github.com>2021-03-02 15:41:16 -0800
commit5f88277c4bddc097d2f073e41488889f02b08103 (patch)
treed669c7c77f9945f696930c3b29c7d67a21a5d274 /test/example/c-api-kitchen-sink.c
parente7c6356c7529c29ef06f4541bc3164659e8917f6 (diff)
downloadbinaryen-5f88277c4bddc097d2f073e41488889f02b08103.tar.gz
binaryen-5f88277c4bddc097d2f073e41488889f02b08103.tar.bz2
binaryen-5f88277c4bddc097d2f073e41488889f02b08103.zip
[Wasm GC] Allow subtyping in arguments to struct.get etc. Fixes #3636 (#3644)
Note that Binaryen "canonicalizes" the type, so in the test output here we end up with $grandchild twice. This is a consequence of us not storing the heap type as an extra field. I can't think of a downside to this canonicalization, aside from losing perfect roundtripping, but I think that's a worthwhile tradeoff for efficiency as we've been thinking so far. Fixes #3636
Diffstat (limited to 'test/example/c-api-kitchen-sink.c')
-rw-r--r--test/example/c-api-kitchen-sink.c28
1 files changed, 21 insertions, 7 deletions
diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c
index 4faf7aa5e..04f552069 100644
--- a/test/example/c-api-kitchen-sink.c
+++ b/test/example/c-api-kitchen-sink.c
@@ -731,13 +731,27 @@ void test_core() {
BinaryenRefEq(module,
BinaryenRefNull(module, BinaryenTypeEqref()),
BinaryenRefNull(module, BinaryenTypeEqref())),
- BinaryenRefIs(module, BinaryenRefIsFunc(), BinaryenRefNull(module, BinaryenTypeAnyref())),
- BinaryenRefIs(module, BinaryenRefIsData(), BinaryenRefNull(module, BinaryenTypeAnyref())),
- BinaryenRefIs(module, BinaryenRefIsI31(), BinaryenRefNull(module, BinaryenTypeAnyref())),
- BinaryenRefAs(module, BinaryenRefAsNonNull(), BinaryenRefNull(module, BinaryenTypeAnyref())),
- BinaryenRefAs(module, BinaryenRefAsFunc(), BinaryenRefNull(module, BinaryenTypeAnyref())),
- BinaryenRefAs(module, BinaryenRefAsData(), BinaryenRefNull(module, BinaryenTypeAnyref())),
- BinaryenRefAs(module, BinaryenRefAsI31(), BinaryenRefNull(module, BinaryenTypeAnyref())),
+ BinaryenRefIs(module,
+ BinaryenRefIsFunc(),
+ BinaryenRefNull(module, BinaryenTypeAnyref())),
+ BinaryenRefIs(module,
+ BinaryenRefIsData(),
+ BinaryenRefNull(module, BinaryenTypeAnyref())),
+ BinaryenRefIs(module,
+ BinaryenRefIsI31(),
+ BinaryenRefNull(module, BinaryenTypeAnyref())),
+ BinaryenRefAs(module,
+ BinaryenRefAsNonNull(),
+ BinaryenRefNull(module, BinaryenTypeAnyref())),
+ BinaryenRefAs(module,
+ BinaryenRefAsFunc(),
+ BinaryenRefNull(module, BinaryenTypeAnyref())),
+ BinaryenRefAs(module,
+ BinaryenRefAsData(),
+ BinaryenRefNull(module, BinaryenTypeAnyref())),
+ BinaryenRefAs(module,
+ BinaryenRefAsI31(),
+ BinaryenRefNull(module, BinaryenTypeAnyref())),
// Exception handling
BinaryenTry(module, NULL, tryBody, catchEvents, 1, catchBodies, 2, NULL),
// (try $try_outer