diff options
author | Chris Lattner <sabre@nondot.org> | 2008-02-06 00:51:33 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-02-06 00:51:33 +0000 |
commit | e1e798524777271eff0cce556260cc1ec6c97e2e (patch) | |
tree | 5fd7cba60bbdc6c0534a76c9ab1369cedb0c8e41 | |
parent | 2ae34ed8caf90ca4044feca07811561053c08666 (diff) |
inform astconsumer about tagdecls as they are defined.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46788 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | Sema/SemaDecl.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/Sema/SemaDecl.cpp b/Sema/SemaDecl.cpp index 226d33773f..3eb752dcf4 100644 --- a/Sema/SemaDecl.cpp +++ b/Sema/SemaDecl.cpp @@ -12,6 +12,7 @@ //===----------------------------------------------------------------------===// #include "Sema.h" +#include "clang/AST/ASTConsumer.h" #include "clang/AST/ASTContext.h" #include "clang/AST/Builtins.h" #include "clang/AST/Decl.h" @@ -23,7 +24,7 @@ #include "clang/Basic/TargetInfo.h" #include "clang/Basic/SourceManager.h" // FIXME: layering (ideally, Sema shouldn't be dependent on Lex API's) -#include "clang/Lex/Preprocessor.h" +#include "clang/Lex/Preprocessor.h" #include "clang/Lex/HeaderSearch.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/SmallSet.h" @@ -1248,7 +1249,7 @@ Sema::DeclTy *Sema::ActOnTag(Scope *S, unsigned TagType, TagKind TK, Name->setFETokenInfo(New); S->AddDecl(New); } - + return New; } @@ -1460,9 +1461,10 @@ void Sema::ActOnFields(Scope* S, } // Okay, we successfully defined 'Record'. - if (Record) + if (Record) { Record->defineBody(&RecFields[0], RecFields.size()); - else { + Consumer.HandleTagDeclDefinition(Record); + } else { ObjCIvarDecl **ClsFields = reinterpret_cast<ObjCIvarDecl**>(&RecFields[0]); if (ObjCInterfaceDecl *ID = dyn_cast<ObjCInterfaceDecl>(EnclosingDecl)) ID->addInstanceVariablesToClass(ClsFields, RecFields.size(), RBrac); @@ -1705,6 +1707,7 @@ void Sema::ActOnEnumBody(SourceLocation EnumLoc, DeclTy *EnumDeclX, } Enum->defineElements(EltList, BestType); + Consumer.HandleTagDeclDefinition(Enum); } Sema::DeclTy* Sema::ActOnLinkageSpec(SourceLocation Loc, |