summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wasm/wasm-binary.cpp3
-rw-r--r--test/lit/binary/prototype-nominal-format.test26
2 files changed, 13 insertions, 16 deletions
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp
index 9cd7e79a7..afad575ce 100644
--- a/src/wasm/wasm-binary.cpp
+++ b/src/wasm/wasm-binary.cpp
@@ -1866,9 +1866,6 @@ void WasmBinaryBuilder::readMemory() {
void WasmBinaryBuilder::readTypes() {
BYN_TRACE("== readTypes\n");
TypeBuilder builder(getU32LEB());
- if (getTypeSystem() == TypeSystem::Nominal && builder.size() > 1) {
- throwError("Nominal type sections must have a single element");
- }
BYN_TRACE("num: " << builder.size() << std::endl);
auto makeType = [&](int32_t typeCode) {
diff --git a/test/lit/binary/prototype-nominal-format.test b/test/lit/binary/prototype-nominal-format.test
index def3e1473..98ed51158 100644
--- a/test/lit/binary/prototype-nominal-format.test
+++ b/test/lit/binary/prototype-nominal-format.test
@@ -1,27 +1,27 @@
;; Test the we can properly parse the prototype nominal binary format that we no
;; longer emit.
-;; RUN: wasm-dis %s.wasm -all | filecheck %s
+;; RUN: wasm-dis %s.wasm -all --nominal | filecheck %s
;; CHECK: (module
-;; CHECK-NEXT: (type $super-struct (struct (field i32)))
-;; CHECK-NEXT: (type $sub-struct (struct (field i32) (field i64)))
-;; CHECK-NEXT: (type $none_=>_ref|$super-struct| (func (result (ref $super-struct))))
-;; CHECK-NEXT: (type $none_=>_ref|$sub-struct| (func (result (ref $sub-struct))))
-;; CHECK-NEXT: (type $none_=>_ref|$super-array| (func (result (ref $super-array))))
-;; CHECK-NEXT: (type $none_=>_ref|$sub-array| (func (result (ref $sub-array))))
-;; CHECK-NEXT: (type $super-array (array (ref $super-struct)))
-;; CHECK-NEXT: (type $sub-array (array (ref $sub-struct)))
-;; CHECK-NEXT: (func $make-super-struct (result (ref $super-struct))
+;; CHECK-NEXT: (type $super-struct (struct_subtype (field i32) data))
+;; CHECK-NEXT: (type $sub-struct (struct_subtype (field i32) (field i64) data))
+;; CHECK-NEXT: (type $none_=>_ref|$super-struct| (func_subtype (result (ref $super-struct)) func))
+;; CHECK-NEXT: (type $none_=>_ref|$sub-struct| (func_subtype (result (ref $sub-struct)) func))
+;; CHECK-NEXT: (type $none_=>_ref|$super-array| (func_subtype (result (ref $super-array)) func))
+;; CHECK-NEXT: (type $none_=>_ref|$sub-array| (func_subtype (result (ref $sub-array)) func))
+;; CHECK-NEXT: (type $super-array (array_subtype (ref $super-struct) data))
+;; CHECK-NEXT: (type $sub-array (array_subtype (ref $sub-struct) data))
+;; CHECK-NEXT: (func $make-super-struct (type $none_=>_ref|$super-struct|) (result (ref $super-struct))
;; CHECK-NEXT: (call $make-sub-struct)
;; CHECK-NEXT: )
-;; CHECK-NEXT: (func $make-sub-struct (result (ref $sub-struct))
+;; CHECK-NEXT: (func $make-sub-struct (type $none_=>_ref|$sub-struct|) (result (ref $sub-struct))
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
-;; CHECK-NEXT: (func $make-super-array (result (ref $super-array))
+;; CHECK-NEXT: (func $make-super-array (type $none_=>_ref|$super-array|) (result (ref $super-array))
;; CHECK-NEXT: (call $make-sub-array)
;; CHECK-NEXT: )
-;; CHECK-NEXT: (func $make-sub-array (result (ref $sub-array))
+;; CHECK-NEXT: (func $make-sub-array (type $none_=>_ref|$sub-array|) (result (ref $sub-array))
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )