Lines Matching refs:SemaRef
47 static bool SubstQualifier(Sema &SemaRef, const DeclT *OldDecl, DeclT *NewDecl, in SubstQualifier() argument
56 SemaRef, in SubstQualifier()
62 = SemaRef.SubstNestedNameSpecifierLoc(OldDecl->getQualifierLoc(), in SubstQualifier()
74 return ::SubstQualifier(SemaRef, OldDecl, NewDecl, TemplateArgs); in SubstQualifier()
79 return ::SubstQualifier(SemaRef, OldDecl, NewDecl, TemplateArgs); in SubstQualifier()
907 LabelDecl *Inst = LabelDecl::Create(SemaRef.Context, Owner, D->getLocation(), in VisitLabelDecl()
921 = NamespaceAliasDecl::Create(SemaRef.Context, Owner, in VisitNamespaceAliasDecl()
938 DI = SemaRef.SubstType(DI, TemplateArgs, in InstantiateTypedefNameDecl()
942 DI = SemaRef.Context.getTrivialTypeSourceInfo(SemaRef.Context.IntTy); in InstantiateTypedefNameDecl()
945 SemaRef.MarkDeclarationsReferencedInType(D->getLocation(), DI->getType()); in InstantiateTypedefNameDecl()
957 RD->getEnclosingNamespaceContext() == SemaRef.getStdNamespace() && in InstantiateTypedefNameDecl()
960 SemaRef.getSourceManager().isInSystemHeader(D->getBeginLoc())) in InstantiateTypedefNameDecl()
962 DI = SemaRef.Context.getTrivialTypeSourceInfo( in InstantiateTypedefNameDecl()
968 Typedef = TypeAliasDecl::Create(SemaRef.Context, Owner, D->getBeginLoc(), in InstantiateTypedefNameDecl()
971 Typedef = TypedefDecl::Create(SemaRef.Context, Owner, D->getBeginLoc(), in InstantiateTypedefNameDecl()
988 NamedDecl *InstPrev = SemaRef.FindInstantiatedDecl(D->getLocation(), Prev, in InstantiateTypedefNameDecl()
996 SemaRef.isIncompatibleTypedef(InstPrevTypedef, Typedef); in InstantiateTypedefNameDecl()
1001 SemaRef.InstantiateAttrs(TemplateArgs, D, Typedef); in InstantiateTypedefNameDecl()
1004 SemaRef.inferGslPointerAttribute(Typedef); in InstantiateTypedefNameDecl()
1030 LocalInstantiationScope Scope(SemaRef); in VisitTypeAliasTemplateDecl()
1053 = TypeAliasTemplateDecl::Create(SemaRef.Context, Owner, D->getLocation(), in VisitTypeAliasTemplateDecl()
1070 auto *NewBD = BindingDecl::Create(SemaRef.Context, Owner, D->getLocation(), in VisitBindingDecl()
1073 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, NewBD); in VisitBindingDecl()
1103 TypeSourceInfo *DI = SemaRef.SubstType( in VisitVarDecl()
1110 SemaRef.Diag(D->getLocation(), diag::err_variable_instantiates_to_function) in VisitVarDecl()
1117 SemaRef.adjustContextForLocalExternDecl(DC); in VisitVarDecl()
1122 Var = DecompositionDecl::Create(SemaRef.Context, DC, D->getInnerLocStart(), in VisitVarDecl()
1126 Var = VarDecl::Create(SemaRef.Context, DC, D->getInnerLocStart(), in VisitVarDecl()
1131 if (SemaRef.getLangOpts().ObjCAutoRefCount && in VisitVarDecl()
1132 SemaRef.inferObjCARCLifetime(Var)) in VisitVarDecl()
1135 if (SemaRef.getLangOpts().OpenCL) in VisitVarDecl()
1136 SemaRef.deduceOpenCLAddressSpace(Var); in VisitVarDecl()
1142 SemaRef.BuildVariableInstantiation(Var, D, TemplateArgs, LateAttrs, Owner, in VisitVarDecl()
1149 RT = cast<FunctionType>(SemaRef.getCurBlock()->FunctionType) in VisitVarDecl()
1165 Sema::NamedReturnInfo Info = SemaRef.getNamedReturnInfo(Var); in VisitVarDecl()
1166 bool NRVO = SemaRef.getCopyElisionCandidate(Info, RT) != nullptr; in VisitVarDecl()
1173 SemaRef.CheckStaticLocalForDllExport(Var); in VisitVarDecl()
1180 = AccessSpecDecl::Create(SemaRef.Context, D->getAccess(), Owner, in VisitAccessSpecDecl()
1191 DI = SemaRef.SubstType(DI, TemplateArgs, in VisitFieldDecl()
1203 SemaRef.Diag(D->getLocation(), diag::err_field_instantiates_to_function) in VisitFieldDecl()
1208 SemaRef.MarkDeclarationsReferencedInType(D->getLocation(), DI->getType()); in VisitFieldDecl()
1217 SemaRef, Sema::ExpressionEvaluationContext::ConstantEvaluated); in VisitFieldDecl()
1220 = SemaRef.SubstExpr(BitWidth, TemplateArgs); in VisitFieldDecl()
1228 FieldDecl *Field = SemaRef.CheckFieldDecl(D->getDeclName(), in VisitFieldDecl()
1243 SemaRef.InstantiateAttrs(TemplateArgs, D, Field, LateAttrs, StartingScope); in VisitFieldDecl()
1246 SemaRef.CheckAlignasUnderalignment(Field); in VisitFieldDecl()
1253 SemaRef.Context.setInstantiatedFromUnnamedFieldDecl(Field, D); in VisitFieldDecl()
1258 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Field); in VisitFieldDecl()
1273 SemaRef.Diag(D->getLocation(), diag::err_property_is_variably_modified) in VisitMSPropertyDecl()
1277 DI = SemaRef.SubstType(DI, TemplateArgs, in VisitMSPropertyDecl()
1289 SemaRef.Diag(D->getLocation(), diag::err_field_instantiates_to_function) in VisitMSPropertyDecl()
1294 SemaRef.MarkDeclarationsReferencedInType(D->getLocation(), DI->getType()); in VisitMSPropertyDecl()
1298 SemaRef.Context, Owner, D->getLocation(), D->getDeclName(), DI->getType(), in VisitMSPropertyDecl()
1301 SemaRef.InstantiateAttrs(TemplateArgs, D, Property, LateAttrs, in VisitMSPropertyDecl()
1315 new (SemaRef.Context)NamedDecl*[D->getChainingSize()]; in VisitIndirectFieldDecl()
1319 NamedDecl *Next = SemaRef.FindInstantiatedDecl(D->getLocation(), PI, in VisitIndirectFieldDecl()
1329 SemaRef.Context, Owner, D->getLocation(), D->getIdentifier(), T, in VisitIndirectFieldDecl()
1333 IndirectField->addAttr(Attr->clone(SemaRef.Context)); in VisitIndirectFieldDecl()
1353 InstTy = SemaRef.SubstType(Ty, TemplateArgs, in VisitFriendDecl()
1359 FriendDecl *FD = SemaRef.CheckFriendTypeDecl(D->getBeginLoc(), in VisitFriendDecl()
1381 FriendDecl::Create(SemaRef.Context, Owner, D->getLocation(), in VisitFriendDecl()
1394 SemaRef, Sema::ExpressionEvaluationContext::ConstantEvaluated); in VisitStaticAssertDecl()
1397 = SemaRef.SubstExpr(AssertExpr, TemplateArgs); in VisitStaticAssertDecl()
1401 return SemaRef.BuildStaticAssertDeclaration(D->getLocation(), in VisitStaticAssertDecl()
1411 NamedDecl *Prev = SemaRef.FindInstantiatedDecl(D->getLocation(), in VisitEnumDecl()
1419 EnumDecl::Create(SemaRef.Context, Owner, D->getBeginLoc(), in VisitEnumDecl()
1428 TypeSourceInfo *NewTI = SemaRef.SubstType(TI, TemplateArgs, UnderlyingLoc, in VisitEnumDecl()
1430 if (!NewTI || SemaRef.CheckEnumUnderlyingType(NewTI)) in VisitEnumDecl()
1431 Enum->setIntegerType(SemaRef.Context.IntTy); in VisitEnumDecl()
1441 SemaRef.InstantiateAttrs(TemplateArgs, D, Enum); in VisitEnumDecl()
1446 SemaRef.Context.setManglingNumber(Enum, SemaRef.Context.getManglingNumber(D)); in VisitEnumDecl()
1449 if (DeclaratorDecl *DD = SemaRef.Context.getDeclaratorForUnnamedTagDecl(D)) in VisitEnumDecl()
1450 SemaRef.Context.addDeclaratorForUnnamedTagDecl(Enum, DD); in VisitEnumDecl()
1453 if (TypedefNameDecl *TND = SemaRef.Context.getTypedefNameForUnnamedTagDecl(D)) in VisitEnumDecl()
1454 SemaRef.Context.addTypedefNameForUnnamedTagDecl(Enum, TND); in VisitEnumDecl()
1466 SemaRef.SubstType(TI->getType(), TemplateArgs, in VisitEnumDecl()
1468 SemaRef.CheckEnumRedeclaration(Def->getLocation(), Def->isScoped(), in VisitEnumDecl()
1481 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Enum); in VisitEnumDecl()
1504 SemaRef, Sema::ExpressionEvaluationContext::ConstantEvaluated); in InstantiateEnumDefinition()
1506 Value = SemaRef.SubstExpr(UninstValue, TemplateArgs); in InstantiateEnumDefinition()
1517 = SemaRef.CheckEnumConstant(Enum, LastEnumConst, in InstantiateEnumDefinition()
1528 SemaRef.InstantiateAttrs(TemplateArgs, EC, EnumConst); in InstantiateEnumDefinition()
1539 SemaRef.CurrentInstantiationScope->InstantiatedLocal(EC, EnumConst); in InstantiateEnumDefinition()
1544 SemaRef.ActOnEnumBody(Enum->getLocation(), Enum->getBraceRange(), Enum, in InstantiateEnumDefinition()
1562 LocalInstantiationScope Scope(SemaRef); in VisitClassTemplateDecl()
1575 QualifierLoc = SemaRef.SubstNestedNameSpecifierLoc(QualifierLoc, in VisitClassTemplateDecl()
1602 DC = SemaRef.computeDeclContext(SS); in VisitClassTemplateDecl()
1605 DC = SemaRef.FindInstantiatedContext(Pattern->getLocation(), in VisitClassTemplateDecl()
1612 LookupResult R(SemaRef, Pattern->getDeclName(), Pattern->getLocation(), in VisitClassTemplateDecl()
1614 SemaRef.forRedeclarationInCurContext()); in VisitClassTemplateDecl()
1615 SemaRef.LookupQualifiedName(R, DC); in VisitClassTemplateDecl()
1624 SemaRef.Diag(Pattern->getLocation(), diag::err_not_tag_in_scope) in VisitClassTemplateDecl()
1635 if (!SemaRef.TemplateParameterListsAreEqual(InstParams, PrevParams, true, in VisitClassTemplateDecl()
1641 if (SemaRef.CheckTemplateParameterList(InstParams, PrevParams, in VisitClassTemplateDecl()
1648 SemaRef.Context, Pattern->getTagKind(), DC, Pattern->getBeginLoc(), in VisitClassTemplateDecl()
1655 SemaRef.InstantiateAttrsForDecl(TemplateArgs, Pattern, RecordInst, LateAttrs, in VisitClassTemplateDecl()
1659 = ClassTemplateDecl::Create(SemaRef.Context, DC, D->getLocation(), in VisitClassTemplateDecl()
1682 SemaRef.Context.getInjectedClassNameType(RecordInst, in VisitClassTemplateDecl()
1744 LocalInstantiationScope Scope(SemaRef); in VisitVarTemplateDecl()
1767 SemaRef.Context, DC, D->getLocation(), D->getIdentifier(), InstParams, in VisitVarTemplateDecl()
1825 LocalInstantiationScope Scope(SemaRef); in VisitFunctionTemplateDecl()
1865 SemaRef.CheckFriendAccess(InstTemplate); in VisitFunctionTemplateDecl()
1874 NamedDecl *Prev = SemaRef.FindInstantiatedDecl(D->getLocation(), in VisitCXXRecordDecl()
1885 SemaRef.Context, Owner, D->getLambdaTypeInfo(), D->getLocation(), in VisitCXXRecordDecl()
1889 Record = CXXRecordDecl::Create(SemaRef.Context, D->getTagKind(), Owner, in VisitCXXRecordDecl()
1895 (void)SemaRef.Context.getTypeDeclType(Record, cast<CXXRecordDecl>(Owner)); in VisitCXXRecordDecl()
1901 SemaRef.InstantiateAttrsForDecl(TemplateArgs, D, Record, LateAttrs, in VisitCXXRecordDecl()
1923 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Record); in VisitCXXRecordDecl()
1926 SemaRef.Context.setManglingNumber(Record, in VisitCXXRecordDecl()
1927 SemaRef.Context.getManglingNumber(D)); in VisitCXXRecordDecl()
1931 if (DeclaratorDecl *DD = SemaRef.Context.getDeclaratorForUnnamedTagDecl(D)) in VisitCXXRecordDecl()
1932 SemaRef.Context.addDeclaratorForUnnamedTagDecl(Record, DD); in VisitCXXRecordDecl()
1936 if (TypedefNameDecl *TND = SemaRef.Context.getTypedefNameForUnnamedTagDecl(D)) in VisitCXXRecordDecl()
1937 SemaRef.Context.addTypedefNameForUnnamedTagDecl(Record, TND); in VisitCXXRecordDecl()
1944 Sema::LocalEagerInstantiationScope LocalInstantiations(SemaRef); in VisitCXXRecordDecl()
1946 SemaRef.InstantiateClass(D->getLocation(), Record, D, TemplateArgs, in VisitCXXRecordDecl()
1953 SemaRef.InstantiateClassMembers(D->getLocation(), Record, TemplateArgs, in VisitCXXRecordDecl()
1961 SemaRef.DiagnoseUnusedNestedTypedefs(Record); in VisitCXXRecordDecl()
2024 LocalInstantiationScope Scope(SemaRef, MergeWithParentScope); in VisitFunctionDecl()
2029 SemaRef, TemplateArgs, DGuide->getExplicitSpecifier(), DGuide); in VisitFunctionDecl()
2038 QualType T = adjustFunctionTypeForInstantiation(SemaRef.Context, D, TInfo); in VisitFunctionDecl()
2051 SemaRef.Context, TemplateParams->getTemplateLoc(), in VisitFunctionDecl()
2059 QualifierLoc = SemaRef.SubstNestedNameSpecifierLoc(QualifierLoc, in VisitFunctionDecl()
2069 SemaRef, Sema::ExpressionEvaluationContext::Unevaluated); in VisitFunctionDecl()
2070 ExprResult SubstRC = SemaRef.SubstExpr(TrailingRequiresClause, in VisitFunctionDecl()
2075 if (!SemaRef.CheckConstraintExpression(TrailingRequiresClause)) in VisitFunctionDecl()
2085 SemaRef.adjustContextForLocalExternDecl(DC); in VisitFunctionDecl()
2089 DC = SemaRef.computeDeclContext(SS); in VisitFunctionDecl()
2092 DC = SemaRef.FindInstantiatedContext(D->getLocation(), D->getDeclContext(), in VisitFunctionDecl()
2097 = SemaRef.SubstDeclarationNameInfo(D->getNameInfo(), TemplateArgs); in VisitFunctionDecl()
2105 SemaRef.Context, DC, D->getInnerLocStart(), in VisitFunctionDecl()
2113 SemaRef.Context, DC, D->getInnerLocStart(), NameInfo, T, TInfo, in VisitFunctionDecl()
2161 FunctionTemplate = FunctionTemplateDecl::Create(SemaRef.Context, DC, in VisitFunctionDecl()
2177 TemplateArgumentList::CreateCopy(SemaRef.Context, in VisitFunctionDecl()
2204 SemaRef, Function->getDeclName(), SourceLocation(), in VisitFunctionDecl()
2208 : SemaRef.forRedeclarationInCurContext()); in VisitFunctionDecl()
2217 if (SemaRef.SubstTemplateArguments(Info->arguments(), TemplateArgs, in VisitFunctionDecl()
2223 Decl *Temp = SemaRef.FindInstantiatedDecl(D->getLocation(), in VisitFunctionDecl()
2231 if (SemaRef.CheckFunctionTemplateSpecialization(Function, in VisitFunctionDecl()
2240 SemaRef.LookupQualifiedName(Previous, DC); in VisitFunctionDecl()
2245 if (SemaRef.SubstTemplateArguments(Info->arguments(), TemplateArgs, in VisitFunctionDecl()
2249 if (SemaRef.CheckFunctionTemplateSpecialization(Function, in VisitFunctionDecl()
2259 SemaRef.LookupQualifiedName(Previous, DC->getRedeclContext()); in VisitFunctionDecl()
2271 SemaRef.FilterLookupForScope(Previous, DC, /*Scope*/ nullptr, in VisitFunctionDecl()
2276 SemaRef.CheckFunctionDeclaration(/*Scope*/ nullptr, Function, Previous, in VisitFunctionDecl()
2285 SemaRef.CheckTemplateParameterList( in VisitFunctionDecl()
2303 SemaRef.PendingLocalImplicitInstantiations.push_back( in VisitFunctionDecl()
2314 SemaRef.SetDeclDeleted(Function, D->getLocation()); in VisitFunctionDecl()
2361 LocalInstantiationScope Scope(SemaRef, MergeWithParentScope); in VisitCXXMethodDecl()
2378 instantiateExplicitSpecifier(SemaRef, TemplateArgs, in VisitCXXMethodDecl()
2393 SemaRef.Context.getTrivialTypeSourceInfo(D->getType()); in VisitCXXMethodDecl()
2401 QualType T = adjustFunctionTypeForInstantiation(SemaRef.Context, D, TInfo); in VisitCXXMethodDecl()
2414 SemaRef.Context, TemplateParams->getTemplateLoc(), in VisitCXXMethodDecl()
2422 QualifierLoc = SemaRef.SubstNestedNameSpecifierLoc(QualifierLoc, in VisitCXXMethodDecl()
2432 SemaRef, Sema::ExpressionEvaluationContext::Unevaluated); in VisitCXXMethodDecl()
2434 Sema::CXXThisScopeRAII ThisScope(SemaRef, ThisContext, in VisitCXXMethodDecl()
2436 ExprResult SubstRC = SemaRef.SubstExpr(TrailingRequiresClause, in VisitCXXMethodDecl()
2441 if (!SemaRef.CheckConstraintExpression(TrailingRequiresClause)) in VisitCXXMethodDecl()
2450 DC = SemaRef.computeDeclContext(SS); in VisitCXXMethodDecl()
2452 if (DC && SemaRef.RequireCompleteDeclContext(SS, DC)) in VisitCXXMethodDecl()
2455 DC = SemaRef.FindInstantiatedContext(D->getLocation(), in VisitCXXMethodDecl()
2463 = SemaRef.SubstDeclarationNameInfo(D->getNameInfo(), TemplateArgs); in VisitCXXMethodDecl()
2475 SemaRef.Context, Record, StartLoc, NameInfo, T, TInfo, in VisitCXXMethodDecl()
2483 SemaRef.Context, Record, StartLoc, NameInfo, T, TInfo, in VisitCXXMethodDecl()
2488 Method->setDeclName(SemaRef.Context.DeclarationNames.getCXXDestructorName( in VisitCXXMethodDecl()
2489 SemaRef.Context.getCanonicalType( in VisitCXXMethodDecl()
2490 SemaRef.Context.getTypeDeclType(Record)))); in VisitCXXMethodDecl()
2493 SemaRef.Context, Record, StartLoc, NameInfo, T, TInfo, in VisitCXXMethodDecl()
2500 SemaRef.Context, Record, StartLoc, NameInfo, T, TInfo, SC, in VisitCXXMethodDecl()
2525 FunctionTemplate = FunctionTemplateDecl::Create(SemaRef.Context, Record, in VisitCXXMethodDecl()
2539 TemplateArgumentList::CreateCopy(SemaRef.Context, in VisitCXXMethodDecl()
2553 SemaRef.Context, in VisitCXXMethodDecl()
2569 LookupResult Previous(SemaRef, NameInfo, Sema::LookupOrdinaryName, in VisitCXXMethodDecl()
2583 if (SemaRef.SubstTemplateArguments(Info->arguments(), TemplateArgs, in VisitCXXMethodDecl()
2589 Decl *Temp = SemaRef.FindInstantiatedDecl(D->getLocation(), in VisitCXXMethodDecl()
2597 if (SemaRef.CheckFunctionTemplateSpecialization(Method, in VisitCXXMethodDecl()
2606 SemaRef.LookupQualifiedName(Previous, DC); in VisitCXXMethodDecl()
2610 if (SemaRef.SubstTemplateArguments(Info->arguments(), TemplateArgs, in VisitCXXMethodDecl()
2614 if (SemaRef.CheckFunctionTemplateSpecialization(Method, in VisitCXXMethodDecl()
2623 SemaRef.LookupQualifiedName(Previous, DC); in VisitCXXMethodDecl()
2624 if (SemaRef.CheckFunctionTemplateSpecialization(Method, nullptr, Previous)) in VisitCXXMethodDecl()
2629 SemaRef.LookupQualifiedName(Previous, Record); in VisitCXXMethodDecl()
2639 SemaRef.CheckFunctionDeclaration(nullptr, Method, Previous, in VisitCXXMethodDecl()
2644 SemaRef.CheckPureMethod(Method, SourceRange()); in VisitCXXMethodDecl()
2656 SemaRef.CheckOverrideControl(Method); in VisitCXXMethodDecl()
2664 SemaRef.SetDeclDeleted(Method, Method->getLocation()); in VisitCXXMethodDecl()
2670 SemaRef.CompleteMemberSpecialization(Method, Previous); in VisitCXXMethodDecl()
2685 SemaRef.CheckFriendAccess(Method); in VisitCXXMethodDecl()
2706 SemaRef.MarkFunctionReferenced(Loc, Method); in VisitCXXMethodDecl()
2726 return SemaRef.SubstParmVarDecl(D, TemplateArgs, /*indexAdjustment*/ 0, None, in VisitParmVarDecl()
2746 SemaRef.collectUnexpandedParameterPacks(ArgLoc, Unexpanded); in VisitTemplateTypeParmDecl()
2752 if (SemaRef.CheckParameterPacksForExpansion( in VisitTemplateTypeParmDecl()
2765 SemaRef.Context, Owner, D->getBeginLoc(), D->getLocation(), in VisitTemplateTypeParmDecl()
2780 if (SemaRef.SubstTypeConstraint(Inst, TC, TemplateArgs)) in VisitTemplateTypeParmDecl()
2786 SemaRef.SubstType(D->getDefaultArgumentInfo(), TemplateArgs, in VisitTemplateTypeParmDecl()
2794 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Inst); in VisitTemplateTypeParmDecl()
2817 SemaRef.SubstType(D->getExpansionTypeSourceInfo(I), TemplateArgs, in VisitNonTypeTemplateParmDecl()
2823 SemaRef.CheckNonTypeTemplateParameterType(NewDI, D->getLocation()); in VisitNonTypeTemplateParmDecl()
2841 SemaRef.collectUnexpandedParameterPacks(Pattern, Unexpanded); in VisitNonTypeTemplateParmDecl()
2850 if (SemaRef.CheckParameterPacksForExpansion(Expansion.getEllipsisLoc(), in VisitNonTypeTemplateParmDecl()
2860 Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(SemaRef, I); in VisitNonTypeTemplateParmDecl()
2861 TypeSourceInfo *NewDI = SemaRef.SubstType(Pattern, TemplateArgs, in VisitNonTypeTemplateParmDecl()
2868 SemaRef.CheckNonTypeTemplateParameterType(NewDI, D->getLocation()); in VisitNonTypeTemplateParmDecl()
2885 Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(SemaRef, -1); in VisitNonTypeTemplateParmDecl()
2886 TypeSourceInfo *NewPattern = SemaRef.SubstType(Pattern, TemplateArgs, in VisitNonTypeTemplateParmDecl()
2892 SemaRef.CheckNonTypeTemplateParameterType(NewPattern, D->getLocation()); in VisitNonTypeTemplateParmDecl()
2893 DI = SemaRef.CheckPackExpansion(NewPattern, Expansion.getEllipsisLoc(), in VisitNonTypeTemplateParmDecl()
2902 DI = SemaRef.SubstType(D->getTypeSourceInfo(), TemplateArgs, in VisitNonTypeTemplateParmDecl()
2908 T = SemaRef.CheckNonTypeTemplateParameterType(DI, D->getLocation()); in VisitNonTypeTemplateParmDecl()
2910 T = SemaRef.Context.IntTy; in VisitNonTypeTemplateParmDecl()
2918 SemaRef.Context, Owner, D->getInnerLocStart(), D->getLocation(), in VisitNonTypeTemplateParmDecl()
2924 SemaRef.Context, Owner, D->getInnerLocStart(), D->getLocation(), in VisitNonTypeTemplateParmDecl()
2930 if (SemaRef.AttachTypeConstraint( in VisitNonTypeTemplateParmDecl()
2945 SemaRef, Sema::ExpressionEvaluationContext::ConstantEvaluated); in VisitNonTypeTemplateParmDecl()
2946 ExprResult Value = SemaRef.SubstExpr(D->getDefaultArgument(), TemplateArgs); in VisitNonTypeTemplateParmDecl()
2953 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Param); in VisitNonTypeTemplateParmDecl()
2990 LocalInstantiationScope Scope(SemaRef); in VisitTemplateTemplateParmDecl()
3005 collectUnexpandedParameterPacks(SemaRef, D->getTemplateParameters(), in VisitTemplateTemplateParmDecl()
3013 if (SemaRef.CheckParameterPacksForExpansion(D->getLocation(), in VisitTemplateTemplateParmDecl()
3023 Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(SemaRef, I); in VisitTemplateTemplateParmDecl()
3024 LocalInstantiationScope Scope(SemaRef); in VisitTemplateTemplateParmDecl()
3039 Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(SemaRef, -1); in VisitTemplateTemplateParmDecl()
3041 LocalInstantiationScope Scope(SemaRef); in VisitTemplateTemplateParmDecl()
3049 LocalInstantiationScope Scope(SemaRef); in VisitTemplateTemplateParmDecl()
3059 SemaRef.Context, Owner, D->getLocation(), in VisitTemplateTemplateParmDecl()
3064 SemaRef.Context, Owner, D->getLocation(), in VisitTemplateTemplateParmDecl()
3071 SemaRef.SubstNestedNameSpecifierLoc(QualifierLoc, TemplateArgs); in VisitTemplateTemplateParmDecl()
3072 TemplateName TName = SemaRef.SubstTemplateName( in VisitTemplateTemplateParmDecl()
3077 SemaRef.Context, in VisitTemplateTemplateParmDecl()
3078 TemplateArgumentLoc(SemaRef.Context, TemplateArgument(TName), in VisitTemplateTemplateParmDecl()
3087 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Param); in VisitTemplateTemplateParmDecl()
3097 = UsingDirectiveDecl::Create(SemaRef.Context, Owner, D->getLocation(), in VisitUsingDirectiveDecl()
3131 SemaRef.Context, Owner, EmptyD->getLocation(), EmptyD->getDeclName()); in VisitBaseUsingDecls()
3133 InstTarget = cast_or_null<NamedDecl>(SemaRef.FindInstantiatedDecl( in VisitBaseUsingDecls()
3141 SemaRef.CheckUsingShadowDecl(Inst, InstTarget, *Lookup, PrevDecl)) in VisitBaseUsingDecls()
3145 PrevDecl = cast_or_null<UsingShadowDecl>(SemaRef.FindInstantiatedDecl( in VisitBaseUsingDecls()
3148 UsingShadowDecl *InstShadow = SemaRef.BuildUsingShadowDecl( in VisitBaseUsingDecls()
3150 SemaRef.Context.setInstantiatedFromUsingShadowDecl(InstShadow, Shadow); in VisitBaseUsingDecls()
3153 SemaRef.CurrentInstantiationScope->InstantiatedLocal(Shadow, InstShadow); in VisitBaseUsingDecls()
3170 = SemaRef.SubstNestedNameSpecifierLoc(D->getQualifierLoc(), in VisitUsingDecl()
3180 if (auto *RD = dyn_cast<CXXRecordDecl>(SemaRef.CurContext)) in VisitUsingDecl()
3181 NameInfo.setName(SemaRef.Context.DeclarationNames.getCXXConstructorName( in VisitUsingDecl()
3182 SemaRef.Context.getCanonicalType(SemaRef.Context.getRecordType(RD)))); in VisitUsingDecl()
3187 LookupResult Prev(SemaRef, NameInfo, Sema::LookupUsingDeclName, in VisitUsingDecl()
3190 UsingDecl *NewUD = UsingDecl::Create(SemaRef.Context, Owner, in VisitUsingDecl()
3200 SemaRef.LookupQualifiedName(Prev, Owner); in VisitUsingDecl()
3203 if (SemaRef.CheckUsingDeclRedeclaration(D->getUsingLoc(), in VisitUsingDecl()
3210 SemaRef.CheckUsingDeclQualifier(D->getUsingLoc(), D->hasTypename(), SS, in VisitUsingDecl()
3214 SemaRef.Context.setInstantiatedFromUsingDecl(NewUD, D); in VisitUsingDecl()
3225 SemaRef.CheckInheritingConstructorUsingDecl(NewUD); in VisitUsingDecl()
3232 EnumDecl *EnumD = cast_or_null<EnumDecl>(SemaRef.FindInstantiatedDecl( in VisitUsingEnumDecl()
3235 if (SemaRef.RequireCompleteEnumDecl(EnumD, EnumD->getLocation())) in VisitUsingEnumDecl()
3239 UsingEnumDecl::Create(SemaRef.Context, Owner, D->getUsingLoc(), in VisitUsingEnumDecl()
3242 SemaRef.Context.setInstantiatedFromUsingEnumDecl(NewUD, D); in VisitUsingEnumDecl()
3274 SemaRef.collectUnexpandedParameterPacks(D->getQualifierLoc(), Unexpanded); in instantiateUnresolvedUsingDecl()
3275 SemaRef.collectUnexpandedParameterPacks(D->getNameInfo(), Unexpanded); in instantiateUnresolvedUsingDecl()
3282 if (SemaRef.CheckParameterPacksForExpansion( in instantiateUnresolvedUsingDecl()
3295 Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(SemaRef, -1); in instantiateUnresolvedUsingDecl()
3307 SemaRef.Diag(D->getEllipsisLoc(), in instantiateUnresolvedUsingDecl()
3315 Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(SemaRef, I); in instantiateUnresolvedUsingDecl()
3326 auto *NewD = SemaRef.BuildUsingPackDecl(D, Expansions); in instantiateUnresolvedUsingDecl()
3328 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, NewD); in instantiateUnresolvedUsingDecl()
3336 = SemaRef.SubstNestedNameSpecifierLoc(D->getQualifierLoc(), in instantiateUnresolvedUsingDecl()
3345 = SemaRef.SubstDeclarationNameInfo(D->getNameInfo(), TemplateArgs); in instantiateUnresolvedUsingDecl()
3350 SemaRef.ArgumentPackSubstitutionIndex != -1; in instantiateUnresolvedUsingDecl()
3355 NamedDecl *UD = SemaRef.BuildUsingDeclaration( in instantiateUnresolvedUsingDecl()
3361 SemaRef.InstantiateAttrs(TemplateArgs, D, UD); in instantiateUnresolvedUsingDecl()
3362 SemaRef.Context.setInstantiatedFromUsingDecl(UD, D); in instantiateUnresolvedUsingDecl()
3387 SemaRef.FindInstantiatedDecl(D->getLocation(), UD, TemplateArgs)) in VisitUsingPackDecl()
3393 auto *NewD = SemaRef.BuildUsingPackDecl(D, Expansions); in VisitUsingPackDecl()
3395 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, NewD); in VisitUsingPackDecl()
3410 Expr *Var = SemaRef.SubstExpr(I, TemplateArgs).get(); in VisitOMPThreadPrivateDecl()
3416 SemaRef.CheckOMPThreadPrivateDecl(D->getLocation(), Vars); in VisitOMPThreadPrivateDecl()
3427 Expr *Var = SemaRef.SubstExpr(I, TemplateArgs).get(); in VisitOMPAllocateDecl()
3436 ExprResult NewE = SemaRef.SubstExpr(AC->getAllocator(), TemplateArgs); in VisitOMPAllocateDecl()
3439 IC = SemaRef.ActOnOpenMPAllocatorClause( in VisitOMPAllocateDecl()
3442 ExprResult NewE = SemaRef.SubstExpr(AC->getAlignment(), TemplateArgs); in VisitOMPAllocateDecl()
3445 IC = SemaRef.ActOnOpenMPAlignClause(NewE.get(), AC->getBeginLoc(), in VisitOMPAllocateDecl()
3454 Sema::DeclGroupPtrTy Res = SemaRef.ActOnOpenMPAllocateDirective( in VisitOMPAllocateDecl()
3475 SubstReductionType = SemaRef.ActOnOpenMPDeclareReductionType( in VisitOMPDeclareReductionDecl()
3477 ParsedType::make(SemaRef.SubstType( in VisitOMPDeclareReductionDecl()
3493 SemaRef.CurrentInstantiationScope->findInstantiationOf(PrevDeclInScope) in VisitOMPDeclareReductionDecl()
3496 auto DRD = SemaRef.ActOnOpenMPDeclareReductionDirectiveStart( in VisitOMPDeclareReductionDecl()
3500 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, NewDRD); in VisitOMPDeclareReductionDecl()
3505 SemaRef.ActOnOpenMPDeclareReductionCombinerStart( in VisitOMPDeclareReductionDecl()
3507 SemaRef.CurrentInstantiationScope->InstantiatedLocal( in VisitOMPDeclareReductionDecl()
3510 SemaRef.CurrentInstantiationScope->InstantiatedLocal( in VisitOMPDeclareReductionDecl()
3514 Sema::CXXThisScopeRAII ThisScope(SemaRef, ThisContext, Qualifiers(), in VisitOMPDeclareReductionDecl()
3516 SubstCombiner = SemaRef.SubstExpr(Combiner, TemplateArgs).get(); in VisitOMPDeclareReductionDecl()
3517 SemaRef.ActOnOpenMPDeclareReductionCombinerEnd(NewDRD, SubstCombiner); in VisitOMPDeclareReductionDecl()
3521 VarDecl *OmpPrivParm = SemaRef.ActOnOpenMPDeclareReductionInitializerStart( in VisitOMPDeclareReductionDecl()
3523 SemaRef.CurrentInstantiationScope->InstantiatedLocal( in VisitOMPDeclareReductionDecl()
3526 SemaRef.CurrentInstantiationScope->InstantiatedLocal( in VisitOMPDeclareReductionDecl()
3530 SubstInitializer = SemaRef.SubstExpr(Init, TemplateArgs).get(); in VisitOMPDeclareReductionDecl()
3536 SemaRef.InstantiateVariableInitializer(OmpPrivParm, OldPrivParm, in VisitOMPDeclareReductionDecl()
3539 SemaRef.ActOnOpenMPDeclareReductionInitializerEnd(NewDRD, SubstInitializer, in VisitOMPDeclareReductionDecl()
3549 (void)SemaRef.ActOnOpenMPDeclareReductionDirectiveEnd( in VisitOMPDeclareReductionDecl()
3565 SubstMapperTy = SemaRef.ActOnOpenMPDeclareMapperType( in VisitOMPDeclareMapperDecl()
3567 ParsedType::make(SemaRef.SubstType(D->getType(), TemplateArgs, in VisitOMPDeclareMapperDecl()
3578 SemaRef.CurrentInstantiationScope->findInstantiationOf(PrevDeclInScope) in VisitOMPDeclareMapperDecl()
3585 SemaRef.StartOpenMPDSABlock(llvm::omp::OMPD_declare_mapper, DirName, in VisitOMPDeclareMapperDecl()
3588 ExprResult MapperVarRef = SemaRef.ActOnOpenMPDeclareMapperDirectiveVarDecl( in VisitOMPDeclareMapperDecl()
3590 SemaRef.CurrentInstantiationScope->InstantiatedLocal( in VisitOMPDeclareMapperDecl()
3594 Sema::CXXThisScopeRAII ThisScope(SemaRef, ThisContext, Qualifiers(), in VisitOMPDeclareMapperDecl()
3601 Expr *NE = SemaRef.SubstExpr(OE, TemplateArgs).get(); in VisitOMPDeclareMapperDecl()
3611 SemaRef.SubstNestedNameSpecifierLoc(OldC->getMapperQualifierLoc(), in VisitOMPDeclareMapperDecl()
3616 SemaRef.SubstDeclarationNameInfo(OldC->getMapperIdInfo(), TemplateArgs); in VisitOMPDeclareMapperDecl()
3619 OMPClause *NewC = SemaRef.ActOnOpenMPMapClause( in VisitOMPDeclareMapperDecl()
3625 SemaRef.EndOpenMPDSABlock(nullptr); in VisitOMPDeclareMapperDecl()
3628 Sema::DeclGroupPtrTy DG = SemaRef.ActOnOpenMPDeclareMapperDirective( in VisitOMPDeclareMapperDecl()
3632 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, NewDMD); in VisitOMPDeclareMapperDecl()
3675 cast_or_null<ClassTemplateDecl>(SemaRef.FindInstantiatedDecl( in VisitClassTemplateSpecializationDecl()
3689 if (SemaRef.SubstTemplateArguments(ArgLocs, TemplateArgs, InstTemplateArgs)) in VisitClassTemplateSpecializationDecl()
3695 if (SemaRef.CheckTemplateArgumentList(InstClassTemplate, in VisitClassTemplateSpecializationDecl()
3713 SemaRef.CheckSpecializationInstantiationRedecl(D->getLocation(), in VisitClassTemplateSpecializationDecl()
3735 SemaRef.Diag(D->getLocation(), diag::err_redefinition) << PrevDecl; in VisitClassTemplateSpecializationDecl()
3736 SemaRef.Diag(PrevDecl->getDefinition()->getLocation(), in VisitClassTemplateSpecializationDecl()
3744 SemaRef.Context, D->getTagKind(), Owner, D->getBeginLoc(), in VisitClassTemplateSpecializationDecl()
3758 QualType CanonType = SemaRef.Context.getTemplateSpecializationType( in VisitClassTemplateSpecializationDecl()
3760 SemaRef.Context.getRecordType(InstD)); in VisitClassTemplateSpecializationDecl()
3769 TypeSourceInfo *WrittenTy = SemaRef.Context.getTemplateSpecializationTypeInfo( in VisitClassTemplateSpecializationDecl()
3787 SemaRef.InstantiateClass(D->getLocation(), InstD, D, TemplateArgs, in VisitClassTemplateSpecializationDecl()
3804 cast_or_null<VarTemplateDecl>(SemaRef.FindInstantiatedDecl( in VisitVarTemplateSpecializationDecl()
3815 if (SemaRef.SubstTemplateArguments(TemplateArgsInfo->arguments(), in VisitVarTemplateSpecializationDecl()
3822 if (SemaRef.CheckTemplateArgumentList(InstVarTemplate, D->getLocation(), in VisitVarTemplateSpecializationDecl()
3835 if (PrevDecl && SemaRef.CheckSpecializationInstantiationRedecl( in VisitVarTemplateSpecializationDecl()
3853 SemaRef.SubstType(D->getTypeSourceInfo(), TemplateArgs, in VisitVarTemplateSpecializationDecl()
3859 SemaRef.Diag(D->getLocation(), diag::err_variable_instantiates_to_function) in VisitVarTemplateSpecializationDecl()
3866 SemaRef.Context, Owner, D->getInnerLocStart(), D->getLocation(), in VisitVarTemplateSpecializationDecl()
3875 if (SemaRef.getLangOpts().OpenCL) in VisitVarTemplateSpecializationDecl()
3876 SemaRef.deduceOpenCLAddressSpace(Var); in VisitVarTemplateSpecializationDecl()
3882 SemaRef.BuildVariableInstantiation(Var, D, TemplateArgs, LateAttrs, Owner, in VisitVarTemplateSpecializationDecl()
3894 unsigned DiagID = SemaRef.getDiagnostics().getCustomDiagID( in VisitFriendTemplateDecl()
3897 SemaRef.Diag(D->getLocation(), DiagID) in VisitFriendTemplateDecl()
3909 return RequiresExprBodyDecl::Create(SemaRef.Context, D->getDeclContext(), in VisitRequiresExprBodyDecl()
3939 T = SemaRef.Context.getFunctionType( in adjustForRewrite()
3940 SemaRef.Context.BoolTy, FPT->getParamTypes(), FPT->getExtProtoInfo()); in adjustForRewrite()
3949 SemaRef.Context.getTrivialTypeSourceInfo(T, Orig->getEndLoc()); in adjustForRewrite()
3959 SemaRef.Context.DeclarationNames.getCXXOperatorName(OO_EqualEqual)); in adjustForRewrite()
4029 SemaRef, Sema::ExpressionEvaluationContext::Unevaluated); in SubstTemplateParams()
4030 ExprResult Res = SemaRef.SubstExpr(E, TemplateArgs); in SubstTemplateParams()
4038 = TemplateParameterList::Create(SemaRef.Context, L->getTemplateLoc(), in SubstTemplateParams()
4069 LocalInstantiationScope Scope(SemaRef); in InstantiateClassTemplatePartialSpecialization()
4084 if (SemaRef.SubstTemplateArguments(TemplArgInfo->arguments(), TemplateArgs, in InstantiateClassTemplatePartialSpecialization()
4091 if (SemaRef.CheckTemplateArgumentList(ClassTemplate, in InstantiateClassTemplatePartialSpecialization()
4099 if (SemaRef.CheckTemplatePartialSpecializationArgs( in InstantiateClassTemplatePartialSpecialization()
4114 = SemaRef.Context.getTemplateSpecializationType(TemplateName(ClassTemplate), in InstantiateClassTemplatePartialSpecialization()
4125 = SemaRef.Context.getTemplateSpecializationTypeInfo( in InstantiateClassTemplatePartialSpecialization()
4147 SemaRef.Diag(PartialSpec->getLocation(), diag::err_partial_spec_redeclared) in InstantiateClassTemplatePartialSpecialization()
4149 SemaRef.Diag(PrevDecl->getLocation(), diag::note_prev_partial_spec_here) in InstantiateClassTemplatePartialSpecialization()
4150 << SemaRef.Context.getTypeDeclType(PrevDecl); in InstantiateClassTemplatePartialSpecialization()
4158 SemaRef.Context, PartialSpec->getTagKind(), Owner, in InstantiateClassTemplatePartialSpecialization()
4169 SemaRef.CheckTemplatePartialSpecialization(InstPartialSpec); in InstantiateClassTemplatePartialSpecialization()
4196 LocalInstantiationScope Scope(SemaRef); in InstantiateVarTemplatePartialSpecialization()
4211 if (SemaRef.SubstTemplateArguments(TemplArgInfo->arguments(), TemplateArgs, in InstantiateVarTemplatePartialSpecialization()
4218 if (SemaRef.CheckTemplateArgumentList(VarTemplate, PartialSpec->getLocation(), in InstantiateVarTemplatePartialSpecialization()
4223 if (SemaRef.CheckTemplatePartialSpecializationArgs( in InstantiateVarTemplatePartialSpecialization()
4236 QualType CanonType = SemaRef.Context.getTemplateSpecializationType( in InstantiateVarTemplatePartialSpecialization()
4246 TypeSourceInfo *WrittenTy = SemaRef.Context.getTemplateSpecializationTypeInfo( in InstantiateVarTemplatePartialSpecialization()
4266 SemaRef.Diag(PartialSpec->getLocation(), in InstantiateVarTemplatePartialSpecialization()
4269 SemaRef.Diag(PrevDecl->getLocation(), in InstantiateVarTemplatePartialSpecialization()
4275 TypeSourceInfo *DI = SemaRef.SubstType( in InstantiateVarTemplatePartialSpecialization()
4282 SemaRef.Diag(PartialSpec->getLocation(), in InstantiateVarTemplatePartialSpecialization()
4291 SemaRef.Context, Owner, PartialSpec->getInnerLocStart(), in InstantiateVarTemplatePartialSpecialization()
4303 SemaRef.CheckTemplatePartialSpecialization(InstPartialSpec); in InstantiateVarTemplatePartialSpecialization()
4309 SemaRef.BuildVariableInstantiation(InstPartialSpec, PartialSpec, TemplateArgs, in InstantiateVarTemplatePartialSpecialization()
4330 = SemaRef.SubstFunctionDeclType(OldTInfo, TemplateArgs, in SubstFunctionType()
4350 LocalInstantiationScope *Scope = SemaRef.CurrentInstantiationScope; in SubstFunctionType()
4355 SemaRef.getNumArgumentsInExpansion(OldParam->getType(), in SubstFunctionType()
4383 Params.push_back(SemaRef.BuildParmVarDeclForTypedef( in SubstFunctionType()
4408 if (SemaRef.SubstParmTypes(D->getLocation(), D->parameters(), nullptr, in SubstFunctionType()
4622 SemaRef.Context.setManglingNumber(New, in InitFunctionInstantiation()
4623 SemaRef.Context.getManglingNumber(Tmpl)); in InitFunctionInstantiation()
4636 ActiveInstType &ActiveInst = SemaRef.CodeSynthesisContexts.back(); in InitFunctionInstantiation()
4644 SemaRef.InstantiatingSpecializations.erase( in InitFunctionInstantiation()
4646 atTemplateEnd(SemaRef.TemplateInstCallbacks, SemaRef, ActiveInst); in InitFunctionInstantiation()
4649 atTemplateBegin(SemaRef.TemplateInstCallbacks, SemaRef, ActiveInst); in InitFunctionInstantiation()
4663 if (SemaRef.getLangOpts().CPlusPlus11 && in InitFunctionInstantiation()
4683 New->setType(SemaRef.Context.getFunctionType( in InitFunctionInstantiation()
4686 Sema::ContextRAII SwitchContext(SemaRef, New); in InitFunctionInstantiation()
4687 SemaRef.SubstExceptionSpec(New, Proto, TemplateArgs); in InitFunctionInstantiation()
4695 SemaRef.InstantiateAttrs(TemplateArgs, Definition, New, in InitFunctionInstantiation()
4712 if (isa<CXXDestructorDecl>(New) && SemaRef.getLangOpts().CPlusPlus11) in InitMethodInstantiation()
4713 SemaRef.AdjustDestructorExceptionSpec(cast<CXXDestructorDecl>(New)); in InitMethodInstantiation()
4731 NamedDecl *D = SemaRef.FindInstantiatedDecl(New->getLocation(), in SubstDefaultedFunction()
4743 SemaRef.Context, Lookups) in SubstDefaultedFunction()
4747 SemaRef.SetDeclDefaulted(New, Tmpl->getLocation()); in SubstDefaultedFunction()
4994 SpecialMemberTypeInfoRebuilder(Sema &SemaRef, const CXXRecordDecl *O, in InstantiateFunctionDefinition()
4996 : TreeTransform(SemaRef), OldDecl(O), NewDecl(N) {} in InstantiateFunctionDefinition()