summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2011-04-02 19:45:15 +0000
committerNico Weber <nicolasweber@gmx.de>2011-04-02 19:45:15 +0000
commitcc2b8717c56c7f70aa2235bc0aab9447627290ab (patch)
tree0745b52d72494ede4b88bb12b25389fbb9d8b2cf /clang
parent6402c97eed956dbac7b9fc9d1f060067ca3f5470 (diff)
downloadbcm5719-llvm-cc2b8717c56c7f70aa2235bc0aab9447627290ab.tar.gz
bcm5719-llvm-cc2b8717c56c7f70aa2235bc0aab9447627290ab.zip
Make -Wheader-hygiene not complain about USING_NAMESPACE_THROUGH_MACRO in a non-header file.
llvm-svn: 128780
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Analysis/ReachableCode.cpp2
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp2
-rw-r--r--clang/test/SemaCXX/warn-using-namespace-in-header.cpp27
-rw-r--r--clang/test/SemaCXX/warn-using-namespace-in-header.h8
4 files changed, 37 insertions, 2 deletions
diff --git a/clang/lib/Analysis/ReachableCode.cpp b/clang/lib/Analysis/ReachableCode.cpp
index 9659e9ec3ed..9ac456f53a6 100644
--- a/clang/lib/Analysis/ReachableCode.cpp
+++ b/clang/lib/Analysis/ReachableCode.cpp
@@ -193,7 +193,7 @@ unsigned ScanReachableFromBlock(const CFGBlock &Start,
unsigned count = 0;
llvm::SmallVector<const CFGBlock*, 32> WL;
- // Prep work queue
+ // Prep work queue
Reachable.set(Start.getBlockID());
++count;
WL.push_back(&Start);
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 7ae104a5423..67396be3b02 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -3927,7 +3927,7 @@ Decl *Sema::ActOnUsingDirective(Scope *S,
IdentLoc, Named, CommonAncestor);
if (IsUsingDirectiveInToplevelContext(CurContext) &&
- !SourceMgr.isFromMainFile(IdentLoc)) {
+ !SourceMgr.isFromMainFile(SourceMgr.getInstantiationLoc(IdentLoc))) {
Diag(IdentLoc, diag::warn_using_directive_in_header);
}
diff --git a/clang/test/SemaCXX/warn-using-namespace-in-header.cpp b/clang/test/SemaCXX/warn-using-namespace-in-header.cpp
index e040ca74cbf..72c25529b40 100644
--- a/clang/test/SemaCXX/warn-using-namespace-in-header.cpp
+++ b/clang/test/SemaCXX/warn-using-namespace-in-header.cpp
@@ -25,3 +25,30 @@ using namespace dont_warn;
// expected-warning {{using namespace directive in global context in header}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// expected-warning {{using namespace directive in global context in header}}
+
+// |using namespace| through a macro shouldn't warn if the instantiation is in a
+// cc file.
+USING_MACRO
diff --git a/clang/test/SemaCXX/warn-using-namespace-in-header.h b/clang/test/SemaCXX/warn-using-namespace-in-header.h
index 57bb5d91be4..b544c548ae9 100644
--- a/clang/test/SemaCXX/warn-using-namespace-in-header.h
+++ b/clang/test/SemaCXX/warn-using-namespace-in-header.h
@@ -40,3 +40,11 @@ using namespace warn_in_header_in_global_context;
inline void foo() {
using namespace warn_in_header_in_global_context;
}
+
+
+namespace macronamespace {}
+#define USING_MACRO using namespace macronamespace;
+
+// |using namespace| through a macro should warn if the instantiation is in a
+// header.
+USING_MACRO
OpenPOWER on IntegriCloud