[cfe-commits] r167417 - in /cfe/trunk/test/SemaCXX: warn-using-namespace-in-header.cpp warn-using-namespace-in-header.h

Nico Weber nicolasweber at gmx.de
Mon Nov 5 14:49:04 PST 2012


Author: nico
Date: Mon Nov  5 16:49:03 2012
New Revision: 167417

URL: http://llvm.org/viewvc/llvm-project?rev=167417&view=rev
Log:
Use Richard's BE_THE_HEADER trick to simplify a test. No intended behavior change.


Removed:
    cfe/trunk/test/SemaCXX/warn-using-namespace-in-header.h
Modified:
    cfe/trunk/test/SemaCXX/warn-using-namespace-in-header.cpp

Modified: cfe/trunk/test/SemaCXX/warn-using-namespace-in-header.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/warn-using-namespace-in-header.cpp?rev=167417&r1=167416&r2=167417&view=diff
==============================================================================
--- cfe/trunk/test/SemaCXX/warn-using-namespace-in-header.cpp (original)
+++ cfe/trunk/test/SemaCXX/warn-using-namespace-in-header.cpp Mon Nov  5 16:49:03 2012
@@ -1,54 +1,62 @@
 // RUN: %clang_cc1 -fsyntax-only -Wheader-hygiene -verify %s
 
-#include "warn-using-namespace-in-header.h"
-
-namespace dont_warn {}
-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}}
-
-
+#ifdef BE_THE_HEADER
+// Lots of vertical space to make the error line match up with the line of the
+// expected line in the source file.
+namespace warn_in_header_in_global_context {}
+using namespace warn_in_header_in_global_context; // expected-warning {{using namespace directive in global context in header}}
+
+// While we want to error on the previous using directive, we don't when we are
+// inside a namespace
+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; // expected-warning {{using namespace directive in global context in header}}
+}
+
+// This is really silly, but we should warn on it:
+extern "C++" {
+extern "C" {
+extern "C++" {
+using namespace warn_inside_linkage; // expected-warning {{using namespace directive in global context in header}}
+}
+}
+}
+
+// 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;
+}
+
+
+namespace macronamespace {}
+#define USING_MACRO using namespace macronamespace;
+
+// |using namespace| through a macro should warn if the instantiation is in a
+// header.
+USING_MACRO // expected-warning {{using namespace directive in global context in header}}
 
+#else
 
+#define BE_THE_HEADER
+#include __FILE__
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// expected-warning {{using namespace directive in global context in header}}
+namespace dont_warn {}
+using namespace dont_warn;
 
 // |using namespace| through a macro shouldn't warn if the instantiation is in a
 // cc file.
 USING_MACRO
+
+#endif

Removed: cfe/trunk/test/SemaCXX/warn-using-namespace-in-header.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/warn-using-namespace-in-header.h?rev=167416&view=auto
==============================================================================
--- cfe/trunk/test/SemaCXX/warn-using-namespace-in-header.h (original)
+++ cfe/trunk/test/SemaCXX/warn-using-namespace-in-header.h (removed)
@@ -1,50 +0,0 @@
-
-
-
-
-
-// Lots of vertical space to make the error line match up with the line of the
-// expected line in the source file.
-namespace warn_in_header_in_global_context {}
-using namespace warn_in_header_in_global_context;
-
-// While we want to error on the previous using directive, we don't when we are
-// inside a namespace
-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;
-}
-
-
-namespace macronamespace {}
-#define USING_MACRO using namespace macronamespace;
-
-// |using namespace| through a macro should warn if the instantiation is in a
-// header.
-USING_MACRO





More information about the cfe-commits mailing list