From 2d86d1f8fb217456d8bcc4b401ce7d143aa36ee9 Mon Sep 17 00:00:00 2001 From: Thomas Lively <7121787+tlively@users.noreply.github.com> Date: Wed, 17 Aug 2022 22:51:27 -0700 Subject: Restore the `extern` heap type (#4898) The GC proposal has split `any` and `extern` back into two separate types, so reintroduce `HeapType::ext` to represent `extern`. Before it was originally removed in #4633, externref was a subtype of anyref, but now it is not. Now that we have separate heaptype type hierarchies, make `HeapType::getLeastUpperBound` fallible as well. --- src/passes/Print.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/passes/Print.cpp') diff --git a/src/passes/Print.cpp b/src/passes/Print.cpp index 87c33ed93..81ae1bfc6 100644 --- a/src/passes/Print.cpp +++ b/src/passes/Print.cpp @@ -88,6 +88,9 @@ static bool maybePrintRefShorthand(std::ostream& o, Type type) { if (heapType.isBasic()) { if (type.isNullable()) { switch (heapType.getBasic()) { + case HeapType::ext: + o << "externref"; + return true; case HeapType::func: o << "funcref"; return true; @@ -115,6 +118,7 @@ static bool maybePrintRefShorthand(std::ostream& o, Type type) { } } else { switch (heapType.getBasic()) { + case HeapType::ext: case HeapType::func: case HeapType::any: case HeapType::eq: -- cgit v1.2.3