diff --git a/ets2panda/compiler/core/ETSemitter.cpp b/ets2panda/compiler/core/ETSemitter.cpp index bf1a0dcb1933128bc9c1eab349d2bcdccc561830..9baa42b9c1c5c0bbb019473fd473c868d576e2f4 100644 --- a/ets2panda/compiler/core/ETSemitter.cpp +++ b/ets2panda/compiler/core/ETSemitter.cpp @@ -134,6 +134,9 @@ static pandasm::Function GenScriptFunction(const ir::ScriptFunction *scriptFunc, if (scriptFunc->IsConstructor() || scriptFunc->IsStaticBlock()) { func.returnType = pandasm::Type(Signatures::PRIMITIVE_VOID, 0); + } else if (scriptFunc->Signature()->HasSignatureFlag(checker::SignatureFlags::THIS_RETURN_TYPE) && + scriptFunc->Signature()->HasSignatureFlag(checker::SignatureFlags::EXTENSION_FUNCTION)) { + func.returnType = PandasmTypeWithRank(paramScope->Params()[0]->TsType()); } else { func.returnType = PandasmTypeWithRank(scriptFunc->Signature()->ReturnType()); }