diff options
author | Nico Weber <nicolasweber@gmx.de> | 2011-04-02 19:45:15 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2011-04-02 19:45:15 +0000 |
commit | cc2b8717c56c7f70aa2235bc0aab9447627290ab (patch) | |
tree | 0745b52d72494ede4b88bb12b25389fbb9d8b2cf /clang | |
parent | 6402c97eed956dbac7b9fc9d1f060067ca3f5470 (diff) | |
download | bcm5719-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.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 2 | ||||
-rw-r--r-- | clang/test/SemaCXX/warn-using-namespace-in-header.cpp | 27 | ||||
-rw-r--r-- | clang/test/SemaCXX/warn-using-namespace-in-header.h | 8 |
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 |