From 6877dd8457e972dcf4c995394632f1911ced955e Mon Sep 17 00:00:00 2001 From: "584648456@qq.com" <584648456@qq.com> Date: Thu, 19 Jun 2025 17:05:12 +0800 Subject: [PATCH] Title: void support Promise Description(optional): void support Promise Issue: https://gitee.com/openharmony/arkcompiler_ets_frontend/issues/ICGG8B Signed-off-by: semon <584648456@qq.com> --- ets2panda/checker/types/ets/etsVoidType.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/ets2panda/checker/types/ets/etsVoidType.cpp b/ets2panda/checker/types/ets/etsVoidType.cpp index 0fe7ede620..6199efc56f 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) -- Gitee