summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/SemaCXX/warn-using-namespace-in-header.cpp18
-rw-r--r--clang/test/SemaCXX/warn-using-namespace-in-header.h27
2 files changed, 45 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/warn-using-namespace-in-header.cpp b/clang/test/SemaCXX/warn-using-namespace-in-header.cpp
index 393e097df59..e040ca74cbf 100644
--- a/clang/test/SemaCXX/warn-using-namespace-in-header.cpp
+++ b/clang/test/SemaCXX/warn-using-namespace-in-header.cpp
@@ -7,3 +7,21 @@ using namespace dont_warn;
// Warning is actually in the header but only the cpp file gets scanned.
// expected-warning {{using namespace directive in global context in header}}
+
+
+
+
+
+
+
+
+
+// Warn inside linkage specs too.
+// expected-warning {{using namespace directive in global context in header}}
+
+
+
+
+
+
+// expected-warning {{using namespace directive in global context in header}}
diff --git a/clang/test/SemaCXX/warn-using-namespace-in-header.h b/clang/test/SemaCXX/warn-using-namespace-in-header.h
index 677c4ac51ae..57bb5d91be4 100644
--- a/clang/test/SemaCXX/warn-using-namespace-in-header.h
+++ b/clang/test/SemaCXX/warn-using-namespace-in-header.h
@@ -13,3 +13,30 @@ using namespace warn_in_header_in_global_context;
namespace dont_warn_here {
using namespace warn_in_header_in_global_context;
}
+
+// We should warn in toplevel extern contexts.
+namespace warn_inside_linkage {}
+extern "C++" {
+using namespace warn_inside_linkage;
+}
+
+// This is really silly, but we should warn on it:
+extern "C++" {
+extern "C" {
+extern "C++" {
+using namespace warn_inside_linkage;
+}
+}
+}
+
+// But we shouldn't warn in extern contexts inside namespaces.
+namespace dont_warn_here {
+extern "C++" {
+using namespace warn_in_header_in_global_context;
+}
+}
+
+// We also shouldn't warn in case of functions.
+inline void foo() {
+ using namespace warn_in_header_in_global_context;
+}
OpenPOWER on IntegriCloud