diff --git a/ets2panda/checker/ETSAnalyzer.cpp b/ets2panda/checker/ETSAnalyzer.cpp index 47e0797c65d9b1f4d5ea63ba08e3dac705a93c21..1f2d54eb0e5ae41c87b2e833f8a648092dc81030 100644 --- a/ets2panda/checker/ETSAnalyzer.cpp +++ b/ets2panda/checker/ETSAnalyzer.cpp @@ -1411,6 +1411,12 @@ Type *ETSAnalyzer::GetReturnType(ir::CallExpression *expr, Type *calleeType) con checker->ValidateSignatureAccessibility(calleeObj, signature, expr->Start()); } + if (IsPromiseType(signature->ReturnType(), checker) && signature->HasFunction() && + signature->Function()->Id()->Name().Is("then")) { + auto *newtype = UnwrapPromiseType(signature->ReturnType()); + signature->SetReturnType(checker->CreatePromiseOf(newtype)); + } + expr->SetSignature(signature); // #22951: this type should not be encoded as a signature flag