diff --git a/ets2panda/checker/types/ets/etsVoidType.cpp b/ets2panda/checker/types/ets/etsVoidType.cpp index 0fe7ede62002e0d284a5238d309d5957cef10b3d..6199efc56f0f28f7997cddb96e0bdfc2fd6eca64 100644 --- a/ets2panda/checker/types/ets/etsVoidType.cpp +++ b/ets2panda/checker/types/ets/etsVoidType.cpp @@ -14,6 +14,7 @@ */ #include "etsVoidType.h" +#include "etsObjectType.h" namespace ark::es2panda::checker { void ETSVoidType::Identical(TypeRelation *relation, Type *other) @@ -25,7 +26,15 @@ void ETSVoidType::Identical(TypeRelation *relation, Type *other) void ETSVoidType::IsSupertypeOf(TypeRelation *const relation, Type *source) { - relation->Result(source->IsETSUndefinedType()); + if (source->IsETSUndefinedType()) { + relation->Result(true); + } + if (source->IsETSObjectType()) { + auto objectOther = source->AsETSObjectType(); + relation->Result(objectOther->Name().Is("Promise") && + std::any_of(objectOther->TypeArguments().begin(), objectOther->TypeArguments().end(), + [](const auto *t) { return t->IsETSVoidType(); })); + } } bool ETSVoidType::AssignmentSource(TypeRelation *relation, Type *target)