summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/passes/Print.cpp82
-rw-r--r--src/wasm-type.h4
-rw-r--r--src/wasm/wasm-binary.cpp4
-rw-r--r--src/wasm/wasm-s-parser.cpp4
-rw-r--r--src/wasm/wat-parser.cpp4
5 files changed, 40 insertions, 58 deletions
diff --git a/src/passes/Print.cpp b/src/passes/Print.cpp
index 81ae1bfc6..7385c18ea 100644
--- a/src/passes/Print.cpp
+++ b/src/passes/Print.cpp
@@ -85,56 +85,38 @@ static bool maybePrintRefShorthand(std::ostream& o, Type type) {
return false;
}
auto heapType = type.getHeapType();
- if (heapType.isBasic()) {
- if (type.isNullable()) {
- switch (heapType.getBasic()) {
- case HeapType::ext:
- o << "externref";
- return true;
- case HeapType::func:
- o << "funcref";
- return true;
- case HeapType::any:
- o << "anyref";
- return true;
- case HeapType::eq:
- o << "eqref";
- return true;
- case HeapType::i31:
- case HeapType::data:
- break;
- case HeapType::string:
- o << "stringref";
- return true;
- case HeapType::stringview_wtf8:
- o << "stringview_wtf8";
- return true;
- case HeapType::stringview_wtf16:
- o << "stringview_wtf16";
- return true;
- case HeapType::stringview_iter:
- o << "stringview_iter";
- return true;
- }
- } else {
- switch (heapType.getBasic()) {
- case HeapType::ext:
- case HeapType::func:
- case HeapType::any:
- case HeapType::eq:
- break;
- case HeapType::i31:
- o << "i31ref";
- return true;
- case HeapType::data:
- o << "dataref";
- return true;
- case HeapType::string:
- case HeapType::stringview_wtf8:
- case HeapType::stringview_wtf16:
- case HeapType::stringview_iter:
- break;
- }
+ if (heapType.isBasic() && type.isNullable()) {
+ switch (heapType.getBasic()) {
+ case HeapType::ext:
+ o << "externref";
+ return true;
+ case HeapType::func:
+ o << "funcref";
+ return true;
+ case HeapType::any:
+ o << "anyref";
+ return true;
+ case HeapType::eq:
+ o << "eqref";
+ return true;
+ case HeapType::i31:
+ o << "i31ref";
+ return true;
+ case HeapType::data:
+ o << "dataref";
+ return true;
+ case HeapType::string:
+ o << "stringref";
+ return true;
+ case HeapType::stringview_wtf8:
+ o << "stringview_wtf8";
+ return true;
+ case HeapType::stringview_wtf16:
+ o << "stringview_wtf16";
+ return true;
+ case HeapType::stringview_iter:
+ o << "stringview_iter";
+ return true;
}
}
return false;
diff --git a/src/wasm-type.h b/src/wasm-type.h
index 7235cda8b..778318794 100644
--- a/src/wasm-type.h
+++ b/src/wasm-type.h
@@ -143,8 +143,8 @@ public:
// │ funcref ║ x │ │ x │ x │ f n │ ┐ Ref
// │ anyref ║ x │ │ x │ x │ f? n │ │ f_unc
// │ eqref ║ x │ │ x │ x │ n │ │ n_ullable
- // │ i31ref ║ x │ │ x │ x │ │ │
- // │ dataref ║ x │ │ x │ x │ │ │
+ // │ i31ref ║ x │ │ x │ x │ n │ │
+ // │ dataref ║ x │ │ x │ x │ n │ │
// ├─ Compound ──╫───┼───┼───┼───┤───────┤ │
// │ Ref ║ │ x │ x │ x │ f? n? │◄┘
// │ Tuple ║ │ x │ │ x │ │
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp
index 1fb43c884..685ad978d 100644
--- a/src/wasm/wasm-binary.cpp
+++ b/src/wasm/wasm-binary.cpp
@@ -1849,10 +1849,10 @@ bool WasmBinaryBuilder::getBasicType(int32_t code, Type& out) {
out = Type(HeapType::eq, Nullable);
return true;
case BinaryConsts::EncodedType::i31ref:
- out = Type(HeapType::i31, NonNullable);
+ out = Type(HeapType::i31, Nullable);
return true;
case BinaryConsts::EncodedType::dataref:
- out = Type(HeapType::data, NonNullable);
+ out = Type(HeapType::data, Nullable);
return true;
case BinaryConsts::EncodedType::stringref:
out = Type(HeapType::string, Nullable);
diff --git a/src/wasm/wasm-s-parser.cpp b/src/wasm/wasm-s-parser.cpp
index 362ba25f9..a7d63a7c6 100644
--- a/src/wasm/wasm-s-parser.cpp
+++ b/src/wasm/wasm-s-parser.cpp
@@ -1179,10 +1179,10 @@ Type SExpressionWasmBuilder::stringToType(const char* str,
return Type(HeapType::eq, Nullable);
}
if (strncmp(str, "i31ref", 6) == 0 && (prefix || str[6] == 0)) {
- return Type(HeapType::i31, NonNullable);
+ return Type(HeapType::i31, Nullable);
}
if (strncmp(str, "dataref", 7) == 0 && (prefix || str[7] == 0)) {
- return Type(HeapType::data, NonNullable);
+ return Type(HeapType::data, Nullable);
}
if (strncmp(str, "stringref", 9) == 0 && (prefix || str[9] == 0)) {
return Type(HeapType::string, Nullable);
diff --git a/src/wasm/wat-parser.cpp b/src/wasm/wat-parser.cpp
index 843e26d08..9e843271f 100644
--- a/src/wasm/wat-parser.cpp
+++ b/src/wasm/wat-parser.cpp
@@ -1343,10 +1343,10 @@ MaybeResult<typename Ctx::TypeT> reftype(Ctx& ctx, ParseInput& in) {
return ctx.makeRefType(ctx.makeEq(), Nullable);
}
if (in.takeKeyword("i31ref"sv)) {
- return ctx.makeRefType(ctx.makeI31(), NonNullable);
+ return ctx.makeRefType(ctx.makeI31(), Nullable);
}
if (in.takeKeyword("dataref"sv)) {
- return ctx.makeRefType(ctx.makeData(), NonNullable);
+ return ctx.makeRefType(ctx.makeData(), Nullable);
}
if (in.takeKeyword("arrayref"sv)) {
return in.err("arrayref not yet supported");