clang  3.9.0svn
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Friends | List of all members
clang::Sema Class Reference

Sema - This implements semantic analysis and AST building for C. More...

#include <Sema.h>

Collaboration diagram for clang::Sema:
Collaboration graph
[legend]

Classes

struct  ActiveTemplateInstantiation
 A template instantiation that is currently in progress. More...
 
struct  ActOnMemberAccessExtraArgs
 
class  ArgumentPackSubstitutionIndexRAII
 RAII object used to change the argument pack substitution index within a Sema object. More...
 
class  BoundTypeDiagnoser
 
struct  CodeCompleteExpressionData
 
class  CompoundScopeRAII
 A RAII object to enter scope of a compound statement. More...
 
class  ConditionResult
 
class  ContextRAII
 A RAII object to temporarily push a declaration context. More...
 
class  ContextualImplicitConverter
 Abstract base class used to perform a contextual implicit conversion from an expression to any type passing a filter. More...
 
class  CXXThisScopeRAII
 RAII object used to temporarily allow the C++ 'this' expression to be used, with the given qualifiers on the current class type. More...
 
class  DelayedDiagnostics
 A class which encapsulates the logic for delaying diagnostics during parsing and other processing. More...
 
class  DelayedDiagnosticsState
 
struct  ExpressionEvaluationContextRecord
 Data structure used to record current or nested expression evaluation contexts. More...
 
class  ExtParameterInfoBuilder
 A helper class for building up ExtParameterInfos. More...
 
class  FPContractStateRAII
 Records and restores the FP_CONTRACT state on entry/exit of compound statements. More...
 
class  FullExprArg
 
struct  FunctionScopeRAII
 An RAII helper that pops function a function scope on exit. More...
 
class  ICEConvertDiagnoser
 
class  ImplicitExceptionSpecification
 Helper class that collects exception specifications for implicitly-declared special member functions. More...
 
class  InheritedConstructorInfo
 
struct  InstantiatingTemplate
 A stack object to be created when performing template instantiation. More...
 
struct  LateInstantiatedAttribute
 
class  NameClassification
 
struct  ObjCArgInfo
 
struct  OffsetOfComponent
 
struct  OriginalCallArg
 brief A function argument from which we performed template argument More...
 
struct  PragmaStack
 
class  PragmaStackSentinelRAII
 
class  SavePendingInstantiationsAndVTableUsesRAII
 
class  SavePendingLocalImplicitInstantiationsRAII
 
class  SemaDiagnosticBuilder
 Helper class that creates diagnostics with optional template instantiation stacks. More...
 
class  SFINAETrap
 RAII class used to determine whether SFINAE has trapped any errors that occur during template argument deduction. More...
 
struct  SkipBodyInfo
 
class  SpecialMemberOverloadResult
 SpecialMemberOverloadResult - The overloading result for a special member function. More...
 
class  SynthesizedFunctionScope
 RAII object to handle the state changes required to synthesize a function body. More...
 
class  TentativeAnalysisScope
 RAII class used to indicate that we are performing provisional semantic analysis to determine the validity of a construct, so typo-correction and diagnostics in the immediate context (not within implicitly-instantiated templates) should be suppressed. More...
 
struct  TypeDiagnoser
 Abstract class used to diagnose incomplete types. More...
 
struct  TypeTagData
 
class  VerifyICEDiagnoser
 Abstract base class used for diagnosing integer constant expression violations. More...
 

Public Types

enum  PragmaMsStackAction {
  PSK_Reset = 0x0, PSK_Set = 0x1, PSK_Push = 0x2, PSK_Pop = 0x4,
  PSK_Show = 0x8, PSK_Push_Set = PSK_Push | PSK_Set, PSK_Pop_Set = PSK_Pop | PSK_Set
}
 
enum  ExpressionEvaluationContext {
  Unevaluated, DiscardedStatement, UnevaluatedAbstract, ConstantEvaluated,
  PotentiallyEvaluated, PotentiallyEvaluatedIfUsed
}
 Describes how the expressions currently being parsed are evaluated at run-time, if at all. More...
 
enum  CXXSpecialMember {
  CXXDefaultConstructor, CXXCopyConstructor, CXXMoveConstructor, CXXCopyAssignment,
  CXXMoveAssignment, CXXDestructor, CXXInvalid
}
 Kinds of C++ special members. More...
 
enum  NameClassificationKind {
  NC_Unknown, NC_Error, NC_Keyword, NC_Type,
  NC_Expression, NC_NestedNameSpecifier, NC_TypeTemplate, NC_VarTemplate,
  NC_FunctionTemplate
}
 Describes the result of the name lookup and resolution performed by ClassifyName(). More...
 
enum  MissingImportKind {
  MissingImportKind::Declaration, MissingImportKind::Definition, MissingImportKind::DefaultArgument, MissingImportKind::ExplicitSpecialization,
  MissingImportKind::PartialSpecialization
}
 Kinds of missing import. More...
 
enum  TagUseKind { TUK_Reference, TUK_Declaration, TUK_Definition, TUK_Friend }
 
enum  AvailabilityMergeKind { AMK_None, AMK_Redeclaration, AMK_Override, AMK_ProtocolImplementation }
 Describes the kind of merge to perform for availability attributes (including "deprecated", "unavailable", and "availability"). More...
 
enum  AssignmentAction {
  AA_Assigning, AA_Passing, AA_Returning, AA_Converting,
  AA_Initializing, AA_Sending, AA_Casting, AA_Passing_CFAudited
}
 
enum  OverloadKind { Ovl_Overload, Ovl_Match, Ovl_NonFunction }
 C++ Overloading. More...
 
enum  CCEKind {
  CCEK_CaseValue, CCEK_Enumerator, CCEK_TemplateArg, CCEK_NewExpr,
  CCEK_ConstexprIf
}
 Contexts in which a converted constant expression is required. More...
 
enum  ObjCSubscriptKind { OS_Array, OS_Dictionary, OS_Error }
 
enum  ObjCLiteralKind {
  LK_Array, LK_Dictionary, LK_Numeric, LK_Boxed,
  LK_String, LK_Block, LK_None
}
 
enum  ForRangeStatus { FRS_Success, FRS_NoViableFunction, FRS_DiagnosticIssued }
 
enum  MethodMatchStrategy { MMS_loose, MMS_strict }
 
enum  BuildForRangeKind { BFRK_Build, BFRK_Rebuild, BFRK_Check }
 
enum  AvailabilityDiagnostic { AD_Deprecation, AD_Unavailable, AD_Partial }
 
enum  ReuseLambdaContextDecl_t { ReuseLambdaContextDecl }
 
enum  TryCaptureKind { TryCapture_Implicit, TryCapture_ExplicitByVal, TryCapture_ExplicitByRef }
 
enum  IfExistsResult { IER_Exists, IER_DoesNotExist, IER_Dependent, IER_Error }
 Describes the result of an "if-exists" condition check. More...
 
enum  AccessResult { AR_accessible, AR_inaccessible, AR_dependent, AR_delayed }
 
enum  AbstractDiagSelID {
  AbstractNone = -1, AbstractReturnType, AbstractParamType, AbstractVariableType,
  AbstractFieldType, AbstractIvarType, AbstractSynthesizedIvarType, AbstractArrayType
}
 
enum  TemplateParamListContext {
  TPC_ClassTemplate, TPC_VarTemplate, TPC_FunctionTemplate, TPC_ClassTemplateMember,
  TPC_FriendClassTemplate, TPC_FriendFunctionTemplate, TPC_FriendFunctionTemplateDefinition, TPC_TypeAliasTemplate
}
 The context in which we are checking a template parameter list. More...
 
enum  CheckTemplateArgumentKind { CTAK_Specified, CTAK_Deduced, CTAK_DeducedFromArrayBound }
 Specifies the context in which a particular template argument is being checked. More...
 
enum  TemplateParameterListEqualKind { TPL_TemplateMatch, TPL_TemplateTemplateParmMatch, TPL_TemplateTemplateArgumentMatch }
 Enumeration describing how template parameter lists are compared for equality. More...
 
enum  UnexpandedParameterPackContext {
  UPPC_Expression = 0, UPPC_BaseType, UPPC_DeclarationType, UPPC_DataMemberType,
  UPPC_BitFieldWidth, UPPC_StaticAssertExpression, UPPC_FixedUnderlyingType, UPPC_EnumeratorValue,
  UPPC_UsingDeclaration, UPPC_FriendDeclaration, UPPC_DeclarationQualifier, UPPC_Initializer,
  UPPC_DefaultArgument, UPPC_NonTypeTemplateParameterType, UPPC_ExceptionType, UPPC_PartialSpecialization,
  UPPC_IfExists, UPPC_IfNotExists, UPPC_Lambda, UPPC_Block
}
 The context in which an unexpanded parameter pack is being diagnosed. More...
 
enum  TemplateDeductionResult {
  TDK_Success = 0, TDK_Invalid, TDK_InstantiationDepth, TDK_Incomplete,
  TDK_Inconsistent, TDK_Underqualified, TDK_SubstitutionFailure, TDK_DeducedMismatch,
  TDK_NonDeducedMismatch, TDK_TooManyArguments, TDK_TooFewArguments, TDK_InvalidExplicitArguments,
  TDK_FailedOverloadResolution, TDK_MiscellaneousDeductionFailure
}
 Describes the result of template argument deduction. More...
 
enum  DeduceAutoResult { DAR_Succeeded, DAR_Failed, DAR_FailedAlreadyDiagnosed }
 Result type of DeduceAutoType. More...
 
enum  ObjCContainerKind {
  OCK_None = -1, OCK_Interface = 0, OCK_Protocol, OCK_Category,
  OCK_ClassExtension, OCK_Implementation, OCK_CategoryImplementation
}
 
enum  ObjCSpecialMethodKind {
  OSMK_None, OSMK_Alloc, OSMK_New, OSMK_Copy,
  OSMK_RetainingInit, OSMK_NonRetainingInit
}
 
enum  ObjCMessageKind { ObjCSuperMessage, ObjCInstanceMessage, ObjCClassMessage }
 Describes the kind of message expression indicated by a message send that starts with an identifier. More...
 
enum  ResultTypeCompatibilityKind { RTC_Compatible, RTC_Incompatible, RTC_Unknown }
 Describes the compatibility of a result type with its method. More...
 
enum  PragmaOptionsAlignKind {
  POAK_Native, POAK_Natural, POAK_Packed, POAK_Power,
  POAK_Mac68k, POAK_Reset
}
 
enum  PragmaSectionKind { PSK_DataSeg, PSK_BSSSeg, PSK_ConstSeg, PSK_CodeSeg }
 
enum  CheckedConversionKind { CCK_ImplicitConversion, CCK_CStyleCast, CCK_FunctionalCast, CCK_OtherCast }
 The kind of conversion being performed. More...
 
enum  VariadicCallType {
  VariadicFunction, VariadicBlock, VariadicMethod, VariadicConstructor,
  VariadicDoesNotApply
}
 
enum  VarArgKind {
  VAK_Valid, VAK_ValidInCXX11, VAK_Undefined, VAK_MSVCUndefined,
  VAK_Invalid
}
 
enum  AssignConvertType {
  Compatible, PointerToInt, IntToPointer, FunctionVoidPointer,
  IncompatiblePointer, IncompatiblePointerSign, CompatiblePointerDiscardsQualifiers, IncompatiblePointerDiscardsQualifiers,
  IncompatibleNestedPointerQualifiers, IncompatibleVectors, IntToBlockPointer, IncompatibleBlockPointer,
  IncompatibleObjCQualifiedId, IncompatibleObjCWeakRef, Incompatible
}
 AssignConvertType - All of the 'assignment' semantic checks return this enum to indicate whether the assignment was allowed. More...
 
enum  ReferenceCompareResult { Ref_Incompatible = 0, Ref_Related, Ref_Compatible_With_Added_Qualification, Ref_Compatible }
 ReferenceCompareResult - Expresses the result of comparing two types (cv1 T1 and cv2 T2) to determine their compatibility for the purposes of initialization by reference (C++ [dcl.init.ref]p4). More...
 
enum  ARCConversionResult { ACR_okay, ACR_unbridged, ACR_error }
 
enum  ConditionKind { ConditionKind::Boolean, ConditionKind::ConstexprIf, ConditionKind::Switch }
 
enum  CUDAFunctionTarget {
  CFT_Device, CFT_Global, CFT_Host, CFT_HostDevice,
  CFT_InvalidTarget
}
 
enum  CUDAFunctionPreference {
  CFP_Never, CFP_WrongSide, CFP_HostDevice, CFP_SameSide,
  CFP_Native
}
 
enum  FormatStringType {
  FST_Scanf, FST_Printf, FST_NSString, FST_Strftime,
  FST_Strfmon, FST_Kprintf, FST_FreeBSDKPrintf, FST_OSTrace,
  FST_Unknown
}
 
typedef OpaquePtr< DeclGroupRefDeclGroupPtrTy
 
typedef OpaquePtr< TemplateNameTemplateTy
 
typedef OpaquePtr< QualTypeTypeTy
 
typedef LazyVector< TypedefNameDecl *, ExternalSemaSource,&ExternalSemaSource::ReadExtVectorDecls, 2, 2 > ExtVectorDeclsType
 
typedef llvm::SmallSetVector< const NamedDecl *, 16 > NamedDeclSetType
 
typedef std::pair< SourceLocation, boolDeleteExprLoc
 Delete-expressions to be analyzed at the end of translation unit. More...
 
typedef llvm::SmallVector< DeleteExprLoc, 4 > DeleteLocs
 
typedef llvm::SmallPtrSet< const CXXRecordDecl *, 8 > RecordDeclSetTy
 
typedef LazyVector< VarDecl *, ExternalSemaSource,&ExternalSemaSource::ReadTentativeDefinitions, 2, 2 > TentativeDefinitionsType
 
typedef LazyVector< const DeclaratorDecl *, ExternalSemaSource,&ExternalSemaSource::ReadUnusedFileScopedDecls, 2, 2 > UnusedFileScopedDeclsType
 
typedef LazyVector< CXXConstructorDecl *, ExternalSemaSource,&ExternalSemaSource::ReadDelegatingConstructors, 2, 2 > DelegatingCtorDeclsType
 
typedef llvm::MapVector< const FunctionDecl *, LateParsedTemplate * > LateParsedTemplateMapT
 
typedef void LateTemplateParserCB(void *P, LateParsedTemplate &LPT)
 Callback to the parser to parse templated functions when needed. More...
 
typedef void LateTemplateParserCleanupCB(void *P)
 
typedef DelayedDiagnosticsState ParsingDeclState
 
typedef DelayedDiagnosticsState ProcessingContextState
 
typedef llvm::DenseMap< ParmVarDecl *, llvm::TinyPtrVector< ParmVarDecl * > > UnparsedDefaultArgInstantiationsMap
 
typedef std::pair< ObjCMethodList, ObjCMethodListGlobalMethods
 
typedef llvm::DenseMap< Selector, GlobalMethodsGlobalMethodPool
 
typedef std::pair< CXXRecordDecl *, CXXSpecialMemberSpecialMemberDecl
 
typedef void * SkippedDefinitionContext
 
typedef llvm::SmallSetVector< DeclContext *, 16 > AssociatedNamespaceSet
 
typedef llvm::SmallSetVector< CXXRecordDecl *, 16 > AssociatedClassSet
 
typedef llvm::SmallPtrSet< Selector, 8 > SelectorSet
 
typedef llvm::DenseMap< Selector, ObjCMethodDecl * > ProtocolsMethodsMap
 
typedef std::pair< StringRef, QualTypeCapturedParamNameType
 
typedef ProcessingContextState ParsingClassState
 
typedef std::pair< CXXRecordDecl *, SourceLocationVTableUse
 The list of classes whose vtables have been used within this translation unit, and the source locations at which the first use occurred. More...
 
typedef llvm::DenseMap< Decl *, SmallVector< PartialDiagnosticAt, 1 > > SuppressedDiagnosticsMap
 For each declaration that involved template argument deduction, the set of diagnostics that were suppressed during that template argument deduction. More...
 
typedef llvm::SmallSet< SourceLocation, 2 > SrcLocSet
 
typedef llvm::DenseMap< IdentifierInfo *, SrcLocSetIdentifierSourceLocations
 
typedef std::pair< ValueDecl *, SourceLocationPendingImplicitInstantiation
 An entity for which implicit template instantiation is required. More...
 
typedef SmallVector< LateInstantiatedAttribute, 16 > LateInstantiatedAttrVec
 
typedef std::pair< const IdentifierInfo *, uint64_t > TypeTagMagicValue
 A pair of ArgumentKind identifier and magic value. More...
 

Public Member Functions

NamedDeclfindLocallyScopedExternCDecl (DeclarationName Name)
 Look for a locally scoped extern "C" declaration by the given name. More...
 
void SetLateTemplateParser (LateTemplateParserCB *LTP, LateTemplateParserCleanupCB *LTPCleanup, void *P)
 
void LoadExternalWeakUndeclaredIdentifiers ()
 Load weak undeclared identifiers from the external source. More...
 
MangleNumberingContextgetCurrentMangleNumberContext (const DeclContext *DC, Decl *&ManglingContextDecl)
 Compute the mangling number context for a lambda expression or block literal. More...
 
void getUndefinedButUsed (SmallVectorImpl< std::pair< NamedDecl *, SourceLocation > > &Undefined)
 Obtain a sorted list of functions that are undefined but ODR-used. More...
 
const llvm::MapVector< FieldDecl *, DeleteLocs > & getMismatchingDeleteExpressions () const
 Retrieves list of suspicious delete-expressions that will be checked at the end of translation unit. More...
 
void ReadMethodPool (Selector Sel)
 Read the contents of the method pool for a given selector from external storage. More...
 
void updateOutOfDateSelector (Selector Sel)
 
void EmitCurrentDiagnostic (unsigned DiagID)
 Cause the active diagnostic on the DiagosticsEngine to be emitted. More...
 
void addImplicitTypedef (StringRef Name, QualType T)
 
 Sema (Preprocessor &pp, ASTContext &ctxt, ASTConsumer &consumer, TranslationUnitKind TUKind=TU_Complete, CodeCompleteConsumer *CompletionConsumer=nullptr)
 
 ~Sema ()
 
void Initialize ()
 Perform initialization that occurs after the parser has been initialized but before it parses anything. More...
 
const LangOptionsgetLangOpts () const
 
OpenCLOptionsgetOpenCLOptions ()
 
FPOptionsgetFPOptions ()
 
DiagnosticsEnginegetDiagnostics () const
 
SourceManagergetSourceManager () const
 
PreprocessorgetPreprocessor () const
 
ASTContextgetASTContext () const
 
ASTConsumergetASTConsumer () const
 
ASTMutationListenergetASTMutationListener () const
 
ExternalSemaSourcegetExternalSource () const
 
void addExternalSource (ExternalSemaSource *E)
 Registers an external source. More...
 
void PrintStats () const
 Print out statistics about the semantic analysis. More...
 
SemaDiagnosticBuilder Diag (SourceLocation Loc, unsigned DiagID)
 Emit a diagnostic. More...
 
SemaDiagnosticBuilder Diag (SourceLocation Loc, const PartialDiagnostic &PD)
 Emit a partial diagnostic. More...
 
PartialDiagnostic PDiag (unsigned DiagID=0)
 Build a partial diagnostic. More...
 
bool findMacroSpelling (SourceLocation &loc, StringRef name)
 Looks through the macro-expansion chain for the given location, looking for a macro expansion with the given name. More...
 
std::string getFixItZeroInitializerForType (QualType T, SourceLocation Loc) const
 Get a string to suggest for zero-initialization of a type. More...
 
std::string getFixItZeroLiteralForType (QualType T, SourceLocation Loc) const
 
SourceLocation getLocForEndOfToken (SourceLocation Loc, unsigned Offset=0)
 Calls Lexer::getLocForEndOfToken() More...
 
ModuleLoadergetModuleLoader () const
 Retrieve the module loader associated with the preprocessor. More...
 
void emitAndClearUnusedLocalTypedefWarnings ()
 
void ActOnEndOfTranslationUnit ()
 ActOnEndOfTranslationUnit - This is called at the very end of the translation unit when EOF is reached and all but the top-level scope is popped. More...
 
void CheckDelegatingCtorCycles ()
 
ScopegetScopeForContext (DeclContext *Ctx)
 Determines the active Scope associated with the given declaration context. More...
 
void PushFunctionScope ()
 Enter a new function scope. More...
 
void PushBlockScope (Scope *BlockScope, BlockDecl *Block)
 
sema::LambdaScopeInfoPushLambdaScope ()
 
void RecordParsingTemplateParameterDepth (unsigned Depth)
 This is used to inform Sema what the current TemplateParameterDepth is during Parsing. More...
 
void PushCapturedRegionScope (Scope *RegionScope, CapturedDecl *CD, RecordDecl *RD, CapturedRegionKind K)
 
void PopFunctionScopeInfo (const sema::AnalysisBasedWarnings::Policy *WP=nullptr, const Decl *D=nullptr, const BlockExpr *blkExpr=nullptr)
 
sema::FunctionScopeInfogetCurFunction () const
 
sema::FunctionScopeInfogetEnclosingFunction () const
 
template<typename ExprT >
void recordUseOfEvaluatedWeak (const ExprT *E, bool IsRead=true)
 
void PushCompoundScope ()
 
void PopCompoundScope ()
 
sema::CompoundScopeInfogetCurCompoundScope () const
 
bool hasAnyUnrecoverableErrorsInThisFunction () const
 Determine whether any errors occurred within this function/method/ block. More...
 
sema::BlockScopeInfogetCurBlock ()
 Retrieve the current block, if any. More...
 
sema::LambdaScopeInfogetCurLambda ()
 Retrieve the current lambda scope info, if any. More...
 
sema::LambdaScopeInfogetCurGenericLambda ()
 Retrieve the current generic lambda info, if any. More...
 
sema::CapturedRegionScopeInfogetCurCapturedRegion ()
 Retrieve the current captured region, if any. More...
 
SmallVectorImpl< Decl * > & WeakTopLevelDecls ()
 WeakTopLevelDeclDecls - access to #pragma weak-generated Decls. More...
 
void ActOnComment (SourceRange Comment)
 
QualType BuildQualifiedType (QualType T, SourceLocation Loc, Qualifiers Qs, const DeclSpec *DS=nullptr)
 
QualType BuildQualifiedType (QualType T, SourceLocation Loc, unsigned CVRA, const DeclSpec *DS=nullptr)
 
QualType BuildPointerType (QualType T, SourceLocation Loc, DeclarationName Entity)
 Build a pointer type. More...
 
QualType BuildReferenceType (QualType T, bool LValueRef, SourceLocation Loc, DeclarationName Entity)
 Build a reference type. More...
 
QualType BuildArrayType (QualType T, ArrayType::ArraySizeModifier ASM, Expr *ArraySize, unsigned Quals, SourceRange Brackets, DeclarationName Entity)
 Build an array type. More...
 
QualType BuildExtVectorType (QualType T, Expr *ArraySize, SourceLocation AttrLoc)
 Build an ext-vector type. More...
 
bool CheckFunctionReturnType (QualType T, SourceLocation Loc)
 
QualType BuildFunctionType (QualType T, MutableArrayRef< QualType > ParamTypes, SourceLocation Loc, DeclarationName Entity, const FunctionProtoType::ExtProtoInfo &EPI)
 Build a function type. More...
 
QualType BuildMemberPointerType (QualType T, QualType Class, SourceLocation Loc, DeclarationName Entity)
 Build a member pointer type T Class::*. More...
 
QualType BuildBlockPointerType (QualType T, SourceLocation Loc, DeclarationName Entity)
 Build a block pointer type. More...
 
QualType BuildParenType (QualType T)
 Build a paren type including T. More...
 
QualType BuildAtomicType (QualType T, SourceLocation Loc)
 
QualType BuildPipeType (QualType T, SourceLocation Loc)
 Build a Pipe type. More...
 
TypeSourceInfoGetTypeForDeclarator (Declarator &D, Scope *S)
 GetTypeForDeclarator - Convert the type for the specified declarator to Type instances. More...
 
TypeSourceInfoGetTypeForDeclaratorCast (Declarator &D, QualType FromTy)
 
TypeSourceInfoGetTypeSourceInfoForDeclarator (Declarator &D, QualType T, TypeSourceInfo *ReturnTypeInfo)
 Create and instantiate a TypeSourceInfo with type source information. More...
 
ParsedType CreateParsedType (QualType T, TypeSourceInfo *TInfo)
 Package the given type and TSI into a ParsedType. More...
 
DeclarationNameInfo GetNameForDeclarator (Declarator &D)
 GetNameForDeclarator - Determine the full declaration name for the given Declarator. More...
 
DeclarationNameInfo GetNameFromUnqualifiedId (const UnqualifiedId &Name)
 Retrieves the declaration name from a parsed unqualified-id. More...
 
CanThrowResult canThrow (const Expr *E)
 
const FunctionProtoTypeResolveExceptionSpec (SourceLocation Loc, const FunctionProtoType *FPT)
 
void UpdateExceptionSpec (FunctionDecl *FD, const FunctionProtoType::ExceptionSpecInfo &ESI)
 
bool CheckSpecifiedExceptionType (QualType &T, SourceRange Range)
 CheckSpecifiedExceptionType - Check if the given type is valid in an exception specification. More...
 
bool CheckDistantExceptionSpec (QualType T)
 CheckDistantExceptionSpec - Check if the given type is a pointer or pointer to member to a function with an exception specification. More...
 
bool CheckEquivalentExceptionSpec (FunctionDecl *Old, FunctionDecl *New)
 
bool CheckEquivalentExceptionSpec (const FunctionProtoType *Old, SourceLocation OldLoc, const FunctionProtoType *New, SourceLocation NewLoc)
 CheckEquivalentExceptionSpec - Check if the two types have equivalent exception specifications. More...
 
bool CheckEquivalentExceptionSpec (const PartialDiagnostic &DiagID, const PartialDiagnostic &NoteID, const FunctionProtoType *Old, SourceLocation OldLoc, const FunctionProtoType *New, SourceLocation NewLoc, bool *MissingExceptionSpecification=nullptr, bool *MissingEmptyExceptionSpecification=nullptr, bool AllowNoexceptAllMatchWithNoSpec=false, bool IsOperatorNew=false)
 CheckEquivalentExceptionSpec - Check if the two types have compatible exception specifications. More...
 
bool CheckExceptionSpecSubset (const PartialDiagnostic &DiagID, const PartialDiagnostic &NoteID, const FunctionProtoType *Superset, SourceLocation SuperLoc, const FunctionProtoType *Subset, SourceLocation SubLoc)
 CheckExceptionSpecSubset - Check whether the second function type's exception specification is a subset (or equivalent) of the first function type. More...
 
bool CheckParamExceptionSpec (const PartialDiagnostic &NoteID, const FunctionProtoType *Target, SourceLocation TargetLoc, const FunctionProtoType *Source, SourceLocation SourceLoc)
 CheckParamExceptionSpec - Check if the parameter and return types of the two functions have equivalent exception specs. More...
 
TypeResult ActOnTypeName (Scope *S, Declarator &D)
 
ParsedType ActOnObjCInstanceType (SourceLocation Loc)
 The parser has parsed the context-sensitive type 'instancetype' in an Objective-C message declaration. More...
 
ModulegetOwningModule (Decl *Entity)
 Get the module owning an entity. More...
 
void makeMergedDefinitionVisible (NamedDecl *ND, SourceLocation Loc)
 Make a merged definition of an existing hidden definition ND visible at the specified location. More...
 
bool isModuleVisible (Module *M)
 
bool isVisible (const NamedDecl *D)
 Determine whether a declaration is visible to name lookup. More...
 
bool hasVisibleDeclaration (const NamedDecl *D, llvm::SmallVectorImpl< Module * > *Modules=nullptr)
 Determine whether any declaration of an entity is visible. More...
 
bool hasVisibleDeclarationSlow (const NamedDecl *D, llvm::SmallVectorImpl< Module * > *Modules)
 
bool hasVisibleMergedDefinition (NamedDecl *Def)
 
bool hasVisibleDefinition (NamedDecl *D, NamedDecl **Suggested, bool OnlyNeedComplete=false)
 Determine if D has a visible definition. More...
 
bool hasVisibleDefinition (const NamedDecl *D)
 
bool hasVisibleDefaultArgument (const NamedDecl *D, llvm::SmallVectorImpl< Module * > *Modules=nullptr)
 Determine if the template parameter D has a visible default argument. More...
 
bool hasVisibleMemberSpecialization (const NamedDecl *D, llvm::SmallVectorImpl< Module * > *Modules=nullptr)
 Determine if there is a visible declaration of D that is a member specialization declaration (as opposed to an instantiated declaration). More...
 
bool isEquivalentInternalLinkageDeclaration (const NamedDecl *A, const NamedDecl *B)
 Determine if A and B are equivalent internal linkage declarations from different modules, and thus an ambiguity error can be downgraded to an extension warning. More...
 
void diagnoseEquivalentInternalLinkageDeclarations (SourceLocation Loc, const NamedDecl *D, ArrayRef< const NamedDecl * > Equiv)
 
bool isCompleteType (SourceLocation Loc, QualType T)
 
bool RequireCompleteType (SourceLocation Loc, QualType T, TypeDiagnoser &Diagnoser)
 Ensure that the type T is a complete type. More...
 
bool RequireCompleteType (SourceLocation Loc, QualType T, unsigned DiagID)
 
template<typename... Ts>
bool RequireCompleteType (SourceLocation Loc, QualType T, unsigned DiagID, const Ts &...Args)
 
void completeExprArrayBound (Expr *E)
 
bool RequireCompleteExprType (Expr *E, TypeDiagnoser &Diagnoser)
 Ensure that the type of the given expression is complete. More...
 
bool RequireCompleteExprType (Expr *E, unsigned DiagID)
 
template<typename... Ts>
bool RequireCompleteExprType (Expr *E, unsigned DiagID, const Ts &...Args)
 
bool RequireLiteralType (SourceLocation Loc, QualType T, TypeDiagnoser &Diagnoser)
 Ensure that the type T is a literal type. More...
 
bool RequireLiteralType (SourceLocation Loc, QualType T, unsigned DiagID)
 
template<typename... Ts>
bool RequireLiteralType (SourceLocation Loc, QualType T, unsigned DiagID, const Ts &...Args)
 
QualType getElaboratedType (ElaboratedTypeKeyword Keyword, const CXXScopeSpec &SS, QualType T)
 Retrieve a version of the type 'T' that is elaborated by Keyword and qualified by the nested-name-specifier contained in SS. More...
 
QualType BuildTypeofExprType (Expr *E, SourceLocation Loc)
 
QualType BuildDecltypeType (Expr *E, SourceLocation Loc, bool AsUnevaluated=true)
 If AsUnevaluated is false, E is treated as though it were an evaluated context, such as when building a type for decltype(auto). More...
 
QualType BuildUnaryTransformType (QualType BaseType, UnaryTransformType::UTTKind UKind, SourceLocation Loc)
 
DeclGroupPtrTy ConvertDeclToDeclGroup (Decl *Ptr, Decl *OwnedType=nullptr)
 
void DiagnoseUseOfUnimplementedSelectors ()
 
bool isSimpleTypeSpecifier (tok::TokenKind Kind) const
 Determine whether the token kind starts a simple-type-specifier. More...
 
ParsedType getTypeName (const IdentifierInfo &II, SourceLocation NameLoc, Scope *S, CXXScopeSpec *SS=nullptr, bool isClassName=false, bool HasTrailingDot=false, ParsedType ObjectType=nullptr, bool IsCtorOrDtorName=false, bool WantNontrivialTypeSourceInfo=false, IdentifierInfo **CorrectedII=nullptr)
 If the identifier refers to a type name within this scope, return the declaration of that type. More...
 
TypeSpecifierType isTagName (IdentifierInfo &II, Scope *S)
 isTagName() - This method is called for error recovery purposes only to determine if the specified name is a valid tag name ("struct foo"). More...
 
bool isMicrosoftMissingTypename (const CXXScopeSpec *SS, Scope *S)
 isMicrosoftMissingTypename - In Microsoft mode, within class scope, if a CXXScopeSpec's type is equal to the type of one of the base classes then downgrade the missing typename error to a warning. More...
 
void DiagnoseUnknownTypeName (IdentifierInfo *&II, SourceLocation IILoc, Scope *S, CXXScopeSpec *SS, ParsedType &SuggestedType, bool AllowClassTemplates=false)
 
ParsedType ActOnMSVCUnknownTypeName (const IdentifierInfo &II, SourceLocation NameLoc, bool IsTemplateTypeArg)
 Attempt to behave like MSVC in situations where lookup of an unqualified type name has failed in a dependent context. More...
 
NameClassification ClassifyName (Scope *S, CXXScopeSpec &SS, IdentifierInfo *&Name, SourceLocation NameLoc, const Token &NextToken, bool IsAddressOfOperand, std::unique_ptr< CorrectionCandidateCallback > CCC=nullptr)
 Perform name lookup on the given name, classifying it based on the results of name lookup and the following token. More...
 
DeclActOnDeclarator (Scope *S, Declarator &D)
 
NamedDeclHandleDeclarator (Scope *S, Declarator &D, MultiTemplateParamsArg TemplateParameterLists)
 
void RegisterLocallyScopedExternCDecl (NamedDecl *ND, Scope *S)
 Register the given locally-scoped extern "C" declaration so that it can be found later for redeclarations. More...
 
bool DiagnoseClassNameShadow (DeclContext *DC, DeclarationNameInfo Info)
 DiagnoseClassNameShadow - Implement C++ [class.mem]p13: If T is the name of a class, then each of the following shall have a name different from T: More...
 
bool diagnoseQualifiedDeclaration (CXXScopeSpec &SS, DeclContext *DC, DeclarationName Name, SourceLocation Loc)
 Diagnose a declaration whose declarator-id has the given nested-name-specifier. More...
 
void diagnoseIgnoredQualifiers (unsigned DiagID, unsigned Quals, SourceLocation FallbackLoc, SourceLocation ConstQualLoc=SourceLocation(), SourceLocation VolatileQualLoc=SourceLocation(), SourceLocation RestrictQualLoc=SourceLocation(), SourceLocation AtomicQualLoc=SourceLocation(), SourceLocation UnalignedQualLoc=SourceLocation())
 
void DiagnoseFunctionSpecifiers (const DeclSpec &DS)
 Diagnose function specifiers on a declaration of an identifier that does not identify a function. More...
 
void CheckShadow (Scope *S, VarDecl *D, const LookupResult &R)
 Diagnose variable or built-in function shadowing. More...
 
void CheckShadow (Scope *S, VarDecl *D)
 Check -Wshadow without the advantage of a previous lookup. More...
 
void CheckShadowingDeclModification (Expr *E, SourceLocation Loc)
 Warn if 'E', which is an expression that is about to be modified, refers to a shadowing declaration. More...
 
void CheckCastAlign (Expr *Op, QualType T, SourceRange TRange)
 CheckCastAlign - Implements -Wcast-align, which warns when a pointer cast increases the alignment requirements. More...
 
void handleTagNumbering (const TagDecl *Tag, Scope *TagScope)
 
void setTagNameForLinkagePurposes (TagDecl *TagFromDeclSpec, TypedefNameDecl *NewTD)
 
void CheckTypedefForVariablyModifiedType (Scope *S, TypedefNameDecl *D)
 
NamedDeclActOnTypedefDeclarator (Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous)
 
NamedDeclActOnTypedefNameDecl (Scope *S, DeclContext *DC, TypedefNameDecl *D, LookupResult &Previous, bool &Redeclaration)
 ActOnTypedefNameDecl - Perform semantic checking for a declaration which declares a typedef-name, either using the 'typedef' type specifier or via a C++0x [dcl.typedef]p2 alias-declaration: 'using T = A;'. More...
 
NamedDeclActOnVariableDeclarator (Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope)
 
bool CheckVariableDeclaration (VarDecl *NewVD, LookupResult &Previous)
 Perform semantic checking on a newly-created variable declaration. More...
 
void CheckVariableDeclarationType (VarDecl *NewVD)
 
void CheckCompleteVariableDeclaration (VarDecl *var)
 
void MaybeSuggestAddingStaticToDecl (const FunctionDecl *D)
 
NamedDeclActOnFunctionDeclarator (Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope)
 
bool AddOverriddenMethods (CXXRecordDecl *DC, CXXMethodDecl *MD)
 AddOverriddenMethods - See if a method overrides any in the base classes, and if so, check that it's a valid override and remember it. More...
 
bool CheckConstexprFunctionDecl (const FunctionDecl *FD)
 
bool CheckConstexprFunctionBody (const FunctionDecl *FD, Stmt *Body)
 Check the body for the given constexpr function declaration only contains the permitted types of statement. More...
 
void DiagnoseHiddenVirtualMethods (CXXMethodDecl *MD)
 Diagnose methods which overload virtual methods in a base class without overriding any. More...
 
void FindHiddenVirtualMethods (CXXMethodDecl *MD, SmallVectorImpl< CXXMethodDecl * > &OverloadedMethods)
 Check if a method overloads virtual methods in a base class without overriding any. More...
 
void NoteHiddenVirtualMethods (CXXMethodDecl *MD, SmallVectorImpl< CXXMethodDecl * > &OverloadedMethods)
 
bool CheckFunctionDeclaration (Scope *S, FunctionDecl *NewFD, LookupResult &Previous, bool IsExplicitSpecialization)
 Perform semantic checking of a new function declaration. More...
 
void CheckMain (FunctionDecl *FD, const DeclSpec &D)
 
void CheckMSVCRTEntryPoint (FunctionDecl *FD)
 
DeclActOnParamDeclarator (Scope *S, Declarator &D)
 ActOnParamDeclarator - Called from Parser::ParseFunctionDeclarator() to introduce parameters into function prototype scope. More...
 
ParmVarDeclBuildParmVarDeclForTypedef (DeclContext *DC, SourceLocation Loc, QualType T)
 Synthesizes a variable for a parameter arising from a typedef. More...
 
ParmVarDeclCheckParameter (DeclContext *DC, SourceLocation StartLoc, SourceLocation NameLoc, IdentifierInfo *Name, QualType T, TypeSourceInfo *TSInfo, StorageClass SC)
 
void ActOnParamDefaultArgument (Decl *param, SourceLocation EqualLoc, Expr *defarg)
 ActOnParamDefaultArgument - Check whether the default argument provided for a function parameter is well-formed. More...
 
void ActOnParamUnparsedDefaultArgument (Decl *param, SourceLocation EqualLoc, SourceLocation ArgLoc)
 ActOnParamUnparsedDefaultArgument - We've seen a default argument for a function parameter, but we can't parse it yet because we're inside a class definition. More...
 
void ActOnParamDefaultArgumentError (Decl *param, SourceLocation EqualLoc)
 ActOnParamDefaultArgumentError - Parsing or semantic analysis of the default argument for the parameter param failed. More...
 
bool SetParamDefaultArgument (ParmVarDecl *Param, Expr *DefaultArg, SourceLocation EqualLoc)
 
void AddInitializerToDecl (Decl *dcl, Expr *init, bool DirectInit, bool TypeMayContainAuto)
 AddInitializerToDecl - Adds the initializer Init to the declaration dcl. More...
 
void ActOnUninitializedDecl (Decl *dcl, bool TypeMayContainAuto)
 
void ActOnInitializerError (Decl *Dcl)
 ActOnInitializerError - Given that there was an error parsing an initializer for the given declaration, try to return to some form of sanity. More...
 
void ActOnPureSpecifier (Decl *D, SourceLocation PureSpecLoc)
 
void ActOnCXXForRangeDecl (Decl *D)
 
StmtResult ActOnCXXForRangeIdentifier (Scope *S, SourceLocation IdentLoc, IdentifierInfo *Ident, ParsedAttributes &Attrs, SourceLocation AttrEnd)
 
void SetDeclDeleted (Decl *dcl, SourceLocation DelLoc)
 
void SetDeclDefaulted (Decl *dcl, SourceLocation DefaultLoc)
 
void FinalizeDeclaration (Decl *D)
 FinalizeDeclaration - called by ParseDeclarationAfterDeclarator to perform any semantic actions necessary after any initializer has been attached. More...
 
DeclGroupPtrTy FinalizeDeclaratorGroup (Scope *S, const DeclSpec &DS, ArrayRef< Decl * > Group)
 
DeclGroupPtrTy BuildDeclaratorGroup (MutableArrayRef< Decl * > Group, bool TypeMayContainAuto=true)
 BuildDeclaratorGroup - convert a list of declarations into a declaration group, performing any necessary semantic checking. More...
 
void ActOnDocumentableDecl (Decl *D)
 Should be called on all declarations that might have attached documentation comments. More...
 
void ActOnDocumentableDecls (ArrayRef< Decl * > Group)
 
void ActOnFinishKNRParamDeclarations (Scope *S, Declarator &D, SourceLocation LocAfterDecls)
 
void CheckForFunctionRedefinition (FunctionDecl *FD, const FunctionDecl *EffectiveDefinition=nullptr, SkipBodyInfo *SkipBody=nullptr)
 
DeclActOnStartOfFunctionDef (Scope *S, Declarator &D, MultiTemplateParamsArg TemplateParamLists, SkipBodyInfo *SkipBody=nullptr)
 
DeclActOnStartOfFunctionDef (Scope *S, Decl *D, SkipBodyInfo *SkipBody=nullptr)
 
void ActOnStartOfObjCMethodDef (Scope *S, Decl *D)
 ActOnStartOfObjCMethodDef - This routine sets up parameters; invisible and user declared, in the method definition's AST. More...
 
bool isObjCMethodDecl (Decl *D)
 
bool canDelayFunctionBody (const Declarator &D)
 Determine whether we can delay parsing the body of a function or function template until it is used, assuming we don't care about emitting code for that function. More...
 
bool canSkipFunctionBody (Decl *D)
 Determine whether we can skip parsing the body of a function definition, assuming we don't care about analyzing its body or emitting code for that function. More...
 
void computeNRVO (Stmt *Body, sema::FunctionScopeInfo *Scope)
 Given the set of return statements within a function body, compute the variables that are subject to the named return value optimization. More...
 
DeclActOnFinishFunctionBody (Decl *Decl, Stmt *Body)
 
DeclActOnFinishFunctionBody (Decl *Decl, Stmt *Body, bool IsInstantiation)
 
DeclActOnSkippedFunctionBody (Decl *Decl)
 
void ActOnFinishInlineFunctionDef (FunctionDecl *D)
 
void ActOnFinishDelayedAttribute (Scope *S, Decl *D, ParsedAttributes &Attrs)
 ActOnFinishDelayedAttribute - Invoked when we have finished parsing an attribute for which parsing is delayed. More...
 
void DiagnoseUnusedParameters (ArrayRef< ParmVarDecl * > Parameters)
 Diagnose any unused parameters in the given sequence of ParmVarDecl pointers. More...
 
void DiagnoseSizeOfParametersAndReturnValue (ArrayRef< ParmVarDecl * > Parameters, QualType ReturnTy, NamedDecl *D)
 Diagnose whether the size of parameters or return value of a function or obj-c method definition is pass-by-value and larger than a specified threshold. More...
 
void DiagnoseInvalidJumps (Stmt *Body)
 
DeclActOnFileScopeAsmDecl (Expr *expr, SourceLocation AsmLoc, SourceLocation RParenLoc)
 
DeclActOnEmptyDeclaration (Scope *S, AttributeList *AttrList, SourceLocation SemiLoc)
 Handle a C++11 empty-declaration and attribute-declaration. More...
 
DeclResult ActOnModuleImport (SourceLocation AtLoc, SourceLocation ImportLoc, ModuleIdPath Path)
 The parser has processed a module import declaration. More...
 
void ActOnModuleInclude (SourceLocation DirectiveLoc, Module *Mod)
 The parser has processed a module import translated from a #include or similar preprocessing directive. More...
 
void ActOnModuleBegin (SourceLocation DirectiveLoc, Module *Mod)
 The parsed has entered a submodule. More...
 
void ActOnModuleEnd (SourceLocation DirectiveLoc, Module *Mod)
 The parser has left a submodule. More...
 
void diagnoseMisplacedModuleImport (Module *M, SourceLocation ImportLoc)
 Check if module import may be found in the current context, emit error if not. More...
 
void createImplicitModuleImportForErrorRecovery (SourceLocation Loc, Module *Mod)
 Create an implicit import of the given module at the given source location, for error recovery, if possible. More...
 
void diagnoseMissingImport (SourceLocation Loc, NamedDecl *Decl, MissingImportKind MIK, bool Recover=true)
 Diagnose that the specified declaration needs to be visible but isn't, and suggest a module import that would resolve the problem. More...
 
void diagnoseMissingImport (SourceLocation Loc, NamedDecl *Decl, SourceLocation DeclLoc, ArrayRef< Module * > Modules, MissingImportKind MIK, bool Recover)
 
void checkSpecializationVisibility (SourceLocation Loc, NamedDecl *Spec)
 We've found a use of a templated declaration that would trigger an implicit instantiation. More...
 
void checkPartialSpecializationVisibility (SourceLocation Loc, NamedDecl *Spec)
 We've found a use of a template specialization that would select a partial specialization. More...
 
PrintingPolicy getPrintingPolicy () const
 Retrieve a suitable printing policy. More...
 
void ActOnPopScope (SourceLocation Loc, Scope *S)
 Scope actions. More...
 
void ActOnTranslationUnitScope (Scope *S)
 
DeclParsedFreeStandingDeclSpec (Scope *S, AccessSpecifier AS, DeclSpec &DS, RecordDecl *&AnonRecord)
 ParsedFreeStandingDeclSpec - This method is invoked when a declspec with no declarator (e.g. More...
 
DeclParsedFreeStandingDeclSpec (Scope *S, AccessSpecifier AS, DeclSpec &DS, MultiTemplateParamsArg TemplateParams, bool IsExplicitInstantiation, RecordDecl *&AnonRecord)
 ParsedFreeStandingDeclSpec - This method is invoked when a declspec with no declarator (e.g. More...
 
DeclBuildAnonymousStructOrUnion (Scope *S, DeclSpec &DS, AccessSpecifier AS, RecordDecl *Record, const PrintingPolicy &Policy)
 BuildAnonymousStructOrUnion - Handle the declaration of an anonymous structure or union. More...
 
DeclBuildMicrosoftCAnonymousStruct (Scope *S, DeclSpec &DS, RecordDecl *Record)
 BuildMicrosoftCAnonymousStruct - Handle the declaration of an Microsoft C anonymous structure. More...
 
bool isAcceptableTagRedeclaration (const TagDecl *Previous, TagTypeKind NewTag, bool isDefinition, SourceLocation NewTagLoc, const IdentifierInfo *Name)
 Determine whether a tag with a given kind is acceptable as a redeclaration of the given tag declaration. More...
 
DeclActOnTag (Scope *S, unsigned TagSpec, TagUseKind TUK, SourceLocation KWLoc, CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, AttributeList *Attr, AccessSpecifier AS, SourceLocation ModulePrivateLoc, MultiTemplateParamsArg TemplateParameterLists, bool &OwnedDecl, bool &IsDependent, SourceLocation ScopedEnumKWLoc, bool ScopedEnumUsesClassTag, TypeResult UnderlyingType, bool IsTypeSpecifier, SkipBodyInfo *SkipBody=nullptr)
 This is invoked when we see 'struct foo' or 'struct {'. More...
 
DeclActOnTemplatedFriendTag (Scope *S, SourceLocation FriendLoc, unsigned TagSpec, SourceLocation TagLoc, CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, AttributeList *Attr, MultiTemplateParamsArg TempParamLists)
 Handle a friend tag declaration where the scope specifier was templated. More...
 
TypeResult ActOnDependentTag (Scope *S, unsigned TagSpec, TagUseKind TUK, const CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation TagLoc, SourceLocation NameLoc)
 
void ActOnDefs (Scope *S, Decl *TagD, SourceLocation DeclStart, IdentifierInfo *ClassName, SmallVectorImpl< Decl * > &Decls)
 Called whenever @defs(ClassName) is encountered in the source. More...
 
DeclActOnField (Scope *S, Decl *TagD, SourceLocation DeclStart, Declarator &D, Expr *BitfieldWidth)
 ActOnField - Each field of a C struct/union is passed into this in order to create a FieldDecl object for it. More...
 
FieldDeclHandleField (Scope *S, RecordDecl *TagD, SourceLocation DeclStart, Declarator &D, Expr *BitfieldWidth, InClassInitStyle InitStyle, AccessSpecifier AS)
 HandleField - Analyze a field of a C struct or a C++ data member. More...
 
MSPropertyDeclHandleMSProperty (Scope *S, RecordDecl *TagD, SourceLocation DeclStart, Declarator &D, Expr *BitfieldWidth, InClassInitStyle InitStyle, AccessSpecifier AS, AttributeList *MSPropertyAttr)
 HandleMSProperty - Analyze a __delcspec(property) field of a C++ class. More...
 
FieldDeclCheckFieldDecl (DeclarationName Name, QualType T, TypeSourceInfo *TInfo, RecordDecl *Record, SourceLocation Loc, bool Mutable, Expr *BitfieldWidth, InClassInitStyle InitStyle, SourceLocation TSSL, AccessSpecifier AS, NamedDecl *PrevDecl, Declarator *D=nullptr)
 Build a new FieldDecl and check its well-formedness. More...
 
bool CheckNontrivialField (FieldDecl *FD)
 
void DiagnoseNontrivial (const CXXRecordDecl *Record, CXXSpecialMember CSM)
 Diagnose why the specified class does not have a trivial special member of the given kind. More...
 
bool SpecialMemberIsTrivial (CXXMethodDecl *MD, CXXSpecialMember CSM, bool Diagnose=false)
 Determine whether a defaulted or deleted special member function is trivial, as specified in C++11 [class.ctor]p5, C++11 [class.copy]p12, C++11 [class.copy]p25, and C++11 [class.dtor]p5. More...
 
CXXSpecialMember getSpecialMember (const CXXMethodDecl *MD)
 getSpecialMember - get the special member enum for a method. More...
 
void ActOnLastBitfield (SourceLocation DeclStart, SmallVectorImpl< Decl * > &AllIvarDecls)
 ActOnLastBitfield - This routine handles synthesized bitfields rules for class and class extensions. More...
 
DeclActOnIvar (Scope *S, SourceLocation DeclStart, Declarator &D, Expr *BitfieldWidth, tok::ObjCKeywordKind visibility)
 ActOnIvar - Each ivar field of an objective-c class is passed into this in order to create an IvarDecl object for it. More...
 
void ActOnFields (Scope *S, SourceLocation RecLoc, Decl *TagDecl, ArrayRef< Decl * > Fields, SourceLocation LBrac, SourceLocation RBrac, AttributeList *AttrList)
 
void ActOnTagStartDefinition (Scope *S, Decl *TagDecl)
 ActOnTagStartDefinition - Invoked when we have entered the scope of a tag's definition (e.g., for an enumeration, class, struct, or union). More...
 
SkippedDefinitionContext ActOnTagStartSkippedDefinition (Scope *S, Decl *TD)
 Invoked when we enter a tag definition that we're skipping. More...
 
DeclActOnObjCContainerStartDefinition (Decl *IDecl)
 
void ActOnStartCXXMemberDeclarations (Scope *S, Decl *TagDecl, SourceLocation FinalLoc, bool IsFinalSpelledSealed, SourceLocation LBraceLoc)
 ActOnStartCXXMemberDeclarations - Invoked when we have parsed a C++ record definition's base-specifiers clause and are starting its member declarations. More...
 
void ActOnTagFinishDefinition (Scope *S, Decl *TagDecl, SourceLocation RBraceLoc)
 ActOnTagFinishDefinition - Invoked once we have finished parsing the definition of a tag (enumeration, class, struct, or union). More...
 
void ActOnTagFinishSkippedDefinition (SkippedDefinitionContext Context)
 
void ActOnObjCContainerFinishDefinition ()
 
void ActOnObjCTemporaryExitContainerContext (DeclContext *DC)
 Invoked when we must temporarily exit the objective-c container scope for parsing/looking-up C constructs. More...
 
void ActOnObjCReenterContainerContext (DeclContext *DC)
 
void ActOnTagDefinitionError (Scope *S, Decl *TagDecl)
 ActOnTagDefinitionError - Invoked when there was an unrecoverable error parsing the definition of a tag. More...
 
EnumConstantDeclCheckEnumConstant (EnumDecl *Enum, EnumConstantDecl *LastEnumConst, SourceLocation IdLoc, IdentifierInfo *Id, Expr *val)
 
bool CheckEnumUnderlyingType (TypeSourceInfo *TI)
 Check that this is a valid underlying type for an enum declaration. More...
 
bool CheckEnumRedeclaration (SourceLocation EnumLoc, bool IsScoped, QualType EnumUnderlyingTy, bool EnumUnderlyingIsImplicit, const EnumDecl *Prev)
 Check whether this is a valid redeclaration of a previous enumeration. More...
 
SkipBodyInfo shouldSkipAnonEnumBody (Scope *S, IdentifierInfo *II, SourceLocation IILoc)
 Determine whether the body of an anonymous enumeration should be skipped. More...
 
DeclActOnEnumConstant (Scope *S, Decl *EnumDecl, Decl *LastEnumConstant, SourceLocation IdLoc, IdentifierInfo *Id, AttributeList *Attrs, SourceLocation EqualLoc, Expr *Val)
 
void ActOnEnumBody (SourceLocation EnumLoc, SourceLocation LBraceLoc, SourceLocation RBraceLoc, Decl *EnumDecl, ArrayRef< Decl * > Elements, Scope *S, AttributeList *Attr)
 
DeclContextgetContainingDC (DeclContext *DC)
 
void PushDeclContext (Scope *S, DeclContext *DC)
 Set the current declaration context until it gets popped. More...
 
void PopDeclContext ()
 
void EnterDeclaratorContext (Scope *S, DeclContext *DC)
 EnterDeclaratorContext - Used when we must lookup names in the context of a declarator's nested name specifier. More...
 
void ExitDeclaratorContext (Scope *S)
 
void ActOnReenterFunctionContext (Scope *S, Decl *D)
 Push the parameters of D, which must be a function, into scope. More...
 
void ActOnExitFunctionContext ()
 
DeclContextgetFunctionLevelDeclContext ()
 
FunctionDeclgetCurFunctionDecl ()
 getCurFunctionDecl - If inside of a function body, this returns a pointer to the function decl for the function being parsed. More...
 
ObjCMethodDeclgetCurMethodDecl ()
 getCurMethodDecl - If inside of a method body, this returns a pointer to the method decl for the method being parsed. More...
 
NamedDeclgetCurFunctionOrMethodDecl ()
 getCurFunctionOrMethodDecl - Return the Decl for the current ObjC method or C function we're in, otherwise return null. More...
 
void PushOnScopeChains (NamedDecl *D, Scope *S, bool AddToContext=true)
 Add this decl to the scope shadowed decl chains. More...
 
void pushExternalDeclIntoScope (NamedDecl *D, DeclarationName Name)
 Make the given externally-produced declaration visible at the top level scope. More...
 
bool isDeclInScope (NamedDecl *D, DeclContext *Ctx, Scope *S=nullptr, bool AllowInlineNamespace=false)
 isDeclInScope - If 'Ctx' is a function/method, isDeclInScope returns true if 'D' is in Scope 'S', otherwise 'S' is ignored and isDeclInScope returns true if 'D' belongs to the given declaration context. More...
 
TypedefDeclParseTypedefDecl (Scope *S, Declarator &D, QualType T, TypeSourceInfo *TInfo)
 Subroutines of ActOnDeclarator(). More...
 
bool isIncompatibleTypedef (TypeDecl *Old, TypedefNameDecl *New)
 
AvailabilityAttr * mergeAvailabilityAttr (NamedDecl *D, SourceRange Range, IdentifierInfo *Platform, bool Implicit, VersionTuple Introduced, VersionTuple Deprecated, VersionTuple Obsoleted, bool IsUnavailable, StringRef Message, bool IsStrict, StringRef Replacement, AvailabilityMergeKind AMK, unsigned AttrSpellingListIndex)
 Attribute merging methods. Return true if a new attribute was added. More...
 
TypeVisibilityAttr * mergeTypeVisibilityAttr (Decl *D, SourceRange Range, TypeVisibilityAttr::VisibilityType Vis, unsigned AttrSpellingListIndex)
 
VisibilityAttr * mergeVisibilityAttr (Decl *D, SourceRange Range, VisibilityAttr::VisibilityType Vis, unsigned AttrSpellingListIndex)
 
DLLImportAttr * mergeDLLImportAttr (Decl *D, SourceRange Range, unsigned AttrSpellingListIndex)
 
DLLExportAttr * mergeDLLExportAttr (Decl *D, SourceRange Range, unsigned AttrSpellingListIndex)
 
MSInheritanceAttr * mergeMSInheritanceAttr (Decl *D, SourceRange Range, bool BestCase, unsigned AttrSpellingListIndex, MSInheritanceAttr::Spelling SemanticSpelling)
 
FormatAttr * mergeFormatAttr (Decl *D, SourceRange Range, IdentifierInfo *Format, int FormatIdx, int FirstArg, unsigned AttrSpellingListIndex)
 
SectionAttr * mergeSectionAttr (Decl *D, SourceRange Range, StringRef Name, unsigned AttrSpellingListIndex)
 
AlwaysInlineAttr * mergeAlwaysInlineAttr (Decl *D, SourceRange Range, IdentifierInfo *Ident, unsigned AttrSpellingListIndex)
 
MinSizeAttr * mergeMinSizeAttr (Decl *D, SourceRange Range, unsigned AttrSpellingListIndex)
 
OptimizeNoneAttr * mergeOptimizeNoneAttr (Decl *D, SourceRange Range, unsigned AttrSpellingListIndex)
 
InternalLinkageAttr * mergeInternalLinkageAttr (Decl *D, SourceRange Range, IdentifierInfo *Ident, unsigned AttrSpellingListIndex)
 
CommonAttr * mergeCommonAttr (Decl *D, SourceRange Range, IdentifierInfo *Ident, unsigned AttrSpellingListIndex)
 
void mergeDeclAttributes (NamedDecl *New, Decl *Old, AvailabilityMergeKind AMK=AMK_Redeclaration)
 mergeDeclAttributes - Copy attributes from the Old decl to the New one. More...
 
void MergeTypedefNameDecl (Scope *S, TypedefNameDecl *New, LookupResult &OldDecls)
 MergeTypedefNameDecl - We just parsed a typedef 'New' which has the same name and scope as a previous declaration 'Old'. More...
 
bool MergeFunctionDecl (FunctionDecl *New, NamedDecl *&Old, Scope *S, bool MergeTypeWithOld)
 MergeFunctionDecl - We just parsed a function 'New' from declarator D which has the same name and scope as a previous declaration 'Old'. More...
 
bool MergeCompatibleFunctionDecls (FunctionDecl *New, FunctionDecl *Old, Scope *S, bool MergeTypeWithOld)
 Completes the merge of two function declarations that are known to be compatible. More...
 
void mergeObjCMethodDecls (ObjCMethodDecl *New, ObjCMethodDecl *Old)
 
void MergeVarDecl (VarDecl *New, LookupResult &Previous)
 MergeVarDecl - We just parsed a variable 'New' which has the same name and scope as a previous declaration 'Old'. More...
 
void MergeVarDeclTypes (VarDecl *New, VarDecl *Old, bool MergeTypeWithOld)
 MergeVarDeclTypes - We parsed a variable 'New' which has the same name and scope as a previous declaration 'Old'. More...
 
void MergeVarDeclExceptionSpecs (VarDecl *New, VarDecl *Old)
 Merge the exception specifications of two variable declarations. More...
 
bool MergeCXXFunctionDecl (FunctionDecl *New, FunctionDecl *Old, Scope *S)
 MergeCXXFunctionDecl - Merge two declarations of the same C++ function, once we already know that they have the same type. More...
 
OverloadKind CheckOverload (Scope *S, FunctionDecl *New, const LookupResult &OldDecls, NamedDecl *&OldDecl, bool IsForUsingDecl)
 
bool IsOverload (FunctionDecl *New, FunctionDecl *Old, bool IsForUsingDecl, bool ConsiderCudaAttrs=true)
 
bool isFunctionConsideredUnavailable (FunctionDecl *FD)
 Checks availability of the function depending on the current function context.Inside an unavailable function,unavailability is ignored. More...
 
ImplicitConversionSequence TryImplicitConversion (Expr *From, QualType ToType, bool SuppressUserConversions, bool AllowExplicit, bool InOverloadResolution, bool CStyle, bool AllowObjCWritebackConversion)
 
bool IsIntegralPromotion (Expr *From, QualType FromType, QualType ToType)
 IsIntegralPromotion - Determines whether the conversion from the expression From (whose potentially-adjusted type is FromType) to ToType is an integral promotion (C++ 4.5). More...
 
bool IsFloatingPointPromotion (QualType FromType, QualType ToType)
 IsFloatingPointPromotion - Determines whether the conversion from FromType to ToType is a floating point promotion (C++ 4.6). More...
 
bool IsComplexPromotion (QualType FromType, QualType ToType)
 Determine if a conversion is a complex promotion. More...
 
bool IsPointerConversion (Expr *From, QualType FromType, QualType ToType, bool InOverloadResolution, QualType &ConvertedType, bool &IncompatibleObjC)
 IsPointerConversion - Determines whether the conversion of the expression From, which has the (possibly adjusted) type FromType, can be converted to the type ToType via a pointer conversion (C++ 4.10). More...
 
bool isObjCPointerConversion (QualType FromType, QualType ToType, QualType &ConvertedType, bool &IncompatibleObjC)
 isObjCPointerConversion - Determines whether this is an Objective-C pointer conversion. More...
 
bool isObjCWritebackConversion (QualType FromType, QualType ToType, QualType &ConvertedType)
 Determine whether this is an Objective-C writeback conversion, used for parameter passing when performing automatic reference counting. More...
 
bool IsBlockPointerConversion (QualType FromType, QualType ToType, QualType &ConvertedType)
 
bool FunctionParamTypesAreEqual (const FunctionProtoType *OldType, const FunctionProtoType *NewType, unsigned *ArgPos=nullptr)
 FunctionParamTypesAreEqual - This routine checks two function proto types for equality of their argument types. More...
 
void HandleFunctionTypeMismatch (PartialDiagnostic &PDiag, QualType FromType, QualType ToType)
 HandleFunctionTypeMismatch - Gives diagnostic information for differeing function types. More...
 
void maybeExtendBlockObject (ExprResult &E)
 Do an explicit extend of the given block pointer if we're in ARC. More...
 
CastKind PrepareCastToObjCObjectPointer (ExprResult &E)
 Prepare a conversion of the given expression to an ObjC object pointer type. More...
 
bool CheckPointerConversion (Expr *From, QualType ToType, CastKind &Kind, CXXCastPath &BasePath, bool IgnoreBaseAccess, bool Diagnose=true)
 CheckPointerConversion - Check the pointer conversion from the expression From to the type ToType. More...
 
bool IsMemberPointerConversion (Expr *From, QualType FromType, QualType ToType, bool InOverloadResolution, QualType &ConvertedType)
 IsMemberPointerConversion - Determines whether the conversion of the expression From, which has the (possibly adjusted) type FromType, can be converted to the type ToType via a member pointer conversion (C++ 4.11). More...
 
bool CheckMemberPointerConversion (Expr *From, QualType ToType, CastKind &Kind, CXXCastPath &BasePath, bool IgnoreBaseAccess)
 CheckMemberPointerConversion - Check the member pointer conversion from the expression From to the type ToType. More...
 
bool IsQualificationConversion (QualType FromType, QualType ToType, bool CStyle, bool &ObjCLifetimeConversion)
 IsQualificationConversion - Determines whether the conversion from an rvalue of type FromType to ToType is a qualification conversion (C++ 4.4). More...
 
bool IsNoReturnConversion (QualType FromType, QualType ToType, QualType &ResultTy)
 Determine whether the conversion from FromType to ToType is a valid conversion that strips "noreturn" off the nested function type. More...
 
bool DiagnoseMultipleUserDefinedConversion (Expr *From, QualType ToType)
 
bool isSameOrCompatibleFunctionType (CanQualType Param, CanQualType Arg)
 Compare types for equality with respect to possibly compatible function types (noreturn adjustment, implicit calling conventions). More...
 
ExprResult PerformMoveOrCopyInitialization (const InitializedEntity &Entity, const VarDecl *NRVOCandidate, QualType ResultType, Expr *Value, bool AllowNRVO=true)
 Perform the initialization of a potentially-movable value, which is the result of return value. More...
 
bool CanPerformCopyInitialization (const InitializedEntity &Entity, ExprResult Init)
 
ExprResult PerformCopyInitialization (const InitializedEntity &Entity, SourceLocation EqualLoc, ExprResult Init, bool TopLevelOfInitList=false, bool AllowExplicit=false)
 
ExprResult PerformObjectArgumentInitialization (Expr *From, NestedNameSpecifier *Qualifier, NamedDecl *FoundDecl, CXXMethodDecl *Method)
 PerformObjectArgumentInitialization - Perform initialization of the implicit object parameter for the given Method with the given expression. More...
 
ExprResult PerformContextuallyConvertToBool (Expr *From)
 PerformContextuallyConvertToBool - Perform a contextual conversion of the expression From to bool (C++0x [conv]p3). More...
 
ExprResult PerformContextuallyConvertToObjCPointer (Expr *From)
 PerformContextuallyConvertToObjCPointer - Perform a contextual conversion of the expression From to an Objective-C pointer type. More...
 
ExprResult CheckConvertedConstantExpression (Expr *From, QualType T, llvm::APSInt &Value, CCEKind CCE)
 
ExprResult CheckConvertedConstantExpression (Expr *From, QualType T, APValue &Value, CCEKind CCE)
 
ExprResult PerformContextualImplicitConversion (SourceLocation Loc, Expr *FromE, ContextualImplicitConverter &Converter)
 Perform a contextual implicit conversion. More...
 
ObjCSubscriptKind CheckSubscriptingKind (Expr *FromE)
 CheckSubscriptingKind - This routine decide what type of indexing represented by "FromE" is being done. More...
 
ObjCLiteralKind CheckLiteralKind (Expr *FromE)
 
ExprResult PerformObjectMemberConversion (Expr *From, NestedNameSpecifier *Qualifier, NamedDecl *FoundDecl, NamedDecl *Member)
 Cast a base object to a member's actual type. More...
 
void AddOverloadCandidate (FunctionDecl *Function, DeclAccessPair FoundDecl, ArrayRef< Expr * > Args, OverloadCandidateSet &CandidateSet, bool SuppressUserConversions=false, bool PartialOverloading=false, bool AllowExplicit=false)
 AddOverloadCandidate - Adds the given function to the set of candidate functions, using the given function call arguments. More...
 
void AddFunctionCandidates (const UnresolvedSetImpl &Functions, ArrayRef< Expr * > Args, OverloadCandidateSet &CandidateSet, TemplateArgumentListInfo *ExplicitTemplateArgs=nullptr, bool SuppressUserConversions=false, bool PartialOverloading=false)
 Add all of the function declarations in the given function set to the overload candidate set. More...
 
void AddMethodCandidate (DeclAccessPair FoundDecl, QualType ObjectType, Expr::Classification ObjectClassification, ArrayRef< Expr * > Args, OverloadCandidateSet &CandidateSet, bool SuppressUserConversion=false)
 AddMethodCandidate - Adds a named decl (which is some kind of method) as a method candidate to the given overload set. More...
 
void AddMethodCandidate (CXXMethodDecl *Method, DeclAccessPair FoundDecl, CXXRecordDecl *ActingContext, QualType ObjectType, Expr::Classification ObjectClassification, ArrayRef< Expr * > Args, OverloadCandidateSet &CandidateSet, bool SuppressUserConversions=false, bool PartialOverloading=false)
 AddMethodCandidate - Adds the given C++ member function to the set of candidate functions, using the given function call arguments and the object argument (Object). More...
 
void AddMethodTemplateCandidate (FunctionTemplateDecl *MethodTmpl, DeclAccessPair FoundDecl, CXXRecordDecl *ActingContext, TemplateArgumentListInfo *ExplicitTemplateArgs, QualType ObjectType, Expr::Classification ObjectClassification, ArrayRef< Expr * > Args, OverloadCandidateSet &CandidateSet, bool SuppressUserConversions=false, bool PartialOverloading=false)
 Add a C++ member function template as a candidate to the candidate set, using template argument deduction to produce an appropriate member function template specialization. More...
 
void AddTemplateOverloadCandidate (FunctionTemplateDecl *FunctionTemplate, DeclAccessPair FoundDecl, TemplateArgumentListInfo *ExplicitTemplateArgs, ArrayRef< Expr * > Args, OverloadCandidateSet &CandidateSet, bool SuppressUserConversions=false, bool PartialOverloading=false)
 Add a C++ function template specialization as a candidate in the candidate set, using template argument deduction to produce an appropriate function template specialization. More...
 
void AddConversionCandidate (CXXConversionDecl *Conversion, DeclAccessPair FoundDecl, CXXRecordDecl *ActingContext, Expr *From, QualType ToType, OverloadCandidateSet &CandidateSet, bool AllowObjCConversionOnExplicit)
 AddConversionCandidate - Add a C++ conversion function as a candidate in the candidate set (C++ [over.match.conv], C++ [over.match.copy]). More...
 
void AddTemplateConversionCandidate (FunctionTemplateDecl *FunctionTemplate, DeclAccessPair FoundDecl, CXXRecordDecl *ActingContext, Expr *From, QualType ToType, OverloadCandidateSet &CandidateSet, bool AllowObjCConversionOnExplicit)
 Adds a conversion function template specialization candidate to the overload set, using template argument deduction to deduce the template arguments of the conversion function template from the type that we are converting to (C++ [temp.deduct.conv]). More...
 
void AddSurrogateCandidate (CXXConversionDecl *Conversion, DeclAccessPair FoundDecl, CXXRecordDecl *ActingContext, const FunctionProtoType *Proto, Expr *Object, ArrayRef< Expr * > Args, OverloadCandidateSet &CandidateSet)
 AddSurrogateCandidate - Adds a "surrogate" candidate function that converts the given Object to a function pointer via the conversion function Conversion, and then attempts to call it with the given arguments (C++ [over.call.object]p2-4). More...
 
void AddMemberOperatorCandidates (OverloadedOperatorKind Op, SourceLocation OpLoc, ArrayRef< Expr * > Args, OverloadCandidateSet &CandidateSet, SourceRange OpRange=SourceRange())
 Add overload candidates for overloaded operators that are member functions. More...
 
void AddBuiltinCandidate (QualType ResultTy, QualType *ParamTys, ArrayRef< Expr * > Args, OverloadCandidateSet &CandidateSet, bool IsAssignmentOperator=false, unsigned NumContextualBoolArguments=0)
 AddBuiltinCandidate - Add a candidate for a built-in operator. More...
 
void AddBuiltinOperatorCandidates (OverloadedOperatorKind Op, SourceLocation OpLoc, ArrayRef< Expr * > Args, OverloadCandidateSet &CandidateSet)
 AddBuiltinOperatorCandidates - Add the appropriate built-in operator overloads to the candidate set (C++ [over.built]), based on the operator Op and the arguments given. More...
 
void AddArgumentDependentLookupCandidates (DeclarationName Name, SourceLocation Loc, ArrayRef< Expr * > Args, TemplateArgumentListInfo *ExplicitTemplateArgs, OverloadCandidateSet &CandidateSet, bool PartialOverloading=false)
 Add function candidates found via argument-dependent lookup to the set of overloading candidates. More...
 
void NoteOverloadCandidate (NamedDecl *Found, FunctionDecl *Fn, QualType DestType=QualType(), bool TakingAddress=false)
 
void NoteAllOverloadCandidates (Expr *E, QualType DestType=QualType(), bool TakingAddress=false)
 
EnableIfAttr * CheckEnableIf (FunctionDecl *Function, ArrayRef< Expr * > Args, bool MissingImplicitThis=false)
 Check the enable_if expressions on the given function. More...
 
bool checkAddressOfFunctionIsAvailable (const FunctionDecl *Function, bool Complain=false, SourceLocation Loc=SourceLocation())
 Returns whether the given function's address can be taken or not, optionally emitting a diagnostic if the address can't be taken. More...
 
QualType ExtractUnqualifiedFunctionType (QualType PossiblyAFunctionType)
 
FunctionDeclResolveAddressOfOverloadedFunction (Expr *AddressOfExpr, QualType TargetType, bool Complain, DeclAccessPair &Found, bool *pHadMultipleCandidates=nullptr)
 ResolveAddressOfOverloadedFunction - Try to resolve the address of an overloaded function (C++ [over.over]), where From is an expression with overloaded function type and ToType is the type we're trying to resolve to. More...
 
FunctionDeclresolveAddressOfOnlyViableOverloadCandidate (Expr *E, DeclAccessPair &FoundResult)
 Given an expression that refers to an overloaded function, try to resolve that function to a single function that can have its address taken. More...
 
bool resolveAndFixAddressOfOnlyViableOverloadCandidate (ExprResult &SrcExpr)
 Given an overloaded function, tries to turn it into a non-overloaded function reference using resolveAddressOfOnlyViableOverloadCandidate. More...
 
FunctionDeclResolveSingleFunctionTemplateSpecialization (OverloadExpr *ovl, bool Complain=false, DeclAccessPair *Found=nullptr)
 Given an expression that refers to an overloaded function, try to resolve that overloaded function expression down to a single function. More...
 
bool ResolveAndFixSingleFunctionTemplateSpecialization (ExprResult &SrcExpr, bool DoFunctionPointerConverion=false, bool Complain=false, SourceRange OpRangeForComplaining=SourceRange(), QualType DestTypeForComplaining=QualType(), unsigned DiagIDForComplaining=0)
 
ExprFixOverloadedFunctionReference (Expr *E, DeclAccessPair FoundDecl, FunctionDecl *Fn)
 FixOverloadedFunctionReference - E is an expression that refers to a C++ overloaded function (possibly with some parentheses and perhaps a '&' around it). More...
 
ExprResult FixOverloadedFunctionReference (ExprResult, DeclAccessPair FoundDecl, FunctionDecl *Fn)
 
void AddOverloadedCallCandidates (UnresolvedLookupExpr *ULE, ArrayRef< Expr * > Args, OverloadCandidateSet &CandidateSet, bool PartialOverloading=false)
 Add the overload candidates named by callee and/or found by argument dependent lookup to the given overload set. More...
 
ForRangeStatus BuildForRangeBeginEndCall (SourceLocation Loc, SourceLocation RangeLoc, const DeclarationNameInfo &NameInfo, LookupResult &MemberLookup, OverloadCandidateSet *CandidateSet, Expr *Range, ExprResult *CallExpr)
 Build a call to 'begin' or 'end' for a C++11 for-range statement. More...
 
ExprResult BuildOverloadedCallExpr (Scope *S, Expr *Fn, UnresolvedLookupExpr *ULE, SourceLocation LParenLoc, MultiExprArg Args, SourceLocation RParenLoc, Expr *ExecConfig, bool AllowTypoCorrection=true, bool CalleesAddressIsTaken=false)
 BuildOverloadedCallExpr - Given the call expression that calls Fn (which eventually refers to the declaration Func) and the call arguments Args/NumArgs, attempt to resolve the function call down to a specific function. More...
 
bool buildOverloadedCallSet (Scope *S, Expr *Fn, UnresolvedLookupExpr *ULE, MultiExprArg Args, SourceLocation RParenLoc, OverloadCandidateSet *CandidateSet, ExprResult *Result)
 Constructs and populates an OverloadedCandidateSet from the given function. More...
 
ExprResult CreateOverloadedUnaryOp (SourceLocation OpLoc, UnaryOperatorKind Opc, const UnresolvedSetImpl &Fns, Expr *input)
 Create a unary operation that may resolve to an overloaded operator. More...
 
ExprResult CreateOverloadedBinOp (SourceLocation OpLoc, BinaryOperatorKind Opc, const UnresolvedSetImpl &Fns, Expr *LHS, Expr *RHS)
 Create a binary operation that may resolve to an overloaded operator. More...
 
ExprResult CreateOverloadedArraySubscriptExpr (SourceLocation LLoc, SourceLocation RLoc, Expr *Base, Expr *Idx)
 
ExprResult BuildCallToMemberFunction (Scope *S, Expr *MemExpr, SourceLocation LParenLoc, MultiExprArg Args, SourceLocation RParenLoc)
 BuildCallToMemberFunction - Build a call to a member function. More...
 
ExprResult BuildCallToObjectOfClassType (Scope *S, Expr *Object, SourceLocation LParenLoc, MultiExprArg Args, SourceLocation RParenLoc)
 BuildCallToObjectOfClassType - Build a call to an object of class type (C++ [over.call.object]), which can end up invoking an overloaded function call operator (operator()) or performing a user-defined conversion on the object argument. More...
 
ExprResult BuildOverloadedArrowExpr (Scope *S, Expr *Base, SourceLocation OpLoc, bool *NoArrowOperatorFound=nullptr)
 BuildOverloadedArrowExpr - Build a call to an overloaded operator-> (if one exists), where Base is an expression of class type and Member is the name of the member we're trying to find. More...
 
bool CheckCallReturnType (QualType ReturnType, SourceLocation Loc, CallExpr *CE, FunctionDecl *FD)
 CheckCallReturnType - Checks that a call expression's return type is complete. More...
 
bool CheckParmsForFunctionDef (ArrayRef< ParmVarDecl * > Parameters, bool CheckParameterNames)
 Helpers for dealing with blocks and functions. More...
 
void CheckCXXDefaultArguments (FunctionDecl *FD)
 CheckCXXDefaultArguments - Verify that the default arguments for a function declaration are well-formed according to C++ [dcl.fct.default]. More...
 
void CheckExtraCXXDefaultArguments (Declarator &D)
 CheckExtraCXXDefaultArguments - Check for any extra default arguments in the declarator, which is not a function declaration or definition and therefore is not permitted to have default arguments. More...
 
ScopegetNonFieldDeclScope (Scope *S)
 getNonFieldDeclScope - Retrieves the innermost scope, starting from S, where a non-field would be declared. More...
 
ObjCInterfaceDeclgetObjCInterfaceDecl (IdentifierInfo *&Id, SourceLocation IdLoc, bool TypoCorrection=false)
 Look for an Objective-C class in the translation unit. More...
 
NamedDeclLazilyCreateBuiltin (IdentifierInfo *II, unsigned ID, Scope *S, bool ForRedeclaration, SourceLocation Loc)
 LazilyCreateBuiltin - The specified Builtin-ID was first used at file scope. More...
 
NamedDeclImplicitlyDefineFunction (SourceLocation Loc, IdentifierInfo &II, Scope *S)
 ImplicitlyDefineFunction - An undeclared identifier was used in a function call, forming a call to an implicitly defined function (per C99 6.5.1p2). More...
 
void AddKnownFunctionAttributes (FunctionDecl *FD)
 Adds any function attributes that we know a priori based on the declaration of this function. More...
 
void ProcessPragmaWeak (Scope *S, Decl *D)
 
void ProcessDeclAttributes (Scope *S, Decl *D, const Declarator &PD)
 ProcessDeclAttributes - Given a declarator (PD) with attributes indicated in it, apply them to D. More...
 
void ProcessDeclAttributeList (Scope *S, Decl *D, const AttributeList *AL, bool IncludeCXX11Attributes=true)
 ProcessDeclAttributeList - Apply all the decl attributes in the specified attribute list to the specified decl, ignoring any type attributes. More...
 
bool ProcessAccessDeclAttributeList (AccessSpecDecl *ASDecl, const AttributeList *AttrList)
 
void checkUnusedDeclAttributes (Declarator &D)
 checkUnusedDeclAttributes - Given a declarator which is not being used to build a declaration, complain about any decl attributes which might be lying around on it. More...
 
bool isValidPointerAttrType (QualType T, bool RefOkay=false)
 Determine if type T is a valid subject for a nonnull and similar attributes. More...
 
bool CheckRegparmAttr (const AttributeList &attr, unsigned &value)
 Checks a regparm attribute, returning true if it is ill-formed and otherwise setting numParams to the appropriate value. More...
 
bool CheckCallingConvAttr (const AttributeList &attr, CallingConv &CC, const FunctionDecl *FD=nullptr)
 
bool CheckNoReturnAttr (const AttributeList &attr)
 
bool checkStringLiteralArgumentAttr (const AttributeList &Attr, unsigned ArgNum, StringRef &Str, SourceLocation *ArgLocation=nullptr)
 Check if the argument ArgNum of Attr is a ASCII string literal. More...
 
bool checkSectionName (SourceLocation LiteralLoc, StringRef Str)
 
void checkTargetAttr (SourceLocation LiteralLoc, StringRef Str)
 
bool checkMSInheritanceAttrOnDefinition (CXXRecordDecl *RD, SourceRange Range, bool BestCase, MSInheritanceAttr::Spelling SemanticSpelling)
 
void CheckAlignasUnderalignment (Decl *D)
 
void adjustMemberFunctionCC (QualType &T, bool IsStatic, bool IsCtorOrDtor, SourceLocation Loc)
 Adjust the calling convention of a method to be the ABI default if it wasn't specified explicitly. More...
 
bool hasExplicitCallingConv (QualType &T)
 
const AttributedTypegetCallingConvAttributedType (QualType T) const
 Get the outermost AttributedType node that sets a calling convention. More...
 
bool checkNullabilityTypeSpecifier (QualType &type, NullabilityKind nullability, SourceLocation nullabilityLoc, bool isContextSensitive)
 Check whether a nullability type specifier can be added to the given type. More...
 
StmtResult ProcessStmtAttributes (Stmt *Stmt, AttributeList *Attrs, SourceRange Range)
 Stmt attributes - this routine is the top level dispatcher. More...
 
void WarnConflictingTypedMethods (ObjCMethodDecl *Method, ObjCMethodDecl *MethodDecl, bool IsProtocolMethodDecl)
 
void CheckConflictingOverridingMethod (ObjCMethodDecl *Method, ObjCMethodDecl *Overridden, bool IsProtocolMethodDecl)
 
void WarnExactTypedMethods (ObjCMethodDecl *Method, ObjCMethodDecl *MethodDecl, bool IsProtocolMethodDecl)
 WarnExactTypedMethods - This routine issues a warning if method implementation declaration matches exactly that of its declaration. More...
 
void CheckImplementationIvars (ObjCImplementationDecl *ImpDecl, ObjCIvarDecl **Fields, unsigned nIvars, SourceLocation Loc)
 CheckImplementationIvars - This routine checks if the instance variables listed in the implelementation match those listed in the interface. More...
 
void ImplMethodsVsClassMethods (Scope *S, ObjCImplDecl *IMPDecl, ObjCContainerDecl *IDecl, bool IncompleteImpl=false)
 ImplMethodsVsClassMethods - This is main routine to warn if any method remains unimplemented in the class or category @implementation. More...
 
void DiagnoseUnimplementedProperties (Scope *S, ObjCImplDecl *IMPDecl, ObjCContainerDecl *CDecl, bool SynthesizeProperties)
 DiagnoseUnimplementedProperties - This routine warns on those properties which must be implemented by this implementation. More...
 
void diagnoseNullResettableSynthesizedSetters (const ObjCImplDecl *impDecl)
 Diagnose any null-resettable synthesized setters. More...
 
void DefaultSynthesizeProperties (Scope *S, ObjCImplDecl *IMPDecl, ObjCInterfaceDecl *IDecl)
 DefaultSynthesizeProperties - This routine default synthesizes all properties which must be synthesized in the class's @implementation. More...
 
void DefaultSynthesizeProperties (Scope *S, Decl *D)
 
bool IvarBacksCurrentMethodAccessor (ObjCInterfaceDecl *IFace, ObjCMethodDecl *Method, ObjCIvarDecl *IV)
 IvarBacksCurrentMethodAccessor - This routine returns 'true' if 'IV' is an ivar synthesized for 'Method' and 'Method' is a property accessor declared in class 'IFace'. More...
 
void DiagnoseUnusedBackingIvarInAccessor (Scope *S, const ObjCImplementationDecl *ImplD)
 DiagnoseUnusedBackingIvarInAccessor - Issue an 'unused' warning if ivar which backs the property is not used in the property's accessor. More...
 
ObjCIvarDeclGetIvarBackingPropertyAccessor (const ObjCMethodDecl *Method, const ObjCPropertyDecl *&PDecl) const
 GetIvarBackingPropertyAccessor - If method is a property setter/getter and it property has a backing ivar, returns this ivar; otherwise, returns NULL. More...
 
ObjCPropertyDeclHandlePropertyInClassExtension (Scope *S, SourceLocation AtLoc, SourceLocation LParenLoc, FieldDeclarator &FD, Selector GetterSel, Selector SetterSel, const bool isReadWrite, unsigned &Attributes, const unsigned AttributesAsWritten, QualType T, TypeSourceInfo *TSI, tok::ObjCKeywordKind MethodImplKind)
 Called by ActOnProperty to handle @property declarations in class extensions. More...
 
ObjCPropertyDeclCreatePropertyDecl (Scope *S, ObjCContainerDecl *CDecl, SourceLocation AtLoc, SourceLocation LParenLoc, FieldDeclarator &FD, Selector GetterSel, Selector SetterSel, const bool isReadWrite, const unsigned Attributes, const unsigned AttributesAsWritten, QualType T, TypeSourceInfo *TSI, tok::ObjCKeywordKind MethodImplKind, DeclContext *lexicalDC=nullptr)
 Called by ActOnProperty and HandlePropertyInClassExtension to handle creating the ObjcPropertyDecl for a category or @interface. More...
 
void AtomicPropertySetterGetterRules (ObjCImplDecl *IMPDecl, ObjCInterfaceDecl *IDecl)
 AtomicPropertySetterGetterRules - This routine enforces the rule (via warning) when atomic property has one but not the other user-declared setter or getter. More...
 
void DiagnoseOwningPropertyGetterSynthesis (const ObjCImplementationDecl *D)
 
void DiagnoseMissingDesignatedInitOverrides (const ObjCImplementationDecl *ImplD, const ObjCInterfaceDecl *IFD)
 
void DiagnoseDuplicateIvars (ObjCInterfaceDecl *ID, ObjCInterfaceDecl *SID)
 DiagnoseDuplicateIvars - Check for duplicate ivars in the entire class at the start of @implementation. More...
 
bool MatchTwoMethodDeclarations (const ObjCMethodDecl *Method, const ObjCMethodDecl *PrevMethod, MethodMatchStrategy strategy=MMS_strict)
 MatchTwoMethodDeclarations - Checks if two methods' type match and returns true, or false, accordingly. More...
 
void MatchAllMethodDeclarations (const SelectorSet &InsMap, const SelectorSet &ClsMap, SelectorSet &InsMapSeen, SelectorSet &ClsMapSeen, ObjCImplDecl *IMPDecl, ObjCContainerDecl *IDecl, bool &IncompleteImpl, bool ImmediateClass, bool WarnCategoryMethodImpl=false)
 MatchAllMethodDeclarations - Check methods declaraed in interface or or protocol against those declared in their implementations. More...
 
void CheckCategoryVsClassMethodMatches (ObjCCategoryImplDecl *CatIMP)
 CheckCategoryVsClassMethodMatches - Checks that methods implemented in category matches with those implemented in its primary class and warns each time an exact match is found. More...
 
void addMethodToGlobalList (ObjCMethodList *List, ObjCMethodDecl *Method)
 Add the given method to the list of globally-known methods. More...
 
bool CollectMultipleMethodsInGlobalPool (Selector Sel, SmallVectorImpl< ObjCMethodDecl * > &Methods, bool InstanceFirst, bool CheckTheOther, const ObjCObjectType *TypeBound=nullptr)
 
  • Returns instance or factory methods in global method pool for given selector.
More...
 
bool AreMultipleMethodsInGlobalPool (Selector Sel, ObjCMethodDecl *BestMethod, SourceRange R, bool receiverIdOrClass, SmallVectorImpl< ObjCMethodDecl * > &Methods)
 
void DiagnoseMultipleMethodInGlobalPool (SmallVectorImpl< ObjCMethodDecl * > &Methods, Selector Sel, SourceRange R, bool receiverIdOrClass)
 
void AddInstanceMethodToGlobalPool (ObjCMethodDecl *Method, bool impl=false)
 AddInstanceMethodToGlobalPool - All instance methods in a translation unit are added to a global pool. More...
 
void AddFactoryMethodToGlobalPool (ObjCMethodDecl *Method, bool impl=false)
 AddFactoryMethodToGlobalPool - Same as above, but for factory methods. More...
 
void AddAnyMethodToGlobalPool (Decl *D)
 AddAnyMethodToGlobalPool - Add any method, instance or factory to global pool. More...
 
ObjCMethodDeclLookupInstanceMethodInGlobalPool (Selector Sel, SourceRange R, bool receiverIdOrClass=false)
 LookupInstanceMethodInGlobalPool - Returns the method and warns if there are multiple signatures. More...
 
ObjCMethodDeclLookupFactoryMethodInGlobalPool (Selector Sel, SourceRange R, bool receiverIdOrClass=false)
 LookupFactoryMethodInGlobalPool - Returns the method and warns if there are multiple signatures. More...
 
const ObjCMethodDeclSelectorsForTypoCorrection (Selector Sel, QualType ObjectType=QualType())
 
ObjCMethodDeclLookupImplementedMethodInGlobalPool (Selector Sel)
 LookupImplementedMethodInGlobalPool - Returns the method which has an implementation. More...
 
void CollectIvarsToConstructOrDestruct (ObjCInterfaceDecl *OI, SmallVectorImpl< ObjCIvarDecl * > &Ivars)
 CollectIvarsToConstructOrDestruct - Collect those ivars which require initialization. More...
 
FullExprArg MakeFullExpr (Expr *Arg)
 
FullExprArg MakeFullExpr (Expr *Arg, SourceLocation CC)
 
FullExprArg MakeFullDiscardedValueExpr (Expr *Arg)
 
StmtResult ActOnExprStmt (ExprResult Arg)
 
StmtResult ActOnExprStmtError ()
 
StmtResult ActOnNullStmt (SourceLocation SemiLoc, bool HasLeadingEmptyMacro=false)
 
void ActOnStartOfCompoundStmt ()
 
void ActOnFinishOfCompoundStmt ()
 
StmtResult ActOnCompoundStmt (SourceLocation L, SourceLocation R, ArrayRef< Stmt * > Elts, bool isStmtExpr)
 
StmtResult ActOnDeclStmt (DeclGroupPtrTy Decl, SourceLocation StartLoc, SourceLocation EndLoc)
 
void ActOnForEachDeclStmt (DeclGroupPtrTy Decl)
 
StmtResult ActOnForEachLValueExpr (Expr *E)
 In an Objective C collection iteration statement: for (x in y) x can be an arbitrary l-value expression. More...
 
StmtResult ActOnCaseStmt (SourceLocation CaseLoc, Expr *LHSVal, SourceLocation DotDotDotLoc, Expr *RHSVal, SourceLocation ColonLoc)
 
void ActOnCaseStmtBody (Stmt *CaseStmt, Stmt *SubStmt)
 ActOnCaseStmtBody - This installs a statement as the body of a case. More...
 
StmtResult ActOnDefaultStmt (SourceLocation DefaultLoc, SourceLocation ColonLoc, Stmt *SubStmt, Scope *CurScope)
 
StmtResult ActOnLabelStmt (SourceLocation IdentLoc, LabelDecl *TheDecl, SourceLocation ColonLoc, Stmt *SubStmt)
 
StmtResult ActOnAttributedStmt (SourceLocation AttrLoc, ArrayRef< const Attr * > Attrs, Stmt *SubStmt)
 
StmtResult ActOnIfStmt (SourceLocation IfLoc, bool IsConstexpr, Stmt *InitStmt, ConditionResult Cond, Stmt *ThenVal, SourceLocation ElseLoc, Stmt *ElseVal)
 
StmtResult BuildIfStmt (SourceLocation IfLoc, bool IsConstexpr, ConditionResult Cond, Stmt *ThenVal, SourceLocation ElseLoc, Stmt *ElseVal)
 
StmtResult ActOnStartOfSwitchStmt (SourceLocation SwitchLoc, Stmt *InitStmt, ConditionResult Cond)
 
StmtResult ActOnFinishSwitchStmt (SourceLocation SwitchLoc, Stmt *Switch, Stmt *Body)
 
StmtResult ActOnWhileStmt (SourceLocation WhileLoc, ConditionResult Cond, Stmt *Body)
 
StmtResult ActOnDoStmt (SourceLocation DoLoc, Stmt *Body, SourceLocation WhileLoc, SourceLocation CondLParen, Expr *Cond, SourceLocation CondRParen)
 
StmtResult ActOnForStmt (SourceLocation ForLoc, SourceLocation LParenLoc, Stmt *First, ConditionResult Second, FullExprArg Third, SourceLocation RParenLoc, Stmt *Body)
 
ExprResult CheckObjCForCollectionOperand (SourceLocation forLoc, Expr *collection)
 
StmtResult ActOnObjCForCollectionStmt (SourceLocation ForColLoc, Stmt *First, Expr *collection, SourceLocation RParenLoc)
 
StmtResult FinishObjCForCollectionStmt (Stmt *ForCollection, Stmt *Body)
 FinishObjCForCollectionStmt - Attach the body to a objective-C foreach statement. More...
 
StmtResult ActOnCXXForRangeStmt (Scope *S, SourceLocation ForLoc, SourceLocation CoawaitLoc, Stmt *LoopVar, SourceLocation ColonLoc, Expr *Collection, SourceLocation RParenLoc, BuildForRangeKind Kind)
 ActOnCXXForRangeStmt - Check and build a C++11 for-range statement. More...
 
StmtResult BuildCXXForRangeStmt (SourceLocation ForLoc, SourceLocation CoawaitLoc, SourceLocation ColonLoc, Stmt *RangeDecl, Stmt *Begin, Stmt *End, Expr *Cond, Expr *Inc, Stmt *LoopVarDecl, SourceLocation RParenLoc, BuildForRangeKind Kind)
 BuildCXXForRangeStmt - Build or instantiate a C++11 for-range statement. More...
 
StmtResult FinishCXXForRangeStmt (Stmt *ForRange, Stmt *Body)
 FinishCXXForRangeStmt - Attach the body to a C++0x for-range statement. More...
 
StmtResult ActOnGotoStmt (SourceLocation GotoLoc, SourceLocation LabelLoc, LabelDecl *TheDecl)
 
StmtResult ActOnIndirectGotoStmt (SourceLocation GotoLoc, SourceLocation StarLoc, Expr *DestExp)
 
StmtResult ActOnContinueStmt (SourceLocation ContinueLoc, Scope *CurScope)
 
StmtResult ActOnBreakStmt (SourceLocation BreakLoc, Scope *CurScope)
 
void ActOnCapturedRegionStart (SourceLocation Loc, Scope *CurScope, CapturedRegionKind Kind, unsigned NumParams)
 
void ActOnCapturedRegionStart (SourceLocation Loc, Scope *CurScope, CapturedRegionKind Kind, ArrayRef< CapturedParamNameType > Params)
 
StmtResult ActOnCapturedRegionEnd (Stmt *S)
 
void ActOnCapturedRegionError ()
 
RecordDeclCreateCapturedStmtRecordDecl (CapturedDecl *&CD, SourceLocation Loc, unsigned NumParams)
 
VarDeclgetCopyElisionCandidate (QualType ReturnType, Expr *E, bool AllowFunctionParameters)
 Determine whether the given expression is a candidate for copy elision in either a return statement or a throw expression. More...
 
bool isCopyElisionCandidate (QualType ReturnType, const VarDecl *VD, bool AllowFunctionParameters)
 
StmtResult ActOnReturnStmt (SourceLocation ReturnLoc, Expr *RetValExp, Scope *CurScope)
 
StmtResult BuildReturnStmt (SourceLocation ReturnLoc, Expr *RetValExp)
 
StmtResult ActOnCapScopeReturnStmt (SourceLocation ReturnLoc, Expr *RetValExp)
 ActOnCapScopeReturnStmt - Utility routine to type-check return statements for capturing scopes. More...
 
StmtResult ActOnGCCAsmStmt (SourceLocation AsmLoc, bool IsSimple, bool IsVolatile, unsigned NumOutputs, unsigned NumInputs, IdentifierInfo **Names, MultiExprArg Constraints, MultiExprArg Exprs, Expr *AsmString, MultiExprArg Clobbers, SourceLocation RParenLoc)
 
ExprResult LookupInlineAsmIdentifier (CXXScopeSpec &SS, SourceLocation TemplateKWLoc, UnqualifiedId &Id, llvm::InlineAsmIdentifierInfo &Info, bool IsUnevaluatedContext)
 
bool LookupInlineAsmField (StringRef Base, StringRef Member, unsigned &Offset, SourceLocation AsmLoc)
 
ExprResult LookupInlineAsmVarDeclField (Expr *RefExpr, StringRef Member, llvm::InlineAsmIdentifierInfo &Info, SourceLocation AsmLoc)
 
StmtResult ActOnMSAsmStmt (SourceLocation AsmLoc, SourceLocation LBraceLoc, ArrayRef< Token > AsmToks, StringRef AsmString, unsigned NumOutputs, unsigned NumInputs, ArrayRef< StringRef > Constraints, ArrayRef< StringRef > Clobbers, ArrayRef< Expr * > Exprs, SourceLocation EndLoc)
 
LabelDeclGetOrCreateMSAsmLabel (StringRef ExternalLabelName, SourceLocation Location, bool AlwaysCreate)
 
VarDeclBuildObjCExceptionDecl (TypeSourceInfo *TInfo, QualType ExceptionType, SourceLocation StartLoc, SourceLocation IdLoc, IdentifierInfo *Id, bool Invalid=false)
 Build a type-check a new Objective-C exception variable declaration. More...
 
DeclActOnObjCExceptionDecl (Scope *S, Declarator &D)
 
StmtResult ActOnObjCAtCatchStmt (SourceLocation AtLoc, SourceLocation RParen, Decl *Parm, Stmt *Body)
 
StmtResult ActOnObjCAtFinallyStmt (SourceLocation AtLoc, Stmt *Body)
 
StmtResult ActOnObjCAtTryStmt (SourceLocation AtLoc, Stmt *Try, MultiStmtArg Catch, Stmt *Finally)
 
StmtResult BuildObjCAtThrowStmt (SourceLocation AtLoc, Expr *Throw)
 
StmtResult ActOnObjCAtThrowStmt (SourceLocation AtLoc, Expr *Throw, Scope *CurScope)
 
ExprResult ActOnObjCAtSynchronizedOperand (SourceLocation atLoc, Expr *operand)
 
StmtResult ActOnObjCAtSynchronizedStmt (SourceLocation AtLoc, Expr *SynchExpr, Stmt *SynchBody)
 
StmtResult ActOnObjCAutoreleasePoolStmt (SourceLocation AtLoc, Stmt *Body)
 
VarDeclBuildExceptionDeclaration (Scope *S, TypeSourceInfo *TInfo, SourceLocation StartLoc, SourceLocation IdLoc, IdentifierInfo *Id)
 Perform semantic analysis for the variable declaration that occurs within a C++ catch clause, returning the newly-created variable. More...
 
DeclActOnExceptionDeclarator (Scope *S, Declarator &D)
 ActOnExceptionDeclarator - Parsed the exception-declarator in a C++ catch handler. More...
 
StmtResult ActOnCXXCatchBlock (SourceLocation CatchLoc, Decl *ExDecl, Stmt *HandlerBlock)
 ActOnCXXCatchBlock - Takes an exception declaration and a handler block and creates a proper catch handler from them. More...
 
StmtResult ActOnCXXTryBlock (SourceLocation TryLoc, Stmt *TryBlock, ArrayRef< Stmt * > Handlers)
 ActOnCXXTryBlock - Takes a try compound-statement and a number of handlers and creates a try statement from them. More...
 
StmtResult ActOnSEHTryBlock (bool IsCXXTry, SourceLocation TryLoc, Stmt *TryBlock, Stmt *Handler)
 
StmtResult ActOnSEHExceptBlock (SourceLocation Loc, Expr *FilterExpr, Stmt *Block)
 
void ActOnStartSEHFinallyBlock ()
 
void ActOnAbortSEHFinallyBlock ()
 
StmtResult ActOnFinishSEHFinallyBlock (SourceLocation Loc, Stmt *Block)
 
StmtResult ActOnSEHLeaveStmt (SourceLocation Loc, Scope *CurScope)
 
void DiagnoseReturnInConstructorExceptionHandler (CXXTryStmt *TryBlock)
 
bool ShouldWarnIfUnusedFileScopedDecl (const DeclaratorDecl *D) const
 
void MarkUnusedFileScopedDecl (const DeclaratorDecl *D)
 If it's a file scoped decl that must warn if not used, keep track of it. More...
 
void DiagnoseUnusedExprResult (const Stmt *S)
 DiagnoseUnusedExprResult - If the statement passed in is an expression whose result is unused, warn. More...
 
void DiagnoseUnusedNestedTypedefs (const RecordDecl *D)
 
void DiagnoseUnusedDecl (const NamedDecl *ND)
 DiagnoseUnusedDecl - Emit warnings about declarations that are not used unless they are marked attr(unused). More...
 
void DiagnoseEmptyStmtBody (SourceLocation StmtLoc, const Stmt *Body, unsigned DiagID)
 Emit DiagID if statement located on StmtLoc has a suspicious null statement as a Body, and it is located on the same line. More...
 
void DiagnoseEmptyLoopBody (const Stmt *S, const Stmt *PossibleBody)
 Warn if a for/while loop statement S, which is followed by PossibleBody, has a suspicious null statement as a body. More...
 
void DiagnoseSelfMove (const Expr *LHSExpr, const Expr *RHSExpr, SourceLocation OpLoc)
 Warn if a value is moved to itself. More...
 
void diagnoseNullableToNonnullConversion (QualType DstType, QualType SrcType, SourceLocation Loc)
 Warn if we're implicitly casting from a _Nullable pointer type to a _Nonnull one. More...
 
ParsingDeclState PushParsingDeclaration (sema::DelayedDiagnosticPool &pool)
 
void PopParsingDeclaration (ParsingDeclState state, Decl *decl)
 
ParsingClassState PushParsingClass ()
 
void PopParsingClass (ParsingClassState state)
 
void redelayDiagnostics (sema::DelayedDiagnosticPool &pool)
 Given a set of delayed diagnostics, re-emit them as if they had been delayed in the current context instead of in the given pool. More...
 
void EmitAvailabilityWarning (AvailabilityDiagnostic AD, NamedDecl *D, StringRef Message, SourceLocation Loc, const ObjCInterfaceDecl *UnknownObjCClass, const ObjCPropertyDecl *ObjCProperty, bool ObjCPropertyAccess)
 
bool makeUnavailableInSystemHeader (SourceLocation loc, UnavailableAttr::ImplicitReason reason)
 makeUnavailableInSystemHeader - There is an error in the current context. More...
 
bool CanUseDecl (NamedDecl *D, bool TreatUnavailableAsInvalid)
 Determine whether the use of this declaration is valid, without emitting diagnostics. More...
 
bool DiagnoseUseOfDecl (NamedDecl *D, SourceLocation Loc, const ObjCInterfaceDecl *UnknownObjCClass=nullptr, bool ObjCPropertyAccess=false)
 Determine whether the use of this declaration is valid, and emit any corresponding diagnostics. More...
 
void NoteDeletedFunction (FunctionDecl *FD)
 Emit a note explaining that this function is deleted. More...
 
void NoteDeletedInheritingConstructor (CXXConstructorDecl *CD)
 
std::string getDeletedOrUnavailableSuffix (const FunctionDecl *FD)
 Retrieve the message suffix that should be added to a diagnostic complaining about the given function being deleted or unavailable. More...
 
bool DiagnosePropertyAccessorMismatch (ObjCPropertyDecl *PD, ObjCMethodDecl *Getter, SourceLocation Loc)
 
void DiagnoseSentinelCalls (NamedDecl *D, SourceLocation Loc, ArrayRef< Expr * > Args)
 DiagnoseSentinelCalls - This routine checks whether a call or message-send is to a declaration with the sentinel attribute, and if so, it checks that the requirements of the sentinel are satisfied. More...
 
void PushExpressionEvaluationContext (ExpressionEvaluationContext NewContext, Decl *LambdaContextDecl=nullptr, bool IsDecltype=false)
 
void PushExpressionEvaluationContext (ExpressionEvaluationContext NewContext, ReuseLambdaContextDecl_t, bool IsDecltype=false)
 
void PopExpressionEvaluationContext ()
 
void DiscardCleanupsInEvaluationContext ()
 
ExprResult TransformToPotentiallyEvaluated (Expr *E)
 
ExprResult HandleExprEvaluationContextForTypeof (Expr *E)
 
ExprResult ActOnConstantExpression (ExprResult Res)
 
void MarkAnyDeclReferenced (SourceLocation Loc, Decl *D, bool MightBeOdrUse)
 Perform marking for a reference to an arbitrary declaration. More...
 
void MarkFunctionReferenced (SourceLocation Loc, FunctionDecl *Func, bool MightBeOdrUse=true)
 Mark a function referenced, and check whether it is odr-used (C++ [basic.def.odr]p2, C99 6.9p3) More...
 
void MarkVariableReferenced (SourceLocation Loc, VarDecl *Var)
 Mark a variable referenced, and check whether it is odr-used (C++ [basic.def.odr]p2, C99 6.9p3). More...
 
void MarkDeclRefReferenced (DeclRefExpr *E)
 Perform reference-marking and odr-use handling for a DeclRefExpr. More...
 
void MarkMemberReferenced (MemberExpr *E)
 Perform reference-marking and odr-use handling for a MemberExpr. More...
 
void UpdateMarkingForLValueToRValue (Expr *E)
 
void CleanupVarDeclMarking ()
 
bool tryCaptureVariable (VarDecl *Var, SourceLocation Loc, TryCaptureKind Kind, SourceLocation EllipsisLoc, bool BuildAndDiagnose, QualType &CaptureType, QualType &DeclRefType, const unsigned *const FunctionScopeIndexToStopAt)
 Try to capture the given variable. More...
 
bool tryCaptureVariable (VarDecl *Var, SourceLocation Loc, TryCaptureKind Kind=TryCapture_Implicit, SourceLocation EllipsisLoc=SourceLocation())
 Try to capture the given variable. More...
 
bool NeedToCaptureVariable (VarDecl *Var, SourceLocation Loc)
 Checks if the variable must be captured. More...
 
QualType getCapturedDeclRefType (VarDecl *Var, SourceLocation Loc)
 Given a variable, determine the type that a reference to that variable will have in the given scope. More...
 
void MarkDeclarationsReferencedInType (SourceLocation Loc, QualType T)
 
void MarkDeclarationsReferencedInExpr (Expr *E, bool SkipLocalVariables=false)
 Mark any declarations that appear within this expression or any potentially-evaluated subexpressions as "referenced". More...
 
bool tryToRecoverWithCall (ExprResult &E, const PartialDiagnostic &PD, bool ForceComplain=false, bool(*IsPlausibleResult)(QualType)=nullptr)
 Try to recover by turning the given expression into a call. More...
 
bool tryExprAsCall (Expr &E, QualType &ZeroArgCallReturnTy, UnresolvedSetImpl &NonTemplateOverloads)
 Figure out if an expression could be turned into a call. More...
 
bool DiagRuntimeBehavior (SourceLocation Loc, const Stmt *Statement, const PartialDiagnostic &PD)
 Conditionally issue a diagnostic based on the current evaluation context. More...
 
SourceRange getExprRange (Expr *E) const
 
ExprResult ActOnIdExpression (Scope *S, CXXScopeSpec &SS, SourceLocation TemplateKWLoc, UnqualifiedId &Id, bool HasTrailingLParen, bool IsAddressOfOperand, std::unique_ptr< CorrectionCandidateCallback > CCC=nullptr, bool IsInlineAsmIdentifier=false, Token *KeywordReplacement=nullptr)
 
void DecomposeUnqualifiedId (const UnqualifiedId &Id, TemplateArgumentListInfo &Buffer, DeclarationNameInfo &NameInfo, const TemplateArgumentListInfo *&TemplateArgs)
 Decomposes the given name into a DeclarationNameInfo, its location, and possibly a list of template arguments. More...
 
bool DiagnoseEmptyLookup (Scope *S, CXXScopeSpec &SS, LookupResult &R, std::unique_ptr< CorrectionCandidateCallback > CCC, TemplateArgumentListInfo *ExplicitTemplateArgs=nullptr, ArrayRef< Expr * > Args=None, TypoExpr **Out=nullptr)
 Diagnose an empty lookup. More...
 
ExprResult LookupInObjCMethod (LookupResult &LookUp, Scope *S, IdentifierInfo *II, bool AllowBuiltinCreation=false)
 LookupInObjCMethod - The parser has read a name in, and Sema has detected that we're currently inside an ObjC method. More...
 
ExprResult ActOnDependentIdExpression (const CXXScopeSpec &SS, SourceLocation TemplateKWLoc, const DeclarationNameInfo &NameInfo, bool isAddressOfOperand, const TemplateArgumentListInfo *TemplateArgs)
 ActOnDependentIdExpression - Handle a dependent id-expression that was just parsed. More...
 
ExprResult BuildDeclRefExpr (ValueDecl *D, QualType Ty, ExprValueKind VK, SourceLocation Loc, const CXXScopeSpec *SS=nullptr)
 
ExprResult BuildDeclRefExpr (ValueDecl *D, QualType Ty, ExprValueKind VK, const DeclarationNameInfo &NameInfo, const CXXScopeSpec *SS=nullptr, NamedDecl *FoundD=nullptr, const TemplateArgumentListInfo *TemplateArgs=nullptr)
 BuildDeclRefExpr - Build an expression that references a declaration that does not require a closure capture. More...
 
ExprResult BuildAnonymousStructUnionMemberReference (const CXXScopeSpec &SS, SourceLocation nameLoc, IndirectFieldDecl *indirectField, DeclAccessPair FoundDecl=DeclAccessPair::make(nullptr, AS_none), Expr *baseObjectExpr=nullptr, SourceLocation opLoc=SourceLocation())
 
ExprResult BuildPossibleImplicitMemberExpr (const CXXScopeSpec &SS, SourceLocation TemplateKWLoc, LookupResult &R, const TemplateArgumentListInfo *TemplateArgs, const Scope *S)
 Builds an expression which might be an implicit member expression. More...
 
ExprResult BuildImplicitMemberExpr (const CXXScopeSpec &SS, SourceLocation TemplateKWLoc, LookupResult &R, const TemplateArgumentListInfo *TemplateArgs, bool IsDefiniteInstance, const Scope *S)
 Builds an implicit member access expression. More...
 
bool UseArgumentDependentLookup (const CXXScopeSpec &SS, const LookupResult &R, bool HasTrailingLParen)
 
ExprResult BuildQualifiedDeclarationNameExpr (CXXScopeSpec &SS, const DeclarationNameInfo &NameInfo, bool IsAddressOfOperand, const Scope *S, TypeSourceInfo **RecoveryTSI=nullptr)
 BuildQualifiedDeclarationNameExpr - Build a C++ qualified declaration name, generally during template instantiation. More...
 
ExprResult BuildDependentDeclRefExpr (const CXXScopeSpec &SS, SourceLocation TemplateKWLoc, const DeclarationNameInfo &NameInfo, const TemplateArgumentListInfo *TemplateArgs)
 
ExprResult BuildDeclarationNameExpr (const CXXScopeSpec &SS, LookupResult &R, bool NeedsADL, bool AcceptInvalidDecl=false)
 
ExprResult BuildDeclarationNameExpr (const CXXScopeSpec &SS, const DeclarationNameInfo &NameInfo, NamedDecl *D, NamedDecl *FoundD=nullptr, const TemplateArgumentListInfo *TemplateArgs=nullptr, bool AcceptInvalidDecl=false)
 Complete semantic analysis for a reference to the given declaration. More...
 
ExprResult BuildLiteralOperatorCall (LookupResult &R, DeclarationNameInfo &SuffixInfo, ArrayRef< Expr * > Args, SourceLocation LitEndLoc, TemplateArgumentListInfo *ExplicitTemplateArgs=nullptr)
 BuildLiteralOperatorCall - Build a UserDefinedLiteral by creating a call to a literal operator described by the provided lookup results. More...
 
ExprResult BuildPredefinedExpr (SourceLocation Loc, PredefinedExpr::IdentType IT)
 
ExprResult ActOnPredefinedExpr (SourceLocation Loc, tok::TokenKind Kind)
 
ExprResult ActOnIntegerConstant (SourceLocation Loc, uint64_t Val)
 
bool CheckLoopHintExpr (Expr *E, SourceLocation Loc)
 
ExprResult ActOnNumericConstant (const Token &Tok, Scope *UDLScope=nullptr)
 
ExprResult ActOnCharacterConstant (const Token &Tok, Scope *UDLScope=nullptr)
 
ExprResult ActOnParenExpr (SourceLocation L, SourceLocation R, Expr *E)
 
ExprResult ActOnParenListExpr (SourceLocation L, SourceLocation R, MultiExprArg Val)
 
ExprResult ActOnStringLiteral (ArrayRef< Token > StringToks, Scope *UDLScope=nullptr)
 ActOnStringLiteral - The specified tokens were lexed as pasted string fragments (e.g. More...
 
ExprResult ActOnGenericSelectionExpr (SourceLocation KeyLoc, SourceLocation DefaultLoc, SourceLocation RParenLoc, Expr *ControllingExpr, ArrayRef< ParsedType > ArgTypes, ArrayRef< Expr * > ArgExprs)
 
ExprResult CreateGenericSelectionExpr (SourceLocation KeyLoc, SourceLocation DefaultLoc, SourceLocation RParenLoc, Expr *ControllingExpr, ArrayRef< TypeSourceInfo * > Types, ArrayRef< Expr * > Exprs)
 
ExprResult CreateBuiltinUnaryOp (SourceLocation OpLoc, UnaryOperatorKind Opc, Expr *InputExpr)
 
ExprResult BuildUnaryOp (Scope *S, SourceLocation OpLoc, UnaryOperatorKind Opc, Expr *Input)
 
ExprResult ActOnUnaryOp (Scope *S, SourceLocation OpLoc, tok::TokenKind Op, Expr *Input)
 
QualType CheckAddressOfOperand (ExprResult &Operand, SourceLocation OpLoc)
 CheckAddressOfOperand - The operand of & must be either a function designator or an lvalue designating an object. More...
 
ExprResult CreateUnaryExprOrTypeTraitExpr (TypeSourceInfo *TInfo, SourceLocation OpLoc, UnaryExprOrTypeTrait ExprKind, SourceRange R)
 Build a sizeof or alignof expression given a type operand. More...
 
ExprResult CreateUnaryExprOrTypeTraitExpr (Expr *E, SourceLocation OpLoc, UnaryExprOrTypeTrait ExprKind)
 Build a sizeof or alignof expression given an expression operand. More...
 
ExprResult ActOnUnaryExprOrTypeTraitExpr (SourceLocation OpLoc, UnaryExprOrTypeTrait ExprKind, bool IsType, void *TyOrEx, SourceRange ArgRange)
 ActOnUnaryExprOrTypeTraitExpr - Handle sizeof(type) and sizeof expr and the same for alignof and __alignof Note that the ArgRange is invalid if isType is false. More...
 
ExprResult CheckPlaceholderExpr (Expr *E)
 Check for operands with placeholder types and complain if found. More...
 
bool CheckVecStepExpr (Expr *E)
 
bool CheckUnaryExprOrTypeTraitOperand (Expr *E, UnaryExprOrTypeTrait ExprKind)
 Check the constraints on expression operands to unary type expression and type traits. More...
 
bool CheckUnaryExprOrTypeTraitOperand (QualType ExprType, SourceLocation OpLoc, SourceRange ExprRange, UnaryExprOrTypeTrait ExprKind)
 Check the constraints on operands to unary expression and type traits. More...
 
ExprResult ActOnSizeofParameterPackExpr (Scope *S, SourceLocation OpLoc, IdentifierInfo &Name, SourceLocation NameLoc, SourceLocation RParenLoc)
 Called when an expression computing the size of a parameter pack is parsed. More...
 
ExprResult ActOnPostfixUnaryOp (Scope *S, SourceLocation OpLoc, tok::TokenKind Kind, Expr *Input)
 
ExprResult ActOnArraySubscriptExpr (Scope *S, Expr *Base, SourceLocation LLoc, Expr *Idx, SourceLocation RLoc)
 
ExprResult CreateBuiltinArraySubscriptExpr (Expr *Base, SourceLocation LLoc, Expr *Idx, SourceLocation RLoc)
 
ExprResult ActOnOMPArraySectionExpr (Expr *Base, SourceLocation LBLoc, Expr *LowerBound, SourceLocation ColonLoc, Expr *Length, SourceLocation RBLoc)
 
ExprResult BuildMemberReferenceExpr (Expr *Base, QualType BaseType, SourceLocation OpLoc, bool IsArrow, CXXScopeSpec &SS, SourceLocation TemplateKWLoc, NamedDecl *FirstQualifierInScope, const DeclarationNameInfo &NameInfo, const TemplateArgumentListInfo *TemplateArgs, const Scope *S, ActOnMemberAccessExtraArgs *ExtraArgs=nullptr)
 
ExprResult BuildMemberReferenceExpr (Expr *Base, QualType BaseType, SourceLocation OpLoc, bool IsArrow, const CXXScopeSpec &SS, SourceLocation TemplateKWLoc, NamedDecl *FirstQualifierInScope, LookupResult &R, const TemplateArgumentListInfo *TemplateArgs, const Scope *S, bool SuppressQualifierCheck=false, ActOnMemberAccessExtraArgs *ExtraArgs=nullptr)
 
ExprResult PerformMemberExprBaseConversion (Expr *Base, bool IsArrow)
 Perform conversions on the LHS of a member access expression. More...
 
bool CheckQualifiedMemberReference (Expr *BaseExpr, QualType BaseType, const CXXScopeSpec &SS, const LookupResult &R)
 
ExprResult ActOnDependentMemberExpr (Expr *Base, QualType BaseType, bool IsArrow, SourceLocation OpLoc, const CXXScopeSpec &SS, SourceLocation TemplateKWLoc, NamedDecl *FirstQualifierInScope, const DeclarationNameInfo &NameInfo, const TemplateArgumentListInfo *TemplateArgs)
 
ExprResult ActOnMemberAccessExpr (Scope *S, Expr *Base, SourceLocation OpLoc, tok::TokenKind OpKind, CXXScopeSpec &SS, SourceLocation TemplateKWLoc, UnqualifiedId &Member, Decl *ObjCImpDecl)
 The main callback when the parser finds something like expression . More...
 
void ActOnDefaultCtorInitializers (Decl *CDtorDecl)
 
bool ConvertArgumentsForCall (CallExpr *Call, Expr *Fn, FunctionDecl *FDecl, const FunctionProtoType *Proto, ArrayRef< Expr * > Args, SourceLocation RParenLoc, bool ExecConfig=false)
 ConvertArgumentsForCall - Converts the arguments specified in Args/NumArgs to the parameter types of the function FDecl with function prototype Proto. More...
 
void CheckStaticArrayArgument (SourceLocation CallLoc, ParmVarDecl *Param, const Expr *ArgExpr)
 CheckStaticArrayArgument - If the given argument corresponds to a static array parameter, check that it is non-null, and that if it is formed by array-to-pointer decay, the underlying array is sufficiently large. More...
 
ExprResult ActOnCallExpr (Scope *S, Expr *Fn, SourceLocation LParenLoc, MultiExprArg ArgExprs, SourceLocation RParenLoc, Expr *ExecConfig=nullptr, bool IsExecConfig=false)
 ActOnCallExpr - Handle a call to Fn with the specified array of arguments. More...
 
ExprResult BuildResolvedCallExpr (Expr *Fn, NamedDecl *NDecl, SourceLocation LParenLoc, ArrayRef< Expr * > Arg, SourceLocation RParenLoc, Expr *Config=nullptr, bool IsExecConfig=false)
 BuildResolvedCallExpr - Build a call to a resolved expression, i.e. More...
 
ExprResult ActOnCUDAExecConfigExpr (Scope *S, SourceLocation LLLLoc, MultiExprArg ExecConfig, SourceLocation GGGLoc)
 
ExprResult ActOnCastExpr (Scope *S, SourceLocation LParenLoc, Declarator &D, ParsedType &Ty, SourceLocation RParenLoc, Expr *CastExpr)
 
ExprResult BuildCStyleCastExpr (SourceLocation LParenLoc, TypeSourceInfo *Ty, SourceLocation RParenLoc, Expr *Op)
 
CastKind PrepareScalarCast (ExprResult &src, QualType destType)
 Prepares for a scalar cast, performing all the necessary stages except the final cast and returning the kind required. More...
 
ExprResult BuildVectorLiteral (SourceLocation LParenLoc, SourceLocation RParenLoc, Expr *E, TypeSourceInfo *TInfo)
 Build an altivec or OpenCL literal. More...
 
ExprResult MaybeConvertParenListExprToParenExpr (Scope *S, Expr *ME)
 This is not an AltiVec-style cast or or C++ direct-initialization, so turn the ParenListExpr into a sequence of comma binary operators. More...
 
ExprResult ActOnCompoundLiteral (SourceLocation LParenLoc, ParsedType Ty, SourceLocation RParenLoc, Expr *InitExpr)
 
ExprResult BuildCompoundLiteralExpr (SourceLocation LParenLoc, TypeSourceInfo *TInfo, SourceLocation RParenLoc, Expr *LiteralExpr)
 
ExprResult ActOnInitList (SourceLocation LBraceLoc, MultiExprArg InitArgList, SourceLocation RBraceLoc)
 
ExprResult ActOnDesignatedInitializer (Designation &Desig, SourceLocation Loc, bool GNUSyntax, ExprResult Init)
 
ExprResult ActOnBinOp (Scope *S, SourceLocation TokLoc, tok::TokenKind Kind, Expr *LHSExpr, Expr *RHSExpr)
 
ExprResult BuildBinOp (Scope *S, SourceLocation OpLoc, BinaryOperatorKind Opc, Expr *LHSExpr, Expr *RHSExpr)
 
ExprResult CreateBuiltinBinOp (SourceLocation OpLoc, BinaryOperatorKind Opc, Expr *LHSExpr, Expr *RHSExpr)
 CreateBuiltinBinOp - Creates a new built-in binary operation with operator Opc at location TokLoc. More...
 
void DiagnoseCommaOperator (const Expr *LHS, SourceLocation Loc)
 
ExprResult ActOnConditionalOp (SourceLocation QuestionLoc, SourceLocation ColonLoc, Expr *CondExpr, Expr *LHSExpr, Expr *RHSExpr)
 ActOnConditionalOp - Parse a ?: operation. More...
 
ExprResult ActOnAddrLabel (SourceLocation OpLoc, SourceLocation LabLoc, LabelDecl *TheDecl)
 ActOnAddrLabel - Parse the GNU address of label extension: "&&foo". More...
 
void ActOnStartStmtExpr ()
 
ExprResult ActOnStmtExpr (SourceLocation LPLoc, Stmt *SubStmt, SourceLocation RPLoc)
 
void ActOnStmtExprError ()
 
ExprResult BuildBuiltinOffsetOf (SourceLocation BuiltinLoc, TypeSourceInfo *TInfo, ArrayRef< OffsetOfComponent > Components, SourceLocation RParenLoc)
 __builtin_offsetof(type, a.b[123][456].c) More...
 
ExprResult ActOnBuiltinOffsetOf (Scope *S, SourceLocation BuiltinLoc, SourceLocation TypeLoc, ParsedType ParsedArgTy, ArrayRef< OffsetOfComponent > Components, SourceLocation RParenLoc)
 
ExprResult ActOnChooseExpr (SourceLocation BuiltinLoc, Expr *CondExpr, Expr *LHSExpr, Expr *RHSExpr, SourceLocation RPLoc)
 
ExprResult ActOnVAArg (SourceLocation BuiltinLoc, Expr *E, ParsedType Ty, SourceLocation RPLoc)
 
ExprResult BuildVAArgExpr (SourceLocation BuiltinLoc, Expr *E, TypeSourceInfo *TInfo, SourceLocation RPLoc)
 
ExprResult ActOnGNUNullExpr (SourceLocation TokenLoc)
 
bool CheckCaseExpression (Expr *E)
 
IfExistsResult CheckMicrosoftIfExistsSymbol (Scope *S, CXXScopeSpec &SS, const DeclarationNameInfo &TargetNameInfo)
 
IfExistsResult CheckMicrosoftIfExistsSymbol (Scope *S, SourceLocation KeywordLoc, bool IsIfExists, CXXScopeSpec &SS, UnqualifiedId &Name)
 
StmtResult BuildMSDependentExistsStmt (SourceLocation KeywordLoc, bool IsIfExists, NestedNameSpecifierLoc QualifierLoc, DeclarationNameInfo NameInfo, Stmt *Nested)
 
StmtResult ActOnMSDependentExistsStmt (SourceLocation KeywordLoc, bool IsIfExists, CXXScopeSpec &SS, UnqualifiedId &Name, Stmt *Nested)
 
void ActOnBlockStart (SourceLocation CaretLoc, Scope *CurScope)
 ActOnBlockStart - This callback is invoked when a block literal is started. More...
 
void ActOnBlockArguments (SourceLocation CaretLoc, Declarator &ParamInfo, Scope *CurScope)
 ActOnBlockArguments - This callback allows processing of block arguments. More...
 
void ActOnBlockError (SourceLocation CaretLoc, Scope *CurScope)
 ActOnBlockError - If there is an error parsing a block, this callback is invoked to pop the information about the block from the action impl. More...
 
ExprResult ActOnBlockStmtExpr (SourceLocation CaretLoc, Stmt *Body, Scope *CurScope)
 ActOnBlockStmtExpr - This is called when the body of a block statement literal was successfully completed. More...
 
ExprResult ActOnConvertVectorExpr (Expr *E, ParsedType ParsedDestTy, SourceLocation BuiltinLoc, SourceLocation RParenLoc)
 __builtin_convertvector(...) More...
 
ExprResult ActOnAsTypeExpr (Expr *E, ParsedType ParsedDestTy, SourceLocation BuiltinLoc, SourceLocation RParenLoc)
 __builtin_astype(...) More...
 
DeclActOnStartNamespaceDef (Scope *S, SourceLocation InlineLoc, SourceLocation NamespaceLoc, SourceLocation IdentLoc, IdentifierInfo *Ident, SourceLocation LBrace, AttributeList *AttrList, UsingDirectiveDecl *&UsingDecl)
 ActOnStartNamespaceDef - This is called at the start of a namespace definition. More...
 
void ActOnFinishNamespaceDef (Decl *Dcl, SourceLocation RBrace)
 ActOnFinishNamespaceDef - This callback is called after a namespace is exited. More...
 
NamespaceDeclgetStdNamespace () const
 
NamespaceDeclgetOrCreateStdNamespace ()
 Retrieve the special "std" namespace, which may require us to implicitly define the namespace. More...
 
CXXRecordDeclgetStdBadAlloc () const
 
bool isStdInitializerList (QualType Ty, QualType *Element)
 Tests whether Ty is an instance of std::initializer_list and, if it is and Element is not NULL, assigns the element type to Element. More...
 
QualType BuildStdInitializerList (QualType Element, SourceLocation Loc)
 Looks for the std::initializer_list template and instantiates it with Element, or emits an error if it's not found. More...
 
bool isInitListConstructor (const CXXConstructorDecl *Ctor)
 Determine whether Ctor is an initializer-list constructor, as defined in [dcl.init.list]p2. More...
 
DeclActOnUsingDirective (Scope *CurScope, SourceLocation UsingLoc, SourceLocation NamespcLoc, CXXScopeSpec &SS, SourceLocation IdentLoc, IdentifierInfo *NamespcName, AttributeList *AttrList)
 
void PushUsingDirective (Scope *S, UsingDirectiveDecl *UDir)
 
DeclActOnNamespaceAliasDef (Scope *CurScope, SourceLocation NamespaceLoc, SourceLocation AliasLoc, IdentifierInfo *Alias, CXXScopeSpec &SS, SourceLocation IdentLoc, IdentifierInfo *Ident)
 
void HideUsingShadowDecl (Scope *S, UsingShadowDecl *Shadow)
 Hides a using shadow declaration. More...
 
bool CheckUsingShadowDecl (UsingDecl *UD, NamedDecl *Target, const LookupResult &PreviousDecls, UsingShadowDecl *&PrevShadow)
 Determines whether to create a using shadow decl for a particular decl, given the set of decls existing prior to this using lookup. More...
 
UsingShadowDeclBuildUsingShadowDecl (Scope *S, UsingDecl *UD, NamedDecl *Target, UsingShadowDecl *PrevDecl)
 Builds a shadow declaration corresponding to a 'using' declaration. More...
 
bool CheckUsingDeclRedeclaration (SourceLocation UsingLoc, bool HasTypenameKeyword, const CXXScopeSpec &SS, SourceLocation NameLoc, const LookupResult &Previous)
 Checks that the given using declaration is not an invalid redeclaration. More...
 
bool CheckUsingDeclQualifier (SourceLocation UsingLoc, const CXXScopeSpec &SS, const DeclarationNameInfo &NameInfo, SourceLocation NameLoc)
 Checks that the given nested-name qualifier used in a using decl in the current context is appropriately related to the current scope. More...
 
NamedDeclBuildUsingDeclaration (Scope *S, AccessSpecifier AS, SourceLocation UsingLoc, CXXScopeSpec &SS, DeclarationNameInfo NameInfo, AttributeList *AttrList, bool IsInstantiation, bool HasTypenameKeyword, SourceLocation TypenameLoc)
 Builds a using declaration. More...
 
bool CheckInheritingConstructorUsingDecl (UsingDecl *UD)
 Additional checks for a using declaration referring to a constructor name. More...
 
CXXConstructorDeclfindInheritingConstructor (SourceLocation Loc, CXXConstructorDecl *BaseCtor, ConstructorUsingShadowDecl *DerivedShadow)
 Given a derived-class using shadow declaration for a constructor and the correspnding base class constructor, find or create the implicit synthesized derived class constructor to use for this initialization. More...
 
DeclActOnUsingDeclaration (Scope *CurScope, AccessSpecifier AS, bool HasUsingKeyword, SourceLocation UsingLoc, CXXScopeSpec &SS, UnqualifiedId &Name, AttributeList *AttrList, bool HasTypenameKeyword, SourceLocation TypenameLoc)
 
DeclActOnAliasDeclaration (Scope *CurScope, AccessSpecifier AS, MultiTemplateParamsArg TemplateParams, SourceLocation UsingLoc, UnqualifiedId &Name, AttributeList *AttrList, TypeResult Type, Decl *DeclFromDeclSpec)
 
ExprResult BuildCXXConstructExpr (SourceLocation ConstructLoc, QualType DeclInitType, NamedDecl *FoundDecl, CXXConstructorDecl *Constructor, MultiExprArg Exprs, bool HadMultipleCandidates, bool IsListInitialization, bool IsStdInitListInitialization, bool RequiresZeroInit, unsigned ConstructKind, SourceRange ParenRange)
 BuildCXXConstructExpr - Creates a complete call to a constructor, including handling of its default argument expressions. More...
 
ExprResult BuildCXXConstructExpr (SourceLocation ConstructLoc, QualType DeclInitType, CXXConstructorDecl *Constructor, bool Elidable, MultiExprArg Exprs, bool HadMultipleCandidates, bool IsListInitialization, bool IsStdInitListInitialization, bool RequiresZeroInit, unsigned ConstructKind, SourceRange ParenRange)
 Build a CXXConstructExpr whose constructor has already been resolved if it denotes an inherited constructor. More...
 
ExprResult BuildCXXConstructExpr (SourceLocation ConstructLoc, QualType DeclInitType, NamedDecl *FoundDecl, CXXConstructorDecl *Constructor, bool Elidable, MultiExprArg Exprs, bool HadMultipleCandidates, bool IsListInitialization, bool IsStdInitListInitialization, bool RequiresZeroInit, unsigned ConstructKind, SourceRange ParenRange)
 
ExprResult BuildCXXDefaultInitExpr (SourceLocation Loc, FieldDecl *Field)
 
ExprResult BuildCXXDefaultArgExpr (SourceLocation CallLoc, FunctionDecl *FD, ParmVarDecl *Param)
 BuildCXXDefaultArgExpr - Creates a CXXDefaultArgExpr, instantiating the default expr if needed. More...
 
void FinalizeVarWithDestructor (VarDecl *VD, const RecordType *DeclInitType)
 FinalizeVarWithDestructor - Prepare for calling destructor on the constructed variable. More...
 
ImplicitExceptionSpecification ComputeDefaultedDefaultCtorExceptionSpec (SourceLocation Loc, CXXMethodDecl *MD)
 Determine what sort of exception specification a defaulted copy constructor of a class will have. More...
 
ImplicitExceptionSpecification ComputeDefaultedCopyCtorExceptionSpec (CXXMethodDecl *MD)
 Determine what sort of exception specification a defaulted default constructor of a class will have, and whether the parameter will be const. More...
 
ImplicitExceptionSpecification ComputeDefaultedCopyAssignmentExceptionSpec (CXXMethodDecl *MD)
 Determine what sort of exception specification a defautled copy assignment operator of a class will have, and whether the parameter will be const. More...
 
ImplicitExceptionSpecification ComputeDefaultedMoveCtorExceptionSpec (CXXMethodDecl *MD)
 Determine what sort of exception specification a defaulted move constructor of a class will have. More...
 
ImplicitExceptionSpecification ComputeDefaultedMoveAssignmentExceptionSpec (CXXMethodDecl *MD)
 Determine what sort of exception specification a defaulted move assignment operator of a class will have. More...
 
ImplicitExceptionSpecification ComputeDefaultedDtorExceptionSpec (CXXMethodDecl *MD)
 Determine what sort of exception specification a defaulted destructor of a class will have. More...
 
ImplicitExceptionSpecification ComputeInheritingCtorExceptionSpec (SourceLocation Loc, CXXConstructorDecl *CD)
 Determine what sort of exception specification an inheriting constructor of a class will have. More...
 
void EvaluateImplicitExceptionSpec (SourceLocation Loc, CXXMethodDecl *MD)
 Evaluate the implicit exception specification for a defaulted special member function. More...
 
void checkExceptionSpecification (bool IsTopLevel, ExceptionSpecificationType EST, ArrayRef< ParsedType > DynamicExceptions, ArrayRef< SourceRange > DynamicExceptionRanges, Expr *NoexceptExpr, SmallVectorImpl< QualType > &Exceptions, FunctionProtoType::ExceptionSpecInfo &ESI)
 Check the given exception-specification and update the exception specification information with the results. More...
 
bool isLibstdcxxEagerExceptionSpecHack (const Declarator &D)
 Determine if we're in a case where we need to (incorrectly) eagerly parse an exception specification to work around a libstdc++ bug. More...
 
void actOnDelayedExceptionSpecification (Decl *Method, ExceptionSpecificationType EST, SourceRange SpecificationRange, ArrayRef< ParsedType > DynamicExceptions, ArrayRef< SourceRange > DynamicExceptionRanges, Expr *NoexceptExpr)
 Add an exception-specification to the given member function (or member function template). More...
 
bool ShouldDeleteSpecialMember (CXXMethodDecl *MD, CXXSpecialMember CSM, InheritedConstructorInfo *ICI=nullptr, bool Diagnose=false)
 Determine if a special member function should have a deleted definition when it is defaulted. More...
 
CXXConstructorDeclDeclareImplicitDefaultConstructor (CXXRecordDecl *ClassDecl)
 Declare the implicit default constructor for the given class. More...
 
void DefineImplicitDefaultConstructor (SourceLocation CurrentLocation, CXXConstructorDecl *Constructor)
 DefineImplicitDefaultConstructor - Checks for feasibility of defining this constructor as the default constructor. More...
 
CXXDestructorDeclDeclareImplicitDestructor (CXXRecordDecl *ClassDecl)
 Declare the implicit destructor for the given class. More...
 
void DefineImplicitDestructor (SourceLocation CurrentLocation, CXXDestructorDecl *Destructor)
 DefineImplicitDestructor - Checks for feasibility of defining this destructor as the default destructor. More...
 
void AdjustDestructorExceptionSpec (CXXRecordDecl *ClassDecl, CXXDestructorDecl *Destructor)
 Build an exception spec for destructors that don't have one. More...
 
void DefineInheritingConstructor (SourceLocation UseLoc, CXXConstructorDecl *Constructor)
 Define the specified inheriting constructor. More...
 
CXXConstructorDeclDeclareImplicitCopyConstructor (CXXRecordDecl *ClassDecl)
 Declare the implicit copy constructor for the given class. More...
 
void DefineImplicitCopyConstructor (SourceLocation CurrentLocation, CXXConstructorDecl *Constructor)
 DefineImplicitCopyConstructor - Checks for feasibility of defining this constructor as the copy constructor. More...
 
CXXConstructorDeclDeclareImplicitMoveConstructor (CXXRecordDecl *ClassDecl)
 Declare the implicit move constructor for the given class. More...
 
void DefineImplicitMoveConstructor (SourceLocation CurrentLocation, CXXConstructorDecl *Constructor)
 DefineImplicitMoveConstructor - Checks for feasibility of defining this constructor as the move constructor. More...
 
CXXMethodDeclDeclareImplicitCopyAssignment (CXXRecordDecl *ClassDecl)
 Declare the implicit copy assignment operator for the given class. More...
 
void DefineImplicitCopyAssignment (SourceLocation CurrentLocation, CXXMethodDecl *MethodDecl)
 Defines an implicitly-declared copy assignment operator. More...
 
CXXMethodDeclDeclareImplicitMoveAssignment (CXXRecordDecl *ClassDecl)
 Declare the implicit move assignment operator for the given class. More...
 
void DefineImplicitMoveAssignment (SourceLocation CurrentLocation, CXXMethodDecl *MethodDecl)
 Defines an implicitly-declared move assignment operator. More...
 
void ForceDeclarationOfImplicitMembers (CXXRecordDecl *Class)
 Force the declaration of any implicitly-declared members of this class. More...
 
void CheckImplicitSpecialMemberDeclaration (Scope *S, FunctionDecl *FD)
 Check a completed declaration of an implicit special member. More...
 
bool isImplicitlyDeleted (FunctionDecl *FD)
 Determine whether the given function is an implicitly-deleted special member function. More...
 
bool checkThisInStaticMemberFunctionType (CXXMethodDecl *Method)
 Check whether 'this' shows up in the type of a static member function after the (naturally empty) cv-qualifier-seq would be. More...
 
bool checkThisInStaticMemberFunctionExceptionSpec (CXXMethodDecl *Method)
 Whether this' shows up in the exception specification of a static member function. More...
 
bool checkThisInStaticMemberFunctionAttributes (CXXMethodDecl *Method)
 Check whether 'this' shows up in the attributes of the given static member function. More...
 
ExprResult MaybeBindToTemporary (Expr *E)
 MaybeBindToTemporary - If the passed in expression has a record type with a non-trivial destructor, this will return CXXBindTemporaryExpr. More...
 
bool CompleteConstructorCall (CXXConstructorDecl *Constructor, MultiExprArg ArgsPtr, SourceLocation Loc, SmallVectorImpl< Expr * > &ConvertedArgs, bool AllowExplicit=false, bool IsListInitialization=false)
 Given a constructor and the set of arguments provided for the constructor, convert the arguments and add any required default arguments to form a proper call to this constructor. More...
 
ParsedType getInheritingConstructorName (CXXScopeSpec &SS, SourceLocation NameLoc, IdentifierInfo &Name)
 Handle the result of the special case name lookup for inheriting constructor declarations. More...
 
ParsedType getDestructorName (SourceLocation TildeLoc, IdentifierInfo &II, SourceLocation NameLoc, Scope *S, CXXScopeSpec &SS, ParsedType ObjectType, bool EnteringContext)
 
ParsedType getDestructorType (const DeclSpec &DS, ParsedType ObjectType)
 
void CheckCompatibleReinterpretCast (QualType SrcType, QualType DestType, bool IsDereference, SourceRange Range)
 
ExprResult ActOnCXXNamedCast (SourceLocation OpLoc, tok::TokenKind Kind, SourceLocation LAngleBracketLoc, Declarator &D, SourceLocation RAngleBracketLoc, SourceLocation LParenLoc, Expr *E, SourceLocation RParenLoc)
 ActOnCXXNamedCast - Parse {dynamic,static,reinterpret,const}_cast's. More...
 
ExprResult BuildCXXNamedCast (SourceLocation OpLoc, tok::TokenKind Kind, TypeSourceInfo *Ty, Expr *E, SourceRange AngleBrackets, SourceRange Parens)
 
ExprResult BuildCXXTypeId (QualType TypeInfoType, SourceLocation TypeidLoc, TypeSourceInfo *Operand, SourceLocation RParenLoc)
 Build a C++ typeid expression with a type operand. More...
 
ExprResult BuildCXXTypeId (QualType TypeInfoType, SourceLocation TypeidLoc, Expr *Operand, SourceLocation RParenLoc)
 Build a C++ typeid expression with an expression operand. More...
 
ExprResult ActOnCXXTypeid (SourceLocation OpLoc, SourceLocation LParenLoc, bool isType, void *TyOrExpr, SourceLocation RParenLoc)
 ActOnCXXTypeid - Parse typeid( something ). More...
 
ExprResult BuildCXXUuidof (QualType TypeInfoType, SourceLocation TypeidLoc, TypeSourceInfo *Operand, SourceLocation RParenLoc)
 Build a Microsoft __uuidof expression with a type operand. More...
 
ExprResult BuildCXXUuidof (QualType TypeInfoType, SourceLocation TypeidLoc, Expr *Operand, SourceLocation RParenLoc)
 Build a Microsoft __uuidof expression with an expression operand. More...
 
ExprResult ActOnCXXUuidof (SourceLocation OpLoc, SourceLocation LParenLoc, bool isType, void *TyOrExpr, SourceLocation RParenLoc)
 ActOnCXXUuidof - Parse __uuidof( something ). More...
 
ExprResult ActOnCXXFoldExpr (SourceLocation LParenLoc, Expr *LHS, tok::TokenKind Operator, SourceLocation EllipsisLoc, Expr *RHS, SourceLocation RParenLoc)
 Handle a C++1z fold-expression: ( expr op ... op expr ). More...
 
ExprResult BuildCXXFoldExpr (SourceLocation LParenLoc, Expr *LHS, BinaryOperatorKind Operator, SourceLocation EllipsisLoc, Expr *RHS, SourceLocation RParenLoc)
 
ExprResult BuildEmptyCXXFoldExpr (SourceLocation EllipsisLoc, BinaryOperatorKind Operator)
 
ExprResult ActOnCXXThis (SourceLocation loc)
 
QualType getCurrentThisType ()
 Try to retrieve the type of the 'this' pointer. More...
 
bool CheckCXXThisCapture (SourceLocation Loc, bool Explicit=false, bool BuildAndDiagnose=true, const unsigned *const FunctionScopeIndexToStopAt=nullptr, bool ByCopy=false)
 Make sure the value of 'this' is actually available in the current context, if it is a potentially evaluated context. More...
 
bool isThisOutsideMemberFunctionBody (QualType BaseType)
 Determine whether the given type is the type of *this that is used outside of the body of a member function for a type that is currently being defined. More...
 
ExprResult ActOnCXXBoolLiteral (SourceLocation OpLoc, tok::TokenKind Kind)
 ActOnCXXBoolLiteral - Parse {true,false} literals. More...
 
ExprResult ActOnObjCBoolLiteral (SourceLocation OpLoc, tok::TokenKind Kind)
 ActOnObjCBoolLiteral - Parse {__objc_yes,__objc_no} literals. More...
 
ExprResult ActOnCXXNullPtrLiteral (SourceLocation Loc)
 ActOnCXXNullPtrLiteral - Parse 'nullptr'. More...
 
ExprResult ActOnCXXThrow (Scope *S, SourceLocation OpLoc, Expr *expr)
 ActOnCXXThrow - Parse throw expressions. More...
 
ExprResult BuildCXXThrow (SourceLocation OpLoc, Expr *Ex, bool IsThrownVarInScope)
 
bool CheckCXXThrowOperand (SourceLocation ThrowLoc, QualType ThrowTy, Expr *E)
 CheckCXXThrowOperand - Validate the operand of a throw. More...
 
ExprResult ActOnCXXTypeConstructExpr (ParsedType TypeRep, SourceLocation LParenLoc, MultiExprArg Exprs, SourceLocation RParenLoc)
 ActOnCXXTypeConstructExpr - Parse construction of a specified type. More...
 
ExprResult BuildCXXTypeConstructExpr (TypeSourceInfo *Type, SourceLocation LParenLoc, MultiExprArg Exprs, SourceLocation RParenLoc)
 ActOnCXXTypeConstructExpr - Parse construction of a specified type. More...
 
ExprResult ActOnCXXNew (SourceLocation StartLoc, bool UseGlobal, SourceLocation PlacementLParen, MultiExprArg PlacementArgs, SourceLocation PlacementRParen, SourceRange TypeIdParens, Declarator &D, Expr *Initializer)
 ActOnCXXNew - Parsed a C++ 'new' expression. More...
 
ExprResult BuildCXXNew (SourceRange Range, bool UseGlobal, SourceLocation PlacementLParen, MultiExprArg PlacementArgs, SourceLocation PlacementRParen, SourceRange TypeIdParens, QualType AllocType, TypeSourceInfo *AllocTypeInfo, Expr *ArraySize, SourceRange DirectInitRange, Expr *Initializer, bool TypeMayContainAuto=true)
 
bool CheckAllocatedType (QualType AllocType, SourceLocation Loc, SourceRange R)
 Checks that a type is suitable as the allocated type in a new-expression. More...
 
bool FindAllocationFunctions (SourceLocation StartLoc, SourceRange Range, bool UseGlobal, QualType AllocType, bool IsArray, MultiExprArg PlaceArgs, FunctionDecl *&OperatorNew, FunctionDecl *&OperatorDelete)
 FindAllocationFunctions - Finds the overloads of operator new and delete that are appropriate for the allocation. More...
 
bool FindAllocationOverload (SourceLocation StartLoc, SourceRange Range, DeclarationName Name, MultiExprArg Args, DeclContext *Ctx, bool AllowMissing, FunctionDecl *&Operator, bool Diagnose=true)
 Find an fitting overload for the allocation function in the specified scope. More...
 
void DeclareGlobalNewDelete ()
 DeclareGlobalNewDelete - Declare the global forms of operator new and delete. More...
 
void DeclareGlobalAllocationFunction (DeclarationName Name, QualType Return, QualType Param1, QualType Param2=QualType())
 DeclareGlobalAllocationFunction - Declares a single implicit global allocation function if it doesn't already exist. More...
 
bool FindDeallocationFunction (SourceLocation StartLoc, CXXRecordDecl *RD, DeclarationName Name, FunctionDecl *&Operator, bool Diagnose=true)
 
FunctionDeclFindUsualDeallocationFunction (SourceLocation StartLoc, bool CanProvideSize, DeclarationName Name)
 
ExprResult ActOnCXXDelete (SourceLocation StartLoc, bool UseGlobal, bool ArrayForm, Expr *Operand)
 ActOnCXXDelete - Parsed a C++ 'delete' expression. More...
 
void CheckVirtualDtorCall (CXXDestructorDecl *dtor, SourceLocation Loc, bool IsDelete, bool CallCanBeVirtual, bool WarnOnNonAbstractTypes, SourceLocation DtorLoc)
 
ExprResult ActOnNoexceptExpr (SourceLocation KeyLoc, SourceLocation LParen, Expr *Operand, SourceLocation RParen)
 
ExprResult BuildCXXNoexceptExpr (SourceLocation KeyLoc, Expr *Operand, SourceLocation RParen)
 
ExprResult ActOnTypeTrait (TypeTrait Kind, SourceLocation KWLoc, ArrayRef< ParsedType > Args, SourceLocation RParenLoc)
 Parsed one of the type trait support pseudo-functions. More...
 
ExprResult BuildTypeTrait (TypeTrait Kind, SourceLocation KWLoc, ArrayRef< TypeSourceInfo * > Args, SourceLocation RParenLoc)
 
ExprResult ActOnArrayTypeTrait (ArrayTypeTrait ATT, SourceLocation KWLoc, ParsedType LhsTy, Expr *DimExpr, SourceLocation RParen)
 ActOnArrayTypeTrait - Parsed one of the bianry type trait support pseudo-functions. More...
 
ExprResult BuildArrayTypeTrait (ArrayTypeTrait ATT, SourceLocation KWLoc, TypeSourceInfo *TSInfo, Expr *DimExpr, SourceLocation RParen)
 
ExprResult ActOnExpressionTrait (ExpressionTrait OET, SourceLocation KWLoc, Expr *Queried, SourceLocation RParen)
 ActOnExpressionTrait - Parsed one of the unary type trait support pseudo-functions. More...
 
ExprResult BuildExpressionTrait (ExpressionTrait OET, SourceLocation KWLoc, Expr *Queried, SourceLocation RParen)
 
ExprResult ActOnStartCXXMemberReference (Scope *S, Expr *Base, SourceLocation OpLoc, tok::TokenKind OpKind, ParsedType &ObjectType, bool &MayBePseudoDestructor)
 
ExprResult BuildPseudoDestructorExpr (Expr *Base, SourceLocation OpLoc, tok::TokenKind OpKind, const CXXScopeSpec &SS, TypeSourceInfo *ScopeType, SourceLocation CCLoc, SourceLocation TildeLoc, PseudoDestructorTypeStorage DestroyedType)
 
ExprResult ActOnPseudoDestructorExpr (Scope *S, Expr *Base, SourceLocation OpLoc, tok::TokenKind OpKind, CXXScopeSpec &SS, UnqualifiedId &FirstTypeName, SourceLocation CCLoc, SourceLocation TildeLoc, UnqualifiedId &SecondTypeName)
 
ExprResult ActOnPseudoDestructorExpr (Scope *S, Expr *Base, SourceLocation OpLoc, tok::TokenKind OpKind, SourceLocation TildeLoc, const DeclSpec &DS)
 
ExprMaybeCreateExprWithCleanups (Expr *SubExpr)
 MaybeCreateExprWithCleanups - If the current full-expression requires any cleanups, surround it with a ExprWithCleanups node. More...
 
StmtMaybeCreateStmtWithCleanups (Stmt *SubStmt)
 
ExprResult MaybeCreateExprWithCleanups (ExprResult SubExpr)
 
MaterializeTemporaryExprCreateMaterializeTemporaryExpr (QualType T, Expr *Temporary, bool BoundToLvalueReference)
 
ExprResult ActOnFinishFullExpr (Expr *Expr)
 
ExprResult ActOnFinishFullExpr (Expr *Expr, SourceLocation CC, bool DiscardedValue=false, bool IsConstexpr=false, bool IsLambdaInitCaptureInitializer=false)
 
StmtResult ActOnFinishFullStmt (Stmt *Stmt)
 
bool RequireCompleteDeclContext (CXXScopeSpec &SS, DeclContext *DC)
 Require that the context specified by SS be complete. More...
 
DeclContextcomputeDeclContext (QualType T)
 Compute the DeclContext that is associated with the given type. More...
 
DeclContextcomputeDeclContext (const CXXScopeSpec &SS, bool EnteringContext=false)
 Compute the DeclContext that is associated with the given scope specifier. More...
 
bool isDependentScopeSpecifier (const CXXScopeSpec &SS)
 
CXXRecordDeclgetCurrentInstantiationOf (NestedNameSpecifier *NNS)
 If the given nested name specifier refers to the current instantiation, return the declaration that corresponds to that current instantiation (C++0x [temp.dep.type]p1). More...
 
bool ActOnCXXGlobalScopeSpecifier (SourceLocation CCLoc, CXXScopeSpec &SS)
 The parser has parsed a global nested-name-specifier '::'. More...
 
bool ActOnSuperScopeSpecifier (SourceLocation SuperLoc, SourceLocation ColonColonLoc, CXXScopeSpec &SS)
 The parser has parsed a '__super' nested-name-specifier. More...
 
bool isAcceptableNestedNameSpecifier (const NamedDecl *SD, bool *CanCorrect=nullptr)
 Determines whether the given declaration is an valid acceptable result for name lookup of a nested-name-specifier. More...
 
NamedDeclFindFirstQualifierInScope (Scope *S, NestedNameSpecifier *NNS)
 If the given nested-name-specifier begins with a bare identifier (e.g., Base::), perform name lookup for that identifier as a nested-name-specifier within the given scope, and return the result of that name lookup. More...
 
bool isNonTypeNestedNameSpecifier (Scope *S, CXXScopeSpec &SS, SourceLocation IdLoc, IdentifierInfo &II, ParsedType ObjectType)
 
bool BuildCXXNestedNameSpecifier (Scope *S, IdentifierInfo &Identifier, SourceLocation IdentifierLoc, SourceLocation CCLoc, QualType ObjectType, bool EnteringContext, CXXScopeSpec &SS, NamedDecl *ScopeLookupResult, bool ErrorRecoveryLookup, bool *IsCorrectedToColon=nullptr)
 Build a new nested-name-specifier for "identifier::", as described by ActOnCXXNestedNameSpecifier. More...
 
bool ActOnCXXNestedNameSpecifier (Scope *S, IdentifierInfo &Identifier, SourceLocation IdentifierLoc, SourceLocation CCLoc, ParsedType ObjectType, bool EnteringContext, CXXScopeSpec &SS, bool ErrorRecoveryLookup=false, bool *IsCorrectedToColon=nullptr)
 The parser has parsed a nested-name-specifier 'identifier::'. More...
 
ExprResult ActOnDecltypeExpression (Expr *E)
 Process the expression contained within a decltype. More...
 
bool ActOnCXXNestedNameSpecifierDecltype (CXXScopeSpec &SS, const DeclSpec &DS, SourceLocation ColonColonLoc)
 
bool IsInvalidUnlessNestedName (Scope *S, CXXScopeSpec &SS, IdentifierInfo &Identifier, SourceLocation IdentifierLoc, SourceLocation ColonLoc, ParsedType ObjectType, bool EnteringContext)
 IsInvalidUnlessNestedName - This method is used for error recovery purposes to determine whether the specified identifier is only valid as a nested name specifier, for example a namespace name. More...
 
bool ActOnCXXNestedNameSpecifier (Scope *S, CXXScopeSpec &SS, SourceLocation TemplateKWLoc, TemplateTy TemplateName, SourceLocation TemplateNameLoc, SourceLocation LAngleLoc, ASTTemplateArgsPtr TemplateArgs, SourceLocation RAngleLoc, SourceLocation CCLoc, bool EnteringContext)
 The parser has parsed a nested-name-specifier 'template[opt] template-name < template-args >::'. More...
 
void * SaveNestedNameSpecifierAnnotation (CXXScopeSpec &SS)
 Given a C++ nested-name-specifier, produce an annotation value that the parser can use later to reconstruct the given nested-name-specifier. More...
 
void RestoreNestedNameSpecifierAnnotation (void *Annotation, SourceRange AnnotationRange, CXXScopeSpec &SS)
 Given an annotation pointer for a nested-name-specifier, restore the nested-name-specifier structure. More...
 
bool ShouldEnterDeclaratorScope (Scope *S, const CXXScopeSpec &SS)
 
bool ActOnCXXEnterDeclaratorScope (Scope *S, CXXScopeSpec &SS)
 ActOnCXXEnterDeclaratorScope - Called when a C++ scope specifier (global scope or nested-name-specifier) is parsed, part of a declarator-id. More...
 
void ActOnCXXExitDeclaratorScope (Scope *S, const CXXScopeSpec &SS)
 ActOnCXXExitDeclaratorScope - Called when a declarator that previously invoked ActOnCXXEnterDeclaratorScope(), is finished. More...
 
void ActOnCXXEnterDeclInitializer (Scope *S, Decl *Dcl)
 ActOnCXXEnterDeclInitializer - Invoked when we are about to parse an initializer for the declaration 'Dcl'. More...
 
void ActOnCXXExitDeclInitializer (Scope *S, Decl *Dcl)
 ActOnCXXExitDeclInitializer - Invoked after we are finished parsing an initializer for the declaration 'Dcl'. More...
 
CXXRecordDeclcreateLambdaClosureType (SourceRange IntroducerRange, TypeSourceInfo *Info, bool KnownDependent, LambdaCaptureDefault CaptureDefault)
 Create a new lambda closure type. More...
 
CXXMethodDeclstartLambdaDefinition (CXXRecordDecl *Class, SourceRange IntroducerRange, TypeSourceInfo *MethodType, SourceLocation EndLoc, ArrayRef< ParmVarDecl * > Params, bool IsConstexprSpecified)
 Start the definition of a lambda expression. More...
 
void buildLambdaScope (sema::LambdaScopeInfo *LSI, CXXMethodDecl *CallOperator, SourceRange IntroducerRange, LambdaCaptureDefault CaptureDefault, SourceLocation CaptureDefaultLoc, bool ExplicitParams, bool ExplicitResultType, bool Mutable)
 Endow the lambda scope info with the relevant properties. More...
 
ParsedType actOnLambdaInitCaptureInitialization (SourceLocation Loc, bool ByRef, IdentifierInfo *Id, LambdaCaptureInitKind InitKind, Expr *&Init)
 Perform initialization analysis of the init-capture and perform any implicit conversions such as an lvalue-to-rvalue conversion if not being used to initialize a reference. More...
 
QualType buildLambdaInitCaptureInitialization (SourceLocation Loc, bool ByRef, IdentifierInfo *Id, bool DirectInit, Expr *&Init)
 
VarDeclcreateLambdaInitCaptureVarDecl (SourceLocation Loc, QualType InitCaptureType, IdentifierInfo *Id, unsigned InitStyle, Expr *Init)
 Create a dummy variable within the declcontext of the lambda's call operator, for name lookup purposes for a lambda init capture. More...
 
FieldDeclbuildInitCaptureField (sema::LambdaScopeInfo *LSI, VarDecl *Var)
 Build the implicit field for an init-capture. More...
 
void finishLambdaExplicitCaptures (sema::LambdaScopeInfo *LSI)
 Note that we have finished the explicit captures for the given lambda. More...
 
void addLambdaParameters (CXXMethodDecl *CallOperator, Scope *CurScope)
 Introduce the lambda parameters into scope. More...
 
void deduceClosureReturnType (sema::CapturingScopeInfo &CSI)
 Deduce a block or lambda's return type based on the return statements present in the body. More...
 
void ActOnStartOfLambdaDefinition (LambdaIntroducer &Intro, Declarator &ParamInfo, Scope *CurScope)
 ActOnStartOfLambdaDefinition - This is called just before we start parsing the body of a lambda; it analyzes the explicit captures and arguments, and sets up various data-structures for the body of the lambda. More...
 
void ActOnLambdaError (SourceLocation StartLoc, Scope *CurScope, bool IsInstantiation=false)
 ActOnLambdaError - If there is an error parsing a lambda, this callback is invoked to pop the information about the lambda. More...
 
ExprResult ActOnLambdaExpr (SourceLocation StartLoc, Stmt *Body, Scope *CurScope)
 ActOnLambdaExpr - This is called when the body of a lambda expression was successfully completed. More...
 
ExprResult BuildLambdaExpr (SourceLocation StartLoc, SourceLocation EndLoc, sema::LambdaScopeInfo *LSI)
 Complete a lambda-expression having processed and attached the lambda body. More...
 
void DefineImplicitLambdaToFunctionPointerConversion (SourceLocation CurrentLoc, CXXConversionDecl *Conv)
 Define the "body" of the conversion from a lambda object to a function pointer. More...
 
void DefineImplicitLambdaToBlockPointerConversion (SourceLocation CurrentLoc, CXXConversionDecl *Conv)
 Define the "body" of the conversion from a lambda object to a block pointer. More...
 
ExprResult BuildBlockForLambdaConversion (SourceLocation CurrentLocation, SourceLocation ConvLocation, CXXConversionDecl *Conv, Expr *Src)
 
ExprResult ParseObjCStringLiteral (SourceLocation *AtLocs, ArrayRef< Expr * > Strings)
 
ExprResult BuildObjCStringLiteral (SourceLocation AtLoc, StringLiteral *S)
 
ExprResult BuildCXXMemberCallExpr (Expr *Exp, NamedDecl *FoundDecl, CXXConversionDecl *Method, bool HadMultipleCandidates)
 
DeclActOnStartLinkageSpecification (Scope *S, SourceLocation ExternLoc, Expr *LangStr, SourceLocation LBraceLoc)
 ActOnStartLinkageSpecification - Parsed the beginning of a C++ linkage specification, including the language and (if present) the '{'. More...
 
DeclActOnFinishLinkageSpecification (Scope *S, Decl *LinkageSpec, SourceLocation RBraceLoc)
 ActOnFinishLinkageSpecification - Complete the definition of the C++ linkage specification LinkageSpec. More...
 
bool isCurrentClassName (const IdentifierInfo &II, Scope *S, const CXXScopeSpec *SS=nullptr)
 isCurrentClassName - Determine whether the identifier II is the name of the class type currently being defined. More...
 
bool isCurrentClassNameTypo (IdentifierInfo *&II, const CXXScopeSpec *SS)
 Determine whether the identifier II is a typo for the name of the class type currently being defined. More...
 
bool ActOnAccessSpecifier (AccessSpecifier Access, SourceLocation ASLoc, SourceLocation ColonLoc, AttributeList *Attrs=nullptr)
 ActOnAccessSpecifier - Parsed an access specifier followed by a colon. More...
 
NamedDeclActOnCXXMemberDeclarator (Scope *S, AccessSpecifier AS, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, Expr *BitfieldWidth, const VirtSpecifiers &VS, InClassInitStyle InitStyle)
 ActOnCXXMemberDeclarator - This is invoked when a C++ class member declarator is parsed. More...
 
void ActOnStartCXXInClassMemberInitializer ()
 Enter a new C++ default initializer scope. More...
 
void ActOnFinishCXXInClassMemberInitializer (Decl *VarDecl, SourceLocation EqualLoc, Expr *Init)
 This is invoked after parsing an in-class initializer for a non-static C++ class member, and after instantiating an in-class initializer in a class template. More...
 
MemInitResult ActOnMemInitializer (Decl *ConstructorD, Scope *S, CXXScopeSpec &SS, IdentifierInfo *MemberOrBase, ParsedType TemplateTypeTy, const DeclSpec &DS, SourceLocation IdLoc, SourceLocation LParenLoc, ArrayRef< Expr * > Args, SourceLocation RParenLoc, SourceLocation EllipsisLoc)
 Handle a C++ member initializer using parentheses syntax. More...
 
MemInitResult ActOnMemInitializer (Decl *ConstructorD, Scope *S, CXXScopeSpec &SS, IdentifierInfo *MemberOrBase, ParsedType TemplateTypeTy, const DeclSpec &DS, SourceLocation IdLoc, Expr *InitList, SourceLocation EllipsisLoc)
 Handle a C++ member initializer using braced-init-list syntax. More...
 
MemInitResult BuildMemInitializer (Decl *ConstructorD, Scope *S, CXXScopeSpec &SS, IdentifierInfo *MemberOrBase, ParsedType TemplateTypeTy, const DeclSpec &DS, SourceLocation IdLoc, Expr *Init, SourceLocation EllipsisLoc)
 Handle a C++ member initializer. More...
 
MemInitResult BuildMemberInitializer (ValueDecl *Member, Expr *Init, SourceLocation IdLoc)
 
MemInitResult BuildBaseInitializer (QualType BaseType, TypeSourceInfo *BaseTInfo, Expr *Init, CXXRecordDecl *ClassDecl, SourceLocation EllipsisLoc)
 
MemInitResult BuildDelegatingInitializer (TypeSourceInfo *TInfo, Expr *Init, CXXRecordDecl *ClassDecl)
 
bool SetDelegatingInitializer (CXXConstructorDecl *Constructor, CXXCtorInitializer *Initializer)
 
bool SetCtorInitializers (CXXConstructorDecl *Constructor, bool AnyErrors, ArrayRef< CXXCtorInitializer * > Initializers=None)
 
void SetIvarInitializers (ObjCImplementationDecl *ObjCImplementation)
 SetIvarInitializers - This routine builds initialization ASTs for the Objective-C implementation whose ivars need be initialized. More...
 
void MarkBaseAndMemberDestructorsReferenced (SourceLocation Loc, CXXRecordDecl *Record)
 MarkBaseAndMemberDestructorsReferenced - Given a record decl, mark all the non-trivial destructors of its members and bases as referenced. More...
 
void LoadExternalVTableUses ()
 Load any externally-stored vtable uses. More...
 
void MarkVTableUsed (SourceLocation Loc, CXXRecordDecl *Class, bool DefinitionRequired=false)
 Note that the vtable for the given class was used at the given location. More...
 
void MarkVirtualMemberExceptionSpecsNeeded (SourceLocation Loc, const CXXRecordDecl *RD)
 Mark the exception specifications of all virtual member functions in the given class as needed. More...
 
void MarkVirtualMembersReferenced (SourceLocation Loc, const CXXRecordDecl *RD)
 MarkVirtualMembersReferenced - Will mark all members of the given CXXRecordDecl referenced. More...
 
bool DefineUsedVTables ()
 Define all of the vtables that have been used in this translation unit and reference any virtual members used by those vtables. More...
 
void AddImplicitlyDeclaredMembersToClass (CXXRecordDecl *ClassDecl)
 AddImplicitlyDeclaredMembersToClass - Adds any implicitly-declared special functions, such as the default constructor, copy constructor, or destructor, to the given C++ class (C++ [special]p1). More...
 
void ActOnMemInitializers (Decl *ConstructorDecl, SourceLocation ColonLoc, ArrayRef< CXXCtorInitializer * > MemInits, bool AnyErrors)
 ActOnMemInitializers - Handle the member initializers for a constructor. More...
 
void checkClassLevelDLLAttribute (CXXRecordDecl *Class)
 Check class-level dllimport/dllexport attribute. More...
 
void referenceDLLExportedClassMethods ()
 
void propagateDLLAttrToBaseClassTemplate (CXXRecordDecl *Class, Attr *ClassAttr, ClassTemplateSpecializationDecl *BaseTemplateSpec, SourceLocation BaseLoc)
 Perform propagation of DLL attributes from a derived class to a templated base class for MS compatibility. More...
 
void CheckCompletedCXXClass (CXXRecordDecl *Record)
 Perform semantic checks on a class definition that has been completing, introducing implicitly-declared members, checking for abstract types, etc. More...
 
void ActOnFinishCXXMemberSpecification (Scope *S, SourceLocation RLoc, Decl *TagDecl, SourceLocation LBrac, SourceLocation RBrac, AttributeList *AttrList)
 
void ActOnFinishCXXMemberDecls ()
 Perform any semantic analysis which needs to be delayed until all pending class member declarations have been parsed. More...
 
void ActOnFinishCXXNonNestedClass (Decl *D)
 
void ActOnReenterCXXMethodParameter (Scope *S, ParmVarDecl *Param)
 This is used to implement the constant expression evaluation part of the attribute enable_if extension. More...
 
unsigned ActOnReenterTemplateScope (Scope *S, Decl *Template)
 
void ActOnStartDelayedMemberDeclarations (Scope *S, Decl *Record)
 
void ActOnStartDelayedCXXMethodDeclaration (Scope *S, Decl *Method)
 ActOnStartDelayedCXXMethodDeclaration - We have completed parsing a top-level (non-nested) C++ class, and we are now parsing those parts of the given Method declaration that could not be parsed earlier (C++ [class.mem]p2), such as default arguments. More...
 
void ActOnDelayedCXXMethodParameter (Scope *S, Decl *Param)
 ActOnDelayedCXXMethodParameter - We've already started a delayed C++ method declaration. More...
 
void ActOnFinishDelayedMemberDeclarations (Scope *S, Decl *Record)
 
void ActOnFinishDelayedCXXMethodDeclaration (Scope *S, Decl *Method)
 ActOnFinishDelayedCXXMethodDeclaration - We have finished processing the delayed method declaration for Method. More...
 
void ActOnFinishDelayedMemberInitializers (Decl *Record)
 
void MarkAsLateParsedTemplate (FunctionDecl *FD, Decl *FnD, CachedTokens &Toks)
 
void UnmarkAsLateParsedTemplate (FunctionDecl *FD)
 
bool IsInsideALocalClassWithinATemplateFunction ()
 
DeclActOnStaticAssertDeclaration (SourceLocation StaticAssertLoc, Expr *AssertExpr, Expr *AssertMessageExpr, SourceLocation RParenLoc)
 
DeclBuildStaticAssertDeclaration (SourceLocation StaticAssertLoc, Expr *AssertExpr, StringLiteral *AssertMessageExpr, SourceLocation RParenLoc, bool Failed)
 
FriendDeclCheckFriendTypeDecl (SourceLocation LocStart, SourceLocation FriendLoc, TypeSourceInfo *TSInfo)
 Perform semantic analysis of the given friend type declaration. More...
 
DeclActOnFriendTypeDecl (Scope *S, const DeclSpec &DS, MultiTemplateParamsArg TemplateParams)
 Handle a friend type declaration. More...
 
NamedDeclActOnFriendFunctionDecl (Scope *S, Declarator &D, MultiTemplateParamsArg TemplateParams)
 
QualType CheckConstructorDeclarator (Declarator &D, QualType R, StorageClass &SC)
 CheckConstructorDeclarator - Called by ActOnDeclarator to check the well-formedness of the constructor declarator D with type R. More...
 
void CheckConstructor (CXXConstructorDecl *Constructor)
 CheckConstructor - Checks a fully-formed constructor for well-formedness, issuing any diagnostics required. More...
 
QualType CheckDestructorDeclarator (Declarator &D, QualType R, StorageClass &SC)
 CheckDestructorDeclarator - Called by ActOnDeclarator to check the well-formednes of the destructor declarator D with type R. More...
 
bool CheckDestructor (CXXDestructorDecl *Destructor)
 CheckDestructor - Checks a fully-formed destructor definition for well-formedness, issuing any diagnostics required. More...
 
void CheckConversionDeclarator (Declarator &D, QualType &R, StorageClass &SC)
 CheckConversionDeclarator - Called by ActOnDeclarator to check the well-formednes of the conversion function declarator D with type R. More...
 
DeclActOnConversionDeclarator (CXXConversionDecl *Conversion)
 ActOnConversionDeclarator - Called by ActOnDeclarator to complete the declaration of the given C++ conversion function. More...
 
void CheckExplicitlyDefaultedSpecialMember (CXXMethodDecl *MD)
 
void CheckExplicitlyDefaultedMemberExceptionSpec (CXXMethodDecl *MD, const FunctionProtoType *T)
 Check whether the exception specification provided for an explicitly-defaulted special member matches the exception specification that would have been generated for an implicit special member, per C++11 [dcl.fct.def.default]p2. More...
 
void CheckDelayedMemberExceptionSpecs ()
 
CXXBaseSpecifierCheckBaseSpecifier (CXXRecordDecl *Class, SourceRange SpecifierRange, bool Virtual, AccessSpecifier Access, TypeSourceInfo *TInfo, SourceLocation EllipsisLoc)
 ActOnBaseSpecifier - Parsed a base specifier. More...
 
BaseResult ActOnBaseSpecifier (Decl *classdecl, SourceRange SpecifierRange, ParsedAttributes &Attrs, bool Virtual, AccessSpecifier Access, ParsedType basetype, SourceLocation BaseLoc, SourceLocation EllipsisLoc)
 ActOnBaseSpecifier - Parsed a base specifier. More...
 
bool AttachBaseSpecifiers (CXXRecordDecl *Class, MutableArrayRef< CXXBaseSpecifier * > Bases)
 Performs the actual work of attaching the given base class specifiers to a C++ class. More...
 
void ActOnBaseSpecifiers (Decl *ClassDecl, MutableArrayRef< CXXBaseSpecifier * > Bases)
 ActOnBaseSpecifiers - Attach the given base specifiers to the class, after checking whether there are any duplicate base classes. More...
 
bool IsDerivedFrom (SourceLocation Loc, QualType Derived, QualType Base)
 Determine whether the type Derived is a C++ class that is derived from the type Base. More...
 
bool IsDerivedFrom (SourceLocation Loc, QualType Derived, QualType Base, CXXBasePaths &Paths)
 Determine whether the type Derived is a C++ class that is derived from the type Base. More...
 
void BuildBasePathArray (const CXXBasePaths &Paths, CXXCastPath &BasePath)
 
bool CheckDerivedToBaseConversion (QualType Derived, QualType Base, SourceLocation Loc, SourceRange Range, CXXCastPath *BasePath=nullptr, bool IgnoreAccess=false)
 
bool CheckDerivedToBaseConversion (QualType Derived, QualType Base, unsigned InaccessibleBaseID, unsigned AmbigiousBaseConvID, SourceLocation Loc, SourceRange Range, DeclarationName Name, CXXCastPath *BasePath, bool IgnoreAccess=false)
 CheckDerivedToBaseConversion - Check whether the Derived-to-Base conversion (where Derived and Base are class types) is well-formed, meaning that the conversion is unambiguous (and that all of the base classes are accessible). More...
 
std::string getAmbiguousPathsDisplayString (CXXBasePaths &Paths)
 Builds a string representing ambiguous paths from a specific derived class to different subobjects of the same base class. More...
 
bool CheckOverridingFunctionAttributes (const CXXMethodDecl *New, const CXXMethodDecl *Old)
 
bool CheckOverridingFunctionReturnType (const CXXMethodDecl *New, const CXXMethodDecl *Old)
 CheckOverridingFunctionReturnType - Checks whether the return types are covariant, according to C++ [class.virtual]p5. More...
 
bool CheckOverridingFunctionExceptionSpec (const CXXMethodDecl *New, const CXXMethodDecl *Old)
 CheckOverridingFunctionExceptionSpec - Checks whether the exception spec is a subset of base spec. More...
 
bool CheckPureMethod (CXXMethodDecl *Method, SourceRange InitRange)
 Mark the given method pure. More...
 
void CheckOverrideControl (NamedDecl *D)
 CheckOverrideControl - Check C++11 override control semantics. More...
 
void DiagnoseAbsenceOfOverrideControl (NamedDecl *D)
 DiagnoseAbsenceOfOverrideControl - Diagnose if 'override' keyword was not used in the declaration of an overriding method. More...
 
bool CheckIfOverriddenFunctionIsMarkedFinal (const CXXMethodDecl *New, const CXXMethodDecl *Old)
 CheckForFunctionMarkedFinal - Checks whether a virtual member function overrides a virtual member function marked 'final', according to C++11 [class.virtual]p4. More...
 
bool SetMemberAccessSpecifier (NamedDecl *MemberDecl, NamedDecl *PrevMemberDecl, AccessSpecifier LexicalAS)
 SetMemberAccessSpecifier - Set the access specifier of a member. More...
 
AccessResult CheckUnresolvedMemberAccess (UnresolvedMemberExpr *E, DeclAccessPair FoundDecl)
 Perform access-control checking on a previously-unresolved member access which has now been resolved to a member. More...
 
AccessResult CheckUnresolvedLookupAccess (UnresolvedLookupExpr *E, DeclAccessPair FoundDecl)
 
AccessResult CheckAllocationAccess (SourceLocation OperatorLoc, SourceRange PlacementRange, CXXRecordDecl *NamingClass, DeclAccessPair FoundDecl, bool Diagnose=true)
 Checks access to an overloaded operator new or delete. More...
 
AccessResult CheckConstructorAccess (SourceLocation Loc, CXXConstructorDecl *D, DeclAccessPair FoundDecl, const InitializedEntity &Entity, bool IsCopyBindingRefToTemp=false)
 Checks access to a constructor. More...
 
AccessResult CheckConstructorAccess (SourceLocation Loc, CXXConstructorDecl *D, DeclAccessPair FoundDecl, const InitializedEntity &Entity, const PartialDiagnostic &PDiag)
 Checks access to a constructor. More...
 
AccessResult CheckDestructorAccess (SourceLocation Loc, CXXDestructorDecl *Dtor, const PartialDiagnostic &PDiag, QualType objectType=QualType())
 
AccessResult CheckFriendAccess (NamedDecl *D)
 Checks access to the target of a friend declaration. More...
 
AccessResult CheckMemberAccess (SourceLocation UseLoc, CXXRecordDecl *NamingClass, DeclAccessPair Found)
 Checks access to a member. More...
 
AccessResult CheckMemberOperatorAccess (SourceLocation Loc, Expr *ObjectExpr, Expr *ArgExpr, DeclAccessPair FoundDecl)
 Checks access to an overloaded member operator, including conversion operators. More...
 
AccessResult CheckAddressOfMemberAccess (Expr *OvlExpr, DeclAccessPair FoundDecl)
 
AccessResult CheckBaseClassAccess (SourceLocation AccessLoc, QualType Base, QualType Derived, const CXXBasePath &Path, unsigned DiagID, bool ForceCheck=false, bool ForceUnprivileged=false)
 Checks access for a hierarchy conversion. More...
 
void CheckLookupAccess (const LookupResult &R)
 Checks access to all the declarations in the given result set. More...
 
bool IsSimplyAccessible (NamedDecl *decl, DeclContext *Ctx)
 Checks access to Decl from the given class. More...
 
bool isSpecialMemberAccessibleForDeletion (CXXMethodDecl *decl, AccessSpecifier access, QualType objectType)
 Is the given special member function accessible for the purposes of deciding whether to define a special member function as deleted? More...
 
void HandleDependentAccessCheck (const DependentDiagnostic &DD, const MultiLevelTemplateArgumentList &TemplateArgs)
 
void PerformDependentDiagnostics (const DeclContext *Pattern, const MultiLevelTemplateArgumentList &TemplateArgs)
 
void HandleDelayedAccessCheck (sema::DelayedDiagnostic &DD, Decl *Ctx)
 
bool isAbstractType (SourceLocation Loc, QualType T)
 
bool RequireNonAbstractType (SourceLocation Loc, QualType T, TypeDiagnoser &Diagnoser)
 
template<typename... Ts>
bool RequireNonAbstractType (SourceLocation Loc, QualType T, unsigned DiagID, const Ts &...Args)
 
void DiagnoseAbstractType (const CXXRecordDecl *RD)
 
bool CheckOverloadedOperatorDeclaration (FunctionDecl *FnDecl)
 CheckOverloadedOperatorDeclaration - Check whether the declaration of this overloaded operator is well-formed. More...
 
bool CheckLiteralOperatorDeclaration (FunctionDecl *FnDecl)
 CheckLiteralOperatorDeclaration - Check whether the declaration of this literal operator function is well-formed. More...
 
void FilterAcceptableTemplateNames (LookupResult &R, bool AllowFunctionTemplates=true)
 
bool hasAnyAcceptableTemplateNames (LookupResult &R, bool AllowFunctionTemplates=true)
 
void LookupTemplateName (LookupResult &R, Scope *S, CXXScopeSpec &SS, QualType ObjectType, bool EnteringContext, bool &MemberOfUnknownSpecialization)
 
TemplateNameKind isTemplateName (Scope *S, CXXScopeSpec &SS, bool hasTemplateKeyword, UnqualifiedId &Name, ParsedType ObjectType, bool EnteringContext, TemplateTy &Template, bool &MemberOfUnknownSpecialization)
 
bool DiagnoseUnknownTemplateName (const IdentifierInfo &II, SourceLocation IILoc, Scope *S, const CXXScopeSpec *SS, TemplateTy &SuggestedTemplate, TemplateNameKind &SuggestedKind)
 
void DiagnoseTemplateParameterShadow (SourceLocation Loc, Decl *PrevDecl)
 DiagnoseTemplateParameterShadow - Produce a diagnostic complaining that the template parameter 'PrevDecl' is being shadowed by a new declaration at location Loc. More...
 
TemplateDeclAdjustDeclIfTemplate (Decl *&Decl)
 AdjustDeclIfTemplate - If the given decl happens to be a template, reset the parameter D to reference the templated declaration and return a pointer to the template declaration. More...
 
DeclActOnTypeParameter (Scope *S, bool Typename, SourceLocation EllipsisLoc, SourceLocation KeyLoc, IdentifierInfo *ParamName, SourceLocation ParamNameLoc, unsigned Depth, unsigned Position, SourceLocation EqualLoc, ParsedType DefaultArg)
 ActOnTypeParameter - Called when a C++ template type parameter (e.g., "typename T") has been parsed. More...
 
QualType CheckNonTypeTemplateParameterType (QualType T, SourceLocation Loc)
 Check that the type of a non-type template parameter is well-formed. More...
 
DeclActOnNonTypeTemplateParameter (Scope *S, Declarator &D, unsigned Depth, unsigned Position, SourceLocation EqualLoc, Expr *DefaultArg)
 
DeclActOnTemplateTemplateParameter (Scope *S, SourceLocation TmpLoc, TemplateParameterList *Params, SourceLocation EllipsisLoc, IdentifierInfo *ParamName, SourceLocation ParamNameLoc, unsigned Depth, unsigned Position, SourceLocation EqualLoc, ParsedTemplateArgument DefaultArg)
 ActOnTemplateTemplateParameter - Called when a C++ template template parameter (e.g. More...
 
TemplateParameterListActOnTemplateParameterList (unsigned Depth, SourceLocation ExportLoc, SourceLocation TemplateLoc, SourceLocation LAngleLoc, ArrayRef< Decl * > Params, SourceLocation RAngleLoc, Expr *RequiresClause)
 ActOnTemplateParameterList - Builds a TemplateParameterList, optionally constrained by RequiresClause, that contains the template parameters in Params. More...
 
bool CheckTemplateParameterList (TemplateParameterList *NewParams, TemplateParameterList *OldParams, TemplateParamListContext TPC)
 Checks the validity of a template parameter list, possibly considering the template parameter list from a previous declaration. More...
 
TemplateParameterListMatchTemplateParametersToScopeSpecifier (SourceLocation DeclStartLoc, SourceLocation DeclLoc, const CXXScopeSpec &SS, TemplateIdAnnotation *TemplateId, ArrayRef< TemplateParameterList * > ParamLists, bool IsFriend, bool &IsExplicitSpecialization, bool &Invalid)
 Match the given template parameter lists to the given scope specifier, returning the template parameter list that applies to the name. More...
 
DeclResult CheckClassTemplate (Scope *S, unsigned TagSpec, TagUseKind TUK, SourceLocation KWLoc, CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, AttributeList *Attr, TemplateParameterList *TemplateParams, AccessSpecifier AS, SourceLocation ModulePrivateLoc, SourceLocation FriendLoc, unsigned NumOuterTemplateParamLists, TemplateParameterList **OuterTemplateParamLists, SkipBodyInfo *SkipBody=nullptr)
 
void translateTemplateArguments (const ASTTemplateArgsPtr &In, TemplateArgumentListInfo &Out)
 Translates template arguments as provided by the parser into template arguments used by semantic analysis. More...
 
void NoteAllFoundTemplates (TemplateName Name)
 
QualType CheckTemplateIdType (TemplateName Template, SourceLocation TemplateLoc, TemplateArgumentListInfo &TemplateArgs)
 
TypeResult ActOnTemplateIdType (CXXScopeSpec &SS, SourceLocation TemplateKWLoc, TemplateTy Template, SourceLocation TemplateLoc, SourceLocation LAngleLoc, ASTTemplateArgsPtr TemplateArgs, SourceLocation RAngleLoc, bool IsCtorOrDtorName=false)
 
TypeResult ActOnTagTemplateIdType (TagUseKind TUK, TypeSpecifierType TagSpec, SourceLocation TagLoc, CXXScopeSpec &SS, SourceLocation TemplateKWLoc, TemplateTy TemplateD, SourceLocation TemplateLoc, SourceLocation LAngleLoc, ASTTemplateArgsPtr TemplateArgsIn, SourceLocation RAngleLoc)
 Parsed an elaborated-type-specifier that refers to a template-id, such as class T::template apply<U>. More...
 
DeclResult ActOnVarTemplateSpecialization (Scope *S, Declarator &D, TypeSourceInfo *DI, SourceLocation TemplateKWLoc, TemplateParameterList *TemplateParams, StorageClass SC, bool IsPartialSpecialization)
 
DeclResult CheckVarTemplateId (VarTemplateDecl *Template, SourceLocation TemplateLoc, SourceLocation TemplateNameLoc, const TemplateArgumentListInfo &TemplateArgs)
 
ExprResult CheckVarTemplateId (const CXXScopeSpec &SS, const DeclarationNameInfo &NameInfo, VarTemplateDecl *Template, SourceLocation TemplateLoc, const TemplateArgumentListInfo *TemplateArgs)
 
ExprResult BuildTemplateIdExpr (const CXXScopeSpec &SS, SourceLocation TemplateKWLoc, LookupResult &R, bool RequiresADL, const TemplateArgumentListInfo *TemplateArgs)
 
ExprResult BuildQualifiedTemplateIdExpr (CXXScopeSpec &SS, SourceLocation TemplateKWLoc, const DeclarationNameInfo &NameInfo, const TemplateArgumentListInfo *TemplateArgs)
 
TemplateNameKind ActOnDependentTemplateName (Scope *S, CXXScopeSpec &SS, SourceLocation TemplateKWLoc, UnqualifiedId &Name, ParsedType ObjectType, bool EnteringContext, TemplateTy &Template)
 Form a dependent template name. More...
 
DeclResult ActOnClassTemplateSpecialization (Scope *S, unsigned TagSpec, TagUseKind TUK, SourceLocation KWLoc, SourceLocation ModulePrivateLoc, TemplateIdAnnotation &TemplateId, AttributeList *Attr, MultiTemplateParamsArg TemplateParameterLists, SkipBodyInfo *SkipBody=nullptr)
 
DeclActOnTemplateDeclarator (Scope *S, MultiTemplateParamsArg TemplateParameterLists, Declarator &D)
 
bool CheckSpecializationInstantiationRedecl (SourceLocation NewLoc, TemplateSpecializationKind NewTSK, NamedDecl *PrevDecl, TemplateSpecializationKind PrevTSK, SourceLocation PrevPtOfInstantiation, bool &SuppressNew)
 Diagnose cases where we have an explicit template specialization before/after an explicit template instantiation, producing diagnostics for those cases where they are required and determining whether the new specialization/instantiation will have any effect. More...
 
bool CheckDependentFunctionTemplateSpecialization (FunctionDecl *FD, const TemplateArgumentListInfo &ExplicitTemplateArgs, LookupResult &Previous)
 Perform semantic analysis for the given dependent function template specialization. More...
 
bool CheckFunctionTemplateSpecialization (FunctionDecl *FD, TemplateArgumentListInfo *ExplicitTemplateArgs, LookupResult &Previous)
 Perform semantic analysis for the given function template specialization. More...
 
bool CheckMemberSpecialization (NamedDecl *Member, LookupResult &Previous)
 Perform semantic analysis for the given non-template member specialization. More...
 
DeclResult ActOnExplicitInstantiation (Scope *S, SourceLocation ExternLoc, SourceLocation TemplateLoc, unsigned TagSpec, SourceLocation KWLoc, const CXXScopeSpec &SS, TemplateTy Template, SourceLocation TemplateNameLoc, SourceLocation LAngleLoc, ASTTemplateArgsPtr TemplateArgs, SourceLocation RAngleLoc, AttributeList *Attr)
 
DeclResult ActOnExplicitInstantiation (Scope *S, SourceLocation ExternLoc, SourceLocation TemplateLoc, unsigned TagSpec, SourceLocation KWLoc, CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, AttributeList *Attr)
 
DeclResult ActOnExplicitInstantiation (Scope *S, SourceLocation ExternLoc, SourceLocation TemplateLoc, Declarator &D)
 
TemplateArgumentLoc SubstDefaultTemplateArgumentIfAvailable (TemplateDecl *Template, SourceLocation TemplateLoc, SourceLocation RAngleLoc, Decl *Param, SmallVectorImpl< TemplateArgument > &Converted, bool &HasDefaultArg)
 If the given template parameter has a default template argument, substitute into that default template argument and return the corresponding template argument. More...
 
bool CheckTemplateArgument (NamedDecl *Param, TemplateArgumentLoc &Arg, NamedDecl *Template, SourceLocation TemplateLoc, SourceLocation RAngleLoc, unsigned ArgumentPackIndex, SmallVectorImpl< TemplateArgument > &Converted, CheckTemplateArgumentKind CTAK=CTAK_Specified)
 Check that the given template argument corresponds to the given template parameter. More...
 
bool CheckTemplateArgumentList (TemplateDecl *Template, SourceLocation TemplateLoc, TemplateArgumentListInfo &TemplateArgs, bool PartialTemplateArgs, SmallVectorImpl< TemplateArgument > &Converted)
 Check that the given template arguments can be be provided to the given template, converting the arguments along the way. More...
 
bool CheckTemplateTypeArgument (TemplateTypeParmDecl *Param, TemplateArgumentLoc &Arg, SmallVectorImpl< TemplateArgument > &Converted)
 
bool CheckTemplateArgument (TemplateTypeParmDecl *Param, TypeSourceInfo *Arg)
 Check a template argument against its corresponding template type parameter. More...
 
ExprResult CheckTemplateArgument (NonTypeTemplateParmDecl *Param, QualType InstantiatedParamType, Expr *Arg, TemplateArgument &Converted, CheckTemplateArgumentKind CTAK=CTAK_Specified)
 Check a template argument against its corresponding non-type template parameter. More...
 
bool CheckTemplateArgument (TemplateTemplateParmDecl *Param, TemplateArgumentLoc &Arg, unsigned ArgumentPackIndex)
 Check a template argument against its corresponding template template parameter. More...
 
ExprResult BuildExpressionFromDeclTemplateArgument (const TemplateArgument &Arg, QualType ParamType, SourceLocation Loc)
 Given a non-type template argument that refers to a declaration and the type of its corresponding non-type template parameter, produce an expression that properly refers to that declaration. More...
 
ExprResult BuildExpressionFromIntegralTemplateArgument (const TemplateArgument &Arg, SourceLocation Loc)
 Construct a new expression that refers to the given integral template argument with the given source-location information. More...
 
bool TemplateParameterListsAreEqual (TemplateParameterList *New, TemplateParameterList *Old, bool Complain, TemplateParameterListEqualKind Kind, SourceLocation TemplateArgLoc=SourceLocation())
 Determine whether the given template parameter lists are equivalent. More...
 
bool CheckTemplateDeclScope (Scope *S, TemplateParameterList *TemplateParams)
 Check whether a template can be declared within this scope. More...
 
TypeResult ActOnTypenameType (Scope *S, SourceLocation TypenameLoc, const CXXScopeSpec &SS, const IdentifierInfo &II, SourceLocation IdLoc)
 Called when the parser has parsed a C++ typename specifier, e.g., "typename T::type". More...
 
TypeResult ActOnTypenameType (Scope *S, SourceLocation TypenameLoc, const CXXScopeSpec &SS, SourceLocation TemplateLoc, TemplateTy TemplateName, SourceLocation TemplateNameLoc, SourceLocation LAngleLoc, ASTTemplateArgsPtr TemplateArgs, SourceLocation RAngleLoc)
 Called when the parser has parsed a C++ typename specifier that ends in a template-id, e.g., "typename MetaFun::template apply<T1, T2>". More...
 
QualType CheckTypenameType (ElaboratedTypeKeyword Keyword, SourceLocation KeywordLoc, NestedNameSpecifierLoc QualifierLoc, const IdentifierInfo &II, SourceLocation IILoc)
 Build the type that describes a C++ typename specifier, e.g., "typename T::type". More...
 
TypeSourceInfoRebuildTypeInCurrentInstantiation (TypeSourceInfo *T, SourceLocation Loc, DeclarationName Name)
 Rebuilds a type within the context of the current instantiation. More...
 
bool RebuildNestedNameSpecifierInCurrentInstantiation (CXXScopeSpec &SS)
 
ExprResult RebuildExprInCurrentInstantiation (Expr *E)
 
bool RebuildTemplateParamsInCurrentInstantiation (TemplateParameterList *Params)
 Rebuild the template parameters now that we know we're in a current instantiation. More...
 
std::string getTemplateArgumentBindingsText (const TemplateParameterList *Params, const TemplateArgumentList &Args)
 Produces a formatted string that describes the binding of template parameters to template arguments. More...
 
std::string getTemplateArgumentBindingsText (const TemplateParameterList *Params, const TemplateArgument *Args, unsigned NumArgs)
 
bool isUnexpandedParameterPackPermitted ()
 Determine whether an unexpanded parameter pack might be permitted in this location. More...
 
bool DiagnoseUnexpandedParameterPacks (SourceLocation Loc, UnexpandedParameterPackContext UPPC, ArrayRef< UnexpandedParameterPack > Unexpanded)
 Diagnose unexpanded parameter packs. More...
 
bool DiagnoseUnexpandedParameterPack (SourceLocation Loc, TypeSourceInfo *T, UnexpandedParameterPackContext UPPC)
 If the given type contains an unexpanded parameter pack, diagnose the error. More...
 
bool DiagnoseUnexpandedParameterPack (Expr *E, UnexpandedParameterPackContext UPPC=UPPC_Expression)
 If the given expression contains an unexpanded parameter pack, diagnose the error. More...
 
bool DiagnoseUnexpandedParameterPack (const CXXScopeSpec &SS, UnexpandedParameterPackContext UPPC)
 If the given nested-name-specifier contains an unexpanded parameter pack, diagnose the error. More...
 
bool DiagnoseUnexpandedParameterPack (const DeclarationNameInfo &NameInfo, UnexpandedParameterPackContext UPPC)
 If the given name contains an unexpanded parameter pack, diagnose the error. More...
 
bool DiagnoseUnexpandedParameterPack (SourceLocation Loc, TemplateName Template, UnexpandedParameterPackContext UPPC)
 If the given template name contains an unexpanded parameter pack, diagnose the error. More...
 
bool DiagnoseUnexpandedParameterPack (TemplateArgumentLoc Arg, UnexpandedParameterPackContext UPPC)
 If the given template argument contains an unexpanded parameter pack, diagnose the error. More...
 
void collectUnexpandedParameterPacks (TemplateArgument Arg, SmallVectorImpl< UnexpandedParameterPack > &Unexpanded)
 Collect the set of unexpanded parameter packs within the given template argument. More...
 
void collectUnexpandedParameterPacks (TemplateArgumentLoc Arg, SmallVectorImpl< UnexpandedParameterPack > &Unexpanded)
 Collect the set of unexpanded parameter packs within the given template argument. More...
 
void collectUnexpandedParameterPacks (QualType T, SmallVectorImpl< UnexpandedParameterPack > &Unexpanded)
 Collect the set of unexpanded parameter packs within the given type. More...
 
void collectUnexpandedParameterPacks (TypeLoc TL, SmallVectorImpl< UnexpandedParameterPack > &Unexpanded)
 Collect the set of unexpanded parameter packs within the given type. More...
 
void collectUnexpandedParameterPacks (CXXScopeSpec &SS, SmallVectorImpl< UnexpandedParameterPack > &Unexpanded)
 Collect the set of unexpanded parameter packs within the given nested-name-specifier. More...
 
void collectUnexpandedParameterPacks (const DeclarationNameInfo &NameInfo, SmallVectorImpl< UnexpandedParameterPack > &Unexpanded)
 Collect the set of unexpanded parameter packs within the given name. More...
 
ParsedTemplateArgument ActOnPackExpansion (const ParsedTemplateArgument &Arg, SourceLocation EllipsisLoc)
 Invoked when parsing a template argument followed by an ellipsis, which creates a pack expansion. More...
 
TypeResult ActOnPackExpansion (ParsedType Type, SourceLocation EllipsisLoc)
 Invoked when parsing a type followed by an ellipsis, which creates a pack expansion. More...
 
TypeSourceInfoCheckPackExpansion (TypeSourceInfo *Pattern, SourceLocation EllipsisLoc, Optional< unsigned > NumExpansions)
 Construct a pack expansion type from the pattern of the pack expansion. More...
 
QualType CheckPackExpansion (QualType Pattern, SourceRange PatternRange, SourceLocation EllipsisLoc, Optional< unsigned > NumExpansions)
 Construct a pack expansion type from the pattern of the pack expansion. More...
 
ExprResult ActOnPackExpansion (Expr *Pattern, SourceLocation EllipsisLoc)
 Invoked when parsing an expression followed by an ellipsis, which creates a pack expansion. More...
 
ExprResult CheckPackExpansion (Expr *Pattern, SourceLocation EllipsisLoc, Optional< unsigned > NumExpansions)
 Invoked when parsing an expression followed by an ellipsis, which creates a pack expansion. More...
 
bool CheckParameterPacksForExpansion (SourceLocation EllipsisLoc, SourceRange PatternRange, ArrayRef< UnexpandedParameterPack > Unexpanded, const MultiLevelTemplateArgumentList &TemplateArgs, bool &ShouldExpand, bool &RetainExpansion, Optional< unsigned > &NumExpansions)
 Determine whether we could expand a pack expansion with the given set of parameter packs into separate arguments by repeatedly transforming the pattern. More...
 
Optional< unsignedgetNumArgumentsInExpansion (QualType T, const MultiLevelTemplateArgumentList &TemplateArgs)
 Determine the number of arguments in the given pack expansion type. More...
 
bool containsUnexpandedParameterPacks (Declarator &D)
 Determine whether the given declarator contains any unexpanded parameter packs. More...
 
TemplateArgumentLoc getTemplateArgumentPackExpansionPattern (TemplateArgumentLoc OrigLoc, SourceLocation &Ellipsis, Optional< unsigned > &NumExpansions) const
 Returns the pattern of the pack expansion for a template argument. More...
 
QualType adjustCCAndNoReturn (QualType ArgFunctionType, QualType FunctionType)
 
TemplateDeductionResult DeduceTemplateArguments (ClassTemplatePartialSpecializationDecl *Partial, const TemplateArgumentList &TemplateArgs, sema::TemplateDeductionInfo &Info)
 Perform template argument deduction to determine whether the given template arguments match the given class template partial specialization per C++ [temp.class.spec.match]. More...
 
TemplateDeductionResult DeduceTemplateArguments (VarTemplatePartialSpecializationDecl *Partial, const TemplateArgumentList &TemplateArgs, sema::TemplateDeductionInfo &Info)
 Perform template argument deduction to determine whether the given template arguments match the given variable template partial specialization per C++ [temp.class.spec.match]. More...
 
TemplateDeductionResult SubstituteExplicitTemplateArguments (FunctionTemplateDecl *FunctionTemplate, TemplateArgumentListInfo &ExplicitTemplateArgs, SmallVectorImpl< DeducedTemplateArgument > &Deduced, SmallVectorImpl< QualType > &ParamTypes, QualType *FunctionType, sema::TemplateDeductionInfo &Info)
 Substitute the explicitly-provided template arguments into the given function template according to C++ [temp.arg.explicit]. More...
 
TemplateDeductionResult FinishTemplateArgumentDeduction (FunctionTemplateDecl *FunctionTemplate, SmallVectorImpl< DeducedTemplateArgument > &Deduced, unsigned NumExplicitlySpecified, FunctionDecl *&Specialization, sema::TemplateDeductionInfo &Info, SmallVectorImpl< OriginalCallArg > const *OriginalCallArgs=nullptr, bool PartialOverloading=false)
 Finish template argument deduction for a function template, checking the deduced template arguments for completeness and forming the function template specialization. More...
 
TemplateDeductionResult DeduceTemplateArguments (FunctionTemplateDecl *FunctionTemplate, TemplateArgumentListInfo *ExplicitTemplateArgs, ArrayRef< Expr * > Args, FunctionDecl *&Specialization, sema::TemplateDeductionInfo &Info, bool PartialOverloading=false)
 Perform template argument deduction from a function call (C++ [temp.deduct.call]). More...
 
TemplateDeductionResult DeduceTemplateArguments (FunctionTemplateDecl *FunctionTemplate, TemplateArgumentListInfo *ExplicitTemplateArgs, QualType ArgFunctionType, FunctionDecl *&Specialization, sema::TemplateDeductionInfo &Info, bool InOverloadResolution=false)
 Deduce template arguments when taking the address of a function template (C++ [temp.deduct.funcaddr]) or matching a specialization to a template. More...
 
TemplateDeductionResult DeduceTemplateArguments (FunctionTemplateDecl *FunctionTemplate, QualType ToType, CXXConversionDecl *&Specialization, sema::TemplateDeductionInfo &Info)
 Deduce template arguments for a templated conversion function (C++ [temp.deduct.conv]) and, if successful, produce a conversion function template specialization. More...
 
TemplateDeductionResult DeduceTemplateArguments (FunctionTemplateDecl *FunctionTemplate, TemplateArgumentListInfo *ExplicitTemplateArgs, FunctionDecl *&Specialization, sema::TemplateDeductionInfo &Info, bool InOverloadResolution=false)
 Deduce template arguments for a function template when there is nothing to deduce against (C++0x [temp.arg.explicit]p3). More...
 
QualType SubstAutoType (QualType TypeWithAuto, QualType Replacement)
 Substitute Replacement for auto in TypeWithAuto. More...
 
TypeSourceInfoSubstAutoTypeSourceInfo (TypeSourceInfo *TypeWithAuto, QualType Replacement)
 Substitute Replacement for auto in TypeWithAuto. More...
 
DeduceAutoResult DeduceAutoType (TypeSourceInfo *AutoType, Expr *&Initializer, QualType &Result)
 
DeduceAutoResult DeduceAutoType (TypeLoc AutoTypeLoc, Expr *&Initializer, QualType &Result)
 Deduce the type for an auto type-specifier (C++11 [dcl.spec.auto]p6) More...
 
void DiagnoseAutoDeductionFailure (VarDecl *VDecl, Expr *Init)
 
bool DeduceReturnType (FunctionDecl *FD, SourceLocation Loc, bool Diagnose=true)
 
QualType deduceVarTypeFromInitializer (VarDecl *VDecl, DeclarationName Name, QualType Type, TypeSourceInfo *TSI, SourceRange Range, bool DirectInit, Expr *Init)
 
TypeLoc getReturnTypeLoc (FunctionDecl *FD) const
 
bool DeduceFunctionTypeFromReturnExpr (FunctionDecl *FD, SourceLocation ReturnLoc, Expr *&RetExpr, AutoType *AT)
 Deduce the return type for a function from a returned expression, per C++1y [dcl.spec.auto]p6. More...
 
FunctionTemplateDeclgetMoreSpecializedTemplate (FunctionTemplateDecl *FT1, FunctionTemplateDecl *FT2, SourceLocation Loc, TemplatePartialOrderingContext TPOC, unsigned NumCallArguments1, unsigned NumCallArguments2)
 Returns the more specialized function template according to the rules of function template partial ordering (C++ [temp.func.order]). More...
 
UnresolvedSetIterator getMostSpecialized (UnresolvedSetIterator SBegin, UnresolvedSetIterator SEnd, TemplateSpecCandidateSet &FailedCandidates, SourceLocation Loc, const PartialDiagnostic &NoneDiag, const PartialDiagnostic &AmbigDiag, const PartialDiagnostic &CandidateDiag, bool Complain=true, QualType TargetType=QualType())
 Retrieve the most specialized of the given function template specializations. More...
 
ClassTemplatePartialSpecializationDeclgetMoreSpecializedPartialSpecialization (ClassTemplatePartialSpecializationDecl *PS1, ClassTemplatePartialSpecializationDecl *PS2, SourceLocation Loc)
 Returns the more specialized class template partial specialization according to the rules of partial ordering of class template partial specializations (C++ [temp.class.order]). More...
 
VarTemplatePartialSpecializationDeclgetMoreSpecializedPartialSpecialization (VarTemplatePartialSpecializationDecl *PS1, VarTemplatePartialSpecializationDecl *PS2, SourceLocation Loc)
 TODO: Unify with ClassTemplatePartialSpecializationDecl version? May require unifying ClassTemplate(Partial)SpecializationDecl and VarTemplate(Partial)SpecializationDecl with a new data structure Template(Partial)SpecializationDecl, and using Template(Partial)SpecializationDecl as input type. More...
 
void MarkUsedTemplateParameters (const TemplateArgumentList &TemplateArgs, bool OnlyDeduced, unsigned Depth, llvm::SmallBitVector &Used)
 Mark which template parameters can be deduced from a given template argument list. More...
 
void MarkDeducedTemplateParameters (const FunctionTemplateDecl *FunctionTemplate, llvm::SmallBitVector &Deduced)
 
MultiLevelTemplateArgumentList getTemplateInstantiationArgs (NamedDecl *D, const TemplateArgumentList *Innermost=nullptr, bool RelativeToPrimary=false, const FunctionDecl *Pattern=nullptr)
 Retrieve the template argument list(s) that should be used to instantiate the definition of the given declaration. More...
 
llvm::DenseSet< Module * > & getLookupModules ()
 Get the set of additional modules that should be checked during name lookup. More...
 
void PrintInstantiationStack ()
 Prints the current instantiation stack through a series of notes. More...
 
Optional< sema::TemplateDeductionInfo * > isSFINAEContext () const
 Determines whether we are currently in a context where template argument substitution failures are not considered errors. More...
 
bool isUnevaluatedContext () const
 Determines whether we are currently in a context that is not evaluated as per C++ [expr] p5. More...
 
void PerformPendingInstantiations (bool LocalOnly=false)
 Performs template instantiation for all implicit template instantiations we have seen until this point. More...
 
TypeSourceInfoSubstType (TypeSourceInfo *T, const MultiLevelTemplateArgumentList &TemplateArgs, SourceLocation Loc, DeclarationName Entity)
 Perform substitution on the type T with a given set of template arguments. More...
 
QualType SubstType (QualType T, const MultiLevelTemplateArgumentList &TemplateArgs, SourceLocation Loc, DeclarationName Entity)
 Deprecated form of the above. More...
 
TypeSourceInfoSubstType (TypeLoc TL, const MultiLevelTemplateArgumentList &TemplateArgs, SourceLocation Loc, DeclarationName Entity)
 
TypeSourceInfoSubstFunctionDeclType (TypeSourceInfo *T, const MultiLevelTemplateArgumentList &TemplateArgs, SourceLocation Loc, DeclarationName Entity, CXXRecordDecl *ThisContext, unsigned ThisTypeQuals)
 A form of SubstType intended specifically for instantiating the type of a FunctionDecl. More...
 
void SubstExceptionSpec (FunctionDecl *New, const FunctionProtoType *Proto, const MultiLevelTemplateArgumentList &Args)
 
ParmVarDeclSubstParmVarDecl (ParmVarDecl *D, const MultiLevelTemplateArgumentList &TemplateArgs, int indexAdjustment, Optional< unsigned > NumExpansions, bool ExpectParameterPack)
 
bool SubstParmTypes (SourceLocation Loc, ArrayRef< ParmVarDecl * > Params, const FunctionProtoType::ExtParameterInfo *ExtParamInfos, const MultiLevelTemplateArgumentList &TemplateArgs, SmallVectorImpl< QualType > &ParamTypes, SmallVectorImpl< ParmVarDecl * > *OutParams, ExtParameterInfoBuilder &ParamInfos)
 Substitute the given template arguments into the given set of parameters, producing the set of parameter types that would be generated from such a substitution. More...
 
ExprResult SubstExpr (Expr *E, const MultiLevelTemplateArgumentList &TemplateArgs)
 
bool SubstExprs (ArrayRef< Expr * > Exprs, bool IsCall, const MultiLevelTemplateArgumentList &TemplateArgs, SmallVectorImpl< Expr * > &Outputs)
 Substitute the given template arguments into a list of expressions, expanding pack expansions if required. More...
 
StmtResult SubstStmt (Stmt *S, const MultiLevelTemplateArgumentList &TemplateArgs)
 
DeclSubstDecl (Decl *D, DeclContext *Owner, const MultiLevelTemplateArgumentList &TemplateArgs)
 
ExprResult SubstInitializer (Expr *E, const MultiLevelTemplateArgumentList &TemplateArgs, bool CXXDirectInit)
 
bool SubstBaseSpecifiers (CXXRecordDecl *Instantiation, CXXRecordDecl *Pattern, const MultiLevelTemplateArgumentList &TemplateArgs)
 Perform substitution on the base class specifiers of the given class template specialization. More...
 
bool InstantiateClass (SourceLocation PointOfInstantiation, CXXRecordDecl *Instantiation, CXXRecordDecl *Pattern, const MultiLevelTemplateArgumentList &TemplateArgs, TemplateSpecializationKind TSK, bool Complain=true)
 Instantiate the definition of a class from a given pattern. More...
 
bool InstantiateEnum (SourceLocation PointOfInstantiation, EnumDecl *Instantiation, EnumDecl *Pattern, const MultiLevelTemplateArgumentList &TemplateArgs, TemplateSpecializationKind TSK)
 Instantiate the definition of an enum from a given pattern. More...
 
bool InstantiateInClassInitializer (SourceLocation PointOfInstantiation, FieldDecl *Instantiation, FieldDecl *Pattern, const MultiLevelTemplateArgumentList &TemplateArgs)
 Instantiate the definition of a field from the given pattern. More...
 
void InstantiateAttrs (const MultiLevelTemplateArgumentList &TemplateArgs, const Decl *Pattern, Decl *Inst, LateInstantiatedAttrVec *LateAttrs=nullptr, LocalInstantiationScope *OuterMostScope=nullptr)
 
bool InstantiateClassTemplateSpecialization (SourceLocation PointOfInstantiation, ClassTemplateSpecializationDecl *ClassTemplateSpec, TemplateSpecializationKind TSK, bool Complain=true)
 
void InstantiateClassMembers (SourceLocation PointOfInstantiation, CXXRecordDecl *Instantiation, const MultiLevelTemplateArgumentList &TemplateArgs, TemplateSpecializationKind TSK)
 Instantiates the definitions of all of the member of the given class, which is an instantiation of a class template or a member class of a template. More...
 
void InstantiateClassTemplateSpecializationMembers (SourceLocation PointOfInstantiation, ClassTemplateSpecializationDecl *ClassTemplateSpec, TemplateSpecializationKind TSK)
 Instantiate the definitions of all of the members of the given class template specialization, which was named as part of an explicit instantiation. More...
 
NestedNameSpecifierLoc SubstNestedNameSpecifierLoc (NestedNameSpecifierLoc NNS, const MultiLevelTemplateArgumentList &TemplateArgs)
 
DeclarationNameInfo SubstDeclarationNameInfo (const DeclarationNameInfo &NameInfo, const MultiLevelTemplateArgumentList &TemplateArgs)
 Do template substitution on declaration name info. More...
 
TemplateName SubstTemplateName (NestedNameSpecifierLoc QualifierLoc, TemplateName Name, SourceLocation Loc, const MultiLevelTemplateArgumentList &TemplateArgs)
 
bool Subst (const TemplateArgumentLoc *Args, unsigned NumArgs, TemplateArgumentListInfo &Result, const MultiLevelTemplateArgumentList &TemplateArgs)
 
void InstantiateExceptionSpec (SourceLocation PointOfInstantiation, FunctionDecl *Function)
 
void InstantiateFunctionDefinition (SourceLocation PointOfInstantiation, FunctionDecl *Function, bool Recursive=false, bool DefinitionRequired=false, bool AtEndOfTU=false)
 Instantiate the definition of the given function from its template. More...
 
VarTemplateSpecializationDeclBuildVarTemplateInstantiation (VarTemplateDecl *VarTemplate, VarDecl *FromVar, const TemplateArgumentList &TemplateArgList, const TemplateArgumentListInfo &TemplateArgsInfo, SmallVectorImpl< TemplateArgument > &Converted, SourceLocation PointOfInstantiation, void *InsertPos, LateInstantiatedAttrVec *LateAttrs=nullptr, LocalInstantiationScope *StartingScope=nullptr)
 
VarTemplateSpecializationDeclCompleteVarTemplateSpecializationDecl (VarTemplateSpecializationDecl *VarSpec, VarDecl *PatternDecl, const MultiLevelTemplateArgumentList &TemplateArgs)
 Instantiates a variable template specialization by completing it with appropriate type information and initializer. More...
 
void BuildVariableInstantiation (VarDecl *NewVar, VarDecl *OldVar, const MultiLevelTemplateArgumentList &TemplateArgs, LateInstantiatedAttrVec *LateAttrs, DeclContext *Owner, LocalInstantiationScope *StartingScope, bool InstantiatingVarTemplate=false)
 BuildVariableInstantiation - Used after a new variable has been created. More...
 
void InstantiateVariableInitializer (VarDecl *Var, VarDecl *OldVar, const MultiLevelTemplateArgumentList &TemplateArgs)
 Instantiate the initializer of a variable. More...
 
void InstantiateVariableDefinition (SourceLocation PointOfInstantiation, VarDecl *Var, bool Recursive=false, bool DefinitionRequired=false, bool AtEndOfTU=false)
 
void InstantiateStaticDataMemberDefinition (SourceLocation PointOfInstantiation, VarDecl *Var, bool Recursive=false, bool DefinitionRequired=false)
 Instantiate the definition of the given variable from its template. More...
 
void InstantiateMemInitializers (CXXConstructorDecl *New, const CXXConstructorDecl *Tmpl, const MultiLevelTemplateArgumentList &TemplateArgs)
 
NamedDeclFindInstantiatedDecl (SourceLocation Loc, NamedDecl *D, const MultiLevelTemplateArgumentList &TemplateArgs)
 Find the instantiation of the given declaration within the current instantiation. More...
 
DeclContextFindInstantiatedContext (SourceLocation Loc, DeclContext *DC, const MultiLevelTemplateArgumentList &TemplateArgs)
 Finds the instantiation of the given declaration context within the current instantiation. More...
 
ObjCContainerKind getObjCContainerKind () const
 
DeclResult actOnObjCTypeParam (Scope *S, ObjCTypeParamVariance variance, SourceLocation varianceLoc, unsigned index, IdentifierInfo *paramName, SourceLocation paramLoc, SourceLocation colonLoc, ParsedType typeBound)
 
ObjCTypeParamListactOnObjCTypeParamList (Scope *S, SourceLocation lAngleLoc, ArrayRef< Decl * > typeParams, SourceLocation rAngleLoc)
 
void popObjCTypeParamList (Scope *S, ObjCTypeParamList *typeParamList)
 
DeclActOnStartClassInterface (Scope *S, SourceLocation AtInterfaceLoc, IdentifierInfo *ClassName, SourceLocation ClassLoc, ObjCTypeParamList *typeParamList, IdentifierInfo *SuperName, SourceLocation SuperLoc, ArrayRef< ParsedType > SuperTypeArgs, SourceRange SuperTypeArgsRange, Decl *const *ProtoRefs, unsigned NumProtoRefs, const SourceLocation *ProtoLocs, SourceLocation EndProtoLoc, AttributeList *AttrList)
 
void ActOnSuperClassOfClassInterface (Scope *S, SourceLocation AtInterfaceLoc, ObjCInterfaceDecl *IDecl, IdentifierInfo *ClassName, SourceLocation ClassLoc, IdentifierInfo *SuperName, SourceLocation SuperLoc, ArrayRef< ParsedType > SuperTypeArgs, SourceRange SuperTypeArgsRange)
 
void ActOnTypedefedProtocols (SmallVectorImpl< Decl * > &ProtocolRefs, IdentifierInfo *SuperName, SourceLocation SuperLoc)
 ActOnTypedefedProtocols - this action finds protocol list as part of the typedef'ed use for a qualified super class and adds them to the list of the protocols. More...
 
DeclActOnCompatibilityAlias (SourceLocation AtCompatibilityAliasLoc, IdentifierInfo *AliasName, SourceLocation AliasLocation, IdentifierInfo *ClassName, SourceLocation ClassLocation)
 ActOnCompatibilityAlias - this action is called after complete parsing of a @compatibility_alias declaration. More...
 
bool CheckForwardProtocolDeclarationForCircularDependency (IdentifierInfo *PName, SourceLocation &PLoc, SourceLocation PrevLoc, const ObjCList< ObjCProtocolDecl > &PList)
 
DeclActOnStartProtocolInterface (SourceLocation AtProtoInterfaceLoc, IdentifierInfo *ProtocolName, SourceLocation ProtocolLoc, Decl *const *ProtoRefNames, unsigned NumProtoRefs, const SourceLocation *ProtoLocs, SourceLocation EndProtoLoc, AttributeList *AttrList)
 
DeclActOnStartCategoryInterface (SourceLocation AtInterfaceLoc, IdentifierInfo *ClassName, SourceLocation ClassLoc, ObjCTypeParamList *typeParamList, IdentifierInfo *CategoryName, SourceLocation CategoryLoc, Decl *const *ProtoRefs, unsigned NumProtoRefs, const SourceLocation *ProtoLocs, SourceLocation EndProtoLoc)
 
DeclActOnStartClassImplementation (SourceLocation AtClassImplLoc, IdentifierInfo *ClassName, SourceLocation ClassLoc, IdentifierInfo *SuperClassname, SourceLocation SuperClassLoc)
 
DeclActOnStartCategoryImplementation (SourceLocation AtCatImplLoc, IdentifierInfo *ClassName, SourceLocation ClassLoc, IdentifierInfo *CatName, SourceLocation CatLoc)
 ActOnStartCategoryImplementation - Perform semantic checks on the category implementation declaration and build an ObjCCategoryImplDecl object. More...
 
DeclGroupPtrTy ActOnFinishObjCImplementation (Decl *ObjCImpDecl, ArrayRef< Decl * > Decls)
 
DeclGroupPtrTy ActOnForwardClassDeclaration (SourceLocation Loc, IdentifierInfo **IdentList, SourceLocation *IdentLocs, ArrayRef< ObjCTypeParamList * > TypeParamLists, unsigned NumElts)
 
DeclGroupPtrTy ActOnForwardProtocolDeclaration (SourceLocation AtProtoclLoc, ArrayRef< IdentifierLocPair > IdentList, AttributeList *attrList)
 ActOnForwardProtocolDeclaration - Handle @protocol foo;. More...
 
void FindProtocolDeclaration (bool WarnOnDeclarations, bool ForObjCContainer, ArrayRef< IdentifierLocPair > ProtocolId, SmallVectorImpl< Decl * > &Protocols)
 FindProtocolDeclaration - This routine looks up protocols and issues an error if they are not declared. More...
 
void DiagnoseTypeArgsAndProtocols (IdentifierInfo *ProtocolId, SourceLocation ProtocolLoc, IdentifierInfo *TypeArgId, SourceLocation TypeArgLoc, bool SelectProtocolFirst=false)
 
void actOnObjCTypeArgsOrProtocolQualifiers (Scope *S, ParsedType baseType, SourceLocation lAngleLoc, ArrayRef< IdentifierInfo * > identifiers, ArrayRef< SourceLocation > identifierLocs, SourceLocation rAngleLoc, SourceLocation &typeArgsLAngleLoc, SmallVectorImpl< ParsedTy