diff options
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r-- | clang/lib/Sema/Sema.cpp | 3 | ||||
-rw-r--r-- | clang/lib/Sema/Sema.h | 8 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 18 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDeclObjC.cpp | 2 |
4 files changed, 15 insertions, 16 deletions
diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp index 9e379e4be74..8c9bceae210 100644 --- a/clang/lib/Sema/Sema.cpp +++ b/clang/lib/Sema/Sema.cpp @@ -120,8 +120,7 @@ Sema::Sema(Preprocessor &pp, ASTContext &ctxt, ASTConsumer &consumer) RecordDecl::Create(Context, Decl::Struct, NULL, SourceLocation(), &IT.get("objc_object"), 0); - FieldDecl *IsaDecl = FieldDecl::Create(Context, ObjectTag, - SourceLocation(), 0, + FieldDecl *IsaDecl = FieldDecl::Create(Context, SourceLocation(), 0, Context.getObjCClassType()); ObjectTag->defineBody(&IsaDecl, 1); QualType ObjT = Context.getPointerType(Context.getTagDeclType(ObjectTag)); diff --git a/clang/lib/Sema/Sema.h b/clang/lib/Sema/Sema.h index b1d0499d137..98ecf87ce66 100644 --- a/clang/lib/Sema/Sema.h +++ b/clang/lib/Sema/Sema.h @@ -32,7 +32,7 @@ namespace clang { class ASTConsumer; class Preprocessor; class Decl; - class ContextDecl; + class DeclContext; class NamedDecl; class ScopedDecl; class Expr; @@ -75,7 +75,7 @@ class Sema : public Action { /// the method decl for the method being parsed. ObjCMethodDecl *CurMethodDecl; - ContextDecl *CurContext; + DeclContext *CurContext; /// LabelMap - This is a mapping from label identifiers to the LabelStmt for /// it (which acts like the label decl in some ways). Forward referenced @@ -250,8 +250,8 @@ private: DeclTy **Elements, unsigned NumElements); private: /// Set the current declaration context until it gets popped. - void PushContextDecl(ContextDecl *CD); - void PopContextDecl(); + void PushDeclContext(DeclContext *CD); + void PopDeclContext(); /// Subroutines of ActOnDeclarator(). TypedefDecl *ParseTypedefDecl(Scope *S, Declarator &D, QualType T, diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 882ec0e1a44..150478c1e79 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -40,14 +40,14 @@ Sema::DeclTy *Sema::isTypeName(const IdentifierInfo &II, Scope *S) { return 0; } -void Sema::PushContextDecl(ContextDecl *CD) { +void Sema::PushDeclContext(DeclContext *CD) { assert(CD->getParent() == CurContext && - "The next ContextDecl should be directly contained in the current one."); + "The next DeclContext should be directly contained in the current one."); CurContext = CD; } -void Sema::PopContextDecl() { - assert(CurContext && "ContextDecl imbalance!"); +void Sema::PopDeclContext() { + assert(CurContext && "DeclContext imbalance!"); CurContext = CurContext->getParent(); } @@ -1081,7 +1081,7 @@ Sema::DeclTy *Sema::ActOnStartOfFunctionDef(Scope *FnBodyScope, Declarator &D) { Decl *decl = static_cast<Decl*>(ActOnDeclarator(GlobalScope, D, 0)); FunctionDecl *FD = cast<FunctionDecl>(decl); CurFunctionDecl = FD; - PushContextDecl(FD); + PushDeclContext(FD); // Create Decl objects for each parameter, adding them to the FunctionDecl. llvm::SmallVector<ParmVarDecl*, 16> Params; @@ -1126,7 +1126,7 @@ Sema::DeclTy *Sema::ActOnFinishFunctionBody(DeclTy *D, StmtTy *Body) { MD->setBody((Stmt*)Body); CurMethodDecl = 0; } - PopContextDecl(); + PopDeclContext(); // Verify and clean out per-function state. // Check goto/label use. @@ -1353,8 +1353,8 @@ Sema::DeclTy *Sema::ActOnField(Scope *S, DeclTy *tagDecl, // FIXME: Chain fielddecls together. FieldDecl *NewFD; - if (RecordDecl *RD = dyn_cast<RecordDecl>(TagDecl)) - NewFD = FieldDecl::Create(Context, RD, Loc, II, T, BitWidth); + if (isa<RecordDecl>(TagDecl)) + NewFD = FieldDecl::Create(Context, Loc, II, T, BitWidth); else if (isa<ObjCInterfaceDecl>(TagDecl) || isa<ObjCImplementationDecl>(TagDecl) || isa<ObjCCategoryDecl>(TagDecl) || @@ -1362,7 +1362,7 @@ Sema::DeclTy *Sema::ActOnField(Scope *S, DeclTy *tagDecl, // properties can appear within a protocol. // See corresponding FIXME in DeclObjC.h:ObjCPropertyDecl. isa<ObjCProtocolDecl>(TagDecl)) - NewFD = ObjCIvarDecl::Create(Context, dyn_cast<ObjCInterfaceDecl>(TagDecl), Loc, II, T); + NewFD = ObjCIvarDecl::Create(Context, Loc, II, T); else assert(0 && "Sema::ActOnField(): Unknown TagDecl"); diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp index 6b9b9e2d431..9cf1b3c4259 100644 --- a/clang/lib/Sema/SemaDeclObjC.cpp +++ b/clang/lib/Sema/SemaDeclObjC.cpp @@ -33,7 +33,7 @@ void Sema::ObjCActOnStartOfMethodDef(Scope *FnBodyScope, DeclTy *D) { // Allow all of Sema to see that we are entering a method definition. CurMethodDecl = MDecl; - PushContextDecl(MDecl); + PushDeclContext(MDecl); // Create Decl objects for each parameter, entrring them in the scope for // binding to their use. |