|
clang
5.0.0
|
#include "TypeLocBuilder.h"#include "clang/AST/ASTConsumer.h"#include "clang/AST/ASTContext.h"#include "clang/AST/ASTLambda.h"#include "clang/AST/CXXInheritance.h"#include "clang/AST/CharUnits.h"#include "clang/AST/CommentDiagnostic.h"#include "clang/AST/DeclCXX.h"#include "clang/AST/DeclObjC.h"#include "clang/AST/DeclTemplate.h"#include "clang/AST/EvaluatedExprVisitor.h"#include "clang/AST/ExprCXX.h"#include "clang/AST/StmtCXX.h"#include "clang/Basic/Builtins.h"#include "clang/Basic/PartialDiagnostic.h"#include "clang/Basic/SourceManager.h"#include "clang/Basic/TargetInfo.h"#include "clang/Lex/HeaderSearch.h"#include "clang/Lex/Lexer.h"#include "clang/Lex/ModuleLoader.h"#include "clang/Lex/Preprocessor.h"#include "clang/Sema/CXXFieldCollector.h"#include "clang/Sema/DeclSpec.h"#include "clang/Sema/DelayedDiagnostic.h"#include "clang/Sema/Initialization.h"#include "clang/Sema/Lookup.h"#include "clang/Sema/ParsedTemplate.h"#include "clang/Sema/Scope.h"#include "clang/Sema/ScopeInfo.h"#include "clang/Sema/SemaInternal.h"#include "clang/Sema/Template.h"#include "llvm/ADT/SmallString.h"#include "llvm/ADT/Triple.h"#include <algorithm>#include <cstring>#include <functional>Go to the source code of this file.
Enumerations | |
| enum | UnqualifiedTypeNameLookupResult |
| enum | ShadowedDeclKind { SDK_Local, SDK_Global, SDK_StaticMember, SDK_Field, SDK_Typedef, SDK_Using } |
| Enum describing the select options in diag::warn_decl_shadow. More... | |
| enum | OverrideErrorKind |
| enum | OpenCLParamType { ValidKernelParam, PtrPtrKernelParam, PtrKernelParam, InvalidAddrSpacePtrKernelParam, InvalidKernelParam, RecordKernelParam } |
Functions | |
| static UnqualifiedTypeNameLookupResult | lookupUnqualifiedTypeNameInBase (Sema &S, const IdentifierInfo &II, SourceLocation NameLoc, const CXXRecordDecl *RD) |
| Tries to perform unqualified lookup of the type decls in bases for dependent class. More... | |
| static ParsedType | recoverFromTypeInKnownDependentBase (Sema &S, const IdentifierInfo &II, SourceLocation NameLoc) |
| static NestedNameSpecifier * | synthesizeCurrentNestedNameSpecifier (ASTContext &Context, DeclContext *DC) |
| static const CXXRecordDecl * | findRecordWithDependentBasesOfEnclosingMethod (const DeclContext *DC) |
| Find the parent class with dependent bases of the innermost enclosing method context. More... | |
| static bool | isResultTypeOrTemplate (LookupResult &R, const Token &NextToken) |
| Determine whether the given result set contains either a type name or. More... | |
| static bool | isTagTypeWithMissingTag (Sema &SemaRef, LookupResult &Result, Scope *S, CXXScopeSpec &SS, IdentifierInfo *&Name, SourceLocation NameLoc) |
| static ParsedType | buildNestedType (Sema &S, CXXScopeSpec &SS, QualType T, SourceLocation NameLoc) |
| Build a ParsedType for a simple-type-specifier with a nested-name-specifier. More... | |
| static bool | AllowOverloadingOfFunction (LookupResult &Previous, ASTContext &Context, const FunctionDecl *New) |
| Determine whether we allow overloading of the function PrevDecl with another declaration. More... | |
| static bool | isOutOfScopePreviousDeclaration (NamedDecl *PrevDecl, DeclContext *DC, ASTContext &Context) |
| Determines whether the given declaration is an out-of-scope previous declaration. More... | |
| static bool | isUsingDecl (NamedDecl *D) |
| static void | RemoveUsingDecls (LookupResult &R) |
| Removes using shadow declarations from the lookup results. More... | |
| static bool | IsDisallowedCopyOrAssign (const CXXMethodDecl *D) |
| Check for this common pattern: More... | |
| static bool | isMainFileLoc (const Sema &S, SourceLocation Loc) |
| static bool | ShouldDiagnoseUnusedDecl (const NamedDecl *D) |
| static void | GenerateFixForUnusedDecl (const NamedDecl *D, ASTContext &Ctx, FixItHint &Hint) |
| static void | CheckPoppedLabel (LabelDecl *L, Sema &S) |
| static void | LookupPredefedObjCSuperType (Sema &ThisSema, Scope *S, IdentifierInfo *II) |
| Looks up the declaration of "struct objc_super" and saves it for later use in building builtin declaration of objc_msgSendSuper and objc_msgSendSuper_stret. More... | |
| static StringRef | getHeaderName (ASTContext::GetBuiltinTypeError Error) |
| static void | filterNonConflictingPreviousTypedefDecls (Sema &S, TypedefNameDecl *Decl, LookupResult &Previous) |
| Typedef declarations don't have linkage, but they still denote the same entity if their types are the same. More... | |
| static bool | DeclHasAttr (const Decl *D, const Attr *A) |
| DeclhasAttr - returns true if decl Declaration already has the target attribute. More... | |
| static bool | isAttributeTargetADefinition (Decl *D) |
| static bool | mergeAlignedAttrs (Sema &S, NamedDecl *New, Decl *Old) |
Merge alignment attributes from Old to New, taking into account the special semantics of C11's _Alignas specifier and C++11's alignas attribute. More... | |
| static bool | mergeDeclAttribute (Sema &S, NamedDecl *D, const InheritableAttr *Attr, Sema::AvailabilityMergeKind AMK) |
| static const NamedDecl * | getDefinition (const Decl *D) |
| static bool | hasAttribute (const Decl *D, attr::Kind Kind) |
| static void | checkNewAttributesAfterDef (Sema &S, Decl *New, const Decl *Old) |
| checkNewAttributesAfterDef - If we already have a definition, check that there are no new attributes in this declaration. More... | |
| static void | mergeParamDeclAttributes (ParmVarDecl *newDecl, const ParmVarDecl *oldDecl, Sema &S) |
| mergeParamDeclAttributes - Copy attributes from the old parameter to the new one. More... | |
| static void | mergeParamDeclTypes (ParmVarDecl *NewParam, const ParmVarDecl *OldParam, Sema &S) |
| template<typename T > | |
| static std::pair< diag::kind, SourceLocation > | getNoteDiagForInvalidRedeclaration (const T *Old, const T *New) |
| static bool | canRedefineFunction (const FunctionDecl *FD, const LangOptions &LangOpts) |
| canRedefineFunction - checks if a function can be redefined. More... | |
| template<typename T > | |
| static bool | haveIncompatibleLanguageLinkages (const T *Old, const T *New) |
| template<typename T > | |
| static bool | isExternC (T *D) |
| static bool | isExternC (VarTemplateDecl *) |
| template<typename ExpectedDecl > | |
| static bool | checkUsingShadowRedecl (Sema &S, UsingShadowDecl *OldS, ExpectedDecl *New) |
| Check whether a redeclaration of an entity introduced by a using-declaration is valid, given that we know it's not an overload (nor a hidden tag declaration). More... | |
| static bool | hasIdenticalPassObjectSizeAttrs (const FunctionDecl *A, const FunctionDecl *B) |
| static void | diagnoseVarDeclTypeMismatch (Sema &S, VarDecl *New, VarDecl *Old) |
| static bool | mergeTypeWithPrevious (Sema &S, VarDecl *NewVD, VarDecl *OldVD, LookupResult &Previous) |
| static unsigned | getMSManglingNumber (const LangOptions &LO, Scope *S) |
| static unsigned | GetDiagnosticTypeSpecifierID (DeclSpec::TST T) |
| static bool | CheckAnonMemberRedeclaration (Sema &SemaRef, Scope *S, DeclContext *Owner, DeclarationName Name, SourceLocation NameLoc, bool IsUnion) |
| We are trying to inject an anonymous member into the given scope; check if there's an existing declaration that can't be overloaded. More... | |
| static bool | InjectAnonymousStructOrUnionMembers (Sema &SemaRef, Scope *S, DeclContext *Owner, RecordDecl *AnonRecord, AccessSpecifier AS, SmallVectorImpl< NamedDecl * > &Chaining) |
| InjectAnonymousStructOrUnionMembers - Inject the members of the anonymous struct or union AnonRecord into the owning context Owner and scope S. More... | |
| static StorageClass | StorageClassSpecToVarDeclStorageClass (const DeclSpec &DS) |
| StorageClassSpecToVarDeclStorageClass - Maps a DeclSpec::SCS to a VarDecl::StorageClass. More... | |
| static SourceLocation | findDefaultInitializer (const CXXRecordDecl *Record) |
| static void | checkDuplicateDefaultInit (Sema &S, CXXRecordDecl *Parent, SourceLocation DefaultInitLoc) |
| static void | checkDuplicateDefaultInit (Sema &S, CXXRecordDecl *Parent, CXXRecordDecl *AnonUnion) |
| static QualType | getCoreType (QualType Ty) |
| static bool | hasSimilarParameters (ASTContext &Context, FunctionDecl *Declaration, FunctionDecl *Definition, SmallVectorImpl< unsigned > &Params) |
| hasSimilarParameters - Determine whether the C++ functions Declaration and Definition have "nearly" matching parameters. More... | |
| static bool | RebuildDeclaratorInCurrentInstantiation (Sema &S, Declarator &D, DeclarationName Name) |
| NeedsRebuildingInCurrentInstantiation - Checks whether the given declarator needs to be rebuilt in the current instantiation. More... | |
| static QualType | TryToFixInvalidVariablyModifiedType (QualType T, ASTContext &Context, bool &SizeIsNegative, llvm::APSInt &Oversized) |
| Helper method to turn variable array types into constant array types in certain situations which would otherwise be errors (for GCC compatibility). More... | |
| static void | FixInvalidVariablyModifiedTypeLoc (TypeLoc SrcTL, TypeLoc DstTL) |
| static TypeSourceInfo * | TryToFixInvalidVariablyModifiedTypeSourceInfo (TypeSourceInfo *TInfo, ASTContext &Context, bool &SizeIsNegative, llvm::APSInt &Oversized) |
| Helper method to turn variable array types into constant array types in certain situations which would otherwise be errors (for GCC compatibility). More... | |
| static void | SetNestedNameSpecifier (DeclaratorDecl *DD, Declarator &D) |
| static void | checkAttributesAfterMerging (Sema &S, NamedDecl &ND) |
| static void | checkDLLAttributeRedeclaration (Sema &S, NamedDecl *OldDecl, NamedDecl *NewDecl, bool IsSpecialization, bool IsDefinition) |
| static bool | isFunctionDefinitionDiscarded (Sema &S, FunctionDecl *FD) |
| Given that we are within the definition of the given function, will that definition behave like C99's 'inline', where the definition is discarded except for optimization purposes? More... | |
| template<typename T > | |
| static bool | isIncompleteDeclExternC (Sema &S, const T *D) |
| Determine whether a variable is extern "C" prior to attaching an initializer. More... | |
| static bool | shouldConsiderLinkage (const VarDecl *VD) |
| static bool | shouldConsiderLinkage (const FunctionDecl *FD) |
| static bool | hasParsedAttr (Scope *S, const AttributeList *AttrList, AttributeList::Kind Kind) |
| static bool | hasParsedAttr (Scope *S, const Declarator &PD, AttributeList::Kind Kind) |
| static bool | isDeclExternC (const Decl *D) |
| Returns true if given declaration has external C language linkage. More... | |
| static ShadowedDeclKind | computeShadowedDeclKind (const NamedDecl *ShadowedDecl, const DeclContext *OldDC) |
| Determine what kind of declaration we're shadowing. More... | |
| static SourceLocation | getCaptureLocation (const LambdaScopeInfo *LSI, const VarDecl *VD) |
Return the location of the capture if the given lambda captures the given variable VD, or an invalid source location otherwise. More... | |
| static bool | shouldWarnIfShadowedDecl (const DiagnosticsEngine &Diags, const LookupResult &R) |
| template<typename T > | |
| static bool | checkGlobalOrExternCConflict (Sema &S, const T *ND, bool IsGlobal, LookupResult &Previous) |
| Check for conflict between this global or extern "C" declaration and previous global or extern "C" declarations. More... | |
| template<typename T > | |
| static bool | checkForConflictWithNonVisibleExternC (Sema &S, const T *ND, LookupResult &Previous) |
| Apply special rules for handling extern "C" declarations. More... | |
| static void | ReportOverrides (Sema &S, unsigned DiagID, const CXXMethodDecl *MD, OverrideErrorKind OEK=OEK_All) |
| Report an error regarding overriding, along with any relevant overriden methods. More... | |
| static NamedDecl * | DiagnoseInvalidRedeclaration (Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD, ActOnFDArgs &ExtraArgs, bool IsLocalFriend, Scope *S) |
| Generate diagnostics for an invalid function redeclaration. More... | |
| static StorageClass | getFunctionStorageClass (Sema &SemaRef, Declarator &D) |
| static FunctionDecl * | CreateNewFunctionDecl (Sema &SemaRef, Declarator &D, DeclContext *DC, QualType &R, TypeSourceInfo *TInfo, StorageClass SC, bool &IsVirtualOkay) |
| static OpenCLParamType | getOpenCLKernelParameterType (Sema &S, QualType PT) |
| static void | checkIsValidOpenCLKernelParameter (Sema &S, Declarator &D, ParmVarDecl *Param, llvm::SmallPtrSetImpl< const Type * > &ValidTypes) |
| static DeclContext * | getTagInjectionContext (DeclContext *DC) |
| Find the DeclContext in which a tag is implicitly declared if we see an elaborated type specifier in the specified context, and lookup finds nothing. More... | |
| static Scope * | getTagInjectionScope (Scope *S, const LangOptions &LangOpts) |
| Find the Scope in which a tag is implicitly declared if we see an elaborated type specifier in the specified context, and lookup finds nothing. More... | |
| static bool | hasDependentAlignment (VarDecl *VD) |
| Determines if a variable's alignment is dependent. More... | |
| static bool | hasDeducedAuto (DeclaratorDecl *DD) |
| static bool | ShouldWarnAboutMissingPrototype (const FunctionDecl *FD, const FunctionDecl *&PossibleZeroParamPrototype) |
| static void | RebuildLambdaScopeInfo (CXXMethodDecl *CallOperator, Sema &S) |
| static unsigned | getRedeclDiagFromTagKind (TagTypeKind Tag) |
| Get diagnostic select index for tag kind for redeclaration diagnostic message. More... | |
| static bool | isClassCompatTagKind (TagTypeKind Tag) |
| Determine if tag kind is a class-key compatible with class for redeclaration (class, struct, or __interface). More... | |
| ***static FixItHint | createFriendTagNNSFixIt (Sema &SemaRef, NamedDecl *ND, Scope *S, SourceLocation NameLoc) |
| static bool | isAcceptableTagRedeclContext (Sema &S, DeclContext *OldDC, DeclContext *NewDC) |
Determine whether a tag originally declared in context OldDC can be redeclared with an unqualfied name in NewDC (assuming name lookup found a declaration in OldDC as a previous decl, perhaps through a using-declaration). More... | |
| static ObjCIvarDecl::AccessControl | TranslateIvarVisibility (tok::ObjCKeywordKind ivarVisibility) |
| TranslateIvarVisibility - Translate visibility from a token ID to an AST enum value. More... | |
| static bool | isRepresentableIntegerValue (ASTContext &Context, llvm::APSInt &Value, QualType T) |
| Determine whether the given integral value is representable within the given type T. More... | |
| static QualType | getNextLargerIntegralType (ASTContext &Context, QualType T) |
| static bool | ValidDuplicateEnum (EnumConstantDecl *ECD, EnumDecl *Enum) |
| static void | CheckForDuplicateEnumValues (Sema &S, ArrayRef< Decl * > Elements, EnumDecl *Enum, QualType EnumType) |
| static void | checkModuleImportContext (Sema &S, Module *M, SourceLocation ImportLoc, DeclContext *DC, bool FromInclude=false) |
Variables | |
| X | |
| Add a minimal nested name specifier fixit hint to allow lookup of a tag name from an outer enclosing namespace or file scope inside a friend declaration. More... | |
| enum OpenCLParamType |
| Enumerator | |
|---|---|
| ValidKernelParam | |
| PtrPtrKernelParam | |
| PtrKernelParam | |
| InvalidAddrSpacePtrKernelParam | |
| InvalidKernelParam | |
| RecordKernelParam | |
Definition at line 7963 of file SemaDecl.cpp.
| enum OverrideErrorKind |
Definition at line 7506 of file SemaDecl.cpp.
| enum ShadowedDeclKind |
Enum describing the select options in diag::warn_decl_shadow.
| Enumerator | |
|---|---|
| SDK_Local | |
| SDK_Global | |
| SDK_StaticMember | |
| SDK_Field | |
| SDK_Typedef | |
| SDK_Using | |
Definition at line 6862 of file SemaDecl.cpp.
|
strong |
Definition at line 158 of file SemaDecl.cpp.
|
static |
Determine whether we allow overloading of the function PrevDecl with another declaration.
This routine determines whether overloading is possible, not whether some new function is actually an overload. It will return true in C++ (where we can always provide overloads) or, as an extension, in C when the previous function is already an overloaded function declaration or has the "overloadable" attribute.
Definition at line 1329 of file SemaDecl.cpp.
References clang::LookupResult::Found, clang::LookupResult::FoundOverloaded, clang::LookupResult::getFoundDecl(), clang::ASTContext::getLangOpts(), clang::LookupResult::getResultKind(), and clang::Decl::hasAttr().
Referenced by clang::Sema::CheckFunctionDeclaration().
|
static |
Build a ParsedType for a simple-type-specifier with a nested-name-specifier.
Definition at line 832 of file SemaDecl.cpp.
References Builder, clang::Sema::Context, Context, clang::Sema::CreateParsedType(), clang::ETK_None, clang::Sema::getElaboratedType(), clang::TypeLocBuilder::getTypeSourceInfo(), clang::CXXScopeSpec::getWithLocInContext(), clang::TypeLocBuilder::push(), clang::TypeLocBuilder::pushTypeSpec(), clang::ElaboratedTypeLoc::setElaboratedKeywordLoc(), clang::TypeSpecTypeLoc::setNameLoc(), and clang::ElaboratedTypeLoc::setQualifierLoc().
Referenced by clang::Sema::ClassifyName().
|
static |
canRedefineFunction - checks if a function can be redefined.
Currently, only extern inline functions can be redefined, and even then only in GNU89 mode.
Definition at line 2777 of file SemaDecl.cpp.
References clang::FunctionDecl::getStorageClass(), clang::Decl::hasAttr(), clang::FunctionDecl::isInlineSpecified(), and clang::SC_Extern.
Referenced by clang::Sema::CheckForFunctionRedefinition(), and clang::Sema::MergeFunctionDecl().
|
static |
We are trying to inject an anonymous member into the given scope; check if there's an existing declaration that can't be overloaded.
Definition at line 4350 of file SemaDecl.cpp.
References clang::Sema::Diag(), clang::Sema::ForRedeclaration, clang::Decl::getLocation(), clang::LookupResult::getRepresentativeDecl(), clang::NamedDecl::getUnderlyingDecl(), clang::Sema::isDeclInScope(), clang::Sema::LookupMemberName, clang::Sema::LookupName(), and Name.
Referenced by InjectAnonymousStructOrUnionMembers().
Definition at line 5838 of file SemaDecl.cpp.
References clang::Sema::Diag(), clang::Decl::dropAttr(), clang::Decl::getAttr(), clang::getDLLAttr(), clang::Attr::getLocation(), clang::Decl::getLocation(), clang::NamedDecl::isExternallyVisible(), clang::Sema::ParsingInitForAutoVars, and clang::Decl::setInvalidDecl().
Referenced by clang::Sema::ActOnFunctionDeclarator(), and clang::Sema::FinalizeDeclaration().
|
static |
Definition at line 5901 of file SemaDecl.cpp.
References clang::Decl::addAttr(), clang::Sema::Context, clang::VarDecl::DeclarationOnly, clang::Sema::Diag(), clang::Decl::dropAttr(), clang::Decl::FOK_Declared, clang::Decl::getAttr(), clang::TargetInfo::getCXXABI(), clang::Decl::getLocation(), clang::ASTContext::getTargetInfo(), clang::NamedDecl::isCXXClassMember(), clang::Decl::isImplicit(), clang::Decl::isInvalidDecl(), clang::Decl::isLocalExternDecl(), clang::TargetCXXABI::isMicrosoft(), clang::Decl::isUsed(), clang::Decl::setInvalidDecl(), and clang::FunctionDecl::TK_NonTemplate.
Referenced by clang::Sema::ActOnFunctionDeclarator(), and clang::Sema::ActOnVariableDeclarator().
|
static |
Definition at line 4488 of file SemaDecl.cpp.
References clang::Sema::Diag(), findDefaultInitializer(), clang::CXXRecordDecl::hasInClassInitializer(), and clang::TagDecl::isUnion().
Referenced by clang::Sema::BuildAnonymousStructOrUnion(), checkDuplicateDefaultInit(), and clang::Sema::CheckFieldDecl().
|
static |
Definition at line 4497 of file SemaDecl.cpp.
References checkDuplicateDefaultInit(), findDefaultInitializer(), clang::CXXRecordDecl::hasInClassInitializer(), and clang::TagDecl::isUnion().
|
static |
Apply special rules for handling extern "C" declarations.
Returns true if we have found that this is a redeclaration of some prior entity.
Per C++ [dcl.link]p6: Two declarations [for a function or variable] with C language linkage with the same name that appear in different scopes refer to the same [entity]. An entity with C language linkage shall not be declared with the same name as an entity in global scope.
Definition at line 7190 of file SemaDecl.cpp.
References clang::LookupResult::addDecl(), checkGlobalOrExternCConflict(), clang::LookupResult::clear(), clang::Sema::findLocallyScopedExternCDecl(), clang::Sema::getLangOpts(), and isIncompleteDeclExternC().
Referenced by clang::Sema::CheckFunctionDeclaration(), and clang::Sema::CheckVariableDeclaration().
|
static |
Definition at line 15628 of file SemaDecl.cpp.
References clang::Sema::Diag(), clang::Sema::Diags, E, clang::NamedDecl::getIdentifier(), clang::EnumConstantDecl::getInitExpr(), clang::EnumConstantDecl::getInitVal(), clang::Decl::getLocation(), clang::EnumDecl::getNumNegativeBits(), clang::EnumDecl::getNumPositiveBits(), I, clang::DiagnosticsEngine::isIgnored(), and ValidDuplicateEnum().
Referenced by clang::Sema::ActOnEnumBody().
|
static |
Check for conflict between this global or extern "C" declaration and previous global or extern "C" declarations.
This is only used in C++.
Definition at line 7107 of file SemaDecl.cpp.
References clang::LookupResult::addDecl(), clang::LookupResult::begin(), clang::DeclContextLookupResult::begin(), clang::LookupResult::clear(), clang::Sema::Context, clang::Sema::Diag(), E, clang::LookupResult::end(), clang::DeclContextLookupResult::end(), clang::Sema::findLocallyScopedExternCDecl(), clang::Sema::getLangOpts(), clang::ASTContext::getTranslationUnitDecl(), I, isIncompleteDeclExternC(), and clang::DeclContext::lookup().
Referenced by checkForConflictWithNonVisibleExternC().
|
static |
Definition at line 8004 of file SemaDecl.cpp.
References clang::Type::castAs(), clang::Sema::Diag(), E, clang::RecordDecl::fields(), clang::NamedDecl::getDeclName(), clang::Decl::getLocation(), getOpenCLKernelParameterType(), clang::ValueDecl::getType(), clang::QualType::getTypePtr(), I, InvalidAddrSpacePtrKernelParam, InvalidKernelParam, clang::Type::isHalfType(), clang::Type::isPointerType(), clang::Type::isUnionType(), Next, PtrKernelParam, PtrPtrKernelParam, RecordKernelParam, clang::Declarator::setInvalidType(), and ValidKernelParam.
Referenced by clang::Sema::ActOnFunctionDeclarator().
|
static |
Definition at line 16013 of file SemaDecl.cpp.
References clang::Sema::Diag(), clang::Module::getFullModuleName(), clang::DeclContext::getParent(), clang::Module::IsExternC, clang::SourceLocation::isInvalid(), clang::Sema::isModuleVisible(), clang::SourceLocation::isValid(), clang::LinkageSpecDecl::lang_c, and clang::LinkageSpecDecl::lang_cxx.
Referenced by clang::Sema::ActOnModuleBegin(), clang::Sema::ActOnModuleImport(), and clang::Sema::ActOnModuleInclude().
checkNewAttributesAfterDef - If we already have a definition, check that there are no new attributes in this declaration.
Definition at line 2476 of file SemaDecl.cpp.
References clang::Sema::CheckForFunctionRedefinition(), clang::VarDecl::Definition, Diag(), clang::Sema::Diag(), E, clang::Decl::getAttrs(), clang::NamedDecl::getDeclName(), getDefinition(), clang::Attr::getKind(), clang::Attr::getLocation(), clang::Decl::getLocation(), clang::hasAttribute(), clang::Decl::hasAttrs(), I, clang::Sema::notePreviousDefinition(), clang::Decl::setInvalidDecl(), clang::Sema::SkipBodyInfo::ShouldSkip, and clang::VarDecl::TentativeDefinition.
Referenced by clang::Sema::mergeDeclAttributes().
Definition at line 1732 of file SemaDecl.cpp.
References clang::Sema::Diag(), clang::NamedDecl::getDeclName(), clang::Decl::getLocation(), clang::LabelDecl::getStmt(), clang::LabelDecl::isMSAsmLabel(), and clang::LabelDecl::isResolvedMSAsmLabel().
Referenced by clang::Sema::ActOnPopScope().
|
static |
Check whether a redeclaration of an entity introduced by a using-declaration is valid, given that we know it's not an overload (nor a hidden tag declaration).
Definition at line 2813 of file SemaDecl.cpp.
References clang::Sema::Diag(), clang::Decl::getLocation(), clang::UsingShadowDecl::getTargetDecl(), clang::UsingShadowDecl::getUsingDecl(), and isExternC().
|
static |
Determine what kind of declaration we're shadowing.
Definition at line 6872 of file SemaDecl.cpp.
References clang::DeclContext::isFileContext(), SDK_Field, SDK_Global, SDK_Local, SDK_StaticMember, SDK_Typedef, and SDK_Using.
Referenced by clang::Sema::DiagnoseShadowingLambdaDecls().
|
static |
Definition at line 13077 of file SemaDecl.cpp.
References clang::FixItHint::CreateInsertion(), clang::Decl::getDeclContext(), clang::NamedDecl::getIdentifier(), clang::DeclContext::getParent(), clang::DeclContext::getRedeclContext(), clang::NamespaceDecl::isAnonymousNamespace(), clang::DeclContext::isTranslationUnit(), clang::Sema::LookupNestedNameSpecifierName, and clang::Sema::LookupSingleName().
Referenced by clang::Sema::ActOnTag().
|
static |
Definition at line 7814 of file SemaDecl.cpp.
References clang::Sema::AbstractReturnType, clang::Sema::AdjustDestructorExceptionSpec(), clang::Sema::CheckConstructorDeclarator(), clang::Sema::CheckConversionDeclarator(), clang::Sema::CheckDeductionGuideDeclarator(), clang::Sema::CheckDestructorDeclarator(), clang::Sema::Context, clang::FunctionDecl::Create(), clang::CXXDeductionGuideDecl::Create(), clang::CXXMethodDecl::Create(), clang::CXXConstructorDecl::Create(), clang::CXXDestructorDecl::Create(), clang::CXXConversionDecl::Create(), clang::Sema::CurContext, clang::DeclarationName::CXXConstructorName, clang::DeclarationName::CXXConversionFunctionName, clang::DeclarationName::CXXDeductionGuideName, clang::DeclarationName::CXXDestructorName, clang::Sema::Diag(), clang::EST_None, clang::Type::getAs(), clang::Type::getAsAdjusted(), clang::DeclarationName::getAsIdentifierInfo(), clang::Declarator::getDeclSpec(), clang::CXXRecordDecl::getDefinition(), clang::Declarator::getFunctionTypeInfo(), getIdentifier(), clang::Declarator::getIdentifierLoc(), clang::Sema::getLangOpts(), clang::Declarator::getLocEnd(), clang::Declarator::getLocStart(), clang::DeclarationNameInfo::getName(), clang::Sema::GetNameForDeclarator(), clang::DeclarationName::getNameKind(), clang::DeclSpec::getTypeSpecTypeLoc(), clang::DeclaratorChunk::FunctionTypeInfo::hasPrototype, clang::TagDecl::isBeingDefined(), clang::DeclSpec::isConstexprSpecified(), clang::TagDecl::isDependentType(), clang::DeclSpec::isExplicitSpecified(), clang::DeclSpec::isFriendSpecified(), clang::Declarator::isFunctionDeclarator(), clang::Type::isFunctionProtoType(), clang::DeclSpec::isInlineSpecified(), clang::Declarator::isInvalidType(), clang::DeclContext::isRecord(), clang::CXXMethodDecl::isStatic(), Name, clang::Sema::RequireNonAbstractType(), clang::Decl::setInvalidDecl(), and clang::Declarator::setInvalidType().
Referenced by clang::Sema::ActOnFunctionDeclarator().
DeclhasAttr - returns true if decl Declaration already has the target attribute.
Definition at line 2224 of file SemaDecl.cpp.
References clang::Decl::attrs(), and clang::Attr::getKind().
Referenced by mergeDeclAttribute(), and mergeParamDeclAttributes().
|
static |
Generate diagnostics for an invalid function redeclaration.
This routine handles generating the diagnostic messages for an invalid function redeclaration, including finding possible similar declarations or performing typo correction if there are no previous declarations with the same name.
Returns a NamedDecl iff typo correction was performed and substituting in the new declaration name does not cause new errors.
Definition at line 7636 of file SemaDecl.cpp.
References clang::Sema::ActOnFunctionDeclarator(), clang::LookupResult::addDecl(), clang::TypoCorrection::begin(), clang::LookupResult::begin(), clang::LookupResult::clear(), clang::Sema::Context, clang::Sema::CorrectTypo(), clang::Sema::CTK_ErrorRecovery, clang::Sema::Diag(), clang::Sema::diagnoseTypo(), E, clang::TypoCorrection::end(), clang::LookupResult::end(), clang::Sema::ForRedeclaration, clang::DeclarationName::getAsIdentifierInfo(), clang::Decl::getCanonicalDecl(), clang::TypoCorrection::getCorrection(), clang::TypoCorrection::getCorrectionAsIdentifierInfo(), clang::TypoCorrection::getCorrectionDecl(), clang::Decl::getDeclContext(), clang::NamedDecl::getDeclName(), clang::SourceRange::getEnd(), clang::Decl::getLocation(), clang::FunctionDecl::getParamDecl(), clang::DeclContext::getParent(), clang::FunctionDecl::getSourceRange(), clang::ValueDecl::getType(), clang::DeclaratorDecl::getTypeSourceInfo(), clang::DeclaratorDecl::getTypeSpecStartLoc(), clang::FunctionDecl::hasBody(), clang::Sema::SFINAETrap::hasErrorOccurred(), hasSimilarParameters(), I, clang::CXXMethodDecl::isConst(), clang::SourceLocation::isInvalid(), clang::Sema::LookupLocalFriendName, clang::Sema::LookupName(), clang::Sema::LookupOrdinaryName, clang::Sema::LookupQualifiedName(), clang::Sema::MarkTypoCorrectedFunctionDefinition(), clang::Sema::PDiag(), Previous, Result, S, clang::TypoCorrection::setCorrectionDecl(), clang::Decl::setInvalidDecl(), and clang::LookupResult::setLookupName().
Referenced by clang::Sema::ActOnFunctionDeclarator().
Definition at line 3516 of file SemaDecl.cpp.
References clang::Sema::Context, clang::Sema::Diag(), clang::NamedDecl::getDeclName(), clang::Decl::getLocation(), getNoteDiagForInvalidRedeclaration(), clang::ValueDecl::getType(), clang::ASTContext::hasSameType(), clang::VarDecl::isThisDeclarationADefinition(), and clang::Decl::setInvalidDecl().
Referenced by clang::Sema::MergeVarDeclTypes().
|
static |
Typedef declarations don't have linkage, but they still denote the same entity if their types are the same.
FIXME: This is notionally doing the same thing as ASTReaderDecl's isSameEntity.
Definition at line 1973 of file SemaDecl.cpp.
References clang::Sema::Context, clang::LookupResult::Filter::done(), clang::LookupResult::empty(), clang::LookupResult::Filter::erase(), clang::TypedefNameDecl::getAnonDeclWithTypedefName(), clang::Sema::getLangOpts(), clang::TypedefNameDecl::getUnderlyingType(), clang::LookupResult::Filter::hasNext(), clang::ASTContext::hasSameType(), clang::Sema::isVisible(), clang::LookupResult::makeFilter(), and clang::LookupResult::Filter::next().
Referenced by clang::Sema::ActOnTypedefNameDecl().
|
static |
Definition at line 4474 of file SemaDecl.cpp.
References clang::DeclContext::decls(), clang::Decl::getLocation(), clang::CXXRecordDecl::hasInClassInitializer(), and I.
Referenced by checkDuplicateDefaultInit().
|
static |
Find the parent class with dependent bases of the innermost enclosing method context.
Do not look for enclosing CXXRecordDecls directly, or we will end up allowing unqualified dependent type names at class-level, which MSVC correctly rejects.
Definition at line 538 of file SemaDecl.cpp.
References clang::DeclContext::getLookupParent(), clang::DeclContext::getParent(), clang::DeclContext::getPrimaryContext(), and clang::DeclContext::isDependentContext().
Referenced by clang::Sema::ActOnMSVCUnknownTypeName().
Definition at line 5517 of file SemaDecl.cpp.
References clang::TypeLoc::castAs(), clang::TypeLoc::getAs(), clang::ArrayTypeLoc::getElementLoc(), clang::ParenTypeLoc::getInnerLoc(), clang::ArrayTypeLoc::getLBracketLoc(), clang::PointerLikeTypeLoc< Derived, TypeClass, LocalData >::getPointeeLoc(), clang::ArrayTypeLoc::getRBracketLoc(), clang::ArrayTypeLoc::getSizeExpr(), clang::TypeLoc::getUnqualifiedLoc(), clang::TypeLoc::initializeFullCopy(), clang::ParenTypeLoc::setLParenLoc(), clang::ParenTypeLoc::setRParenLoc(), and clang::PointerTypeLoc::setStarLoc().
Referenced by TryToFixInvalidVariablyModifiedTypeSourceInfo().
|
static |
Definition at line 1681 of file SemaDecl.cpp.
References clang::FixItHint::CreateRemoval(), clang::Lexer::findLocationAfterToken(), clang::ASTContext::getLangOpts(), clang::Decl::getLocEnd(), clang::Decl::getLocStart(), clang::ASTContext::getSourceManager(), and clang::SourceLocation::isInvalid().
Referenced by clang::Sema::DiagnoseUnusedDecl().
|
static |
Return the location of the capture if the given lambda captures the given variable VD, or an invalid source location otherwise.
Definition at line 6886 of file SemaDecl.cpp.
References clang::sema::CapturingScopeInfo::Captures.
Referenced by clang::Sema::CheckShadow(), and clang::Sema::DiagnoseShadowingLambdaDecls().
Definition at line 4956 of file SemaDecl.cpp.
References clang::Type::castAsArrayTypeUnsafe(), clang::ArrayType::getElementType(), clang::Type::getPointeeType(), clang::Type::isArrayType(), clang::Type::isPointerType(), clang::Type::isReferenceType(), and clang::QualType::withoutLocalFastQualifiers().
Referenced by hasSimilarParameters().
Definition at line 2453 of file SemaDecl.cpp.
References clang::VarDecl::getActingDefinition(), and clang::VarDecl::getDefinition().
Referenced by clang::Sema::ActOnTagStartSkippedDefinition(), checkDeclInTargetContext(), checkNewAttributesAfterDef(), and checkTypeParamListConsistency().
|
static |
Definition at line 4065 of file SemaDecl.cpp.
References clang::DeclSpec::TST_class, clang::DeclSpec::TST_enum, clang::DeclSpec::TST_interface, clang::DeclSpec::TST_struct, and clang::DeclSpec::TST_union.
Referenced by clang::Sema::ParsedFreeStandingDeclSpec().
|
static |
Definition at line 7778 of file SemaDecl.cpp.
References clang::DeclSpec::ClearStorageClassSpecs(), clang::Sema::CurContext, clang::Sema::Diag(), clang::Declarator::getDeclSpec(), clang::Declarator::getMutableDeclSpec(), clang::DeclContext::getRedeclContext(), clang::DeclSpec::getStorageClassSpec(), clang::DeclSpec::getStorageClassSpecLoc(), clang::DeclSpec::isExternInLinkageSpec(), clang::DeclContext::isFunctionOrMethod(), clang::SC_Extern, clang::SC_None, clang::SC_PrivateExtern, clang::SC_Static, clang::DeclSpec::SCS_auto, clang::DeclSpec::SCS_extern, clang::DeclSpec::SCS_mutable, clang::DeclSpec::SCS_private_extern, clang::DeclSpec::SCS_register, clang::DeclSpec::SCS_static, clang::DeclSpec::SCS_unspecified, and clang::Declarator::setInvalidType().
Referenced by clang::Sema::ActOnFunctionDeclarator().
|
static |
Definition at line 1875 of file SemaDecl.cpp.
References clang::ASTContext::GE_Missing_setjmp, clang::ASTContext::GE_Missing_stdio, clang::ASTContext::GE_Missing_ucontext, and clang::ASTContext::GE_None.
Referenced by clang::Sema::LazilyCreateBuiltin().
|
static |
Definition at line 3988 of file SemaDecl.cpp.
References clang::Scope::getMSCurManglingNumber(), clang::Scope::getMSLastManglingNumber(), clang::LangOptions::isCompatibleWithMSVC(), and clang::LangOptions::MSVC2015.
Referenced by clang::Sema::ActOnVariableDeclarator(), clang::Sema::BuildAnonymousStructOrUnion(), and clang::Sema::handleTagNumbering().
|
static |
Definition at line 15271 of file SemaDecl.cpp.
References clang::ASTContext::getTypeSize(), I, clang::ASTContext::IntTy, clang::Type::isIntegralType(), clang::Type::isSignedIntegerOrEnumerationType(), clang::ASTContext::LongLongTy, clang::ASTContext::LongTy, clang::ASTContext::ShortTy, clang::ASTContext::UnsignedIntTy, clang::ASTContext::UnsignedLongLongTy, clang::ASTContext::UnsignedLongTy, and clang::ASTContext::UnsignedShortTy.
|
static |
Definition at line 2760 of file SemaDecl.cpp.
References clang::SourceLocation::isInvalid().
Referenced by diagnoseVarDeclTypeMismatch(), clang::Sema::MergeFunctionDecl(), and clang::Sema::MergeVarDecl().
|
static |
Definition at line 7972 of file SemaDecl.cpp.
References clang::QualType::getAddressSpace(), clang::Sema::getOpenCLOptions(), clang::Type::getPointeeType(), InvalidAddrSpacePtrKernelParam, InvalidKernelParam, clang::Type::isBooleanType(), clang::OpenCLOptions::isEnabled(), clang::Type::isEventT(), clang::Type::isHalfType(), clang::Type::isImageType(), clang::Type::isPointerType(), clang::Type::isRecordType(), clang::Type::isReserveIDT(), clang::LangAS::opencl_generic, PtrKernelParam, PtrPtrKernelParam, RecordKernelParam, and ValidKernelParam.
Referenced by checkIsValidOpenCLKernelParameter().
|
static |
Get diagnostic select index for tag kind for redeclaration diagnostic message.
WARNING: Indexes apply to particular diagnostics only!
Definition at line 12931 of file SemaDecl.cpp.
References clang::TTK_Class, clang::TTK_Interface, and clang::TTK_Struct.
Referenced by clang::Sema::isAcceptableTagRedeclaration().
|
static |
Find the DeclContext in which a tag is implicitly declared if we see an elaborated type specifier in the specified context, and lookup finds nothing.
Definition at line 8152 of file SemaDecl.cpp.
References clang::DeclContext::getParent(), clang::DeclContext::isFileContext(), and clang::DeclContext::isFunctionOrMethod().
Referenced by clang::Sema::ActOnFunctionDeclarator(), and clang::Sema::ActOnTag().
|
static |
Find the Scope in which a tag is implicitly declared if we see an elaborated type specifier in the specified context, and lookup finds nothing.
Definition at line 8161 of file SemaDecl.cpp.
References clang::Scope::DeclScope, clang::Scope::getEntity(), clang::Scope::getFlags(), clang::Scope::getParent(), clang::Scope::isClassScope(), clang::Scope::isFunctionPrototypeScope(), clang::DeclContext::isTransparentContext(), and S.
Referenced by clang::Sema::ActOnTag().
|
static |
Definition at line 2467 of file SemaDecl.cpp.
References clang::Decl::attrs().
|
static |
Definition at line 11468 of file SemaDecl.cpp.
References clang::ValueDecl::getType(), and clang::Type::hasAutoForTrailingReturnType().
Referenced by clang::Sema::FinalizeDeclaratorGroup().
Determines if a variable's alignment is dependent.
Definition at line 11238 of file SemaDecl.cpp.
References clang::ValueDecl::getType(), I, clang::Type::isDependentType(), and clang::Decl::specific_attrs().
Referenced by clang::Sema::FinalizeDeclaration().
|
static |
Definition at line 2848 of file SemaDecl.cpp.
References clang::Decl::getAttr(), clang::FunctionDecl::getNumParams(), and clang::FunctionDecl::param_begin().
Referenced by clang::Sema::MergeFunctionDecl().
|
static |
Definition at line 6089 of file SemaDecl.cpp.
References clang::AttributeList::getNext().
Referenced by clang::Sema::ActOnVariableDeclarator(), and hasParsedAttr().
|
static |
Definition at line 6097 of file SemaDecl.cpp.
References E, clang::DeclSpec::getAttributes(), clang::Declarator::getAttributes(), clang::DeclaratorChunk::getAttrs(), clang::Declarator::getDeclSpec(), clang::ParsedAttributes::getList(), clang::Declarator::getNumTypeObjects(), clang::Declarator::getTypeObject(), hasParsedAttr(), and I.
|
static |
hasSimilarParameters - Determine whether the C++ functions Declaration and Definition have "nearly" matching parameters.
This heuristic is used to improve diagnostics in the case where an out-of-line function definition doesn't match any declaration within the class or namespace. Also sets Params to the list of indices to the parameters that differ between the declaration and the definition. If hasSimilarParameters returns true and Params is empty, then all of the parameters match.
Definition at line 4974 of file SemaDecl.cpp.
References clang::QualType::getBaseTypeIdentifier(), getCoreType(), clang::FunctionDecl::getParamDecl(), clang::ValueDecl::getType(), clang::ASTContext::hasSameType(), clang::ASTContext::hasSameUnqualifiedType(), and clang::FunctionDecl::param_size().
Referenced by DiagnoseInvalidRedeclaration().
|
static |
Definition at line 2793 of file SemaDecl.cpp.
References clang::CLanguageLinkage, clang::CXXLanguageLinkage, and clang::DeclContext::isRecord().
Referenced by clang::Sema::MergeFunctionDecl(), and clang::Sema::MergeVarDecl().
|
static |
InjectAnonymousStructOrUnionMembers - Inject the members of the anonymous struct or union AnonRecord into the owning context Owner and scope S.
This routine will be invoked just after we realize that an unnamed union or struct is actually an anonymous union or struct, e.g.,
This routine is recursive, injecting the names of nested anonymous structs/unions into the owning context and scope as well.
Definition at line 4391 of file SemaDecl.cpp.
References clang::Decl::addAttr(), clang::AS_none, clang::Decl::attrs(), CheckAnonMemberRedeclaration(), clang::Attr::clone(), clang::Sema::Context, clang::IndirectFieldDecl::Create(), clang::DeclContext::decls(), clang::NamedDecl::getDeclName(), clang::NamedDecl::getIdentifier(), clang::Decl::getLocation(), clang::ValueDecl::getType(), clang::TagDecl::isUnion(), clang::Sema::PushOnScopeChains(), clang::Decl::setAccess(), and clang::Decl::setImplicit().
Referenced by clang::Sema::BuildAnonymousStructOrUnion(), and clang::Sema::BuildMicrosoftCAnonymousStruct().
|
static |
Determine whether a tag originally declared in context OldDC can be redeclared with an unqualfied name in NewDC (assuming name lookup found a declaration in OldDC as a previous decl, perhaps through a using-declaration).
Definition at line 13114 of file SemaDecl.cpp.
References clang::DeclContext::Encloses(), clang::DeclContext::Equals(), clang::Sema::getLangOpts(), and clang::DeclContext::getRedeclContext().
Referenced by clang::Sema::ActOnTag().
Definition at line 2243 of file SemaDecl.cpp.
Referenced by mergeAlignedAttrs().
|
static |
Determine if tag kind is a class-key compatible with class for redeclaration (class, struct, or __interface).
Definition at line 12944 of file SemaDecl.cpp.
References clang::TTK_Class, clang::TTK_Interface, and clang::TTK_Struct.
Referenced by clang::Sema::isAcceptableTagRedeclaration().
Returns true if given declaration has external C language linkage.
Definition at line 6139 of file SemaDecl.cpp.
Referenced by clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnPragmaRedefineExtname(), and clang::Sema::ActOnVariableDeclarator().
|
static |
Check for this common pattern:
Definition at line 1473 of file SemaDecl.cpp.
References clang::FunctionDecl::doesThisDeclarationHaveABody().
Referenced by clang::Sema::ShouldWarnIfUnusedFileScopedDecl().
|
static |
Definition at line 2806 of file SemaDecl.cpp.
Referenced by checkUsingShadowRedecl().
|
static |
Definition at line 2807 of file SemaDecl.cpp.
|
static |
Given that we are within the definition of the given function, will that definition behave like C99's 'inline', where the definition is discarded except for optimization purposes?
Definition at line 6023 of file SemaDecl.cpp.
References clang::Sema::Context, clang::ASTContext::GetGVALinkageForFunction(), clang::Sema::getLangOpts(), clang::GVA_AvailableExternally, clang::Decl::hasAttr(), and clang::FunctionDecl::isInlined().
Referenced by clang::Sema::ActOnVariableDeclarator().
Determine whether a variable is extern "C" prior to attaching an initializer.
We can't just call isExternC() here, because that will also compute and cache whether the declaration is externally visible, which might change when we attach the initializer.
This can only be used if the declaration is known to not be a redeclaration of an internal linkage declaration.
For instance:
auto x = []{};
Attaching the initializer here makes this declaration not externally visible, because its type has internal linkage.
FIXME: This is a hack.
Definition at line 6054 of file SemaDecl.cpp.
References clang::Sema::getLangOpts().
Referenced by clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnVariableDeclarator(), checkForConflictWithNonVisibleExternC(), and checkGlobalOrExternCConflict().
|
static |
Definition at line 1513 of file SemaDecl.cpp.
References clang::SourceManager::isInMainFile(), clang::Sema::SourceMgr, clang::TU_Complete, and clang::Sema::TUKind.
Referenced by clang::Sema::ShouldWarnIfUnusedFileScopedDecl().
|
static |
Determines whether the given declaration is an out-of-scope previous declaration.
This routine should be invoked when name lookup has found a previous declaration (PrevDecl) that is not in the scope where a new declaration by the same name is being introduced. If the new declaration occurs in a local scope, previous declarations with linkage may still be considered previous declarations (C99 6.2.2p4-5, C++ [basic.link]p6).
| PrevDecl | the previous declaration found by name lookup |
| DC | the context in which the new declaration is being declared. |
Definition at line 5749 of file SemaDecl.cpp.
References clang::DeclContext::Equals(), clang::Decl::getDeclContext(), clang::DeclContext::getEnclosingNamespaceContext(), clang::ASTContext::getLangOpts(), clang::DeclContext::getRedeclContext(), clang::NamedDecl::hasLinkage(), clang::DeclContext::isFunctionOrMethod(), and clang::DeclContext::isRecord().
Referenced by clang::Sema::FilterLookupForScope().
|
static |
Determine whether the given integral value is representable within the given type T.
Definition at line 15255 of file SemaDecl.cpp.
References clang::ASTContext::getIntWidth(), clang::Type::isIntegralType(), and clang::Type::isSignedIntegerOrEnumerationType().
Referenced by clang::Sema::ActOnEnumBody(), and clang::Sema::CheckEnumConstant().
|
static |
Determine whether the given result set contains either a type name or.
Definition at line 767 of file SemaDecl.cpp.
References clang::LookupResult::begin(), clang::LookupResult::end(), clang::Sema::getLangOpts(), clang::LookupResult::getSema(), I, and clang::Token::is().
Referenced by clang::Sema::ClassifyName().
|
static |
Definition at line 782 of file SemaDecl.cpp.
References clang::LookupResult::begin(), clang::LookupResult::clear(), clang::FixItHint::CreateInsertion(), clang::Sema::Diag(), clang::LookupResult::end(), clang::LookupResult::getAsSingle(), clang::Sema::getLangOpts(), I, clang::Sema::LookupParsedName(), clang::Sema::LookupTagName, clang::TTK_Class, clang::TTK_Enum, clang::TTK_Interface, clang::TTK_Struct, and clang::TTK_Union.
Referenced by clang::Sema::ClassifyName().
Definition at line 1450 of file SemaDecl.cpp.
Referenced by RemoveUsingDecls().
|
static |
Looks up the declaration of "struct objc_super" and saves it for later use in building builtin declaration of objc_msgSendSuper and objc_msgSendSuper_stret.
If no such pre-existing declaration exists no action takes place.
Definition at line 1861 of file SemaDecl.cpp.
References clang::Sema::Context, Context, clang::LookupResult::Found, clang::IdentifierTable::get(), clang::ASTContext::getTagDeclType(), clang::ASTContext::Idents, clang::IdentifierInfo::isStr(), clang::Sema::LookupName(), clang::Sema::LookupTagName, Result, and clang::ASTContext::setObjCSuperType().
Referenced by clang::Sema::CheckFunctionDeclaration(), and clang::Sema::LazilyCreateBuiltin().
|
static |
Tries to perform unqualified lookup of the type decls in bases for dependent class.
Definition at line 170 of file SemaDecl.cpp.
References clang::CXXRecordDecl::bases(), clang::CXXRecordDecl::getCanonicalDecl(), clang::CXXRecordDecl::hasDefinition(), and clang::DeclContext::lookup().
Referenced by recoverFromTypeInKnownDependentBase().
Merge alignment attributes from Old to New, taking into account the special semantics of C11's _Alignas specifier and C++11's alignas attribute.
true if any attributes were added to New. Definition at line 2255 of file SemaDecl.cpp.
References clang::Decl::addAttr(), clang::Sema::Context, clang::Sema::Diag(), clang::Decl::getLocation(), clang::CharUnits::getQuantity(), clang::ASTContext::getTagDeclType(), clang::ASTContext::getTypeAlign(), I, isAttributeTargetADefinition(), clang::Decl::specific_attrs(), and clang::ASTContext::toCharUnitsFromBits().
Referenced by clang::Sema::mergeDeclAttributes().
|
static |
Definition at line 2362 of file SemaDecl.cpp.
References clang::Decl::addAttr(), clang::Sema::AMK_Override, clang::Sema::AMK_ProtocolImplementation, clang::ASTConsumer::AssignInheritanceModel(), clang::Attr::clone(), clang::Sema::Consumer, clang::Sema::Context, DeclHasAttr(), clang::Attr::duplicatesAllowed(), clang::IdentifierTable::get(), clang::Sema::getLangOpts(), clang::NamedDecl::getName(), clang::Attr::getSpellingListIndex(), clang::NamedDecl::getVisibility(), clang::ASTContext::Idents, clang::Decl::isImplicit(), clang::Sema::mergeAlwaysInlineAttr(), clang::Sema::mergeAvailabilityAttr(), clang::Sema::mergeCommonAttr(), clang::Sema::mergeDLLExportAttr(), clang::Sema::mergeDLLImportAttr(), clang::Sema::mergeFormatAttr(), clang::Sema::mergeInternalLinkageAttr(), clang::Sema::mergeMinSizeAttr(), clang::Sema::mergeMSInheritanceAttr(), clang::Sema::mergeOptimizeNoneAttr(), clang::Sema::mergeSectionAttr(), clang::Sema::mergeTypeVisibilityAttr(), clang::Sema::mergeUuidAttr(), clang::Sema::mergeVisibilityAttr(), and clang::InheritableAttr::setInherited().
Referenced by clang::Sema::mergeDeclAttributes().
|
static |
mergeParamDeclAttributes - Copy attributes from the old parameter to the new one.
Definition at line 2652 of file SemaDecl.cpp.
References clang::Decl::addAttr(), clang::Sema::Context, DeclHasAttr(), clang::Sema::Diag(), clang::Decl::dropAttrs(), clang::Decl::getAttr(), clang::Decl::getDeclContext(), clang::ParmVarDecl::getFunctionScopeIndex(), clang::Decl::getLocation(), clang::FunctionDecl::getParamDecl(), clang::Decl::hasAttr(), clang::Decl::hasAttrs(), I, clang::Decl::setAttrs(), clang::InheritableAttr::setInherited(), and clang::Decl::specific_attrs().
Referenced by clang::Sema::MergeCompatibleFunctionDecls(), and clang::Sema::mergeObjCMethodDecls().
|
static |
Definition at line 2695 of file SemaDecl.cpp.
References clang::Sema::Context, clang::Sema::Diag(), clang::ASTContext::getAttributedType(), clang::Decl::getLocation(), clang::Type::getNullability(), clang::AttributedType::getNullabilityAttrKind(), clang::ParmVarDecl::getObjCDeclQualifier(), clang::ValueDecl::getType(), clang::Decl::OBJC_TQ_CSNullability, and clang::ValueDecl::setType().
Referenced by clang::Sema::MergeCompatibleFunctionDecls().
|
static |
Definition at line 3626 of file SemaDecl.cpp.
References clang::Sema::getLangOpts(), clang::Decl::getLexicalDeclContext(), clang::DeclContext::isFunctionOrMethod(), clang::VarDecl::isPreviousDeclInSameBlockScope(), and clang::LookupResult::isShadowed().
Referenced by clang::Sema::MergeVarDecl().
|
static |
NeedsRebuildingInCurrentInstantiation - Checks whether the given declarator needs to be rebuilt in the current instantiation.
Any bits of declarator which appear before the name are valid for consideration here. That's specifically the type in the decl spec and the base type in any member-pointer chunks.
Definition at line 5009 of file SemaDecl.cpp.
References clang::Sema::Context, clang::Sema::CreateParsedType(), E, clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::Declarator::getIdentifierLoc(), clang::Declarator::getMutableDeclSpec(), clang::Declarator::getNumTypeObjects(), clang::DeclSpec::getRepAsExpr(), clang::DeclSpec::getRepAsType(), clang::ASTContext::getTrivialTypeSourceInfo(), clang::TypeSourceInfo::getType(), clang::Sema::GetTypeFromParser(), clang::Declarator::getTypeObject(), clang::DeclSpec::getTypeSpecType(), clang::DeclSpec::getTypeSpecTypeLoc(), I, clang::Type::isDependentType(), clang::ActionResult< PtrTy, CompressInvalid >::isInvalid(), clang::QualType::isNull(), clang::DeclaratorChunk::Kind, clang::DeclaratorChunk::Mem, clang::DeclaratorChunk::MemberPointer, Name, clang::Sema::RebuildExprInCurrentInstantiation(), clang::Sema::RebuildNestedNameSpecifierInCurrentInstantiation(), clang::Sema::RebuildTypeInCurrentInstantiation(), Result, clang::DeclaratorChunk::MemberPointerTypeInfo::Scope(), clang::DeclSpec::TST_atomic, clang::DeclSpec::TST_decltype, clang::DeclSpec::TST_typename, clang::DeclSpec::TST_typeofExpr, clang::DeclSpec::TST_typeofType, clang::DeclSpec::TST_underlyingType, clang::DeclSpec::UpdateExprRep(), and clang::DeclSpec::UpdateTypeRep().
Referenced by clang::Sema::HandleDeclarator().
|
static |
Definition at line 12022 of file SemaDecl.cpp.
References clang::sema::CapturingScopeInfo::addCapture(), clang::sema::CapturingScopeInfo::addThisCapture(), clang::sema::CapturingScopeInfo::addVLATypeCapture(), clang::sema::LambdaScopeInfo::CallOperator, clang::CXXRecordDecl::captures(), clang::Sema::CurrentInstantiationScope, clang::RecordDecl::field_begin(), clang::DeclarationNameInfo::getCXXOperatorNameRange(), clang::CXXRecordDecl::getLambdaCaptureDefault(), clang::FunctionDecl::getNameInfo(), clang::CXXMethodDecl::getParent(), clang::FunctionDecl::getReturnType(), clang::ValueDecl::getType(), I, clang::sema::CapturingScopeInfo::ImpCap_LambdaByref, clang::sema::CapturingScopeInfo::ImpCap_LambdaByval, clang::sema::CapturingScopeInfo::ImpCap_None, clang::sema::CapturingScopeInfo::ImpCaptureStyle, clang::LocalInstantiationScope::InstantiatedLocal(), clang::sema::LambdaScopeInfo::IntroducerRange, clang::CXXMethodDecl::isConst(), clang::VarDecl::isInitCapture(), clang::sema::LambdaScopeInfo::Lambda, clang::LCD_ByCopy, clang::LCD_ByRef, clang::LCD_None, clang::LCK_ByRef, clang::LCK_StarThis, clang::sema::LambdaScopeInfo::Mutable, clang::Sema::PushLambdaScope(), and clang::sema::CapturingScopeInfo::ReturnType.
Referenced by clang::Sema::ActOnStartOfFunctionDef().
|
static |
Definition at line 225 of file SemaDecl.cpp.
References Builder, clang::Sema::Context, Context, clang::NestedNameSpecifier::Create(), clang::Sema::CreateParsedType(), clang::Sema::CurContext, clang::Sema::Diag(), clang::ETK_Typename, clang::ASTContext::getDependentNameType(), clang::CXXRecordDecl::getDescribedClassTemplate(), clang::ASTContext::getRecordType(), clang::TypeLocBuilder::getTypeSourceInfo(), clang::CXXScopeSpec::getWithLocInContext(), lookupUnqualifiedTypeNameInBase(), clang::CXXScopeSpec::MakeTrivial(), clang::TypeLocBuilder::push(), clang::DependentNameTypeLoc::setElaboratedKeywordLoc(), clang::DependentNameTypeLoc::setNameLoc(), and clang::DependentNameTypeLoc::setQualifierLoc().
Referenced by clang::Sema::ClassifyName(), and clang::Sema::getTypeName().
|
static |
Removes using shadow declarations from the lookup results.
Definition at line 1457 of file SemaDecl.cpp.
References clang::LookupResult::Filter::done(), clang::LookupResult::Filter::erase(), clang::LookupResult::Filter::hasNext(), isUsingDecl(), clang::LookupResult::makeFilter(), and clang::LookupResult::Filter::next().
Referenced by clang::Sema::HandleDeclarator().
|
static |
Report an error regarding overriding, along with any relevant overriden methods.
| DiagID | the primary error to report. |
| MD | the overriding method. |
| OEK | which overrides to include as notes. |
Definition at line 7515 of file SemaDecl.cpp.
References clang::CXXMethodDecl::begin_overridden_methods(), clang::Sema::Diag(), E, clang::CXXMethodDecl::end_overridden_methods(), clang::NamedDecl::getDeclName(), clang::Decl::getLocation(), and I.
Referenced by clang::Sema::AddOverriddenMethods(), and clang::Sema::CheckFunctionDeclaration().
|
static |
Definition at line 5788 of file SemaDecl.cpp.
References clang::Decl::getASTContext(), clang::Declarator::getCXXScopeSpec(), clang::CXXScopeSpec::getWithLocInContext(), clang::CXXScopeSpec::isSet(), and clang::DeclaratorDecl::setQualifierInfo().
Referenced by clang::Sema::ActOnFunctionDeclarator(), and clang::Sema::ActOnVariableDeclarator().
Definition at line 6068 of file SemaDecl.cpp.
References clang::Decl::getDeclContext(), clang::DeclContext::getRedeclContext(), clang::VarDecl::hasExternalStorage(), clang::DeclContext::isFileContext(), clang::DeclContext::isFunctionOrMethod(), and clang::DeclContext::isRecord().
Referenced by clang::Sema::ActOnFunctionDeclarator(), and clang::Sema::ActOnVariableDeclarator().
|
static |
Definition at line 6079 of file SemaDecl.cpp.
References clang::Decl::getDeclContext(), clang::DeclContext::getRedeclContext(), clang::DeclContext::isFileContext(), clang::DeclContext::isFunctionOrMethod(), and clang::DeclContext::isRecord().
Definition at line 1602 of file SemaDecl.cpp.
References clang::Type::getAs(), clang::CXXConstructExpr::getConstructor(), clang::Decl::getDeclContext(), clang::Decl::hasAttr(), clang::CXXConstructExpr::isElidable(), clang::DeclContext::isFunctionOrMethod(), clang::Decl::isInvalidDecl(), clang::Decl::isReferenced(), clang::FunctionDecl::isTrivial(), and clang::Decl::isUsed().
Referenced by clang::Sema::DiagnoseUnusedDecl().
|
static |
Definition at line 11925 of file SemaDecl.cpp.
References clang::FunctionDecl::getDescribedFunctionTemplate(), clang::FunctionDecl::getNumParams(), clang::Redeclarable< decl_type >::getPreviousDecl(), clang::Decl::hasAttr(), clang::FunctionDecl::isDeleted(), clang::FunctionDecl::isFunctionTemplateSpecialization(), clang::FunctionDecl::isGlobal(), clang::FunctionDecl::isInlined(), clang::Decl::isInvalidDecl(), and clang::FunctionDecl::isMain().
Referenced by clang::Sema::ActOnFinishFunctionBody().
|
static |
Definition at line 6895 of file SemaDecl.cpp.
References clang::LookupResult::Found, clang::LookupResult::getNameLoc(), clang::LookupResult::getResultKind(), and clang::DiagnosticsEngine::isIgnored().
Referenced by clang::Sema::getShadowedDeclaration().
|
static |
StorageClassSpecToVarDeclStorageClass - Maps a DeclSpec::SCS to a VarDecl::StorageClass.
Any error reporting is up to the caller: illegal input values are mapped to SC_None.
Definition at line 4453 of file SemaDecl.cpp.
References clang::DeclSpec::getStorageClassSpec(), clang::DeclSpec::isExternInLinkageSpec(), clang::SC_Auto, clang::SC_Extern, clang::SC_None, clang::SC_PrivateExtern, clang::SC_Register, clang::SC_Static, clang::DeclSpec::SCS_auto, clang::DeclSpec::SCS_extern, clang::DeclSpec::SCS_mutable, clang::DeclSpec::SCS_private_extern, clang::DeclSpec::SCS_register, clang::DeclSpec::SCS_static, clang::DeclSpec::SCS_typedef, and clang::DeclSpec::SCS_unspecified.
Referenced by clang::Sema::ActOnVariableDeclarator(), and clang::Sema::BuildAnonymousStructOrUnion().
|
static |
Definition at line 518 of file SemaDecl.cpp.
References clang::NestedNameSpecifier::Create(), clang::DeclContext::getLookupParent(), clang::DeclContext::getPrimaryContext(), and clang::NestedNameSpecifier::GlobalSpecifier().
Referenced by clang::Sema::ActOnMSVCUnknownTypeName().
|
static |
TranslateIvarVisibility - Translate visibility from a token ID to an AST enum value.
Definition at line 14672 of file SemaDecl.cpp.
References clang::ObjCIvarDecl::Package, clang::ObjCIvarDecl::Private, clang::ObjCIvarDecl::Protected, and clang::ObjCIvarDecl::Public.
Referenced by clang::Sema::ActOnIvar().
|
static |
Helper method to turn variable array types into constant array types in certain situations which would otherwise be errors (for GCC compatibility).
Definition at line 5449 of file SemaDecl.cpp.
References clang::QualifierCollector::apply(), clang::Expr::EvaluateAsInt(), clang::ASTContext::getConstantArrayType(), clang::ArrayType::getElementType(), clang::ConstantArrayType::getMaxSizeBits(), clang::ConstantArrayType::getNumAddressingBits(), clang::ASTContext::getParenType(), clang::Type::getPointeeType(), clang::ASTContext::getPointerType(), clang::VariableArrayType::getSizeExpr(), clang::Type::isDependentType(), clang::QualType::isNull(), clang::Type::isVariablyModifiedType(), clang::ArrayType::Normal, and clang::QualifierCollector::strip().
Referenced by TryToFixInvalidVariablyModifiedTypeSourceInfo().
|
static |
Helper method to turn variable array types into constant array types in certain situations which would otherwise be errors (for GCC compatibility).
Definition at line 5549 of file SemaDecl.cpp.
References Context, FixInvalidVariablyModifiedTypeLoc(), clang::ASTContext::getTrivialTypeSourceInfo(), clang::TypeSourceInfo::getType(), clang::TypeSourceInfo::getTypeLoc(), clang::QualType::isNull(), and TryToFixInvalidVariablyModifiedType().
Referenced by clang::Sema::CheckFieldDecl(), clang::Sema::CheckTypedefForVariablyModifiedType(), and clang::Sema::CheckVariableDeclarationType().
|
static |
Definition at line 15566 of file SemaDecl.cpp.
References clang::TagDecl::castFromDeclContext(), clang::DeclRefExpr::getDecl(), clang::Decl::getDeclContext(), clang::EnumConstantDecl::getInitExpr(), clang::APIntStorage::getValue(), and clang::Expr::IgnoreImpCasts().
Referenced by CheckForDuplicateEnumValues().
| X |
Add a minimal nested name specifier fixit hint to allow lookup of a tag name from an outer enclosing namespace or file scope inside a friend declaration.
This should provide the commented out code in the following snippet: namespace N { struct X; namespace M { struct Y { friend struct /*N::
Definition at line 13074 of file SemaDecl.cpp.
Referenced by clang::Sema::ActOnOpenMPAtomicDirective(), clang::ento::BasicValueFactory::Add1(), checkDeducedTemplateArguments(), clang::SrcMgr::ExpansionInfo::create(), clang::CodeGen::CodeGenFunction::EmitAMDGPUBuiltinExpr(), EmitOverflowIntrinsic(), clang::CodeGen::CodeGenFunction::EmitPPCBuiltinExpr(), clang::CodeGen::CodeGenFunction::EmitSystemZBuiltinExpr(), clang::ento::nonloc::ConcreteInt::evalBinOp(), clang::ento::loc::ConcreteInt::evalBinOp(), clang::ento::ExprEngine::evalComplement(), clang::ento::ExprEngine::evalMinus(), eventsDescribeSameCondition(), clang::ento::PathDiagnosticConsumer::FlushDiagnostics(), clang::SrcMgr::FileInfo::get(), clang::ento::SVal::getAsFunctionDecl(), clang::ento::SVal::getAsLocSymbol(), getAsPointeeSymbol(), clang::ento::SVal::getAsRegion(), clang::ento::SVal::getAsSymbol(), clang::ento::SVal::getAsSymbolicExpression(), clang::CFGStmtMap::getBlock(), clang::DeclGroupRef::getFromOpaquePtr(), clang::SourceLocation::getFromRawEncoding(), clang::ento::SVal::getLocSymbolInBase(), isSameEntity(), isSameTemplateParameter(), clang::Sema::isTemplateTemplateParameterAtLeastAsSpecializedAs(), mergeCandidatesWithResults(), clang::ento::PathDiagnosticLocation::operator!=(), clang::operator<=(), clang::operator>(), parameterTypeFromSVal(), clang::ento::ExprEngine::processBranch(), REGISTER_MAP_WITH_PROGRAMSTATE(), REGISTER_TRAIT_WITH_PROGRAMSTATE(), clang::ento::ScanReachableSymbols::scan(), clang::ento::BasicValueFactory::Sub1(), swap32le(), TryListConversion(), clang::ento::ExprEngine::VisitGCCAsmStmt(), clang::ento::ExprEngine::VisitLogicalExpr(), clang::ento::TrackConstraintBRVisitor::VisitNode(), clang::ento::ExprEngine::VisitOffsetOfExpr(), and clang::ento::ExprEngine::VisitUnaryOperator().
1.8.6