/arkcompiler/ets_frontend/ets2panda/checker/ets/ |
H A D | function_helpers.h | 72 ETSChecker *checker, Substitution *substitution) in InferUntilFail() 82 while (anyChange && substitution->size() < sigParams.size()) { in InferUntilFail() 106 if (checker->EnhanceSubstitutionForType(sigInfo->typeParams, paramType, argType, substitution)) { in InferUntilFail() 109 if (lastSubsititutionSize != substitution->size()) { in InferUntilFail() 110 lastSubsititutionSize = substitution->size(); in InferUntilFail() 120 Substitution *substitution = checker->NewSubstitution(); in BuildImplicitSubstitutionForArguments() local 124 InferUntilFail(signature, arguments, checker, substitution); in BuildImplicitSubstitutionForArguments() 126 if (substitution->size() != sigParams.size()) { in BuildImplicitSubstitutionForArguments() 129 if (auto it = substitution->find(newTypeParam); it != substitution in BuildImplicitSubstitutionForArguments() 71 InferUntilFail(Signature const *const signature, const ArenaVector<ir::Expression *> &arguments, ETSChecker *checker, Substitution *substitution) InferUntilFail() argument 159 auto *substitution = checker->NewSubstitution(); BuildExplicitSubstitutionForArguments() local 206 const Substitution *substitution = MaybeSubstituteTypeParameters() local [all...] |
H A D | typeRelationContext.cpp | 114 const Substitution *substitution, lexer::SourcePosition pos) in CheckInstantiationConstraints() 123 auto typeArg = typeParam->Substitute(relation, substitution); in CheckInstantiationConstraints() 131 auto constraint = typeParam->GetConstraintType()->Substitute(relation, substitution); in CheckInstantiationConstraints() 143 for (auto const &[typeParams, substitution, pos] : records) { in TryCheckConstraints() 144 CheckInstantiationConstraints(checker_, *typeParams, substitution, pos); in TryCheckConstraints() 160 auto *substitution = checker_->NewSubstitution(); in InstantiateType() local 165 ETSChecker::EmplaceSubstituted(substitution, typeParams[idx]->AsETSTypeParameter(), typeArgTypes[idx]); in InstantiateType() 170 checker_->PendingConstraintCheckRecords().push_back({&typeParams, substitution, pos}); in InstantiateType() 173 result_ = type->Substitute(checker_->Relation(), substitution)->AsETSObjectType(); in InstantiateType() 113 CheckInstantiationConstraints(ETSChecker *checker, ArenaVector<Type *> const &typeParams, const Substitution *substitution, lexer::SourcePosition pos) CheckInstantiationConstraints() argument
|
H A D | function.cpp | 65 const Substitution *substitution) in IsCompatibleTypeArgument() 71 auto *constraint = typeParam->GetConstraintType()->Substitute(Relation(), substitution); in IsCompatibleTypeArgument() 94 const size_t index, Substitution *substitution, Type *objectParam) in InsertTypeIntoSubstitution() 98 IsCompatibleTypeArgument(typeParams[index]->AsETSTypeParameter(), objectParam, substitution) && in InsertTypeIntoSubstitution() 100 substitution->emplace(typeParams[index]->AsETSTypeParameter(), objectParam); in InsertTypeIntoSubstitution() 108 const Type *paramType, Substitution *substitution) in EnhanceSubstitutionForGenericType() 140 res = InsertTypeIntoSubstitution(typeParams, paramTypeArgs[j], j, substitution, objectParams[j]); in EnhanceSubstitutionForGenericType() 143 argType->AsETSObjectType()->TypeArguments()[j], substitution); in EnhanceSubstitutionForGenericType() 151 Type *argumentType, Substitution *substitution) in EnhanceSubstitutionForReadonly() 154 substitution); in EnhanceSubstitutionForReadonly() 64 IsCompatibleTypeArgument(ETSTypeParameter *typeParam, Type *typeArgument, const Substitution *substitution) IsCompatibleTypeArgument() argument 93 InsertTypeIntoSubstitution(const ArenaVector<Type *> &typeParams, const Type *typeParam, const size_t index, Substitution *substitution, Type *objectParam) InsertTypeIntoSubstitution() argument 107 EnhanceSubstitutionForGenericType(const ArenaVector<Type *> &typeParams, const Type *argType, const Type *paramType, Substitution *substitution) EnhanceSubstitutionForGenericType() argument 150 EnhanceSubstitutionForReadonly(const ArenaVector<Type *> &typeParams, ETSReadonlyType *paramType, Type *argumentType, Substitution *substitution) EnhanceSubstitutionForReadonly() argument 158 EnhanceSubstitutionForType(const ArenaVector<Type *> &typeParams, Type *paramType, Type *argumentType, Substitution *substitution) EnhanceSubstitutionForType() argument 199 EnhanceSubstitutionForUnion(const ArenaVector<Type *> &typeParams, ETSUnionType *paramUn, Type *argumentType, Substitution *substitution) EnhanceSubstitutionForUnion() argument 239 EnhanceSubstitutionForObject(const ArenaVector<Type *> &typeParams, ETSObjectType *paramType, Type *argumentType, Substitution *substitution) EnhanceSubstitutionForObject() argument 289 EnhanceSubstitutionForArray(const ArenaVector<Type *> &typeParams, ETSArrayType *const paramType, Type *const argumentType, Substitution *const substitution) EnhanceSubstitutionForArray() argument 1504 auto *substitution = NewSubstitution(); AdjustForTypeParameters() local [all...] |
H A D | typeCreation.cpp | 660 auto *substitution = NewSubstitution(); in FunctionTypeToFunctionalInterfaceType() local 661 substitution->emplace(functionN->TypeArguments()[0]->AsETSTypeParameter(), MaybePromotedBuiltinType(retType)); in FunctionTypeToFunctionalInterfaceType() 662 return functionN->Substitute(Relation(), substitution); in FunctionTypeToFunctionalInterfaceType() 672 auto *substitution = NewSubstitution(); in FunctionTypeToFunctionalInterfaceType() local 675 substitution->emplace(funcIface->TypeArguments()[i]->AsETSTypeParameter(), in FunctionTypeToFunctionalInterfaceType() 678 substitution->emplace(funcIface->TypeArguments()[signature->Params().size()]->AsETSTypeParameter(), in FunctionTypeToFunctionalInterfaceType() 680 return funcIface->Substitute(Relation(), substitution); in FunctionTypeToFunctionalInterfaceType()
|
/arkcompiler/ets_frontend/ets2panda/checker/types/ets/ |
H A D | etsTypeParameter.cpp | 106 Type *ETSTypeParameter::Substitute([[maybe_unused]] TypeRelation *relation, const Substitution *substitution) in Substitute() argument 108 if (substitution == nullptr || substitution->empty()) { in Substitute() 111 if (auto repl = substitution->find(GetOriginal()); repl != substitution->end()) { in Substitute()
|
H A D | etsFunctionType.cpp | 99 auto *substitution = relation->GetChecker()->AsETSChecker()->NewSubstitution(); in ProcessSignatures() local 104 target->GetSignatureInfo()->params[ix]->TsType(), substitution); in ProcessSignatures() 109 substitution); in ProcessSignatures() 114 it = it->Substitute(relation, substitution); in ProcessSignatures() 193 ETSFunctionType *ETSFunctionType::Substitute(TypeRelation *relation, const Substitution *substitution) in Substitute() argument 195 if (substitution == nullptr || substitution->empty()) { in Substitute() 205 auto *newSig = sig->Substitute(relation, substitution); in Substitute()
|
H A D | etsArrayType.cpp | 152 Type *ETSArrayType::Substitute(TypeRelation *relation, const Substitution *substitution) in Substitute() argument 154 if (substitution == nullptr || substitution->empty()) { in Substitute() 158 auto *resultElt = element_->Substitute(relation, substitution); in Substitute()
|
H A D | etsObjectType.cpp | 842 static Type *SubstituteVariableType(TypeRelation *relation, const Substitution *substitution, Type *const varType) in SubstituteVariableType() argument 844 auto *substitutedType = varType->Substitute(relation, substitution); in SubstituteVariableType() 854 const Substitution *substitution) in CopyPropertyWithTypeArguments() 858 auto *const copiedPropType = SubstituteVariableType(relation, substitution, varType); in CopyPropertyWithTypeArguments() 879 const Substitution *const substitution) in SubstituteTypeArgs() 885 auto *const newArg = arg->Substitute(relation, substitution); in SubstituteTypeArgs() 958 ETSObjectType *ETSObjectType::Substitute(TypeRelation *relation, const Substitution *substitution, bool cache) in Substitute() argument 960 if (substitution == nullptr || substitution->empty()) { in Substitute() 968 const bool anyChange = SubstituteTypeArgs(relation, newTypeArgs, substitution); in Substitute() 853 CopyPropertyWithTypeArguments(varbinder::LocalVariable *prop, TypeRelation *relation, const Substitution *substitution) CopyPropertyWithTypeArguments() argument 878 SubstituteTypeArgs(TypeRelation *const relation, ArenaVector<Type *> &newTypeArgs, const Substitution *const substitution) SubstituteTypeArgs() argument 1008 Substitute(TypeRelation *relation, const Substitution *substitution) Substitute() argument 1020 auto *substitution = checker->NewSubstitution(); SubstituteArguments() local [all...] |
H A D | etsTupleType.cpp | 140 Type *ETSTupleType::Substitute(TypeRelation *relation, const Substitution *substitution) in Substitute() argument 146 newTypeList.emplace_back(tupleTypeListElement->Substitute(relation, substitution)); in Substitute() 149 auto *newSpreadType = spreadType_ == nullptr ? nullptr : spreadType_->Substitute(relation, substitution); in Substitute()
|
H A D | etsReadonlyType.cpp | 92 Type *ETSReadonlyType::Substitute([[maybe_unused]] TypeRelation *relation, const Substitution *substitution) in Substitute() argument 94 auto *substituted = GetUnderlying()->Substitute(relation, substitution); in Substitute()
|
H A D | etsNonNullishType.cpp | 88 Type *ETSNonNullishType::Substitute([[maybe_unused]] TypeRelation *relation, const Substitution *substitution) in Substitute() argument 90 auto *substituted = GetUnderlying()->Substitute(relation, substitution); in Substitute()
|
H A D | etsReadonlyType.h | 41 Type *Substitute(TypeRelation *relation, const Substitution *substitution) override;
|
H A D | etsArrayType.h | 63 Type *Substitute(TypeRelation *relation, const Substitution *substitution) override;
|
H A D | etsNonNullishType.h | 40 Type *Substitute(TypeRelation *relation, const Substitution *substitution) override;
|
H A D | etsTypeParameter.h | 74 Type *Substitute(TypeRelation *relation, const Substitution *substitution) override;
|
H A D | etsObjectType.h | 387 ETSObjectType *Substitute(TypeRelation *relation, const Substitution *substitution) override; 388 ETSObjectType *Substitute(TypeRelation *relation, const Substitution *substitution, bool cache); 469 bool SubstituteTypeArgs(TypeRelation *relation, ArenaVector<Type *> &newTypeArgs, const Substitution *substitution);
|
H A D | etsTupleType.h | 88 Type *Substitute(TypeRelation *relation, const Substitution *substitution) override;
|
H A D | etsFunctionType.h | 126 ETSFunctionType *Substitute(TypeRelation *relation, const Substitution *substitution) override;
|
H A D | etsUnionType.h | 42 Type *Substitute(TypeRelation *relation, const Substitution *substitution) override;
|
/arkcompiler/ets_frontend/ets2panda/compiler/lowering/ets/ |
H A D | lambdaLowering.cpp | 44 checker::Substitution *substitution = nullptr; member 51 checker::Substitution *substitution = nullptr; member 103 auto *substitution = checker->NewSubstitution(); in CloneTypeParams() local 125 substitution->emplace(oldTypeParam, newTypeParam); in CloneTypeParams() 132 auto *newConstraint = oldConstraint->Substitute(checker->Relation(), substitution); in CloneTypeParams() 138 auto *newDefault = oldDefault->Substitute(checker->Relation(), substitution); in CloneTypeParams() 149 return {newIrTypeParams, substitution}; in CloneTypeParams() 166 auto *newType = capturedVar->TsType()->Substitute(checker->Relation(), calleeParameterInfo.substitution); in CreateLambdaCalleeParameters() 188 auto *newParamType = oldParamType->Substitute(checker->Relation(), calleeParameterInfo.substitution); in CreateLambdaCalleeParameters() 207 checker::Substitution *substitution, in ProcessCalleeMethodBody() 206 ProcessCalleeMethodBody(ir::AstNode *body, checker::ETSChecker *checker, varbinder::Scope *paramScope, checker::Substitution *substitution, ArenaMap<varbinder::Variable *, varbinder::Variable *> const &varMap) ProcessCalleeMethodBody() argument 340 auto *substitution = subst0; // NOTE(gogabr): needed to capture in a lambda later. CreateCalleeMethod() local 346 CalleeParameterInfo cpi {lambda, *info->capturedVars, paramScope, substitution, limit}; CreateCalleeMethod() local 539 CreateLambdaClassFields(public_lib::Context *ctx, ir::ClassDefinition *classDefinition, LambdaInfo const *info, checker::Substitution *substitution) CreateLambdaClassFields() argument 564 CreateLambdaClassConstructor(public_lib::Context *ctx, ir::ClassDefinition *classDefinition, LambdaInfo const *info, checker::Substitution *substitution) CreateLambdaClassConstructor() argument 726 BuildLambdaClass(public_lib::Context *ctx, ArenaVector<checker::Signature *> &lambdaSigs, checker::Substitution *substitution, ArenaVector<checker::Type *> &funcInterfaces) BuildLambdaClass() argument 758 auto *substitution = subst0; // NOTE(gogabr): needed to capture in a lambda later. CreateLambdaClass() local [all...] |
/arkcompiler/ets_frontend/ets2panda/checker/types/ |
H A D | signature.cpp | 27 Signature *Signature::Substitute(TypeRelation *relation, const Substitution *substitution) in Substitute() argument 29 if (substitution == nullptr || substitution->empty()) { in Substitute() 39 auto *newTparam = tparam->Substitute(relation, substitution); in Substitute() 48 auto *newParamType = param->TsType()->Substitute(relation, substitution); in Substitute() 58 auto *newRestType = signatureInfo_->restVar->TsType()->Substitute(relation, substitution); in Substitute() 70 auto *newReturnType = returnType_->Substitute(relation, substitution); in Substitute()
|
/arkcompiler/ets_frontend/ets2panda/checker/ |
H A D | ETSAnalyzerHelpers.h | 70 Substitution *substitution, size_t optionalParameterIndex); 72 ETSObjectType *genericInterfaceType, Substitution *substitution);
|
H A D | ETSAnalyzerHelpers.cpp | 699 Substitution *substitution, size_t optionalParameterIndex) in CreateOptionalSignaturesForFunctionalType() 706 substitution, genericInterfaceType->TypeArguments()[i]->AsETSTypeParameter()->GetOriginal(), in CreateOptionalSignaturesForFunctionalType() 713 substitution, genericInterfaceType->TypeArguments()[i]->AsETSTypeParameter()->GetOriginal(), in CreateOptionalSignaturesForFunctionalType() 718 substitution, in CreateOptionalSignaturesForFunctionalType() 724 return genericInterfaceType->Substitute(checker->Relation(), substitution)->AsETSObjectType(); in CreateOptionalSignaturesForFunctionalType() 728 ETSObjectType *genericInterfaceType, Substitution *substitution) in CreateInterfaceTypeForETSFunctionType() 734 substitution, genericInterfaceType->TypeArguments()[i]->AsETSTypeParameter()->GetOriginal(), in CreateInterfaceTypeForETSFunctionType() 741 substitution, genericInterfaceType->TypeArguments()[i]->AsETSTypeParameter()->GetOriginal(), in CreateInterfaceTypeForETSFunctionType() 743 return genericInterfaceType->Substitute(checker->Relation(), substitution)->AsETSObjectType(); in CreateInterfaceTypeForETSFunctionType() 697 CreateOptionalSignaturesForFunctionalType(ETSChecker *checker, ir::ETSFunctionType *node, ETSObjectType *genericInterfaceType, Substitution *substitution, size_t optionalParameterIndex) CreateOptionalSignaturesForFunctionalType() argument 727 CreateInterfaceTypeForETSFunctionType(ETSChecker *checker, ir::ETSFunctionType *node, ETSObjectType *genericInterfaceType, Substitution *substitution) CreateInterfaceTypeForETSFunctionType() argument
|
H A D | ETSchecker.cpp | 504 auto *substitution = NewSubstitution(); in GlobalBuiltinBoxType() local 505 substitution->emplace(base->TypeArguments()[0]->AsETSTypeParameter(), contents); in GlobalBuiltinBoxType() 506 return base->Substitute(Relation(), substitution); in GlobalBuiltinBoxType()
|
H A D | ETSchecker.h | 363 bool IsCompatibleTypeArgument(ETSTypeParameter *typeParam, Type *typeArgument, const Substitution *substitution); 372 static void EmplaceSubstituted(Substitution *substitution, ETSTypeParameter *tparam, Type *typeArg); 374 Type *argumentType, Substitution *substitution); 376 Type *argumentType, Substitution *substitution); 378 Type *argumentType, Substitution *substitution); 380 Type *argumentType, Substitution *substitution); 382 Type *argumentType, Substitution *substitution); 384 const Type *paramType, Substitution *substitution); 387 const size_t index, Substitution *substitution, Type *objectParam); 608 util::StringView GetHashFromSubstitution(const Substitution *substitution); [all...] |