Lines Matching full:signature
87 …// Check if the type parameter is in the signature, and the type argument is not already in the re… in InsertTypeIntoSubstitution()
288 Signature *ETSChecker::ValidateParameterlessConstructor(Signature *signature, const lexer::SourcePo… in ValidateParameterlessConstructor() argument
291 std::size_t const parameterCount = signature->MinArgCount(); in ValidateParameterlessConstructor()
300 return signature; in ValidateParameterlessConstructor()
303 bool ETSChecker::CheckOptionalLambdaFunction(ir::Expression *argument, Signature *substitutedSig, s… in CheckOptionalLambdaFunction()
326 bool ETSChecker::ValidateSignatureRequiredParams(Signature *substitutedSig, in ValidateSignatureRequiredParams()
389 bool ETSChecker::CheckInvokable(Signature *substitutedSig, ir::Expression *argument, std::size_t in… in CheckInvokable()
403 bool ETSChecker::ValidateSignatureInvocationContext(Signature *substitutedSig, ir::Expression *argu… in ValidateSignatureInvocationContext()
417 bool ETSChecker::ValidateSignatureRestParams(Signature *substitutedSig, const ArenaVector<ir::Expre… in ValidateSignatureRestParams()
533 Signature *ETSChecker::ValidateSignature( in ValidateSignature()
534 std::tuple<Signature *, const ir::TSTypeParameterInstantiation *, TypeRelationFlag> info, in ValidateSignature() argument
538 auto [signature, typeArguments, flags] = info; in ValidateSignature()
539 …Signature *substitutedSig = MaybeSubstituteTypeParameters(this, signature, typeArguments, argument… in ValidateSignature()
579 Signature *ETSChecker::CollectParameterlessConstructor(ArenaVector<Signature *> &signatures, in CollectParameterlessConstructor()
582 Signature *compatibleSignature = nullptr; in CollectParameterlessConstructor()
610 bool IsSignatureAccessible(Signature *sig, ETSObjectType *containingClass, TypeRelation *relation) in IsSignatureAccessible()
612 …// NOTE(vivienvoros): this check can be removed if signature is implicitly declared as public acco… in IsSignatureAccessible()
650 ArenaVector<Signature *> ETSChecker::CollectSignatures(ArenaVector<Signature *> &signatures, in CollectSignatures()
655 ArenaVector<Signature *> compatibleSignatures(Allocator()->Adapter()); in CollectSignatures()
657 Signature *notVisibleSignature = nullptr; in CollectSignatures()
679 // If there's only one signature, we don't need special checks for boxing/unboxing/widening. in CollectSignatures()
696 …{"Signature ", notVisibleSignature->Function()->Id()->Name(), notVisibleSignature, " is not visibl… in CollectSignatures()
702 Signature *ETSChecker::GetMostSpecificSignature(ArenaVector<Signature *> &compatibleSignatures, in GetMostSpecificSignature()
707 …Signature *mostSpecificSignature = ChooseMostSpecificSignature(compatibleSignatures, argTypeInfere… in GetMostSpecificSignature()
720 Signature *ETSChecker::ValidateSignatures(ArenaVector<Signature *> &signatures, in ValidateSignatures()
753 … ThrowTypeError({"No matching ", signatureKind, " signature for ", ss.str().c_str()}, pos); in ValidateSignatures()
761 ThrowTypeError({"No matching ", signatureKind, " signature"}, pos); in ValidateSignatures()
767 Signature *ETSChecker::FindMostSpecificSignature(const ArenaVector<Signature *> &signatures, in FindMostSpecificSignature()
768 … const ArenaMultiMap<size_t, Signature *> &bestSignaturesForParameter, in FindMostSpecificSignature()
771 Signature *mostSpecificSignature = nullptr; in FindMostSpecificSignature()
778 // Check if signature is most specific for i. parameter type. in FindMostSpecificSignature()
795 // The same signature in FindMostSpecificSignature()
804 static void InitMostSpecificType(const ArenaVector<Signature *> &signatures, [[maybe_unused]] Type … in InitMostSpecificType()
805 [[maybe_unused]] Signature *&prevSig, const size_t idx) in InitMostSpecificType()
818 Type *&mostSpecificType, Signature *&prevSig, in SearchAmongMostSpecificTypes()
819 …std::tuple<const lexer::SourcePosition &, size_t, size_t, size_t, Signature *> info, bool lookForC… in SearchAmongMostSpecificTypes()
846 ArenaMultiMap<size_t, Signature *> ETSChecker::GetSuitableSignaturesForParameter( in GetSuitableSignaturesForParameter()
847 …const std::vector<bool> &argTypeInferenceRequired, size_t paramCount, ArenaVector<Signature *> &si… in GetSuitableSignaturesForParameter()
851 …ArenaMultiMap<size_t /* parameter index */, Signature *> bestSignaturesForParameter(Allocator()->A… in GetSuitableSignaturesForParameter()
865 Signature *prevSig = signatures.front(); in GetSuitableSignaturesForParameter()
887 Signature *ETSChecker::ChooseMostSpecificSignature(ArenaVector<Signature *> &signatures, in ChooseMostSpecificSignature()
905 … [](auto *signature) { return signature->RestVar() == nullptr; }); in ChooseMostSpecificSignature() argument
906 // If there is a zero parameter signature, return that in ChooseMostSpecificSignature()
916 // Else return the signature with the rest parameter in ChooseMostSpecificSignature()
918 … [](auto *signature) { return signature->RestVar() != nullptr; }); in ChooseMostSpecificSignature() argument
922 ArenaMultiMap<size_t /* parameter index */, Signature *> bestSignaturesForParameter = in ChooseMostSpecificSignature()
924 // Find the signature that are most specific for all parameters. in ChooseMostSpecificSignature()
925 …Signature *mostSpecificSignature = FindMostSpecificSignature(signatures, bestSignaturesForParamete… in ChooseMostSpecificSignature()
930 Signature *ETSChecker::ResolveCallExpressionAndTrailingLambda(ArenaVector<Signature *> &signatures, in ResolveCallExpressionAndTrailingLambda()
935 Signature *sig = nullptr; in ResolveCallExpressionAndTrailingLambda()
968 Signature *ETSChecker::ResolveConstructExpression(ETSObjectType *type, const ArenaVector<ir::Expres… in ResolveConstructExpression()
978 void ETSChecker::CheckObjectLiteralArguments(Signature *signature, ArenaVector<ir::Expression *> co… in CheckObjectLiteralArguments() argument
986 if (index >= signature->MinArgCount()) { in CheckObjectLiteralArguments()
987 ASSERT(signature->RestVar()); in CheckObjectLiteralArguments()
988 tp = signature->RestVar()->TsType(); in CheckObjectLiteralArguments()
990 tp = signature->Params()[index]->TsType(); in CheckObjectLiteralArguments()
1013 funcType->AddCallSignature(currentFunc->Function()->Signature()); in BuildMethodSignature()
1040 …ThrowTypeError("Function " + func->Name().Mutf8() + " with this assembly signature already declare… in CheckIdenticalOverloads()
1045 Signature *ETSChecker::ComposeSignature(ir::ScriptFunction *func, SignatureInfo *signatureInfo, Typ… in ComposeSignature()
1048 auto *signature = CreateSignature(signatureInfo, returnType, func); in ComposeSignature() local
1049 signature->SetOwner(Context().ContainingClass()); in ComposeSignature()
1050 signature->SetOwnerVar(nameVar); in ComposeSignature()
1054 signature->AddSignatureFlag(SignatureFlags::NEED_RETURN_TYPE); in ComposeSignature()
1058 signature->AddSignatureFlag(SignatureFlags::THIS_RETURN_TYPE); in ComposeSignature()
1062 signature->AddSignatureFlag(SignatureFlags::ABSTRACT); in ComposeSignature()
1063 signature->AddSignatureFlag(SignatureFlags::VIRTUAL); in ComposeSignature()
1067 signature->AddSignatureFlag(SignatureFlags::STATIC); in ComposeSignature()
1071 signature->AddSignatureFlag(SignatureFlags::CONSTRUCTOR); in ComposeSignature()
1074 if (signature->Owner()->GetDeclNode()->IsFinal() || func->IsFinal()) { in ComposeSignature()
1075 signature->AddSignatureFlag(SignatureFlags::FINAL); in ComposeSignature()
1079 signature->AddSignatureFlag(SignatureFlags::PUBLIC); in ComposeSignature()
1082 signature->AddSignatureFlag(SignatureFlags::INTERNAL_PROTECTED); in ComposeSignature()
1084 signature->AddSignatureFlag(SignatureFlags::INTERNAL); in ComposeSignature()
1087 signature->AddSignatureFlag(SignatureFlags::PROTECTED); in ComposeSignature()
1089 signature->AddSignatureFlag(SignatureFlags::PRIVATE); in ComposeSignature()
1092 return signature; in ComposeSignature()
1269 static void AddSignatureFlags(const ir::ScriptFunction *const func, Signature *const signature) in AddSignatureFlags() argument
1272 signature->AddSignatureFlag(SignatureFlags::ABSTRACT); in AddSignatureFlags()
1273 signature->AddSignatureFlag(SignatureFlags::VIRTUAL); in AddSignatureFlags()
1277 signature->AddSignatureFlag(SignatureFlags::STATIC); in AddSignatureFlags()
1281 signature->AddSignatureFlag(SignatureFlags::CONSTRUCTOR); in AddSignatureFlags()
1284 if (func->Signature()->Owner()->GetDeclNode()->IsFinal() || func->IsFinal()) { in AddSignatureFlags()
1285 signature->AddSignatureFlag(SignatureFlags::FINAL); in AddSignatureFlags()
1289 signature->AddSignatureFlag(SignatureFlags::PUBLIC); in AddSignatureFlags()
1292 signature->AddSignatureFlag(SignatureFlags::INTERNAL_PROTECTED); in AddSignatureFlags()
1294 signature->AddSignatureFlag(SignatureFlags::INTERNAL); in AddSignatureFlags()
1297 signature->AddSignatureFlag(SignatureFlags::PROTECTED); in AddSignatureFlags()
1299 signature->AddSignatureFlag(SignatureFlags::PRIVATE); in AddSignatureFlags()
1303 signature->AddSignatureFlag(SignatureFlags::SETTER); in AddSignatureFlags()
1305 signature->AddSignatureFlag(SignatureFlags::GETTER); in AddSignatureFlags()
1326 auto *signature = ComposeSignature(func, signatureInfo, returnType, nameVar); in BuildFunctionSignature() local
1328 signature->AddSignatureFlag(SignatureFlags::CONSTRUCT); in BuildFunctionSignature()
1330 signature->AddSignatureFlag(SignatureFlags::CALL); in BuildFunctionSignature()
1333 auto *funcType = CreateETSFunctionType(func, signature, funcName); in BuildFunctionSignature()
1334 func->SetSignature(signature); in BuildFunctionSignature()
1338 AddSignatureFlags(func, signature); in BuildFunctionSignature()
1347 Signature *ETSChecker::CheckEveryAbstractSignatureIsOverridden(ETSFunctionType *target, ETSFunction… in CheckEveryAbstractSignatureIsOverridden()
1373 bool ETSChecker::IsOverridableIn(Signature *signature) in IsOverridableIn() argument
1375 if (signature->HasSignatureFlag(SignatureFlags::PRIVATE)) { in IsOverridableIn()
1380 if (signature->HasSignatureFlag(SignatureFlags::PUBLIC | SignatureFlags::INTERNAL)) { in IsOverridableIn()
1384 return signature->HasSignatureFlag(SignatureFlags::PROTECTED); in IsOverridableIn()
1387 bool ETSChecker::IsMethodOverridesOther(Signature *base, Signature *derived) in IsMethodOverridesOther()
1419 void ETSChecker::CheckThrowMarkers(Signature *source, Signature *target) in CheckThrowMarkers()
1433 OverrideErrorCode ETSChecker::CheckOverride(Signature *signature, Signature *other) in CheckOverride() argument
1436 ASSERT(signature->HasSignatureFlag(SignatureFlags::STATIC)); in CheckOverride()
1444 if (!IsReturnTypeSubstitutable(signature, other)) { in CheckOverride()
1448 if (signature->ProtectionFlag() > other->ProtectionFlag()) { in CheckOverride()
1455 Signature *ETSChecker::AdjustForTypeParameters(Signature *source, Signature *target) in AdjustForTypeParameters()
1475 void ETSChecker::ThrowOverrideError(Signature *signature, Signature *overriddenSignature, in ThrowOverrideError() argument
1497 …ThrowTypeError({signature->Function()->Id()->Name(), signature, " in ", signature->Owner(), " cann… in ThrowOverrideError()
1500 signature->Function()->Start()); in ThrowOverrideError()
1503 bool ETSChecker::CheckOverride(Signature *signature, ETSObjectType *site) in CheckOverride() argument
1505 …auto *target = site->GetProperty(signature->Function()->Id()->Name(), PropertySearchFlags::SEARCH_… in CheckOverride()
1513 auto *itSubst = AdjustForTypeParameters(signature, it); in CheckOverride()
1521 CheckThrowMarkers(itSubst, signature); in CheckOverride()
1523 if ((itSubst->Function()->IsSetter() && !signature->Function()->IsSetter()) || in CheckOverride()
1524 (itSubst->Function()->IsGetter() && !signature->Function()->IsGetter())) { in CheckOverride()
1528 if (!IsMethodOverridesOther(itSubst, signature)) { in CheckOverride()
1532 if (auto err = CheckOverride(signature, itSubst); err != OverrideErrorCode::NO_ERROR) { in CheckOverride()
1533 ThrowOverrideError(signature, it, err); in CheckOverride()
1536 if (signature->Owner()->HasObjectFlag(ETSObjectFlags::INTERFACE) && in CheckOverride()
1540 signature->Function()->Start()); in CheckOverride()
1550 void ETSChecker::CheckOverride(Signature *signature) in CheckOverride() argument
1552 auto *owner = signature->Owner(); in CheckOverride()
1560 isOverriding |= CheckInterfaceOverride(this, interface, signature); in CheckOverride()
1565 isOverriding |= CheckOverride(signature, iter); in CheckOverride()
1568 isOverriding |= CheckInterfaceOverride(this, interface, signature); in CheckOverride()
1574 if (!isOverriding && signature->Function()->IsOverride()) { in CheckOverride()
1575 …ThrowTypeError({"Method ", signature->Function()->Id()->Name(), signature, " in ", signature->Owne… in CheckOverride()
1577 signature->Function()->Start()); in CheckOverride()
1581 Signature *ETSChecker::GetSignatureFromMethodDefinition(const ir::MethodDefinition *methodDef) in GetSignatureFromMethodDefinition()
1595 … Signature *signature, const lexer::SourcePosition &pos, in ValidateSignatureAccessibility() argument
1599 (!signature->HasSignatureFlag(SignatureFlags::PRIVATE) && in ValidateSignatureAccessibility()
1600 !signature->HasSignatureFlag(SignatureFlags::PROTECTED))) { in ValidateSignatureAccessibility()
1605 bool isContainingSignatureInherited = containingClass->IsSignatureInherited(signature); in ValidateSignatureAccessibility()
1613 signature->Function()->IsPrivate() && !enclosingFunc->IsPrivate()) { in ValidateSignatureAccessibility()
1625 bool isSignatureInherited = callee->IsSignatureInherited(signature); in ValidateSignatureAccessibility()
1627 if (!signature->HasSignatureFlag(SignatureFlags::PRIVATE) && in ValidateSignatureAccessibility()
1628 …((signature->HasSignatureFlag(SignatureFlags::PROTECTED) && containingClass->IsDescendantOf(callee… in ValidateSignatureAccessibility()
1635 …ThrowTypeError({"Signature ", signature->Function()->Id()->Name(), signature, " is not visible her… in ValidateSignatureAccessibility()
1697 bool ETSChecker::AreOverrideEquivalent(Signature *const s1, Signature *const s2) in AreOverrideEquivalent()
1699 // Two functions, methods or constructors M and N have the same signature if in AreOverrideEquivalent()
1708 bool ETSChecker::IsReturnTypeSubstitutable(Signature *const s1, Signature *const s2) in IsReturnTypeSubstitutable()
1789 if (!asyncFunc->Signature()->HasSignatureFlag(SignatureFlags::NEED_RETURN_TYPE)) { in CreateAsyncImplMethod()
2056 ThrowTypeError({"No matching call signature with trailing lambda"}, callExpr->Start()); in EnsureValidCurlyBrace()