Lines Matching refs:SemaRef

48 static bool SubstQualifier(Sema &SemaRef, const DeclT *OldDecl, DeclT *NewDecl,  in SubstQualifier()  argument
57 SemaRef, in SubstQualifier()
63 = SemaRef.SubstNestedNameSpecifierLoc(OldDecl->getQualifierLoc(), in SubstQualifier()
75 return ::SubstQualifier(SemaRef, OldDecl, NewDecl, TemplateArgs); in SubstQualifier()
80 return ::SubstQualifier(SemaRef, OldDecl, NewDecl, TemplateArgs); in SubstQualifier()
915 LabelDecl *Inst = LabelDecl::Create(SemaRef.Context, Owner, D->getLocation(), in VisitLabelDecl()
929 = NamespaceAliasDecl::Create(SemaRef.Context, Owner, in VisitNamespaceAliasDecl()
946 DI = SemaRef.SubstType(DI, TemplateArgs, in InstantiateTypedefNameDecl()
950 DI = SemaRef.Context.getTrivialTypeSourceInfo(SemaRef.Context.IntTy); in InstantiateTypedefNameDecl()
953 SemaRef.MarkDeclarationsReferencedInType(D->getLocation(), DI->getType()); in InstantiateTypedefNameDecl()
965 RD->getEnclosingNamespaceContext() == SemaRef.getStdNamespace() && in InstantiateTypedefNameDecl()
968 SemaRef.getSourceManager().isInSystemHeader(D->getBeginLoc())) in InstantiateTypedefNameDecl()
970 DI = SemaRef.Context.getTrivialTypeSourceInfo( in InstantiateTypedefNameDecl()
976 Typedef = TypeAliasDecl::Create(SemaRef.Context, Owner, D->getBeginLoc(), in InstantiateTypedefNameDecl()
979 Typedef = TypedefDecl::Create(SemaRef.Context, Owner, D->getBeginLoc(), in InstantiateTypedefNameDecl()
996 NamedDecl *InstPrev = SemaRef.FindInstantiatedDecl(D->getLocation(), Prev, in InstantiateTypedefNameDecl()
1004 SemaRef.isIncompatibleTypedef(InstPrevTypedef, Typedef); in InstantiateTypedefNameDecl()
1009 SemaRef.InstantiateAttrs(TemplateArgs, D, Typedef); in InstantiateTypedefNameDecl()
1012 SemaRef.inferGslPointerAttribute(Typedef); in InstantiateTypedefNameDecl()
1038 LocalInstantiationScope Scope(SemaRef); in VisitTypeAliasTemplateDecl()
1061 = TypeAliasTemplateDecl::Create(SemaRef.Context, Owner, D->getLocation(), in VisitTypeAliasTemplateDecl()
1078 auto *NewBD = BindingDecl::Create(SemaRef.Context, Owner, D->getLocation(), in VisitBindingDecl()
1081 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, NewBD); in VisitBindingDecl()
1111 TypeSourceInfo *DI = SemaRef.SubstType( in VisitVarDecl()
1118 SemaRef.Diag(D->getLocation(), diag::err_variable_instantiates_to_function) in VisitVarDecl()
1125 SemaRef.adjustContextForLocalExternDecl(DC); in VisitVarDecl()
1130 Var = DecompositionDecl::Create(SemaRef.Context, DC, D->getInnerLocStart(), in VisitVarDecl()
1134 Var = VarDecl::Create(SemaRef.Context, DC, D->getInnerLocStart(), in VisitVarDecl()
1139 if (SemaRef.getLangOpts().ObjCAutoRefCount && in VisitVarDecl()
1140 SemaRef.inferObjCARCLifetime(Var)) in VisitVarDecl()
1143 if (SemaRef.getLangOpts().OpenCL) in VisitVarDecl()
1144 SemaRef.deduceOpenCLAddressSpace(Var); in VisitVarDecl()
1150 SemaRef.BuildVariableInstantiation(Var, D, TemplateArgs, LateAttrs, Owner, in VisitVarDecl()
1157 RT = cast<FunctionType>(SemaRef.getCurBlock()->FunctionType) in VisitVarDecl()
1173 Sema::NamedReturnInfo Info = SemaRef.getNamedReturnInfo(Var); in VisitVarDecl()
1174 bool NRVO = SemaRef.getCopyElisionCandidate(Info, RT) != nullptr; in VisitVarDecl()
1181 SemaRef.CheckStaticLocalForDllExport(Var); in VisitVarDecl()
1184 SemaRef.CheckThreadLocalForLargeAlignment(Var); in VisitVarDecl()
1191 = AccessSpecDecl::Create(SemaRef.Context, D->getAccess(), Owner, in VisitAccessSpecDecl()
1202 DI = SemaRef.SubstType(DI, TemplateArgs, in VisitFieldDecl()
1214 SemaRef.Diag(D->getLocation(), diag::err_field_instantiates_to_function) in VisitFieldDecl()
1219 SemaRef.MarkDeclarationsReferencedInType(D->getLocation(), DI->getType()); in VisitFieldDecl()
1228 SemaRef, Sema::ExpressionEvaluationContext::ConstantEvaluated); in VisitFieldDecl()
1231 = SemaRef.SubstExpr(BitWidth, TemplateArgs); in VisitFieldDecl()
1239 FieldDecl *Field = SemaRef.CheckFieldDecl(D->getDeclName(), in VisitFieldDecl()
1254 SemaRef.InstantiateAttrs(TemplateArgs, D, Field, LateAttrs, StartingScope); in VisitFieldDecl()
1257 SemaRef.CheckAlignasUnderalignment(Field); in VisitFieldDecl()
1264 SemaRef.Context.setInstantiatedFromUnnamedFieldDecl(Field, D); in VisitFieldDecl()
1269 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Field); in VisitFieldDecl()
1284 SemaRef.Diag(D->getLocation(), diag::err_property_is_variably_modified) in VisitMSPropertyDecl()
1288 DI = SemaRef.SubstType(DI, TemplateArgs, in VisitMSPropertyDecl()
1300 SemaRef.Diag(D->getLocation(), diag::err_field_instantiates_to_function) in VisitMSPropertyDecl()
1305 SemaRef.MarkDeclarationsReferencedInType(D->getLocation(), DI->getType()); in VisitMSPropertyDecl()
1309 SemaRef.Context, Owner, D->getLocation(), D->getDeclName(), DI->getType(), in VisitMSPropertyDecl()
1312 SemaRef.InstantiateAttrs(TemplateArgs, D, Property, LateAttrs, in VisitMSPropertyDecl()
1326 new (SemaRef.Context)NamedDecl*[D->getChainingSize()]; in VisitIndirectFieldDecl()
1330 NamedDecl *Next = SemaRef.FindInstantiatedDecl(D->getLocation(), PI, in VisitIndirectFieldDecl()
1340 SemaRef.Context, Owner, D->getLocation(), D->getIdentifier(), T, in VisitIndirectFieldDecl()
1344 IndirectField->addAttr(Attr->clone(SemaRef.Context)); in VisitIndirectFieldDecl()
1364 InstTy = SemaRef.SubstType(Ty, TemplateArgs, in VisitFriendDecl()
1370 FriendDecl *FD = SemaRef.CheckFriendTypeDecl(D->getBeginLoc(), in VisitFriendDecl()
1392 FriendDecl::Create(SemaRef.Context, Owner, D->getLocation(), in VisitFriendDecl()
1405 SemaRef, Sema::ExpressionEvaluationContext::ConstantEvaluated); in VisitStaticAssertDecl()
1408 = SemaRef.SubstExpr(AssertExpr, TemplateArgs); in VisitStaticAssertDecl()
1412 return SemaRef.BuildStaticAssertDeclaration(D->getLocation(), in VisitStaticAssertDecl()
1422 NamedDecl *Prev = SemaRef.FindInstantiatedDecl(D->getLocation(), in VisitEnumDecl()
1430 EnumDecl::Create(SemaRef.Context, Owner, D->getBeginLoc(), in VisitEnumDecl()
1439 TypeSourceInfo *NewTI = SemaRef.SubstType(TI, TemplateArgs, UnderlyingLoc, in VisitEnumDecl()
1441 if (!NewTI || SemaRef.CheckEnumUnderlyingType(NewTI)) in VisitEnumDecl()
1442 Enum->setIntegerType(SemaRef.Context.IntTy); in VisitEnumDecl()
1452 SemaRef.InstantiateAttrs(TemplateArgs, D, Enum); in VisitEnumDecl()
1457 SemaRef.Context.setManglingNumber(Enum, SemaRef.Context.getManglingNumber(D)); in VisitEnumDecl()
1460 if (DeclaratorDecl *DD = SemaRef.Context.getDeclaratorForUnnamedTagDecl(D)) in VisitEnumDecl()
1461 SemaRef.Context.addDeclaratorForUnnamedTagDecl(Enum, DD); in VisitEnumDecl()
1464 if (TypedefNameDecl *TND = SemaRef.Context.getTypedefNameForUnnamedTagDecl(D)) in VisitEnumDecl()
1465 SemaRef.Context.addTypedefNameForUnnamedTagDecl(Enum, TND); in VisitEnumDecl()
1477 SemaRef.SubstType(TI->getType(), TemplateArgs, in VisitEnumDecl()
1479 SemaRef.CheckEnumRedeclaration(Def->getLocation(), Def->isScoped(), in VisitEnumDecl()
1492 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Enum); in VisitEnumDecl()
1515 SemaRef, Sema::ExpressionEvaluationContext::ConstantEvaluated); in InstantiateEnumDefinition()
1517 Value = SemaRef.SubstExpr(UninstValue, TemplateArgs); in InstantiateEnumDefinition()
1528 = SemaRef.CheckEnumConstant(Enum, LastEnumConst, in InstantiateEnumDefinition()
1539 SemaRef.InstantiateAttrs(TemplateArgs, EC, EnumConst); in InstantiateEnumDefinition()
1550 SemaRef.CurrentInstantiationScope->InstantiatedLocal(EC, EnumConst); in InstantiateEnumDefinition()
1555 SemaRef.ActOnEnumBody(Enum->getLocation(), Enum->getBraceRange(), Enum, in InstantiateEnumDefinition()
1573 LocalInstantiationScope Scope(SemaRef); in VisitClassTemplateDecl()
1586 QualifierLoc = SemaRef.SubstNestedNameSpecifierLoc(QualifierLoc, in VisitClassTemplateDecl()
1613 DC = SemaRef.computeDeclContext(SS); in VisitClassTemplateDecl()
1616 DC = SemaRef.FindInstantiatedContext(Pattern->getLocation(), in VisitClassTemplateDecl()
1623 LookupResult R(SemaRef, Pattern->getDeclName(), Pattern->getLocation(), in VisitClassTemplateDecl()
1625 SemaRef.forRedeclarationInCurContext()); in VisitClassTemplateDecl()
1626 SemaRef.LookupQualifiedName(R, DC); in VisitClassTemplateDecl()
1635 SemaRef.Diag(Pattern->getLocation(), diag::err_not_tag_in_scope) in VisitClassTemplateDecl()
1648 if (!SemaRef.TemplateParameterListsAreEqual( in VisitClassTemplateDecl()
1656 if (SemaRef.CheckTemplateParameterList(InstParams, PrevParams, in VisitClassTemplateDecl()
1663 SemaRef.Context, Pattern->getTagKind(), DC, Pattern->getBeginLoc(), in VisitClassTemplateDecl()
1670 SemaRef.InstantiateAttrsForDecl(TemplateArgs, Pattern, RecordInst, LateAttrs, in VisitClassTemplateDecl()
1674 = ClassTemplateDecl::Create(SemaRef.Context, DC, D->getLocation(), in VisitClassTemplateDecl()
1697 SemaRef.Context.getInjectedClassNameType(RecordInst, in VisitClassTemplateDecl()
1759 LocalInstantiationScope Scope(SemaRef); in VisitVarTemplateDecl()
1782 SemaRef.Context, DC, D->getLocation(), D->getIdentifier(), InstParams, in VisitVarTemplateDecl()
1840 LocalInstantiationScope Scope(SemaRef); in VisitFunctionTemplateDecl()
1881 SemaRef.CheckFriendAccess(InstTemplate); in VisitFunctionTemplateDecl()
1890 NamedDecl *Prev = SemaRef.FindInstantiatedDecl(D->getLocation(), in VisitCXXRecordDecl()
1901 SemaRef.Context, Owner, D->getLambdaTypeInfo(), D->getLocation(), in VisitCXXRecordDecl()
1905 Record = CXXRecordDecl::Create(SemaRef.Context, D->getTagKind(), Owner, in VisitCXXRecordDecl()
1911 (void)SemaRef.Context.getTypeDeclType(Record, cast<CXXRecordDecl>(Owner)); in VisitCXXRecordDecl()
1917 SemaRef.InstantiateAttrsForDecl(TemplateArgs, D, Record, LateAttrs, in VisitCXXRecordDecl()
1939 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Record); in VisitCXXRecordDecl()
1942 SemaRef.Context.setManglingNumber(Record, in VisitCXXRecordDecl()
1943 SemaRef.Context.getManglingNumber(D)); in VisitCXXRecordDecl()
1947 if (DeclaratorDecl *DD = SemaRef.Context.getDeclaratorForUnnamedTagDecl(D)) in VisitCXXRecordDecl()
1948 SemaRef.Context.addDeclaratorForUnnamedTagDecl(Record, DD); in VisitCXXRecordDecl()
1952 if (TypedefNameDecl *TND = SemaRef.Context.getTypedefNameForUnnamedTagDecl(D)) in VisitCXXRecordDecl()
1953 SemaRef.Context.addTypedefNameForUnnamedTagDecl(Record, TND); in VisitCXXRecordDecl()
1960 Sema::LocalEagerInstantiationScope LocalInstantiations(SemaRef); in VisitCXXRecordDecl()
1962 SemaRef.InstantiateClass(D->getLocation(), Record, D, TemplateArgs, in VisitCXXRecordDecl()
1969 SemaRef.InstantiateClassMembers(D->getLocation(), Record, TemplateArgs, in VisitCXXRecordDecl()
1977 SemaRef.DiagnoseUnusedNestedTypedefs(Record); in VisitCXXRecordDecl()
2040 LocalInstantiationScope Scope(SemaRef, MergeWithParentScope); in VisitFunctionDecl()
2045 SemaRef, TemplateArgs, DGuide->getExplicitSpecifier(), DGuide); in VisitFunctionDecl()
2054 QualType T = adjustFunctionTypeForInstantiation(SemaRef.Context, D, TInfo); in VisitFunctionDecl()
2067 SemaRef.Context, TemplateParams->getTemplateLoc(), in VisitFunctionDecl()
2075 QualifierLoc = SemaRef.SubstNestedNameSpecifierLoc(QualifierLoc, in VisitFunctionDecl()
2089 SemaRef.adjustContextForLocalExternDecl(DC); in VisitFunctionDecl()
2093 DC = SemaRef.computeDeclContext(SS); in VisitFunctionDecl()
2096 DC = SemaRef.FindInstantiatedContext(D->getLocation(), D->getDeclContext(), in VisitFunctionDecl()
2101 = SemaRef.SubstDeclarationNameInfo(D->getNameInfo(), TemplateArgs); in VisitFunctionDecl()
2109 SemaRef.Context, DC, D->getInnerLocStart(), in VisitFunctionDecl()
2117 SemaRef.Context, DC, D->getInnerLocStart(), NameInfo, T, TInfo, in VisitFunctionDecl()
2141 LexicalDC = SemaRef.CurContext; in VisitFunctionDecl()
2170 FunctionTemplate = FunctionTemplateDecl::Create(SemaRef.Context, DC, in VisitFunctionDecl()
2186 TemplateArgumentList::CreateCopy(SemaRef.Context, in VisitFunctionDecl()
2213 SemaRef, Function->getDeclName(), SourceLocation(), in VisitFunctionDecl()
2217 : SemaRef.forRedeclarationInCurContext()); in VisitFunctionDecl()
2226 if (SemaRef.SubstTemplateArguments(Info->arguments(), TemplateArgs, in VisitFunctionDecl()
2232 Decl *Temp = SemaRef.FindInstantiatedDecl(D->getLocation(), in VisitFunctionDecl()
2240 if (SemaRef.CheckFunctionTemplateSpecialization(Function, in VisitFunctionDecl()
2249 SemaRef.LookupQualifiedName(Previous, DC); in VisitFunctionDecl()
2254 if (SemaRef.SubstTemplateArguments(Info->arguments(), TemplateArgs, in VisitFunctionDecl()
2258 if (SemaRef.CheckFunctionTemplateSpecialization(Function, in VisitFunctionDecl()
2268 SemaRef.LookupQualifiedName(Previous, DC->getRedeclContext()); in VisitFunctionDecl()
2281 SemaRef.FilterLookupForScope(Previous, DC, /*Scope=*/ nullptr, in VisitFunctionDecl()
2304 if (SemaRef.SubstDefaultArgument(D->getInnerLocStart(), PVD, TemplateArgs)) { in VisitFunctionDecl()
2309 ExprResult ErrorResult = SemaRef.CreateRecoveryExpr( in VisitFunctionDecl()
2318 SemaRef.CheckFunctionDeclaration(/*Scope*/ nullptr, Function, Previous, in VisitFunctionDecl()
2327 SemaRef.CheckTemplateParameterList( in VisitFunctionDecl()
2345 SemaRef.PendingLocalImplicitInstantiations.push_back( in VisitFunctionDecl()
2356 SemaRef.SetDeclDeleted(Function, D->getLocation()); in VisitFunctionDecl()
2404 LocalInstantiationScope Scope(SemaRef, MergeWithParentScope); in VisitCXXMethodDecl()
2421 instantiateExplicitSpecifier(SemaRef, TemplateArgs, in VisitCXXMethodDecl()
2436 SemaRef.Context.getTrivialTypeSourceInfo(D->getType()); in VisitCXXMethodDecl()
2444 QualType T = adjustFunctionTypeForInstantiation(SemaRef.Context, D, TInfo); in VisitCXXMethodDecl()
2457 SemaRef.Context, TemplateParams->getTemplateLoc(), in VisitCXXMethodDecl()
2465 QualifierLoc = SemaRef.SubstNestedNameSpecifierLoc(QualifierLoc, in VisitCXXMethodDecl()
2476 DC = SemaRef.computeDeclContext(SS); in VisitCXXMethodDecl()
2478 if (DC && SemaRef.RequireCompleteDeclContext(SS, DC)) in VisitCXXMethodDecl()
2481 DC = SemaRef.FindInstantiatedContext(D->getLocation(), in VisitCXXMethodDecl()
2492 = SemaRef.SubstDeclarationNameInfo(D->getNameInfo(), TemplateArgs); in VisitCXXMethodDecl()
2503 SemaRef.Context, Record, StartLoc, NameInfo, T, TInfo, in VisitCXXMethodDecl()
2514 SemaRef.Context, Record, StartLoc, NameInfo, T, TInfo, in VisitCXXMethodDecl()
2519 Method->setDeclName(SemaRef.Context.DeclarationNames.getCXXDestructorName( in VisitCXXMethodDecl()
2520 SemaRef.Context.getCanonicalType( in VisitCXXMethodDecl()
2521 SemaRef.Context.getTypeDeclType(Record)))); in VisitCXXMethodDecl()
2524 SemaRef.Context, Record, StartLoc, NameInfo, T, TInfo, in VisitCXXMethodDecl()
2531 SemaRef.Context, Record, StartLoc, NameInfo, T, TInfo, SC, in VisitCXXMethodDecl()
2558 FunctionTemplate = FunctionTemplateDecl::Create(SemaRef.Context, Record, in VisitCXXMethodDecl()
2572 TemplateArgumentList::CreateCopy(SemaRef.Context, in VisitCXXMethodDecl()
2586 SemaRef.Context, in VisitCXXMethodDecl()
2602 LookupResult Previous(SemaRef, NameInfo, Sema::LookupOrdinaryName, in VisitCXXMethodDecl()
2616 if (SemaRef.SubstTemplateArguments(Info->arguments(), TemplateArgs, in VisitCXXMethodDecl()
2622 Decl *Temp = SemaRef.FindInstantiatedDecl(D->getLocation(), in VisitCXXMethodDecl()
2630 if (SemaRef.CheckFunctionTemplateSpecialization(Method, in VisitCXXMethodDecl()
2639 SemaRef.LookupQualifiedName(Previous, DC); in VisitCXXMethodDecl()
2643 if (SemaRef.SubstTemplateArguments(Info->arguments(), TemplateArgs, in VisitCXXMethodDecl()
2647 if (SemaRef.CheckFunctionTemplateSpecialization(Method, in VisitCXXMethodDecl()
2656 SemaRef.LookupQualifiedName(Previous, DC); in VisitCXXMethodDecl()
2657 if (SemaRef.CheckFunctionTemplateSpecialization(Method, nullptr, Previous)) in VisitCXXMethodDecl()
2662 SemaRef.LookupQualifiedName(Previous, Record); in VisitCXXMethodDecl()
2691 if (SemaRef.SubstDefaultArgument(StartLoc, Params[P], TemplateArgs)) { in VisitCXXMethodDecl()
2696 ExprResult ErrorResult = SemaRef.CreateRecoveryExpr( in VisitCXXMethodDecl()
2705 SemaRef.CheckFunctionDeclaration(nullptr, Method, Previous, in VisitCXXMethodDecl()
2710 SemaRef.CheckPureMethod(Method, SourceRange()); in VisitCXXMethodDecl()
2722 SemaRef.CheckOverrideControl(Method); in VisitCXXMethodDecl()
2730 SemaRef.SetDeclDeleted(Method, Method->getLocation()); in VisitCXXMethodDecl()
2736 SemaRef.CompleteMemberSpecialization(Method, Previous); in VisitCXXMethodDecl()
2751 SemaRef.CheckFriendAccess(Method); in VisitCXXMethodDecl()
2772 SemaRef.MarkFunctionReferenced(Loc, Method); in VisitCXXMethodDecl()
2792 return SemaRef.SubstParmVarDecl(D, TemplateArgs, /*indexAdjustment*/ 0, in VisitParmVarDecl()
2813 SemaRef.collectUnexpandedParameterPacks(ArgLoc, Unexpanded); in VisitTemplateTypeParmDecl()
2819 if (SemaRef.CheckParameterPacksForExpansion( in VisitTemplateTypeParmDecl()
2832 SemaRef.Context, Owner, D->getBeginLoc(), D->getLocation(), in VisitTemplateTypeParmDecl()
2844 if (SemaRef.SubstTypeConstraint(Inst, TC, TemplateArgs, in VisitTemplateTypeParmDecl()
2851 SemaRef.SubstType(D->getDefaultArgumentInfo(), TemplateArgs, in VisitTemplateTypeParmDecl()
2859 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Inst); in VisitTemplateTypeParmDecl()
2882 SemaRef.SubstType(D->getExpansionTypeSourceInfo(I), TemplateArgs, in VisitNonTypeTemplateParmDecl()
2888 SemaRef.CheckNonTypeTemplateParameterType(NewDI, D->getLocation()); in VisitNonTypeTemplateParmDecl()
2906 SemaRef.collectUnexpandedParameterPacks(Pattern, Unexpanded); in VisitNonTypeTemplateParmDecl()
2915 if (SemaRef.CheckParameterPacksForExpansion(Expansion.getEllipsisLoc(), in VisitNonTypeTemplateParmDecl()
2925 Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(SemaRef, I); in VisitNonTypeTemplateParmDecl()
2926 TypeSourceInfo *NewDI = SemaRef.SubstType(Pattern, TemplateArgs, in VisitNonTypeTemplateParmDecl()
2933 SemaRef.CheckNonTypeTemplateParameterType(NewDI, D->getLocation()); in VisitNonTypeTemplateParmDecl()
2950 Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(SemaRef, -1); in VisitNonTypeTemplateParmDecl()
2951 TypeSourceInfo *NewPattern = SemaRef.SubstType(Pattern, TemplateArgs, in VisitNonTypeTemplateParmDecl()
2957 SemaRef.CheckNonTypeTemplateParameterType(NewPattern, D->getLocation()); in VisitNonTypeTemplateParmDecl()
2958 DI = SemaRef.CheckPackExpansion(NewPattern, Expansion.getEllipsisLoc(), in VisitNonTypeTemplateParmDecl()
2967 DI = SemaRef.SubstType(D->getTypeSourceInfo(), TemplateArgs, in VisitNonTypeTemplateParmDecl()
2973 T = SemaRef.CheckNonTypeTemplateParameterType(DI, D->getLocation()); in VisitNonTypeTemplateParmDecl()
2975 T = SemaRef.Context.IntTy; in VisitNonTypeTemplateParmDecl()
2983 SemaRef.Context, Owner, D->getInnerLocStart(), D->getLocation(), in VisitNonTypeTemplateParmDecl()
2989 SemaRef.Context, Owner, D->getInnerLocStart(), D->getLocation(), in VisitNonTypeTemplateParmDecl()
2995 if (SemaRef.AttachTypeConstraint( in VisitNonTypeTemplateParmDecl()
3010 SemaRef, Sema::ExpressionEvaluationContext::ConstantEvaluated); in VisitNonTypeTemplateParmDecl()
3011 ExprResult Value = SemaRef.SubstExpr(D->getDefaultArgument(), TemplateArgs); in VisitNonTypeTemplateParmDecl()
3018 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Param); in VisitNonTypeTemplateParmDecl()
3055 LocalInstantiationScope Scope(SemaRef); in VisitTemplateTemplateParmDecl()
3070 collectUnexpandedParameterPacks(SemaRef, D->getTemplateParameters(), in VisitTemplateTemplateParmDecl()
3078 if (SemaRef.CheckParameterPacksForExpansion(D->getLocation(), in VisitTemplateTemplateParmDecl()
3088 Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(SemaRef, I); in VisitTemplateTemplateParmDecl()
3089 LocalInstantiationScope Scope(SemaRef); in VisitTemplateTemplateParmDecl()
3104 Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(SemaRef, -1); in VisitTemplateTemplateParmDecl()
3106 LocalInstantiationScope Scope(SemaRef); in VisitTemplateTemplateParmDecl()
3114 LocalInstantiationScope Scope(SemaRef); in VisitTemplateTemplateParmDecl()
3124 SemaRef.Context, Owner, D->getLocation(), in VisitTemplateTemplateParmDecl()
3129 SemaRef.Context, Owner, D->getLocation(), in VisitTemplateTemplateParmDecl()
3136 SemaRef.SubstNestedNameSpecifierLoc(QualifierLoc, TemplateArgs); in VisitTemplateTemplateParmDecl()
3137 TemplateName TName = SemaRef.SubstTemplateName( in VisitTemplateTemplateParmDecl()
3142 SemaRef.Context, in VisitTemplateTemplateParmDecl()
3143 TemplateArgumentLoc(SemaRef.Context, TemplateArgument(TName), in VisitTemplateTemplateParmDecl()
3152 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Param); in VisitTemplateTemplateParmDecl()
3162 = UsingDirectiveDecl::Create(SemaRef.Context, Owner, D->getLocation(), in VisitUsingDirectiveDecl()
3196 SemaRef.Context, Owner, EmptyD->getLocation(), EmptyD->getDeclName()); in VisitBaseUsingDecls()
3198 InstTarget = cast_or_null<NamedDecl>(SemaRef.FindInstantiatedDecl( in VisitBaseUsingDecls()
3206 SemaRef.CheckUsingShadowDecl(Inst, InstTarget, *Lookup, PrevDecl)) in VisitBaseUsingDecls()
3210 PrevDecl = cast_or_null<UsingShadowDecl>(SemaRef.FindInstantiatedDecl( in VisitBaseUsingDecls()
3213 UsingShadowDecl *InstShadow = SemaRef.BuildUsingShadowDecl( in VisitBaseUsingDecls()
3215 SemaRef.Context.setInstantiatedFromUsingShadowDecl(InstShadow, Shadow); in VisitBaseUsingDecls()
3218 SemaRef.CurrentInstantiationScope->InstantiatedLocal(Shadow, InstShadow); in VisitBaseUsingDecls()
3235 = SemaRef.SubstNestedNameSpecifierLoc(D->getQualifierLoc(), in VisitUsingDecl()
3245 if (auto *RD = dyn_cast<CXXRecordDecl>(SemaRef.CurContext)) in VisitUsingDecl()
3246 NameInfo.setName(SemaRef.Context.DeclarationNames.getCXXConstructorName( in VisitUsingDecl()
3247 SemaRef.Context.getCanonicalType(SemaRef.Context.getRecordType(RD)))); in VisitUsingDecl()
3252 LookupResult Prev(SemaRef, NameInfo, Sema::LookupUsingDeclName, in VisitUsingDecl()
3255 UsingDecl *NewUD = UsingDecl::Create(SemaRef.Context, Owner, in VisitUsingDecl()
3265 SemaRef.LookupQualifiedName(Prev, Owner); in VisitUsingDecl()
3268 if (SemaRef.CheckUsingDeclRedeclaration(D->getUsingLoc(), in VisitUsingDecl()
3275 SemaRef.CheckUsingDeclQualifier(D->getUsingLoc(), D->hasTypename(), SS, in VisitUsingDecl()
3279 SemaRef.Context.setInstantiatedFromUsingDecl(NewUD, D); in VisitUsingDecl()
3290 SemaRef.CheckInheritingConstructorUsingDecl(NewUD); in VisitUsingDecl()
3297 EnumDecl *EnumD = cast_or_null<EnumDecl>(SemaRef.FindInstantiatedDecl( in VisitUsingEnumDecl()
3300 if (SemaRef.RequireCompleteEnumDecl(EnumD, EnumD->getLocation())) in VisitUsingEnumDecl()
3303 TypeSourceInfo *TSI = SemaRef.SubstType(D->getEnumType(), TemplateArgs, in VisitUsingEnumDecl()
3306 UsingEnumDecl::Create(SemaRef.Context, Owner, D->getUsingLoc(), in VisitUsingEnumDecl()
3309 SemaRef.Context.setInstantiatedFromUsingEnumDecl(NewUD, D); in VisitUsingEnumDecl()
3341 SemaRef.collectUnexpandedParameterPacks(D->getQualifierLoc(), Unexpanded); in instantiateUnresolvedUsingDecl()
3342 SemaRef.collectUnexpandedParameterPacks(D->getNameInfo(), Unexpanded); in instantiateUnresolvedUsingDecl()
3349 if (SemaRef.CheckParameterPacksForExpansion( in instantiateUnresolvedUsingDecl()
3362 Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(SemaRef, -1); in instantiateUnresolvedUsingDecl()
3374 SemaRef.Diag(D->getEllipsisLoc(), in instantiateUnresolvedUsingDecl()
3382 Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(SemaRef, I); in instantiateUnresolvedUsingDecl()
3393 auto *NewD = SemaRef.BuildUsingPackDecl(D, Expansions); in instantiateUnresolvedUsingDecl()
3395 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, NewD); in instantiateUnresolvedUsingDecl()
3403 = SemaRef.SubstNestedNameSpecifierLoc(D->getQualifierLoc(), in instantiateUnresolvedUsingDecl()
3412 = SemaRef.SubstDeclarationNameInfo(D->getNameInfo(), TemplateArgs); in instantiateUnresolvedUsingDecl()
3417 SemaRef.ArgumentPackSubstitutionIndex != -1; in instantiateUnresolvedUsingDecl()
3422 NamedDecl *UD = SemaRef.BuildUsingDeclaration( in instantiateUnresolvedUsingDecl()
3428 SemaRef.InstantiateAttrs(TemplateArgs, D, UD); in instantiateUnresolvedUsingDecl()
3429 SemaRef.Context.setInstantiatedFromUsingDecl(UD, D); in instantiateUnresolvedUsingDecl()
3454 SemaRef.FindInstantiatedDecl(D->getLocation(), UD, TemplateArgs)) in VisitUsingPackDecl()
3460 auto *NewD = SemaRef.BuildUsingPackDecl(D, Expansions); in VisitUsingPackDecl()
3462 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, NewD); in VisitUsingPackDecl()
3477 Expr *Var = SemaRef.SubstExpr(I, TemplateArgs).get(); in VisitOMPThreadPrivateDecl()
3483 SemaRef.CheckOMPThreadPrivateDecl(D->getLocation(), Vars); in VisitOMPThreadPrivateDecl()
3494 Expr *Var = SemaRef.SubstExpr(I, TemplateArgs).get(); in VisitOMPAllocateDecl()
3503 ExprResult NewE = SemaRef.SubstExpr(AC->getAllocator(), TemplateArgs); in VisitOMPAllocateDecl()
3506 IC = SemaRef.ActOnOpenMPAllocatorClause( in VisitOMPAllocateDecl()
3509 ExprResult NewE = SemaRef.SubstExpr(AC->getAlignment(), TemplateArgs); in VisitOMPAllocateDecl()
3512 IC = SemaRef.ActOnOpenMPAlignClause(NewE.get(), AC->getBeginLoc(), in VisitOMPAllocateDecl()
3521 Sema::DeclGroupPtrTy Res = SemaRef.ActOnOpenMPAllocateDirective( in VisitOMPAllocateDecl()
3542 SubstReductionType = SemaRef.ActOnOpenMPDeclareReductionType( in VisitOMPDeclareReductionDecl()
3544 ParsedType::make(SemaRef.SubstType( in VisitOMPDeclareReductionDecl()
3560 SemaRef.CurrentInstantiationScope->findInstantiationOf(PrevDeclInScope) in VisitOMPDeclareReductionDecl()
3563 auto DRD = SemaRef.ActOnOpenMPDeclareReductionDirectiveStart( in VisitOMPDeclareReductionDecl()
3567 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, NewDRD); in VisitOMPDeclareReductionDecl()
3572 SemaRef.ActOnOpenMPDeclareReductionCombinerStart( in VisitOMPDeclareReductionDecl()
3574 SemaRef.CurrentInstantiationScope->InstantiatedLocal( in VisitOMPDeclareReductionDecl()
3577 SemaRef.CurrentInstantiationScope->InstantiatedLocal( in VisitOMPDeclareReductionDecl()
3581 Sema::CXXThisScopeRAII ThisScope(SemaRef, ThisContext, Qualifiers(), in VisitOMPDeclareReductionDecl()
3583 SubstCombiner = SemaRef.SubstExpr(Combiner, TemplateArgs).get(); in VisitOMPDeclareReductionDecl()
3584 SemaRef.ActOnOpenMPDeclareReductionCombinerEnd(NewDRD, SubstCombiner); in VisitOMPDeclareReductionDecl()
3588 VarDecl *OmpPrivParm = SemaRef.ActOnOpenMPDeclareReductionInitializerStart( in VisitOMPDeclareReductionDecl()
3590 SemaRef.CurrentInstantiationScope->InstantiatedLocal( in VisitOMPDeclareReductionDecl()
3593 SemaRef.CurrentInstantiationScope->InstantiatedLocal( in VisitOMPDeclareReductionDecl()
3597 SubstInitializer = SemaRef.SubstExpr(Init, TemplateArgs).get(); in VisitOMPDeclareReductionDecl()
3603 SemaRef.InstantiateVariableInitializer(OmpPrivParm, OldPrivParm, in VisitOMPDeclareReductionDecl()
3606 SemaRef.ActOnOpenMPDeclareReductionInitializerEnd(NewDRD, SubstInitializer, in VisitOMPDeclareReductionDecl()
3616 (void)SemaRef.ActOnOpenMPDeclareReductionDirectiveEnd( in VisitOMPDeclareReductionDecl()
3632 SubstMapperTy = SemaRef.ActOnOpenMPDeclareMapperType( in VisitOMPDeclareMapperDecl()
3634 ParsedType::make(SemaRef.SubstType(D->getType(), TemplateArgs, in VisitOMPDeclareMapperDecl()
3645 SemaRef.CurrentInstantiationScope->findInstantiationOf(PrevDeclInScope) in VisitOMPDeclareMapperDecl()
3652 SemaRef.StartOpenMPDSABlock(llvm::omp::OMPD_declare_mapper, DirName, in VisitOMPDeclareMapperDecl()
3655 ExprResult MapperVarRef = SemaRef.ActOnOpenMPDeclareMapperDirectiveVarDecl( in VisitOMPDeclareMapperDecl()
3657 SemaRef.CurrentInstantiationScope->InstantiatedLocal( in VisitOMPDeclareMapperDecl()
3661 Sema::CXXThisScopeRAII ThisScope(SemaRef, ThisContext, Qualifiers(), in VisitOMPDeclareMapperDecl()
3668 Expr *NE = SemaRef.SubstExpr(OE, TemplateArgs).get(); in VisitOMPDeclareMapperDecl()
3678 SemaRef.SubstNestedNameSpecifierLoc(OldC->getMapperQualifierLoc(), in VisitOMPDeclareMapperDecl()
3683 SemaRef.SubstDeclarationNameInfo(OldC->getMapperIdInfo(), TemplateArgs); in VisitOMPDeclareMapperDecl()
3686 OMPClause *NewC = SemaRef.ActOnOpenMPMapClause( in VisitOMPDeclareMapperDecl()
3693 SemaRef.EndOpenMPDSABlock(nullptr); in VisitOMPDeclareMapperDecl()
3696 Sema::DeclGroupPtrTy DG = SemaRef.ActOnOpenMPDeclareMapperDirective( in VisitOMPDeclareMapperDecl()
3700 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, NewDMD); in VisitOMPDeclareMapperDecl()
3743 cast_or_null<ClassTemplateDecl>(SemaRef.FindInstantiatedDecl( in VisitClassTemplateSpecializationDecl()
3757 if (SemaRef.SubstTemplateArguments(ArgLocs, TemplateArgs, InstTemplateArgs)) in VisitClassTemplateSpecializationDecl()
3763 if (SemaRef.CheckTemplateArgumentList(InstClassTemplate, D->getLocation(), in VisitClassTemplateSpecializationDecl()
3779 SemaRef.CheckSpecializationInstantiationRedecl(D->getLocation(), in VisitClassTemplateSpecializationDecl()
3801 SemaRef.Diag(D->getLocation(), diag::err_redefinition) << PrevDecl; in VisitClassTemplateSpecializationDecl()
3802 SemaRef.Diag(PrevDecl->getDefinition()->getLocation(), in VisitClassTemplateSpecializationDecl()
3810 SemaRef.Context, D->getTagKind(), Owner, D->getBeginLoc(), in VisitClassTemplateSpecializationDecl()
3824 QualType CanonType = SemaRef.Context.getTemplateSpecializationType( in VisitClassTemplateSpecializationDecl()
3826 SemaRef.Context.getRecordType(InstD)); in VisitClassTemplateSpecializationDecl()
3835 TypeSourceInfo *WrittenTy = SemaRef.Context.getTemplateSpecializationTypeInfo( in VisitClassTemplateSpecializationDecl()
3853 SemaRef.InstantiateClass(D->getLocation(), InstD, D, TemplateArgs, in VisitClassTemplateSpecializationDecl()
3870 cast_or_null<VarTemplateDecl>(SemaRef.FindInstantiatedDecl( in VisitVarTemplateSpecializationDecl()
3881 if (SemaRef.SubstTemplateArguments(TemplateArgsInfo->arguments(), in VisitVarTemplateSpecializationDecl()
3888 if (SemaRef.CheckTemplateArgumentList(InstVarTemplate, D->getLocation(), in VisitVarTemplateSpecializationDecl()
3902 if (PrevDecl && SemaRef.CheckSpecializationInstantiationRedecl( in VisitVarTemplateSpecializationDecl()
3920 SemaRef.SubstType(D->getTypeSourceInfo(), TemplateArgs, in VisitVarTemplateSpecializationDecl()
3926 SemaRef.Diag(D->getLocation(), diag::err_variable_instantiates_to_function) in VisitVarTemplateSpecializationDecl()
3933 SemaRef.Context, Owner, D->getInnerLocStart(), D->getLocation(), in VisitVarTemplateSpecializationDecl()
3942 if (SemaRef.getLangOpts().OpenCL) in VisitVarTemplateSpecializationDecl()
3943 SemaRef.deduceOpenCLAddressSpace(Var); in VisitVarTemplateSpecializationDecl()
3949 SemaRef.BuildVariableInstantiation(Var, D, TemplateArgs, LateAttrs, Owner, in VisitVarTemplateSpecializationDecl()
3961 unsigned DiagID = SemaRef.getDiagnostics().getCustomDiagID( in VisitFriendTemplateDecl()
3964 SemaRef.Diag(D->getLocation(), DiagID) in VisitFriendTemplateDecl()
3981 return RequiresExprBodyDecl::Create(SemaRef.Context, D->getDeclContext(), in VisitRequiresExprBodyDecl()
4011 T = SemaRef.Context.getFunctionType( in adjustForRewrite()
4012 SemaRef.Context.BoolTy, FPT->getParamTypes(), FPT->getExtProtoInfo()); in adjustForRewrite()
4021 SemaRef.Context.getTrivialTypeSourceInfo(T, Orig->getEndLoc()); in adjustForRewrite()
4031 SemaRef.Context.DeclarationNames.getCXXOperatorName(OO_EqualEqual)); in adjustForRewrite()
4099 = TemplateParameterList::Create(SemaRef.Context, L->getTemplateLoc(), in SubstTemplateParams()
4132 LocalInstantiationScope Scope(SemaRef); in InstantiateClassTemplatePartialSpecialization()
4147 if (SemaRef.SubstTemplateArguments(TemplArgInfo->arguments(), TemplateArgs, in InstantiateClassTemplatePartialSpecialization()
4154 if (SemaRef.CheckTemplateArgumentList( in InstantiateClassTemplatePartialSpecialization()
4160 if (SemaRef.CheckTemplatePartialSpecializationArgs( in InstantiateClassTemplatePartialSpecialization()
4174 QualType CanonType = SemaRef.Context.getTemplateSpecializationType( in InstantiateClassTemplatePartialSpecialization()
4185 = SemaRef.Context.getTemplateSpecializationTypeInfo( in InstantiateClassTemplatePartialSpecialization()
4207 SemaRef.Diag(PartialSpec->getLocation(), diag::err_partial_spec_redeclared) in InstantiateClassTemplatePartialSpecialization()
4209 SemaRef.Diag(PrevDecl->getLocation(), diag::note_prev_partial_spec_here) in InstantiateClassTemplatePartialSpecialization()
4210 << SemaRef.Context.getTypeDeclType(PrevDecl); in InstantiateClassTemplatePartialSpecialization()
4218 SemaRef.Context, PartialSpec->getTagKind(), Owner, in InstantiateClassTemplatePartialSpecialization()
4230 SemaRef.CheckTemplatePartialSpecialization(InstPartialSpec); in InstantiateClassTemplatePartialSpecialization()
4257 LocalInstantiationScope Scope(SemaRef); in InstantiateVarTemplatePartialSpecialization()
4272 if (SemaRef.SubstTemplateArguments(TemplArgInfo->arguments(), TemplateArgs, in InstantiateVarTemplatePartialSpecialization()
4279 if (SemaRef.CheckTemplateArgumentList( in InstantiateVarTemplatePartialSpecialization()
4285 if (SemaRef.CheckTemplatePartialSpecializationArgs( in InstantiateVarTemplatePartialSpecialization()
4299 QualType CanonType = SemaRef.Context.getTemplateSpecializationType( in InstantiateVarTemplatePartialSpecialization()
4309 TypeSourceInfo *WrittenTy = SemaRef.Context.getTemplateSpecializationTypeInfo( in InstantiateVarTemplatePartialSpecialization()
4329 SemaRef.Diag(PartialSpec->getLocation(), in InstantiateVarTemplatePartialSpecialization()
4332 SemaRef.Diag(PrevDecl->getLocation(), in InstantiateVarTemplatePartialSpecialization()
4338 TypeSourceInfo *DI = SemaRef.SubstType( in InstantiateVarTemplatePartialSpecialization()
4345 SemaRef.Diag(PartialSpec->getLocation(), in InstantiateVarTemplatePartialSpecialization()
4354 SemaRef.Context, Owner, PartialSpec->getInnerLocStart(), in InstantiateVarTemplatePartialSpecialization()
4367 SemaRef.CheckTemplatePartialSpecialization(InstPartialSpec); in InstantiateVarTemplatePartialSpecialization()
4373 SemaRef.BuildVariableInstantiation(InstPartialSpec, PartialSpec, TemplateArgs, in InstantiateVarTemplatePartialSpecialization()
4393 TypeSourceInfo *NewTInfo = SemaRef.SubstFunctionDeclType( in SubstFunctionType()
4412 LocalInstantiationScope *Scope = SemaRef.CurrentInstantiationScope; in SubstFunctionType()
4417 SemaRef.getNumArgumentsInExpansion(OldParam->getType(), in SubstFunctionType()
4445 Params.push_back(SemaRef.BuildParmVarDeclForTypedef( in SubstFunctionType()
4470 if (SemaRef.SubstParmTypes(D->getLocation(), D->parameters(), nullptr, in SubstFunctionType()
4630 SemaRef.Context.setManglingNumber(New, in InitFunctionInstantiation()
4631 SemaRef.Context.getManglingNumber(Tmpl)); in InitFunctionInstantiation()
4644 ActiveInstType &ActiveInst = SemaRef.CodeSynthesisContexts.back(); in InitFunctionInstantiation()
4652 SemaRef.InstantiatingSpecializations.erase( in InitFunctionInstantiation()
4654 atTemplateEnd(SemaRef.TemplateInstCallbacks, SemaRef, ActiveInst); in InitFunctionInstantiation()
4657 atTemplateBegin(SemaRef.TemplateInstCallbacks, SemaRef, ActiveInst); in InitFunctionInstantiation()
4671 if (SemaRef.getLangOpts().CPlusPlus11 && in InitFunctionInstantiation()
4691 New->setType(SemaRef.Context.getFunctionType( in InitFunctionInstantiation()
4694 Sema::ContextRAII SwitchContext(SemaRef, New); in InitFunctionInstantiation()
4695 SemaRef.SubstExceptionSpec(New, Proto, TemplateArgs); in InitFunctionInstantiation()
4703 SemaRef.InstantiateAttrs(TemplateArgs, Definition, New, in InitFunctionInstantiation()
4720 if (isa<CXXDestructorDecl>(New) && SemaRef.getLangOpts().CPlusPlus11) in InitMethodInstantiation()
4721 SemaRef.AdjustDestructorExceptionSpec(cast<CXXDestructorDecl>(New)); in InitMethodInstantiation()
4739 NamedDecl *D = SemaRef.FindInstantiatedDecl(New->getLocation(), in SubstDefaultedFunction()
4751 SemaRef.Context, Lookups) in SubstDefaultedFunction()
4755 SemaRef.SetDeclDefaulted(New, Tmpl->getLocation()); in SubstDefaultedFunction()
5003 SpecialMemberTypeInfoRebuilder(Sema &SemaRef, const CXXRecordDecl *O, in InstantiateFunctionDefinition()
5005 : TreeTransform(SemaRef), OldDecl(O), NewDecl(N) {} in InstantiateFunctionDefinition()