summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-10-17 19:48:13 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-10-17 19:48:13 +0000
commitbd8b150dfca4d03a4fba4407b3fad852425fdf3d (patch)
tree26a58553dd8429841358e91715ab5f7ccaef9f2b /clang/lib
parent690dccd9d4b76eebf91746b1b3d133762d9f72ec (diff)
downloadbcm5719-llvm-bd8b150dfca4d03a4fba4407b3fad852425fdf3d.tar.gz
bcm5719-llvm-bd8b150dfca4d03a4fba4407b3fad852425fdf3d.zip
Introduce ASTConsumer::HandleTopLevelDeclInObjCContainer which accepts
top-level declarations that occurred inside an ObjC container. This is useful to keep track of such decls otherwise when e.g. a function is declared inside an objc interface, it is not passed to HandleTopLevelDecl and it is not inside the DeclContext of the interface that is returned. llvm-svn: 142232
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/AST/ASTConsumer.cpp2
-rw-r--r--clang/lib/Sema/SemaDeclObjC.cpp5
2 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/AST/ASTConsumer.cpp b/clang/lib/AST/ASTConsumer.cpp
index 04a084a06a4..062f1103e91 100644
--- a/clang/lib/AST/ASTConsumer.cpp
+++ b/clang/lib/AST/ASTConsumer.cpp
@@ -20,3 +20,5 @@ void ASTConsumer::HandleTopLevelDecl(DeclGroupRef D) {}
void ASTConsumer::HandleInterestingDecl(DeclGroupRef D) {
HandleTopLevelDecl(D);
}
+
+void ASTConsumer::HandleTopLevelDeclInObjCContainer(DeclGroupRef D) {}
diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp
index 1de17d21318..669ea8f32a9 100644
--- a/clang/lib/Sema/SemaDeclObjC.cpp
+++ b/clang/lib/Sema/SemaDeclObjC.cpp
@@ -2302,6 +2302,11 @@ void Sema::ActOnAtEnd(Scope *S, SourceRange AtEnd,
}
}
ActOnObjCContainerFinishDefinition();
+
+ for (unsigned i = 0; i != tuvNum; i++) {
+ DeclGroupRef DG = allTUVars[i].getAsVal<DeclGroupRef>();
+ Consumer.HandleTopLevelDeclInObjCContainer(DG);
+ }
}
OpenPOWER on IntegriCloud