Home | History | Annotate | Download | only in Sema

Lines Matching full:sema

10 // This file provides Sema routines for C++ overloading.
14 #include "clang/Sema/Overload.h"
26 #include "clang/Sema/Initialization.h"
27 #include "clang/Sema/Lookup.h"
28 #include "clang/Sema/SemaInternal.h"
29 #include "clang/Sema/Template.h"
30 #include "clang/Sema/TemplateDeduction.h"
39 using namespace sema;
43 CreateFunctionRefExpr(Sema &S, FunctionDecl *Fn, NamedDecl *FoundDecl,
71 static bool IsStandardConversion(Sema &S, Expr* From, QualType ToType,
77 static bool IsTransparentUnionStandardConversion(Sema &S, Expr* From,
83 IsUserDefinedConversion(Sema &S, Expr *From, QualType ToType,
91 CompareStandardConversionSequences(Sema &S,
96 CompareQualificationConversions(Sema &S,
101 CompareDerivedToBaseConversions(Sema &S,
569 /// \brief Convert from Sema's representation of template deduction information
572 Sema::TemplateDeductionResult TDK,
579 case Sema::TDK_Success:
580 case Sema::TDK_Invalid:
581 case Sema::TDK_InstantiationDepth:
582 case Sema::TDK_TooManyArguments:
583 case Sema::TDK_TooFewArguments:
586 case Sema::TDK_Incomplete:
587 case Sema::TDK_InvalidExplicitArguments:
591 case Sema::TDK_NonDeducedMismatch: {
600 case Sema::TDK_Inconsistent:
601 case Sema::TDK_Underqualified: {
611 case Sema::TDK_SubstitutionFailure:
621 case Sema::TDK_FailedOverloadResolution:
625 case Sema::TDK_MiscellaneousDeductionFailure:
633 switch (static_cast<Sema::TemplateDeductionResult>(Result)) {
634 case Sema::TDK_Success:
635 case Sema::TDK_Invalid:
636 case Sema::TDK_InstantiationDepth:
637 case Sema::TDK_Incomplete:
638 case Sema::TDK_TooManyArguments:
639 case Sema::TDK_TooFewArguments:
640 case Sema::TDK_InvalidExplicitArguments:
641 case Sema::TDK_FailedOverloadResolution:
644 case Sema::TDK_Inconsistent:
645 case Sema::TDK_Underqualified:
646 case Sema::TDK_NonDeducedMismatch:
651 case Sema::TDK_SubstitutionFailure:
661 case Sema::TDK_MiscellaneousDeductionFailure:
673 switch (static_cast<Sema::TemplateDeductionResult>(Result)) {
674 case Sema::TDK_Success:
675 case Sema::TDK_Invalid:
676 case Sema::TDK_InstantiationDepth:
677 case Sema::TDK_TooManyArguments:
678 case Sema::TDK_TooFewArguments:
679 case Sema::TDK_SubstitutionFailure:
680 case Sema::TDK_NonDeducedMismatch:
681 case Sema::TDK_FailedOverloadResolution:
684 case Sema::TDK_Incomplete:
685 case Sema::TDK_InvalidExplicitArguments:
688 case Sema::TDK_Inconsistent:
689 case Sema::TDK_Underqualified:
693 case Sema::TDK_MiscellaneousDeductionFailure:
701 switch (static_cast<Sema::TemplateDeductionResult>(Result)) {
702 case Sema::TDK_Success:
703 case Sema::TDK_Invalid:
704 case Sema::TDK_InstantiationDepth:
705 case Sema::TDK_TooManyArguments:
706 case Sema::TDK_TooFewArguments:
707 case Sema::TDK_Incomplete:
708 case Sema::TDK_InvalidExplicitArguments:
709 case Sema::TDK_Inconsistent:
710 case Sema::TDK_Underqualified:
711 case Sema::TDK_NonDeducedMismatch:
712 case Sema::TDK_FailedOverloadResolution:
715 case Sema::TDK_SubstitutionFailure:
719 case Sema::TDK_MiscellaneousDeductionFailure:
727 switch (static_cast<Sema::TemplateDeductionResult>(Result)) {
728 case Sema::TDK_Success:
729 case Sema::TDK_Invalid:
730 case Sema::TDK_InstantiationDepth:
731 case Sema::TDK_Incomplete:
732 case Sema::TDK_TooManyArguments:
733 case Sema::TDK_TooFewArguments:
734 case Sema::TDK_InvalidExplicitArguments:
735 case Sema::TDK_SubstitutionFailure:
736 case Sema::TDK_FailedOverloadResolution:
739 case Sema::TDK_Inconsistent:
740 case Sema::TDK_Underqualified:
741 case Sema::TDK_NonDeducedMismatch:
745 case Sema::TDK_MiscellaneousDeductionFailure:
753 switch (static_cast<Sema::TemplateDeductionResult>(Result)) {
754 case Sema::TDK_Success:
755 case Sema::TDK_Invalid:
756 case Sema::TDK_InstantiationDepth:
757 case Sema::TDK_Incomplete:
758 case Sema::TDK_TooManyArguments:
759 case Sema::TDK_TooFewArguments:
760 case Sema::TDK_InvalidExplicitArguments:
761 case Sema::TDK_SubstitutionFailure:
762 case Sema::TDK_FailedOverloadResolution:
765 case Sema::TDK_Inconsistent:
766 case Sema::TDK_Underqualified:
767 case Sema::TDK_NonDeducedMismatch:
771 case Sema::TDK_MiscellaneousDeductionFailure:
779 if (static_cast<Sema::TemplateDeductionResult>(Result) ==
780 Sema::TDK_FailedOverloadResolution)
811 void save(Sema &S, Expr *&E) {
834 checkPlaceholderForOverload(Sema &S, Expr *&E,
864 static bool checkArgPlaceholdersForOverload(Sema &S,
908 Sema::OverloadKind
909 Sema::CheckOverload(Scope *S, FunctionDecl *New, const LookupResult &Old,
971 bool Sema::IsOverload(FunctionDecl *New, FunctionDecl *Old,
1106 bool Sema::isFunctionConsideredUnavailable(FunctionDecl *FD) {
1115 TryUserDefinedConversion(Sema &S, Expr *From, QualType ToType,
1221 TryImplicitConversion(Sema &S, Expr *From, QualType ToType,
1276 Sema::TryImplicitConversion(Expr *From, QualType ToType,
1295 Sema::PerformImplicitConversion(Expr *From, QualType ToType,
1302 Sema::PerformImplicitConversion(Expr *From, QualType ToType,
1327 bool Sema
1378 static bool IsVectorConversion(Sema &S, QualType FromType,
1418 static bool tryAtomicConversion(Sema &S, Expr *From, QualType ToType,
1431 static bool IsStandardConversion(Sema &S, Expr* From, QualType ToType,
1709 IsTransparentUnionStandardConversion(Sema &S, Expr* From,
1735 bool Sema::IsIntegralPromotion(Expr *From, QualType FromType, QualType ToType) {
1882 bool Sema::IsFloatingPointPromotion(QualType FromType, QualType ToType) {
1915 bool Sema::IsComplexPromotion(QualType FromType, QualType ToType) {
2009 bool Sema::IsPointerConversion(Expr *From, QualType FromType, QualType ToType,
2162 bool Sema::isObjCPointerConversion(QualType FromType, QualType ToType,
2358 bool Sema::isObjCWritebackConversion(QualType FromType, QualType ToType,
2416 bool Sema::IsBlockPointerConversion(QualType FromType, QualType ToType,
2518 void Sema::HandleFunctionTypeMismatch(PartialDiagnostic &PDiag,
2608 bool Sema::FunctionParamTypesAreEqual(const FunctionProtoType *OldType,
2631 bool Sema::CheckPointerConversion(Expr *From, QualType ToType,
2702 bool Sema::IsMemberPointerConversion(Expr *From, QualType FromType,
2745 bool Sema::CheckMemberPointerConversion(Expr *From, QualType ToType,
2824 Sema::IsQualificationConversion(QualType FromType, QualType ToType,
2905 static bool tryAtomicConversion(Sema &S, Expr *From, QualType ToType,
2942 IsInitializerListConstructorConversion(Sema &S, Expr *From, QualType ToType,
3028 IsUserDefinedConversion(Sema &S, Expr *From, QualType ToType,
3248 Sema::DiagnoseMultipleUserDefinedConversion(Expr *From, QualType ToType) {
3274 compareConversionFunctions(Sema &S, FunctionDecl *Function1,
3315 CompareImplicitConversionSequences(Sema &S,
3497 CompareStandardConversionSequences(Sema &S,
3670 CompareQualificationConversions(Sema &S,
3783 CompareDerivedToBaseConversions(Sema &S,
3992 Sema::ReferenceCompareResult
3993 Sema::CompareReferenceRelationship(SourceLocation Loc,
4070 FindConversionForRefInit(Sema &S, ImplicitConversionSequence &ICS,
4123 Sema::Ref_Incompatible)
4199 TryReferenceInit(Sema &S, Expr *Init, QualType DeclType,
4228 Sema::ReferenceCompareResult RefRelationship
4244 RefRelationship >= Sema::Ref_Compatible_With_Added_Qualification) {
4288 RefRelationship == Sema::Ref_Incompatible) {
4316 if (RefRelationship >= Sema::Ref_Compatible_With_Added_Qualification &&
4359 if (!SuppressUserConversions && RefRelationship == Sema::Ref_Incompatible &&
4382 if (RefRelationship == Sema::Ref_Related) {
4405 if (SuppressUserConversions && RefRelationship == Sema::Ref_Incompatible &&
4411 if (RefRelationship >= Sema::Ref_Related &&
4466 TryCopyInitialization(Sema &S, Expr *From, QualType ToType,
4475 TryListConversion(Sema &S, InitListExpr *From, QualType ToType,
4605 Sema::ReferenceCompareResult RefRelationship
4609 if (RefRelationship >= Sema::Ref_Related) {
4678 TryCopyInitialization(Sema &S, Expr *From, QualType ToType,
4704 Sema &S,
4718 TryObjectArgumentInitialization(Sema &S, QualType FromType,
4831 Sema::PerformObjectArgumentInitialization(Expr *From,
4893 TryContextuallyConvertToBool(Sema &S, Expr *From) {
4905 ExprResult Sema::PerformContextuallyConvertToBool(Expr *From) {
4923 static bool CheckConvertedConstantConversions(Sema &S,
4976 ExprResult Sema::CheckConvertedConstantExpression(Expr *From, QualType T,
5101 TryContextuallyConvertToObjCPointer(Sema &S, Expr *From) {
5135 ExprResult Sema::PerformContextuallyConvertToObjCPointer(Expr *From) {
5149 bool Sema::ICEConvertDiagnoser::match(QualType T) {
5155 diagnoseAmbiguousConversion(Sema &SemaRef, SourceLocation Loc, Expr *From,
5156 Sema::ContextualImplicitConverter &Converter,
5173 diagnoseNoViableConversion(Sema &SemaRef, SourceLocation Loc, Expr *&From,
5174 Sema::ContextualImplicitConverter &Converter,
5213 static bool recordConversion(Sema &SemaRef, SourceLocation Loc, Expr *&From,
5214 Sema::ContextualImplicitConverter &Converter,
5242 Sema &SemaRef, SourceLocation Loc, Expr *From,
5243 Sema::ContextualImplicitConverter &Converter) {
5252 collectViableConversionCandidates(Sema &SemaRef, Expr *From, QualType ToType,
5298 ExprResult Sema::PerformContextualImplicitConversion(
5336 void diagnose(Sema &S, SourceLocation Loc, QualType T) override {
5531 Sema::AddOverloadCandidate(FunctionDecl *Function,
5585 EnterExpressionEvaluationContext Unevaluated(*this, Sema::Unevaluated);
5681 EnableIfAttr *Sema::CheckEnableIf(FunctionDecl *Function, ArrayRef<Expr *> Args,
5746 void Sema::AddFunctionCandidates(const UnresolvedSetImpl &Fns,
5783 void Sema::AddMethodCandidate(DeclAccessPair FoundDecl,
5819 Sema::AddMethodCandidate(CXXMethodDecl *Method, DeclAccessPair FoundDecl,
5842 EnterExpressionEvaluationContext Unevaluated(*this, Sema::Unevaluated);
5934 Sema
5987 Sema::AddTemplateOverloadCandidate(FunctionTemplateDecl *FunctionTemplate,
6042 static bool isAllowableExplicitConversion(Sema &S,
6076 Sema::AddConversionCandidate(CXXConversionDecl *Conversion,
6105 EnterExpressionEvaluationContext Unevaluated(*this, Sema::Unevaluated);
6243 Sema::AddTemplateConversionCandidate(FunctionTemplateDecl *FunctionTemplate,
6285 void Sema::AddSurrogateCandidate(CXXConversionDecl *Conversion,
6296 EnterExpressionEvaluationContext Unevaluated(*this, Sema::Unevaluated);
6398 void Sema::AddMemberOperatorCandidates(OverloadedOperatorKind Op,
6450 void Sema::AddBuiltinCandidate(QualType ResultTy, QualType *ParamTys,
6456 EnterExpressionEvaluationContext Unevaluated(*this, Sema::Unevaluated);
6543 /// Sema - The semantic analysis instance where we are building the
6545 Sema &SemaRef;
6558 BuiltinCandidateTypeSet(Sema &SemaRef)
6800 static void AddBuiltinAssignmentOperatorCandidates(Sema &S,
6887 Sema &S;
7057 Sema &S, ArrayRef<Expr *> Args,
7951 void Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op,
8140 Sema::AddArgumentDependentLookupCandidates(DeclarationName Name,
8188 isBetterOverloadCandidate(Sema &S,
8353 OverloadCandidateSet::BestViableFunction(Sema &S, SourceLocation Loc,
8407 OverloadCandidateKind ClassifyOverloadCandidate(Sema &S,
8455 void MaybeEmitInheritedConstructorNote(Sema &S, Decl *Fn) {
8468 void Sema::NoteOverloadCandidate(FunctionDecl *Fn, QualType DestType) {
8480 void Sema::NoteAllOverloadCandidates(Expr* OverloadedExpr, QualType DestType) {
8503 Sema &S,
8526 void DiagnoseBadConversion(Sema &S, OverloadCandidate *Cand, unsigned I) {
8744 bool CheckArityMismatch(Sema &S, OverloadCandidate *Cand,
8761 Sema::TDK_TooFewArguments));
8765 Cand->DeductionFailure.Result == Sema::TDK_TooManyArguments));
8772 void DiagnoseArityMismatch(Sema &S, Decl *D, unsigned NumFormalArgs) {
8816 void DiagnoseArityMismatch(Sema &S, OverloadCandidate *Cand,
8833 void DiagnoseBadDeduction(Sema &S, Decl *Templated,
8842 case Sema::TDK_Success:
8845 case Sema::TDK_Incomplete: {
8854 case Sema::TDK_Underqualified: {
8879 case Sema::TDK_Inconsistent: {
8898 case Sema::TDK_InvalidExplicitArguments:
8920 case Sema::TDK_TooManyArguments:
8921 case Sema::TDK_TooFewArguments:
8925 case Sema::TDK_InstantiationDepth:
8931 case Sema::TDK_SubstitutionFailure: {
8970 case Sema::TDK_FailedOverloadResolution: {
8978 case Sema::TDK_NonDeducedMismatch: {
9014 case Sema::TDK_MiscellaneousDeductionFailure:
9022 void DiagnoseBadDeduction(Sema &S, OverloadCandidate *Cand, unsigned NumArgs) {
9024 if (TDK == Sema::TDK_TooFewArguments || TDK == Sema::TDK_TooManyArguments) {
9033 void DiagnoseBadTarget(Sema &S, OverloadCandidate *Cand) {
9037 Sema::CUDAFunctionTarget CallerTarget = S.IdentifyCUDATarget(Caller),
9047 void DiagnoseFailedEnableIfAttr(Sema &S, OverloadCandidate *Cand) {
9069 void NoteFunctionCandidate(Sema &S, OverloadCandidate *Cand,
9125 void NoteSurrogateCandidate(Sema &S, OverloadCandidate *Cand) {
9158 void NoteBuiltinOperatorCandidate(Sema &S,
9178 void NoteAmbiguousUserConversions(Sema &S, SourceLocation OpLoc,
9200 switch ((Sema::TemplateDeductionResult)DFI.Result) {
9201 case Sema::TDK_Success:
9204 case Sema::TDK_Invalid:
9205 case Sema::TDK_Incomplete:
9208 case Sema::TDK_Underqualified:
9209 case Sema::TDK_Inconsistent:
9212 case Sema::TDK_SubstitutionFailure:
9213 case Sema::TDK_NonDeducedMismatch:
9214 case Sema::TDK_MiscellaneousDeductionFailure:
9217 case Sema::TDK_InstantiationDepth:
9218 case Sema::TDK_FailedOverloadResolution:
9221 case Sema::TDK_InvalidExplicitArguments:
9224 case Sema::TDK_TooManyArguments:
9225 case Sema::TDK_TooFewArguments:
9232 Sema &S;
9235 CompareOverloadCandidatesForDisplay(Sema &S, size_t nArgs)
9357 void CompleteNonViableCandidate(Sema &S, OverloadCandidate *Cand,
9443 void OverloadCandidateSet::NoteCandidates(Sema &S,
9517 Sema &S;
9518 CompareTemplateSpecCandidatesForDisplay(Sema &S) : S(S) {}
9550 void TemplateSpecCandidate::NoteDeductionFailure(Sema &S) {
9571 void TemplateSpecCandidateSet::NoteCandidates(Sema &S, SourceLocation Loc) {
9618 QualType Sema::ExtractUnqualifiedFunctionType(QualType PossiblyAFunctionType) {
9638 Sema& S;
9658 AddressOfFunctionResolver(Sema &S, Expr *SourceExpr,
9748 if (Sema::TemplateDeductionResult Result
9980 Sema::ResolveAddressOfOverloadedFunction(Expr *AddressOfExpr,
10027 Sema::ResolveSingleFunctionTemplateSpecialization(OverloadExpr *ovl,
10114 bool Sema::ResolveAndFixSingleFunctionTemplateSpecialization(
10190 static void AddOverloadedCallCandidate(Sema &S,
10223 void Sema::AddOverloadedCallCandidates(UnresolvedLookupExpr *ULE,
10297 DiagnoseTwoPhaseLookup(Sema &SemaRef, SourceLocation FnLoc,
10337 Sema::AssociatedNamespaceSet AssociatedNamespaces;
10338 Sema::AssociatedClassSet AssociatedClasses;
10342 Sema::AssociatedNamespaceSet SuggestedNamespaces;
10345 for (Sema::AssociatedNamespaceSet::iterator
10398 DiagnoseTwoPhaseOperatorLookup(Sema &SemaRef, OverloadedOperatorKind Op,
10403 LookupResult R(SemaRef, OpName, OpLoc, Sema::LookupOperatorName);
10411 Sema &SemaRef;
10413 BuildRecoveryCallExprRAII(Sema &S) : SemaRef(S) {
10429 BuildRecoveryCallExpr(Sema &SemaRef, Scope *S, Expr *Fn,
10457 Sema::LookupOrdinaryName);
10501 bool Sema::buildOverloadedCallSet(Scope *S, Expr *Fn,
10562 static ExprResult FinishOverloadedCallExpr(Sema &SemaRef, Scope *S, Expr *Fn,
10638 ExprResult Sema::BuildOverloadedCallExpr(Scope *S, Expr *Fn,
10685 Sema::CreateOverloadedUnaryOp(SourceLocation OpLoc, unsigned OpcIn,
10873 Sema::CreateOverloadedBinOp(SourceLocation OpLoc,
11138 Sema::CreateOverloadedArraySubscriptExpr(SourceLocation LLoc,
11312 Sema::BuildCallToMemberFunction(Scope *S, Expr *MemExprE,
11559 Sema::BuildCallToObjectOfClassType(Scope *S, Expr *Obj,
11845 Sema::BuildOverloadedArrowExpr(Scope *S, Expr *Base, SourceLocation OpLoc,
11958 ExprResult Sema::BuildLiteralOperatorCall(LookupResult &R,
12037 Sema::ForRangeStatus
12038 Sema::BuildForRangeBeginEndCall(Scope *S, SourceLocation Loc,
12109 Expr *Sema::FixOverloadedFunctionReference(Expr *E, DeclAccessPair Found,
12270 ExprResult Sema::FixOverloadedFunctionReference(ExprResult E,