14 #ifndef LLVM_CLANG_SEMA_SEMA_H
15 #define LLVM_CLANG_SEMA_SEMA_H
60 #include "llvm/ADT/ArrayRef.h"
61 #include "llvm/ADT/Optional.h"
62 #include "llvm/ADT/SetVector.h"
63 #include "llvm/ADT/SmallBitVector.h"
64 #include "llvm/ADT/SmallPtrSet.h"
65 #include "llvm/ADT/SmallSet.h"
66 #include "llvm/ADT/SmallVector.h"
67 #include "llvm/ADT/TinyPtrVector.h"
68 #include "llvm/Frontend/OpenMP/OMPConstants.h"
77 template <
typename ValueT,
typename ValueInfoT>
class DenseSet;
79 struct InlineAsmIdentifierInfo;
86 class ASTMutationListener;
96 class CXXBindTemporaryExpr;
98 class CXXConstructorDecl;
99 class CXXConversionDecl;
101 class CXXDestructorDecl;
102 class CXXFieldCollector;
103 class CXXMemberCallExpr;
109 class ClassTemplateDecl;
110 class ClassTemplatePartialSpecializationDecl;
111 class ClassTemplateSpecializationDecl;
112 class VarTemplatePartialSpecializationDecl;
113 class CodeCompleteConsumer;
114 class CodeCompletionAllocator;
115 class CodeCompletionTUInfo;
116 class CodeCompletionResult;
117 class CoroutineBodyStmt;
119 class DeclAccessPair;
122 class DeclaratorDecl;
123 class DeducedTemplateArgument;
124 class DependentDiagnostic;
125 class DesignatedInitExpr;
128 class EnumConstantDecl;
134 class FunctionProtoType;
135 class FunctionTemplateDecl;
136 class ImplicitConversionSequence;
139 class InitializationKind;
140 class InitializationSequence;
141 class InitializedEntity;
142 class IntegerLiteral;
146 class LocalInstantiationScope;
151 class MultiLevelTemplateArgumentList;
153 class ObjCCategoryDecl;
154 class ObjCCategoryImplDecl;
155 class ObjCCompatibleAliasDecl;
156 class ObjCContainerDecl;
158 class ObjCImplementationDecl;
159 class ObjCInterfaceDecl;
161 template <
class T>
class ObjCList;
162 class ObjCMessageExpr;
163 class ObjCMethodDecl;
164 class ObjCPropertyDecl;
165 class ObjCProtocolDecl;
166 class OMPThreadPrivateDecl;
167 class OMPRequiresDecl;
168 class OMPDeclareReductionDecl;
169 class OMPDeclareSimdDecl;
171 struct OMPVarListLocTy;
172 struct OverloadCandidate;
175 class OverloadCandidateSet;
180 class PseudoDestructorTypeStorage;
181 class PseudoObjectExpr;
183 class StandardConversionSequence;
187 class TemplateArgument;
188 class TemplateArgumentList;
189 class TemplateArgumentLoc;
191 class TemplateInstantiationCallback;
192 class TemplateParameterList;
193 class TemplatePartialOrderingContext;
194 class TemplateTemplateParmDecl;
198 class TypedefNameDecl;
200 class TypoCorrectionConsumer;
202 class UnresolvedLookupExpr;
203 class UnresolvedMemberExpr;
204 class UnresolvedSetImpl;
205 class UnresolvedSetIterator;
207 class UsingShadowDecl;
210 class VarTemplateSpecializationDecl;
211 class VisibilityAttr;
212 class VisibleDeclConsumer;
213 class IndirectFieldDecl;
214 struct DeductionFailureInfo;
215 class TemplateSpecCandidateSet;
218 class AccessedEntity;
219 class BlockScopeInfo;
221 class CapturedRegionScopeInfo;
222 class CapturingScopeInfo;
223 class CompoundScopeInfo;
224 class DelayedDiagnostic;
225 class DelayedDiagnosticPool;
226 class FunctionScopeInfo;
227 class LambdaScopeInfo;
228 class PossiblyUnreachableDiag;
229 class SemaPPCallbacks;
230 class TemplateDeductionInfo;
233 namespace threadSafety {
240 typedef std::pair<llvm::PointerUnion<const TemplateTypeParmType*, NamedDecl*>,
265 llvm::DenseMap<FileID, FileNullability> Map;
276 if (file ==
Cache.File)
277 return Cache.Nullability;
280 if (!
Cache.File.isInvalid()) {
286 Cache.Nullability = Map[file];
287 return Cache.Nullability;
315 llvm::function_ref<
QualType()> ComputeType);
333 if (!Enabled || Tok != ExpectedLoc)
338 return ComputeType();
350 llvm::function_ref<
QualType()> ComputeType;
356 void operator=(
const Sema &) =
delete;
362 bool isMultiplexExternalSource;
364 static bool mightHaveNonExternalLinkage(
const DeclaratorDecl *FD);
371 bool shouldLinkPossiblyHiddenDecl(
const NamedDecl *Old,
379 "should not have found a non-externally-declarable previous decl");
386 void setupImplicitSpecialMemberType(
CXXMethodDecl *SpecialMem,
496 : PackAttr(
true), AlignMode(M), PackNumber(Num), XLStack(IsXL) {
497 assert(Num == PackNumber &&
"The pack number has been truncated.");
502 : PackAttr(
false), AlignMode(M),
503 PackNumber(M ==
Packed ? 1 : UninitPackVal), XLStack(IsXL) {}
528 bool IsXL =
static_cast<bool>(
Encoding & IsXLMask);
531 int PackNumber = (
Encoding & PackNumMask) >> 4;
550 return PackNumber != UninitPackVal && PackNumber != 0;
556 return std::tie(AlignMode, PackNumber, PackAttr, XLStack) ==
557 std::tie(Info.AlignMode, Info.PackNumber, Info.PackAttr,
562 return !(*
this == Info);
574 unsigned char PackNumber;
580 static constexpr
unsigned char UninitPackVal = -1;
583 static constexpr uint32_t IsXLMask{0x0000
'0001};
584 static constexpr uint32_t AlignModeMask{0x0000'0006};
585 static constexpr uint32_t PackAttrMask{0x00000
'0008};
586 static constexpr uint32_t PackNumMask{0x0000'01F0};
589 template<
typename ValueType>
604 llvm::StringRef StackSlotLabel, ValueType
Value) {
614 if (!StackSlotLabel.empty()) {
616 auto I = llvm::find_if(llvm::reverse(
Stack), [&](
const Slot &
x) {
617 return x.StackSlotLabel == StackSlotLabel;
620 if (I !=
Stack.rend()) {
623 Stack.erase(std::prev(I.base()),
Stack.end());
625 }
else if (!
Stack.empty()) {
654 "Can only push / pop #pragma stack sentinels!");
903 std::unique_ptr<LateParsedTemplate>>
956 state.SavedPool = CurPool;
965 CurPool =
state.SavedPool;
972 state.SavedPool = CurPool;
979 assert(CurPool ==
nullptr);
980 CurPool =
state.SavedPool;
991 unsigned SavedFunctionScopesStart;
992 unsigned SavedInventedParameterInfosStart;
1002 assert(ContextToPush &&
"pushing null context");
1003 S.CurContext = ContextToPush;
1005 S.CXXThisTypeOverride =
QualType();
1007 S.FunctionScopesStart = S.FunctionScopes.size();
1008 S.InventedParameterInfosStart = S.InventedParameterInfos.size();
1012 if (!SavedContext)
return;
1013 S.CurContext = SavedContext;
1014 S.DelayedDiagnostics.popUndelayed(SavedContextState);
1015 S.CXXThisTypeOverride = SavedCXXThisTypeOverride;
1016 S.FunctionScopesStart = SavedFunctionScopesStart;
1017 S.InventedParameterInfosStart = SavedInventedParameterInfosStart;
1018 SavedContext =
nullptr;
1045 bool PushedCodeSynthesisContext =
false;
1049 : S(S), SavedContext(S, DC) {
1050 S.PushFunctionScope();
1051 S.PushExpressionEvaluationContext(
1053 if (
auto *FD = dyn_cast<FunctionDecl>(DC))
1054 FD->setWillHaveBody(
true);
1056 assert(isa<ObjCMethodDecl>(DC));
1060 assert(!PushedCodeSynthesisContext);
1065 Ctx.
Entity = cast<Decl>(S.CurContext);
1066 S.pushCodeSynthesisContext(Ctx);
1068 PushedCodeSynthesisContext =
true;
1072 if (PushedCodeSynthesisContext)
1073 S.popCodeSynthesisContext();
1074 if (
auto *FD = dyn_cast<FunctionDecl>(S.CurContext))
1075 FD->setWillHaveBody(
false);
1076 S.PopExpressionEvaluationContext();
1077 S.PopFunctionScopeInfo();
1093 llvm::SmallDenseSet<WeakInfo, 2u, WeakInfo::DenseMapInfoByAliasOnly>>>
1370 std::tuple<MangleNumberingContext *, Decl *>
1388 llvm::PointerIntPair<CXXMethodDecl *, 2> Pair;
1403 :
public llvm::FastFoldingSetNode,
1407 : FastFoldingSetNode(
ID)
1433 typedef llvm::DenseMap<ParmVarDecl *, llvm::TinyPtrVector<ParmVarDecl *>>
1464 const llvm::MapVector<FieldDecl *, DeleteLocs> &
1469 using Lists = std::pair<ObjCMethodList, ObjCMethodList>;
1470 using iterator = llvm::DenseMap<Selector, Lists>::iterator;
1474 std::pair<iterator, bool>
insert(std::pair<Selector, Lists> &&Val) {
1475 return Methods.insert(Val);
1478 bool empty()
const {
return Methods.empty(); }
1481 llvm::DenseMap<Selector, Lists> Methods;
1512 typedef llvm::PointerIntPair<CXXRecordDecl *, 3, CXXSpecialMember>
1588 bool WarnedDarwinSDKInfoMissing =
false;
1620 StringRef Platform);
1640 llvm::function_ref<
void()> Fn);
1688 template <
typename T>
1699 template <
typename T,
typename =
typename std::enable_if<
1700 !std::is_lvalue_reference<T>::value>
::type>
1703 BaseDiag << std::move(
V);
1759 template <
typename T>
1762 if (
Diag.ImmediateDiag.hasValue())
1764 else if (
Diag.PartialDiagId.hasValue())
1773 template <
typename T,
typename =
typename std::enable_if<
1774 !std::is_lvalue_reference<T>::value>
::type>
1776 if (ImmediateDiag.hasValue())
1777 *ImmediateDiag << std::move(
V);
1778 else if (PartialDiagId.hasValue())
1785 if (
Diag.ImmediateDiag.hasValue())
1787 else if (
Diag.PartialDiagId.hasValue())
1793 if (ImmediateDiag.hasValue())
1794 ImmediateDiag->AddFixItHint(Hint);
1795 else if (PartialDiagId.hasValue())
1830 bool DeferHint =
false);
1834 bool DeferHint =
false);
1845 bool SavedDeferDiags =
false;
1919 unsigned OpenMPCaptureLevel = 0);
1932 std::unique_ptr<sema::FunctionScopeInfo, PoppedFunctionScopeDeleter>;
1936 const Decl *D =
nullptr,
1970 getCurLambda(
bool IgnoreNonLambdaCapturingScope =
false);
1988 unsigned TemplateParameterDepth);
2009 Expr *ArraySize,
unsigned Quals,
2154 std::index_sequence<Is...>)
const {
2156 bool Dummy[] = {
false, (DB << getPrintable(std::get<Is>(
Args)))...};
2163 assert(
DiagID != 0 &&
"no diagnostic for type diagnoser");
2168 emit(DB, std::index_sequence_for<Ts...>());
2187 template <
typename... Ts>
2195 this->
emit(DB, std::index_sequence_for<Ts...>());
2223 void CheckAddressOfNoDeref(
const Expr *E);
2224 void CheckMemberAccessOfNoDeref(
const MemberExpr *E);
2229 struct ModuleScope {
2232 bool ModuleInterface =
false;
2233 bool IsPartition =
false;
2234 bool ImplicitGlobalModuleFragment =
false;
2249 Module *getCurrentModule()
const {
2250 return ModuleScopes.empty() ? nullptr : ModuleScopes.back().Module;
2255 bool isCurrentModulePurview()
const {
2256 return getCurrentModule() ? getCurrentModule()->
isModulePurview() :
false;
2260 Module *PushGlobalModuleFragment(SourceLocation BeginLoc,
bool IsImplicit);
2262 void PopGlobalModuleFragment();
2264 VisibleModuleSet VisibleModules;
2269 bool isUsableModule(
const Module *M);
2278 return DirectModuleImports.contains(M);
2290 VisibleModules.setVisible(Mod, ImportLoc);
2317 bool OnlyNeedComplete =
false);
2352 return !RequireCompleteTypeImpl(Loc, T,
Kind,
nullptr);
2367 template <
typename... Ts>
2369 const Ts &...Args) {
2374 template <
typename... Ts>
2376 const Ts &... Args) {
2393 TypeDiagnoser &Diagnoser);
2396 template <
typename... Ts>
2402 template <
typename... Ts>
2404 const Ts &... Args) {
2410 TypeDiagnoser &Diagnoser);
2413 template <
typename... Ts>
2415 const Ts &...Args) {
2422 TagDecl *OwnedTagDecl =
nullptr);
2457 bool isClassName =
false,
bool HasTrailingDot =
false,
2459 bool IsCtorOrDtorName =
false,
2460 bool WantNontrivialTypeSourceInfo =
false,
2461 bool IsClassTemplateDeductionContext =
true,
2470 bool IsTemplateName =
false);
2478 bool IsTemplateTypeArg);
2553 Result.NonTypeDecl = D;
2567 Result.Template = Name;
2573 Result.Template = Name;
2579 Result.Template = Name;
2585 Result.Template = Name;
2591 Result.Template = Name;
2632 llvm_unreachable(
"unsupported name classification.");
2659 const Token &NextToken,
2671 bool IsAddressOfOperand);
2677 const Token &NextToken);
2700 if (
auto *DRE = dyn_cast<DeclRefExpr>(E.
get()))
2701 return !DRE->hasExplicitTemplateArgs();
2702 if (
auto *ME = dyn_cast<MemberExpr>(E.
get()))
2703 return !ME->hasExplicitTemplateArgs();
2705 if (
auto *DSDRE = dyn_cast<DependentScopeDeclRefExpr>(E.
get()))
2706 return !DSDRE->hasExplicitTemplateArgs();
2707 if (
auto *DSME = dyn_cast<CXXDependentScopeMemberExpr>(E.
get()))
2708 return !DSME->hasExplicitTemplateArgs();
2725 unsigned FailedFoldDiagID);
2760 llvm::DenseMap<const NamedDecl *, const NamedDecl *> ShadowingDecls;
2817 bool IsMemberSpecialization,
bool DeclIsDefn);
2885 unsigned NonTrivialKind);
2925 SkipBodyInfo *SkipBody =
nullptr);
2928 SkipBodyInfo *SkipBody =
nullptr,
2931 SkipBodyInfo *SkipBody =
nullptr,
2939 return D && isa<ObjCMethodDecl>(D);
3013 void HandleStartOfHeaderUnit();
3046 bool IsPartition =
false);
3116 bool IsExplicitInstantiation,
3163 bool ScopedEnumUsesClassTag,
TypeResult UnderlyingType,
3164 bool IsTypeSpecifier,
bool IsTemplateParamOrArg,
3165 SkipBodyInfo *SkipBody =
nullptr);
3194 Expr *BitfieldWidth,
3202 bool Mutable,
Expr *BitfieldWidth,
3221 bool Diagnose =
false);
3235 : SpecialMember(
CXXInvalid), Comparison(Comp) {}
3252 "invalid should have highest index");
3254 "none should be equal to zero");
3255 return SpecialMember + (
unsigned)Comparison;
3301 bool IsFinalSpelledSealed,
3332 QualType EnumUnderlyingTy,
bool IsFixed,
3396 bool AllowInlineNamespace =
false);
3455 VersionTuple Introduced, VersionTuple Deprecated,
3456 VersionTuple Obsoleted,
bool IsUnavailable,
3457 StringRef Message,
bool IsStrict, StringRef Replacement,
3459 TypeVisibilityAttr *
3461 TypeVisibilityAttr::VisibilityType Vis);
3463 VisibilityAttr::VisibilityType Vis);
3465 StringRef UuidAsWritten,
MSGuidDecl *GuidDecl);
3473 StringRef NewUserDiagnostic);
3491 const InternalLinkageAttr &AL);
3493 Decl *D,
const WebAssemblyImportNameAttr &AL);
3495 Decl *D,
const WebAssemblyImportModuleAttr &AL);
3498 const EnforceTCBLeafAttr &AL);
3502 int X,
int Y,
int Z);
3504 HLSLShaderAttr::ShaderType ShaderType);
3511 bool MergeTypeWithOld,
bool NewDeclIsDefn);
3513 Scope *S,
bool MergeTypeWithOld);
3553 bool IsForUsingDecl);
3555 bool ConsiderCudaAttrs =
true,
3556 bool ConsiderRequiresClauses =
true);
3569 bool SuppressUserConversions,
3571 bool InOverloadResolution,
3573 bool AllowObjCWritebackConversion);
3579 bool InOverloadResolution,
3580 QualType& ConvertedType,
bool &IncompatibleObjC);
3582 QualType& ConvertedType,
bool &IncompatibleObjC);
3589 unsigned *ArgPos =
nullptr,
3590 bool Reversed =
false);
3599 bool IgnoreBaseAccess,
3600 bool Diagnose =
true);
3602 bool InOverloadResolution,
3607 bool IgnoreBaseAccess);
3609 bool CStyle,
bool &ObjCLifetimeConversion);
3625 bool TopLevelOfInitList =
false,
3626 bool AllowExplicit =
false);
3706 bool AllowScopedEnumerations;
3712 AllowScopedEnumerations(AllowScopedEnumerations) {}
3768 bool SuppressUserConversions =
false,
3769 bool PartialOverloading =
false,
3770 bool AllowExplicit =
true,
3771 bool AllowExplicitConversion =
false,
3779 bool SuppressUserConversions =
false,
3780 bool PartialOverloading =
false,
3781 bool FirstArgumentIsBase =
false);
3787 bool SuppressUserConversion =
false,
3790 DeclAccessPair FoundDecl,
3791 CXXRecordDecl *ActingContext, QualType ObjectType,
3792 Expr::Classification ObjectClassification,
3793 ArrayRef<Expr *> Args,
3794 OverloadCandidateSet& CandidateSet,
3795 bool SuppressUserConversions =
false,
3796 bool PartialOverloading =
false,
3800 DeclAccessPair FoundDecl,
3801 CXXRecordDecl *ActingContext,
3802 TemplateArgumentListInfo *ExplicitTemplateArgs,
3803 QualType ObjectType,
3804 Expr::Classification ObjectClassification,
3805 ArrayRef<Expr *> Args,
3806 OverloadCandidateSet& CandidateSet,
3807 bool SuppressUserConversions =
false,
3808 bool PartialOverloading =
false,
3811 FunctionTemplateDecl *FunctionTemplate, DeclAccessPair FoundDecl,
3812 TemplateArgumentListInfo *ExplicitTemplateArgs, ArrayRef<Expr *> Args,
3813 OverloadCandidateSet &CandidateSet,
bool SuppressUserConversions =
false,
3814 bool PartialOverloading =
false,
bool AllowExplicit =
true,
3818 FunctionTemplateDecl *FunctionTemplate, ArrayRef<QualType> ParamTypes,
3819 ArrayRef<Expr *> Args, OverloadCandidateSet &CandidateSet,
3821 CXXRecordDecl *ActingContext =
nullptr, QualType ObjectType = QualType(),
3822 Expr::Classification ObjectClassification = {},
3825 CXXConversionDecl *Conversion, DeclAccessPair FoundDecl,
3826 CXXRecordDecl *ActingContext, Expr *From, QualType ToType,
3827 OverloadCandidateSet &CandidateSet,
bool AllowObjCConversionOnExplicit,
3828 bool AllowExplicit,
bool AllowResultConversion =
true);
3830 FunctionTemplateDecl *FunctionTemplate, DeclAccessPair FoundDecl,
3831 CXXRecordDecl *ActingContext, Expr *From, QualType ToType,
3832 OverloadCandidateSet &CandidateSet,
bool AllowObjCConversionOnExplicit,
3833 bool AllowExplicit,
bool AllowResultConversion =
true);
3835 DeclAccessPair FoundDecl,
3836 CXXRecordDecl *ActingContext,
3837 const FunctionProtoType *Proto,
3838 Expr *Object, ArrayRef<Expr *> Args,
3839 OverloadCandidateSet& CandidateSet);
3841 const UnresolvedSetImpl &Functions, ArrayRef<Expr *> Args,
3842 OverloadCandidateSet &CandidateSet,
3843 TemplateArgumentListInfo *ExplicitTemplateArgs =
nullptr);
3845 SourceLocation OpLoc, ArrayRef<Expr *> Args,
3846 OverloadCandidateSet &CandidateSet,
3849 OverloadCandidateSet& CandidateSet,
3850 bool IsAssignmentOperator =
false,
3851 unsigned NumContextualBoolArguments = 0);
3853 SourceLocation OpLoc, ArrayRef<Expr *> Args,
3854 OverloadCandidateSet& CandidateSet);
3857 ArrayRef<Expr *> Args,
3858 TemplateArgumentListInfo *ExplicitTemplateArgs,
3859 OverloadCandidateSet& CandidateSet,
3860 bool PartialOverloading =
false);
3864 NamedDecl *Found, FunctionDecl *Fn,
3866 QualType DestType = QualType(),
bool TakingAddress =
false);
3871 bool TakingAddress =
false);
3875 EnableIfAttr *
CheckEnableIf(FunctionDecl *Function, SourceLocation CallLoc,
3876 ArrayRef<Expr *> Args,
3877 bool MissingImplicitThis =
false);
3891 const Expr *ThisArg,
3892 ArrayRef<const Expr *> Args,
3893 SourceLocation Loc);
3903 SourceLocation Loc);
3910 bool Complain =
false,
3911 SourceLocation Loc = SourceLocation());
3923 QualType TargetType,
3925 DeclAccessPair &Found,
3926 bool *pHadMultipleCandidates =
nullptr);
3932 ExprResult &SrcExpr,
bool DoFunctionPointerConversion =
false);
3936 bool Complain =
false,
3937 DeclAccessPair *Found =
nullptr);
3941 bool DoFunctionPointerConverion =
false,
3942 bool Complain =
false,
3943 SourceRange OpRangeForComplaining = SourceRange(),
3944 QualType DestTypeForComplaining = QualType(),
3945 unsigned DiagIDForComplaining = 0);
3949 DeclAccessPair FoundDecl,
3952 DeclAccessPair FoundDecl,
3956 ArrayRef<Expr *> Args,
3957 OverloadCandidateSet &CandidateSet,
3958 bool PartialOverloading =
false);
3960 LookupResult &R, TemplateArgumentListInfo *ExplicitTemplateArgs,
3961 ArrayRef<Expr *> Args, OverloadCandidateSet &CandidateSet);
3984 bool AllowTypoCorrection=
true,
3985 bool CalleesAddressIsTaken=
false);
3996 bool PerformADL =
true);
4001 Expr *input,
bool RequiresADL =
true);
4011 bool RequiresADL =
true,
4012 bool AllowRewrittenCandidates =
true,
4027 Expr *ExecConfig =
nullptr,
4028 bool IsExecConfig =
false,
4029 bool AllowRecovery =
false);
4037 bool *NoArrowOperatorFound =
nullptr);
4047 bool CheckParameterNames);
4153 ->getOwningModuleForLinkage(
true))
4195 struct TypoExprState {
4196 std::unique_ptr<TypoCorrectionConsumer>
Consumer;
4200 TypoExprState(TypoExprState &&other) noexcept;
4201 TypoExprState &operator=(TypoExprState &&other) noexcept;
4205 llvm::MapVector<TypoExpr *, TypoExprState> DelayedTypos;
4208 TypoExpr *createDelayedTypo(std::unique_ptr<TypoCorrectionConsumer> TCC,
4216 llvm::MapVector<NamespaceDecl*, bool> KnownNamespaces;
4220 bool LoadedExternalKnownNamespaces;
4225 std::unique_ptr<TypoCorrectionConsumer>
4232 bool ErrorRecovery);
4253 bool ForceNoCPlusPlus =
false);
4255 bool InUnqualifiedLookup =
false);
4259 bool AllowBuiltinCreation =
false,
4260 bool EnteringContext =
false);
4277 bool RValueThis,
unsigned ThisQuals);
4281 bool RValueThis,
unsigned ThisQuals);
4288 bool AllowRaw,
bool AllowTemplate,
4289 bool AllowStringTemplate,
bool DiagnoseMissing,
4302 bool Final =
false);
4312 bool IncludeGlobalScope =
true,
4313 bool LoadExternal =
true);
4316 bool IncludeGlobalScope =
true,
4317 bool IncludeDependentBases =
false,
4318 bool LoadExternal =
true);
4331 bool EnteringContext =
false,
4333 bool RecordFailure =
true);
4342 bool EnteringContext =
false,
4364 bool RecoverUncorrectedTypos =
false,
4370 bool RecoverUncorrectedTypos =
false,
4376 RecoverUncorrectedTypos,
Filter);
4380 const PartialDiagnostic &TypoDiag,
4381 bool ErrorRecovery =
true);
4384 const PartialDiagnostic &TypoDiag,
4385 const PartialDiagnostic &PrevNote,
4386 bool ErrorRecovery =
true);
4391 ArrayRef<Expr *> Args,
4396 bool ConsiderLinkage,
bool AllowInlineNamespace);
4407 ArrayRef<Expr *> SubExprs,
4408 QualType T = QualType());
4411 SourceLocation IdLoc,
4412 bool TypoCorrection =
false);
4413 FunctionDecl *
CreateBuiltin(IdentifierInfo *II, QualType Type,
unsigned ID,
4414 SourceLocation Loc);
4416 Scope *S,
bool ForRedeclaration,
4417 SourceLocation Loc);
4431 const ParsedAttributesView &AttrList);
4440 Result.IncludeCXX11Attributes = Val;
4446 Result.IgnoreTypeAttributes = Val;
4474 bool SkipArgCountCheck =
false);
4476 bool SkipArgCountCheck =
false);
4490 const Expr *E, StringRef &Str,
4500 bool &HasDefault,
bool &HasCommas,
4530 bool IsProtocolMethodDecl);
4534 bool IsProtocolMethodDecl);
4540 bool IsProtocolMethodDecl);
4554 bool IncompleteImpl =
false);
4560 bool SynthesizeProperties);
4599 const bool isReadWrite,
4600 unsigned &Attributes,
4601 const unsigned AttributesAsWritten,
4617 const bool isReadWrite,
4618 const unsigned Attributes,
4619 const unsigned AttributesAsWritten,