зеркало из https://github.com/microsoft/clang-1.git
Struggle mightily against header inclusion in Sema.h.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111904 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
60d7b3a319
Коммит
7cd088e519
|
@ -321,21 +321,6 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
/// ObjCMethodList - a linked list of methods with different signatures.
|
||||
struct ObjCMethodList {
|
||||
ObjCMethodDecl *Method;
|
||||
ObjCMethodList *Next;
|
||||
|
||||
ObjCMethodList() {
|
||||
Method = 0;
|
||||
Next = 0;
|
||||
}
|
||||
ObjCMethodList(ObjCMethodDecl *M, ObjCMethodList *C) {
|
||||
Method = M;
|
||||
Next = C;
|
||||
}
|
||||
};
|
||||
|
||||
/// ObjCContainerDecl - Represents a container for method declarations.
|
||||
/// Current sub-classes are ObjCInterfaceDecl, ObjCCategoryDecl,
|
||||
/// ObjCProtocolDecl, and ObjCImplDecl.
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#define LLVM_CLANG_AST_EXTERNAL_AST_SOURCE_H
|
||||
|
||||
#include "clang/AST/DeclarationName.h"
|
||||
#include "clang/AST/DeclBase.h"
|
||||
#include "clang/AST/Type.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include <cassert>
|
||||
|
@ -22,8 +23,6 @@
|
|||
namespace clang {
|
||||
|
||||
class ASTConsumer;
|
||||
class Decl;
|
||||
class DeclContext;
|
||||
class ExternalSemaSource; // layering violation required for downcasting
|
||||
class Stmt;
|
||||
|
||||
|
|
|
@ -13,8 +13,8 @@
|
|||
#ifndef LLVM_CLANG_SEMA_EXTERNAL_SEMA_SOURCE_H
|
||||
#define LLVM_CLANG_SEMA_EXTERNAL_SEMA_SOURCE_H
|
||||
|
||||
#include "clang/AST/DeclObjC.h"
|
||||
#include "clang/AST/ExternalASTSource.h"
|
||||
#include "clang/Sema/ObjCMethodList.h"
|
||||
|
||||
namespace clang {
|
||||
|
||||
|
|
|
@ -16,13 +16,16 @@
|
|||
#define LLVM_CLANG_AST_SEMA_IDENTIFIERRESOLVER_H
|
||||
|
||||
#include "clang/Basic/IdentifierTable.h"
|
||||
#include "clang/Sema/Scope.h"
|
||||
#include "clang/AST/Decl.h"
|
||||
#include "clang/AST/DeclarationName.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
|
||||
namespace clang {
|
||||
|
||||
class ASTContext;
|
||||
class Decl;
|
||||
class DeclContext;
|
||||
class DeclarationName;
|
||||
class NamedDecl;
|
||||
class Scope;
|
||||
|
||||
/// IdentifierResolver - Keeps track of shadowed decls on enclosing
|
||||
/// scopes. It manages the shadowing chains of declaration names and
|
||||
/// implements efficent decl lookup based on a declaration name.
|
||||
|
@ -95,6 +98,8 @@ public:
|
|||
}
|
||||
|
||||
friend class IdentifierResolver;
|
||||
|
||||
void incrementSlowCase();
|
||||
public:
|
||||
iterator() : Ptr(0) {}
|
||||
|
||||
|
@ -116,18 +121,8 @@ public:
|
|||
iterator& operator++() {
|
||||
if (!isIterator()) // common case.
|
||||
Ptr = 0;
|
||||
else {
|
||||
NamedDecl *D = **this;
|
||||
void *InfoPtr = D->getDeclName().getFETokenInfo<void>();
|
||||
assert(!isDeclPtr(InfoPtr) && "Decl with wrong id ?");
|
||||
IdDeclInfo *Info = toIdDeclInfo(InfoPtr);
|
||||
|
||||
BaseIter I = getIterator();
|
||||
if (I != Info->decls_begin())
|
||||
*this = iterator(I-1);
|
||||
else // No more decls.
|
||||
*this = iterator();
|
||||
}
|
||||
else
|
||||
incrementSlowCase();
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
//===--- ObjCMethodList.h - A singly linked list of methods -----*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file defines ObjCMethodList, a singly-linked list of methods.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_CLANG_SEMA_OBJC_METHOD_LIST_H
|
||||
#define LLVM_CLANG_SEMA_OBJC_METHOD_LIST_H
|
||||
|
||||
namespace clang {
|
||||
|
||||
class ObjCMethodDecl;
|
||||
|
||||
/// ObjCMethodList - a linked list of methods with different signatures.
|
||||
struct ObjCMethodList {
|
||||
ObjCMethodDecl *Method;
|
||||
ObjCMethodList *Next;
|
||||
|
||||
ObjCMethodList() {
|
||||
Method = 0;
|
||||
Next = 0;
|
||||
}
|
||||
ObjCMethodList(ObjCMethodDecl *M, ObjCMethodList *C) {
|
||||
Method = M;
|
||||
Next = C;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
|
@ -12,24 +12,19 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_CLANG_AST_SEMA_H
|
||||
#define LLVM_CLANG_AST_SEMA_H
|
||||
#ifndef LLVM_CLANG_SEMA_SEMA_H
|
||||
#define LLVM_CLANG_SEMA_SEMA_H
|
||||
|
||||
#include "clang/Sema/Action.h"
|
||||
#include "clang/Sema/IdentifierResolver.h"
|
||||
#include "clang/Sema/CodeCompleteConsumer.h"
|
||||
#include "clang/Sema/CXXFieldCollector.h"
|
||||
#include "clang/Sema/ObjCMethodList.h"
|
||||
#include "clang/Sema/Overload.h"
|
||||
#include "clang/Sema/Template.h"
|
||||
#include "clang/Sema/AnalysisBasedWarnings.h"
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/AST/DeclBase.h"
|
||||
#include "clang/AST/Decl.h"
|
||||
#include "clang/AST/DeclObjC.h"
|
||||
#include "clang/AST/DeclTemplate.h"
|
||||
#include "clang/AST/ExprCXX.h"
|
||||
#include "clang/AST/FullExpr.h"
|
||||
#include "clang/Sema/Scope.h"
|
||||
#include "clang/Sema/SemaDiagnostic.h"
|
||||
#include "clang/AST/ExprCXX.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/ADT/DenseSet.h"
|
||||
#include "llvm/ADT/SmallPtrSet.h"
|
||||
|
@ -83,8 +78,12 @@ namespace clang {
|
|||
class TemplateArgumentList;
|
||||
class TemplateParameterList;
|
||||
class TemplateTemplateParmDecl;
|
||||
class MultiLevelTemplateArgumentList;
|
||||
class DeducedTemplateArgument;
|
||||
class TemplatePartialOrderingContext;
|
||||
class ClassTemplatePartialSpecializationDecl;
|
||||
class ClassTemplateDecl;
|
||||
template <class T> class ObjCList;
|
||||
class ObjCInterfaceDecl;
|
||||
class ObjCCompatibleAliasDecl;
|
||||
class ObjCProtocolDecl;
|
||||
|
@ -855,9 +854,7 @@ public:
|
|||
CXXScopeSpec *SS,
|
||||
ParsedType &SuggestedType);
|
||||
|
||||
virtual Decl *ActOnDeclarator(Scope *S, Declarator &D) {
|
||||
return HandleDeclarator(S, D, MultiTemplateParamsArg(*this), false);
|
||||
}
|
||||
virtual Decl *ActOnDeclarator(Scope *S, Declarator &D);
|
||||
|
||||
Decl *HandleDeclarator(Scope *S, Declarator &D,
|
||||
MultiTemplateParamsArg TemplateParameterLists,
|
||||
|
@ -2323,8 +2320,8 @@ public:
|
|||
/// BuildCXXDefaultArgExpr - Creates a CXXDefaultArgExpr, instantiating
|
||||
/// the default expr if needed.
|
||||
ExprResult BuildCXXDefaultArgExpr(SourceLocation CallLoc,
|
||||
FunctionDecl *FD,
|
||||
ParmVarDecl *Param);
|
||||
FunctionDecl *FD,
|
||||
ParmVarDecl *Param);
|
||||
|
||||
/// FinalizeVarWithDestructor - Prepare for calling destructor on the
|
||||
/// constructed variable.
|
||||
|
|
|
@ -101,7 +101,7 @@ namespace clang {
|
|||
};
|
||||
|
||||
/// \brief The context in which partial ordering of function templates occurs.
|
||||
enum TemplatePartialOrderingContext {
|
||||
enum TPOC {
|
||||
/// \brief Partial ordering of function templates for a function call.
|
||||
TPOC_Call,
|
||||
/// \brief Partial ordering of function templates for a call to a
|
||||
|
@ -113,6 +113,17 @@ namespace clang {
|
|||
TPOC_Other
|
||||
};
|
||||
|
||||
// This is lame but unavoidable in a world without forward
|
||||
// declarations of enums. The alternatives are to either pollute
|
||||
// Sema.h (by including this file) or sacrifice type safety (by
|
||||
// making Sema.h declare things as enums).
|
||||
class TemplatePartialOrderingContext {
|
||||
TPOC Value;
|
||||
public:
|
||||
TemplatePartialOrderingContext(TPOC Value) : Value(Value) {}
|
||||
operator TPOC() const { return Value; }
|
||||
};
|
||||
|
||||
/// \brief Captures a template argument whose value has been deduced
|
||||
/// via c++ template argument deduction.
|
||||
class DeducedTemplateArgument : public TemplateArgument {
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include "clang/Sema/Sema.h"
|
||||
#include "clang/Sema/AnalysisBasedWarnings.h"
|
||||
#include "clang/Basic/SourceManager.h"
|
||||
#include "clang/AST/DeclObjC.h"
|
||||
#include "clang/AST/ExprObjC.h"
|
||||
#include "clang/AST/ExprCXX.h"
|
||||
#include "clang/AST/StmtObjC.h"
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "clang/Sema/Scope.h"
|
||||
#include "clang/Sema/Sema.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
#include "clang/AST/DeclObjC.h"
|
||||
#include "clang/Lex/Preprocessor.h"
|
||||
#include "clang-c/Index.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Sema/IdentifierResolver.h"
|
||||
#include "clang/Sema/Scope.h"
|
||||
#include "clang/AST/Decl.h"
|
||||
#include "clang/Basic/LangOptions.h"
|
||||
|
||||
using namespace clang;
|
||||
|
@ -271,3 +273,16 @@ IdentifierResolver::IdDeclInfoMap::operator[](DeclarationName Name) {
|
|||
++CurIndex;
|
||||
return *IDI;
|
||||
}
|
||||
|
||||
void IdentifierResolver::iterator::incrementSlowCase() {
|
||||
NamedDecl *D = **this;
|
||||
void *InfoPtr = D->getDeclName().getFETokenInfo<void>();
|
||||
assert(!isDeclPtr(InfoPtr) && "Decl with wrong id ?");
|
||||
IdDeclInfo *Info = toIdDeclInfo(InfoPtr);
|
||||
|
||||
BaseIter I = getIterator();
|
||||
if (I != Info->decls_begin())
|
||||
*this = iterator(I-1);
|
||||
else // No more decls.
|
||||
*this = iterator();
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "clang/Sema/Lookup.h"
|
||||
#include "clang/Sema/CodeCompleteConsumer.h"
|
||||
#include "clang/Sema/ExternalSemaSource.h"
|
||||
#include "clang/AST/DeclObjC.h"
|
||||
#include "clang/AST/ExprCXX.h"
|
||||
#include "clang/AST/ExprObjC.h"
|
||||
#include "clang/Lex/MacroInfo.h"
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "clang/AST/ASTConsumer.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/CXXInheritance.h"
|
||||
#include "clang/AST/DeclObjC.h"
|
||||
#include "clang/AST/DeclTemplate.h"
|
||||
#include "clang/AST/ExprCXX.h"
|
||||
#include "clang/AST/StmtCXX.h"
|
||||
|
@ -2177,6 +2178,10 @@ static bool RebuildDeclaratorInCurrentInstantiation(Sema &S, Declarator &D,
|
|||
return false;
|
||||
}
|
||||
|
||||
Decl *Sema::ActOnDeclarator(Scope *S, Declarator &D) {
|
||||
return HandleDeclarator(S, D, MultiTemplateParamsArg(*this), false);
|
||||
}
|
||||
|
||||
Decl *Sema::HandleDeclarator(Scope *S, Declarator &D,
|
||||
MultiTemplateParamsArg TemplateParamLists,
|
||||
bool IsFunctionDefinition) {
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#include "clang/Sema/Designator.h"
|
||||
#include "clang/Sema/Scope.h"
|
||||
#include "clang/Sema/ParsedTemplate.h"
|
||||
#include "clang/Sema/Template.h"
|
||||
using namespace clang;
|
||||
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include "clang/Sema/Lookup.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/CXXInheritance.h"
|
||||
#include "clang/AST/DeclObjC.h"
|
||||
#include "clang/AST/ExprCXX.h"
|
||||
#include "clang/AST/ExprObjC.h"
|
||||
#include "clang/AST/TypeLoc.h"
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "clang/Sema/Sema.h"
|
||||
#include "clang/Lex/Preprocessor.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/DeclObjC.h"
|
||||
#include "clang/AST/ExprCXX.h"
|
||||
#include "clang/AST/ExprObjC.h"
|
||||
#include "clang/AST/TypeLoc.h"
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
#include "clang/Sema/Sema.h"
|
||||
#include "clang/Sema/Initialization.h"
|
||||
#include "clang/AST/DeclObjC.h"
|
||||
#include "clang/AST/ExprObjC.h"
|
||||
|
||||
using namespace clang;
|
||||
|
|
|
@ -14,10 +14,12 @@
|
|||
#include "clang/Sema/Sema.h"
|
||||
#include "clang/Sema/Lookup.h"
|
||||
#include "clang/Sema/Initialization.h"
|
||||
#include "clang/Sema/Template.h"
|
||||
#include "clang/Basic/Diagnostic.h"
|
||||
#include "clang/Lex/Preprocessor.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/CXXInheritance.h"
|
||||
#include "clang/AST/DeclObjC.h"
|
||||
#include "clang/AST/Expr.h"
|
||||
#include "clang/AST/ExprCXX.h"
|
||||
#include "clang/AST/TypeOrdering.h"
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include "clang/Sema/Sema.h"
|
||||
#include "clang/Sema/Lookup.h"
|
||||
#include "clang/Sema/Template.h"
|
||||
#include "TreeTransform.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/Expr.h"
|
||||
|
|
|
@ -12,7 +12,9 @@
|
|||
|
||||
#include "clang/Sema/Sema.h"
|
||||
#include "clang/Sema/DeclSpec.h"
|
||||
#include "clang/Sema/Template.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/DeclObjC.h"
|
||||
#include "clang/AST/DeclTemplate.h"
|
||||
#include "clang/AST/StmtVisitor.h"
|
||||
#include "clang/AST/Expr.h"
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "TreeTransform.h"
|
||||
#include "clang/Sema/DeclSpec.h"
|
||||
#include "clang/Sema/Lookup.h"
|
||||
#include "clang/Sema/Template.h"
|
||||
#include "clang/AST/ASTConsumer.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/Expr.h"
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
//===----------------------------------------------------------------------===/
|
||||
#include "clang/Sema/Sema.h"
|
||||
#include "clang/Sema/Lookup.h"
|
||||
#include "clang/Sema/Template.h"
|
||||
#include "clang/AST/ASTConsumer.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/DeclTemplate.h"
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Sema/Sema.h"
|
||||
#include "clang/Sema/Template.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/CXXInheritance.h"
|
||||
#include "clang/AST/DeclObjC.h"
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include "clang/Sema/Lookup.h"
|
||||
#include "clang/Sema/SemaDiagnostic.h"
|
||||
#include "clang/AST/Decl.h"
|
||||
#include "clang/AST/DeclObjC.h"
|
||||
#include "clang/AST/Expr.h"
|
||||
#include "clang/AST/ExprCXX.h"
|
||||
#include "clang/AST/ExprObjC.h"
|
||||
|
|
Загрузка…
Ссылка в новой задаче