diff options
author | Thomas Lively <7121787+tlively@users.noreply.github.com> | 2022-07-20 20:13:18 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-20 20:13:18 -0700 |
commit | da5035f893ce9e046f99cf3ede92b576024aa9da (patch) | |
tree | 9db48e77502a646d74ef1a9d11f9b8f0967ff856 /src/wasm.h | |
parent | 1c53f7dd29e79bc1894959cad817b22f087689f7 (diff) | |
download | binaryen-da5035f893ce9e046f99cf3ede92b576024aa9da.tar.gz binaryen-da5035f893ce9e046f99cf3ede92b576024aa9da.tar.bz2 binaryen-da5035f893ce9e046f99cf3ede92b576024aa9da.zip |
Remove basic reference types (#4802)
Basic reference types like `Type::funcref`, `Type::anyref`, etc. made it easy to
accidentally forget to handle reference types with the same basic HeapTypes but
the opposite nullability. In principle there is nothing special about the types
with shorthands except in the binary and text formats. Removing these shorthands
from the internal type representation by removing all basic reference types
makes some code more complicated locally, but simplifies code globally and
encourages properly handling both nullable and non-nullable reference types.
Diffstat (limited to 'src/wasm.h')
-rw-r--r-- | src/wasm.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/wasm.h b/src/wasm.h index b5d51b84b..99a2d9f94 100644 --- a/src/wasm.h +++ b/src/wasm.h @@ -2036,11 +2036,13 @@ class ElementSegment : public Named { public: Name table; Expression* offset; - Type type = Type::funcref; + Type type = Type(HeapType::func, Nullable); std::vector<Expression*> data; ElementSegment() = default; - ElementSegment(Name table, Expression* offset, Type type = Type::funcref) + ElementSegment(Name table, + Expression* offset, + Type type = Type(HeapType::func, Nullable)) : table(table), offset(offset), type(type) {} ElementSegment(Name table, Expression* offset, @@ -2060,7 +2062,7 @@ public: Address initial = 0; Address max = kMaxSize; - Type type = Type::funcref; + Type type = Type(HeapType::func, Nullable); bool hasMax() { return max != kUnlimitedSize; } void clear() { |