Home | History | Annotate | Download | only in Sema

Lines Matching refs:Sema

13 #include "clang/Sema/TemplateDeduction.h"
40 #include "clang/Sema/Ownership.h"
41 #include "clang/Sema/Sema.h"
42 #include "clang/Sema/Template.h"
111 using namespace sema;
134 static Sema::TemplateDeductionResult
135 DeduceTemplateArguments(Sema &S,
142 static Sema::TemplateDeductionResult
143 DeduceTemplateArgumentsByTypeMatch(Sema &S,
154 static Sema::TemplateDeductionResult
155 DeduceTemplateArguments(Sema &S, TemplateParameterList *TemplateParams,
386 static Sema::TemplateDeductionResult DeduceNonTypeTemplateArgument(
387 Sema &S, TemplateParameterList *TemplateParams,
400 return Sema::TDK_Inconsistent;
405 return Sema::TDK_Success;
412 return Sema::TDK_Success;
439 static Sema::TemplateDeductionResult DeduceNonTypeTemplateArgument(
440 Sema &S, TemplateParameterList *TemplateParams,
453 static Sema::TemplateDeductionResult DeduceNullPtrTemplateArgument(
454 Sema &S, TemplateParameterList *TemplateParams,
474 static Sema::TemplateDeductionResult DeduceNonTypeTemplateArgument(
475 Sema &S, TemplateParameterList *TemplateParams,
487 static Sema::TemplateDeductionResult DeduceNonTypeTemplateArgument(
488 Sema &S, TemplateParameterList *TemplateParams,
498 static Sema::TemplateDeductionResult
499 DeduceTemplateArguments(Sema &S,
509 return Sema::TDK_Success;
516 return Sema::TDK_Success;
526 return Sema::TDK_Inconsistent;
530 return Sema::TDK_Success;
535 return Sema::TDK_Success;
540 return Sema::TDK_NonDeducedMismatch;
546 /// \param S the Sema
561 static Sema::TemplateDeductionResult
562 DeduceTemplateArguments(Sema &S,
578 if (Sema::TemplateDeductionResult Result
602 return Sema::TDK_NonDeducedMismatch;
610 return Sema::TDK_NonDeducedMismatch;
614 if (Sema::TemplateDeductionResult Result
690 PackDeductionScope(Sema &S, TemplateParameterList *TemplateParams,
699 PackDeductionScope(Sema &S, TemplateParameterList *TemplateParams,
880 Sema::TemplateDeductionResult finish() {
952 return Sema::TDK_Inconsistent;
961 return Sema::TDK_IncompletePack;
968 return Sema::TDK_Success;
972 Sema &S;
1016 static Sema::TemplateDeductionResult
1017 DeduceTemplateArguments(Sema &S,
1040 return Sema::TDK_MiscellaneousDeductionFailure;
1047 return Sema::TDK_MiscellaneousDeductionFailure;
1050 if (Sema::TemplateDeductionResult Result
1076 if (Sema::TemplateDeductionResult Result
1118 return Sema::TDK_MiscellaneousDeductionFailure;
1120 return Sema::TDK_Success;
1161 bool Sema::isSameOrCompatibleFunctionType(CanQualType Param,
1224 static Sema::TemplateDeductionResult DeduceTemplateBases(
1225 Sema &S, const RecordType *RecordT, TemplateParameterList *TemplateParams,
1276 Sema::TemplateDeductionResult BaseResult =
1282 if (BaseResult == Sema::TDK_Success)
1312 return Sema::TDK_Invalid;
1314 return Sema::TDK_MiscellaneousDeductionFailure;
1317 return Sema::TDK_Success;
1344 static Sema::TemplateDeductionResult
1345 DeduceTemplateArgumentsByTypeMatch(Sema &S,
1409 return Sema::TDK_NonDeducedMismatch;
1465 return Sema::TDK_Success;
1488 return Sema::TDK_Underqualified;
1494 return Sema::TDK_NonDeducedMismatch;
1522 return Sema::TDK_Underqualified;
1547 return Sema::TDK_Inconsistent;
1551 return Sema::TDK_Success;
1563 return Sema::TDK_Success;
1571 return Sema::TDK_NonDeducedMismatch;
1577 return Sema::TDK_NonDeducedMismatch;
1586 return Sema::TDK_NonDeducedMismatch;
1597 return Sema::TDK_NonDeducedMismatch;
1600 return Sema::TDK_Success;
1611 return Sema::TDK_Success;
1613 return Sema::TDK_Success;
1641 return Sema::TDK_Success;
1648 return Param == Arg? Sema::TDK_Success : Sema::TDK_NonDeducedMismatch;
1658 return Sema::TDK_NonDeducedMismatch;
1668 return Sema::TDK_NonDeducedMismatch;
1679 return Sema::TDK_NonDeducedMismatch;
1694 return Sema::TDK_NonDeducedMismatch;
1706 return Sema::TDK_NonDeducedMismatch;
1719 return Sema::TDK_NonDeducedMismatch;
1733 return Sema::TDK_NonDeducedMismatch;
1738 return Sema::TDK_NonDeducedMismatch;
1751 return Sema::TDK_NonDeducedMismatch;
1758 if (Sema::TemplateDeductionResult Result
1769 return Sema::TDK_Success;
1791 return Sema::TDK_NonDeducedMismatch;
1802 return Sema::TDK_NonDeducedMismatch;
1812 return Sema::TDK_NonDeducedMismatch;
1829 return Sema::TDK_Success;
1867 return Sema::TDK_Success;
1898 Sema::TemplateDeductionResult Result = DeduceTemplateArguments(
1901 if (Result == Sema::TDK_Success)
1914 Sema::TemplateDeductionResult BaseResult = DeduceTemplateBases(
1917 if (BaseResult != Sema::TDK_Invalid)
1935 return Sema::TDK_NonDeducedMismatch;
1946 if (Sema::TemplateDeductionResult Result
1971 return Sema::TDK_NonDeducedMismatch;
1987 return Sema::TDK_NonDeducedMismatch;
2009 return Sema::TDK_NonDeducedMismatch;
2017 if (Sema::TemplateDeductionResult Result =
2027 return Sema::TDK_Success;
2041 if (Sema::TemplateDeductionResult Result =
2051 return Sema::TDK_Success;
2057 return Sema::TDK_NonDeducedMismatch;
2069 if (Sema::TemplateDeductionResult Result
2080 return Sema::TDK_Success;
2095 if (Sema::TemplateDeductionResult Result
2106 return Sema::TDK_Success;
2113 return Sema::TDK_NonDeducedMismatch;
2123 return Sema::TDK_NonDeducedMismatch;
2129 return Sema::TDK_NonDeducedMismatch;
2140 return Sema::TDK_NonDeducedMismatch;
2145 if (Sema::TemplateDeductionResult Result =
2163 return Sema::TDK_NonDeducedMismatch;
2167 return Sema::TDK_Success;
2168 return Sema::TDK_NonDeducedMismatch;
2176 return Sema::TDK_Success;
2177 return Sema::TDK_NonDeducedMismatch;
2183 return Sema::TDK_Success;
2220 if (Sema::TemplateDeductionResult Result =
2230 return Sema::TDK_Success;
2243 if (Sema::TemplateDeductionResult Result =
2253 return Sema::TDK_Success;
2260 return Sema::TDK_NonDeducedMismatch;
2267 return Sema::TDK_NonDeducedMismatch;
2272 return Sema::TDK_Success;
2284 return Sema::TDK_NonDeducedMismatch;
2285 return Sema::TDK_Success;
2287 return Sema::TDK_NonDeducedMismatch;
2302 return Sema::TDK_Success;
2308 static Sema::TemplateDeductionResult
2309 DeduceTemplateArguments(Sema &S,
2333 return Sema::TDK_NonDeducedMismatch;
2342 return Sema::TDK_NonDeducedMismatch;
2350 return Sema::TDK_Success;
2354 return Sema::TDK_NonDeducedMismatch;
2359 return Sema::TDK_Success;
2363 return Sema::TDK_NonDeducedMismatch;
2368 return Sema::TDK_Success;
2372 return Sema::TDK_NonDeducedMismatch;
2378 return Sema::TDK_NonDeducedMismatch;
2383 return Sema::TDK_NonDeducedMismatch;
2409 return Sema::TDK_NonDeducedMismatch;
2413 return Sema::TDK_Success;
2465 static Sema::TemplateDeductionResult
2466 DeduceTemplateArguments(Sema &S, TemplateParameterList *TemplateParams,
2477 return Sema::TDK_Success;
2491 ? Sema::TDK_MiscellaneousDeductionFailure
2492 : Sema::TDK_Success;
2498 return Sema::TDK_MiscellaneousDeductionFailure;
2501 if (Sema::TemplateDeductionResult Result
2531 if (Sema::TemplateDeductionResult Result
2545 return Sema::TDK_Success;
2548 static Sema::TemplateDeductionResult
2549 DeduceTemplateArguments(Sema &S,
2635 Sema::getTrivialTemplateArgumentLoc(const TemplateArgument &Arg,
2697 Sema::getIdentityTemplateArgumentLoc(NamedDecl *TemplateParm,
2706 ConvertDeducedTemplateArgument(Sema &S, NamedDecl *Param,
2725 ? (Arg.wasDeducedFromArrayBound() ? Sema::CTAK_DeducedFromArrayBound
2726 : Sema::CTAK_Deduced)
2727 : Sema::CTAK_Specified);
2767 Sema::InstantiatingTemplate Inst(S, Template->getLocation(), Template,
2775 Sema::InstantiatingTemplate Inst(S, Template->getLocation(), Template,
2797 static Sema::TemplateDeductionResult ConvertDeducedTemplateArguments(
2798 Sema &S, TemplateDeclT *Template, bool IsDeduced,
2846 return Sema::TDK_SubstitutionFailure;
2858 return Sema::TDK_Incomplete;
2872 return HasDefaultArg ? Sema::TDK_SubstitutionFailure
2873 : Sema::TDK_Incomplete;
2879 Sema::CTAK_Specified)) {
2884 return Sema::TDK_SubstitutionFailure;
2890 return Sema::TDK_Success;
2912 static Sema::TemplateDeductionResult
2913 CheckDeducedArgumentConstraints(Sema& S, TemplateDeclT *Template,
2923 return Sema::TDK_ConstraintsNotSatisfied;
2925 return Sema::TDK_Success;
2931 Sema::TemplateDeductionResult>
2933 Sema &S, T *Partial, bool IsPartialOrdering,
2939 S, Sema::ExpressionEvaluationContext::Unevaluated);
2940 Sema::SFINAETrap Trap(S);
2942 Sema::ContextRAII SavedContext(S, getAsDeclContextOrEnclosing(Partial));
2983 return Sema::TDK_SubstitutionFailure;
2992 return ConstraintsNotSatisfied ? Sema::TDK_ConstraintsNotSatisfied :
2993 Sema::TDK_SubstitutionFailure;
3002 return Sema::TDK_NonDeducedMismatch;
3007 return Sema::TDK_SubstitutionFailure;
3012 return Sema::TDK_Success;
3018 static Sema::TemplateDeductionResult FinishTemplateArgumentDeduction(
3019 Sema &S, TemplateDecl *Template, bool PartialOrdering,
3025 S, Sema::ExpressionEvaluationContext::Unevaluated);
3026 Sema::SFINAETrap Trap(S);
3028 Sema::ContextRAII SavedContext(S, getAsDeclContextOrEnclosing(Template));
3047 return Sema::TDK_NonDeducedMismatch;
3052 return Sema::TDK_SubstitutionFailure;
3058 return Sema::TDK_Success;
3064 Sema::TemplateDeductionResult
3065 Sema::DeduceTemplateArguments(ClassTemplatePartialSpecializationDecl *Partial,
3079 *this, Sema::ExpressionEvaluationContext::Unevaluated);
3102 return Sema::TDK_SubstitutionFailure;
3116 Sema::TemplateDeductionResult
3117 Sema::DeduceTemplateArguments(VarTemplatePartialSpecializationDecl *Partial,
3131 *this, Sema::ExpressionEvaluationContext::Unevaluated);
3152 return Sema::TDK_SubstitutionFailure;
3207 Sema::TemplateDeductionResult
3208 Sema::SubstituteExplicitTemplateArguments(
3232 *this, Sema::ExpressionEvaluationContext::Unevaluated);
3404 static Sema::TemplateDeductionResult
3405 CheckOriginalCallArgDeduction(Sema &S, TemplateDeductionInfo &Info,
3406 Sema::OriginalCallArg OriginalArg,
3410 auto Failed = [&]() -> Sema::TemplateDeductionResult {
3414 return OriginalArg.DecomposedParam ? Sema::TDK_DeducedMismatchNested
3415 : Sema::TDK_DeducedMismatch;
3423 return Sema::TDK_Success;
3447 return Sema::TDK_Success;
3488 return Sema::TDK_Success;
3509 return Sema::TDK_Success;
3513 return Sema::TDK_Success;
3526 static unsigned getPackIndexForParam(Sema &S,
3554 SemaSema::FinishTemplateArgumentDeduction(
3563 *this, Sema::ExpressionEvaluationContext::Unevaluated);
3714 static QualType GetTypeOfFunction(Sema &S, const OverloadExpr::FindResult &R,
3741 ResolveOverloadForDeduction(Sema &S, TemplateParameterList *TemplateParams,
3828 Sema::TemplateDeductionResult Result
3847 Sema &S, TemplateParameterList *TemplateParams, unsigned FirstInnerIndex,
3938 hasDeducibleTemplateParameters(Sema &S, FunctionTemplateDecl *FunctionTemplate,
3941 static Sema::TemplateDeductionResult DeduceTemplateArgumentsFromCallArgument(
3942 Sema &S, TemplateParameterList *TemplateParams, unsigned FirstInnerIndex,
3945 SmallVectorImpl<Sema::OriginalCallArg> &OriginalCallArgs,
3950 static Sema::TemplateDeductionResult DeduceFromInitializerList(
3951 Sema &S, TemplateParameterList *TemplateParams, QualType AdjustedParamType,
3954 SmallVectorImpl<Sema::OriginalCallArg> &OriginalCallArgs, unsigned ArgIdx,
3965 return Sema::TDK_Success;
3974 return Sema::TDK_Success;
3981 return Sema::TDK_Success;
4012 return Sema::TDK_Success;
4017 static Sema::TemplateDeductionResult DeduceTemplateArgumentsFromCallArgument(
4018 Sema &S, TemplateParameterList *TemplateParams, unsigned FirstInnerIndex,
4021 SmallVectorImpl<Sema::OriginalCallArg> &OriginalCallArgs,
4030 return Sema::TDK_Success;
4043 Sema::OriginalCallArg(OrigParamType, DecomposedParam, ArgIdx, ArgType));
4073 Sema::TemplateDeductionResult Sema::DeduceTemplateArguments(
4135 return Sema::TDK_Success;
4229 QualType Sema::adjustCCAndNoReturn(QualType ArgFunctionType,
4293 Sema::TemplateDeductionResult Sema::DeduceTemplateArguments(
4333 *this, Sema::ExpressionEvaluationContext::Unevaluated);
4415 Sema::TemplateDeductionResult
4416 Sema::DeduceTemplateArguments(FunctionTemplateDecl *ConversionTemplate,
4481 *this, Sema::ExpressionEvaluationContext::Unevaluated);
4556 Sema::TemplateDeductionResult Sema::DeduceTemplateArguments(
4578 SubstituteDeducedTypeTransform(Sema &SemaRef, DependentAuto DA)
4582 SubstituteDeducedTypeTransform(Sema &SemaRef, QualType Replacement,
4648 Sema::DeduceAutoResult
4649 Sema::DeduceAutoType(TypeSourceInfo *Type, Expr *&Init, QualType &Result,
4659 static bool diagnoseAutoDeductionFailure(Sema &S,
4660 Sema::TemplateDeductionResult TDK,
4664 case Sema::TDK_Inconsistent: {
4681 static Sema::DeduceAutoResult
4682 CheckDeducedPlaceholderConstraints(Sema &S, const AutoType &Type,
4698 return Sema::DAR_FailedAlreadyDiagnosed;
4702 return Sema::DAR_FailedAlreadyDiagnosed;
4718 return Sema::DAR_FailedAlreadyDiagnosed;
4720 return Sema::DAR_Succeeded;
4739 Sema::DeduceAutoResult
4740 Sema::DeduceAutoType(TypeLoc Type, Expr *&Init, QualType &Result,
4931 QualType Sema::SubstAutoType(QualType TypeWithAuto,
4942 TypeSourceInfo *Sema::SubstAutoTypeSourceInfo(TypeSourceInfo *TypeWithAuto,
4954 QualType Sema::ReplaceAutoType(QualType TypeWithAuto,
4961 TypeSourceInfo *Sema::ReplaceAutoTypeSourceInfo(TypeSourceInfo *TypeWithAuto,
4968 void Sema::DiagnoseAutoDeductionFailure(VarDecl *VDecl, Expr *Init) {
4983 bool Sema::DeduceReturnType(FunctionDecl *FD, SourceLocation Loc,
5069 static bool isAtLeastAsSpecializedAs(Sema &S,
5273 Sema::getMoreSpecializedTemplate(FunctionTemplateDecl *FT1,
5353 UnresolvedSetIterator Sema::getMostSpecialized(
5436 static bool isAtLeastAsSpecializedAs(Sema &S, QualType T1, QualType T2,
5474 Sema::InstantiatingTemplate Inst(S, Info.getLocation(), P2, DeducedArgs,
5502 Sema::getMoreSpecializedPartialSpecialization(
5532 bool Sema::isMoreSpecializedThanPrimary(
5558 Sema::getMoreSpecializedPartialSpecialization(
5596 bool Sema::isMoreSpecializedThanPrimary(
5632 bool Sema::isTemplateTemplateParameterAtLeastAsSpecializedAs(
6155 Sema::MarkUsedTemplateParameters(const Expr *E, bool OnlyDeduced,
6171 Sema::MarkUsedTemplateParameters(const TemplateArgumentList &TemplateArgs,
6189 void Sema::MarkDeducedTemplateParameters(
6203 bool hasDeducibleTemplateParameters(Sema &S,