#include "TypeLocBuilder.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/NestedNameSpecifier.h"
#include "clang/Basic/PartialDiagnostic.h"
#include "clang/Sema/DeclSpec.h"
#include "clang/Sema/Lookup.h"
#include "clang/Sema/SemaInternal.h"
#include "clang/Sema/Template.h"
#include "llvm/ADT/STLExtras.h"
usingnamespaceclang;
static CXXRecordDecl *getCurrentInstantiationOf(QualType T,
DeclContext *CurContext) { … }
DeclContext *Sema::computeDeclContext(QualType T) { … }
DeclContext *Sema::computeDeclContext(const CXXScopeSpec &SS,
bool EnteringContext) { … }
bool Sema::isDependentScopeSpecifier(const CXXScopeSpec &SS) { … }
CXXRecordDecl *Sema::getCurrentInstantiationOf(NestedNameSpecifier *NNS) { … }
bool Sema::RequireCompleteDeclContext(CXXScopeSpec &SS,
DeclContext *DC) { … }
bool Sema::RequireCompleteEnumDecl(EnumDecl *EnumD, SourceLocation L,
CXXScopeSpec *SS) { … }
bool Sema::ActOnCXXGlobalScopeSpecifier(SourceLocation CCLoc,
CXXScopeSpec &SS) { … }
bool Sema::ActOnSuperScopeSpecifier(SourceLocation SuperLoc,
SourceLocation ColonColonLoc,
CXXScopeSpec &SS) { … }
bool Sema::isAcceptableNestedNameSpecifier(const NamedDecl *SD,
bool *IsExtension) { … }
NamedDecl *Sema::FindFirstQualifierInScope(Scope *S, NestedNameSpecifier *NNS) { … }
namespace {
class NestedNameSpecifierValidatorCCC final
: public CorrectionCandidateCallback { … };
}
bool Sema::BuildCXXNestedNameSpecifier(Scope *S, NestedNameSpecInfo &IdInfo,
bool EnteringContext, CXXScopeSpec &SS,
NamedDecl *ScopeLookupResult,
bool ErrorRecoveryLookup,
bool *IsCorrectedToColon,
bool OnlyNamespace) { … }
bool Sema::ActOnCXXNestedNameSpecifier(Scope *S, NestedNameSpecInfo &IdInfo,
bool EnteringContext, CXXScopeSpec &SS,
bool *IsCorrectedToColon,
bool OnlyNamespace) { … }
bool Sema::ActOnCXXNestedNameSpecifierDecltype(CXXScopeSpec &SS,
const DeclSpec &DS,
SourceLocation ColonColonLoc) { … }
bool Sema::ActOnCXXNestedNameSpecifierIndexedPack(CXXScopeSpec &SS,
const DeclSpec &DS,
SourceLocation ColonColonLoc,
QualType Type) { … }
bool Sema::IsInvalidUnlessNestedName(Scope *S, CXXScopeSpec &SS,
NestedNameSpecInfo &IdInfo,
bool EnteringContext) { … }
bool Sema::ActOnCXXNestedNameSpecifier(Scope *S,
CXXScopeSpec &SS,
SourceLocation TemplateKWLoc,
TemplateTy OpaqueTemplate,
SourceLocation TemplateNameLoc,
SourceLocation LAngleLoc,
ASTTemplateArgsPtr TemplateArgsIn,
SourceLocation RAngleLoc,
SourceLocation CCLoc,
bool EnteringContext) { … }
namespace {
struct NestedNameSpecifierAnnotation { … };
}
void *Sema::SaveNestedNameSpecifierAnnotation(CXXScopeSpec &SS) { … }
void Sema::RestoreNestedNameSpecifierAnnotation(void *AnnotationPtr,
SourceRange AnnotationRange,
CXXScopeSpec &SS) { … }
bool Sema::ShouldEnterDeclaratorScope(Scope *S, const CXXScopeSpec &SS) { … }
bool Sema::ActOnCXXEnterDeclaratorScope(Scope *S, CXXScopeSpec &SS) { … }
void Sema::ActOnCXXExitDeclaratorScope(Scope *S, const CXXScopeSpec &SS) { … }