re PR c++/43824 (C++0x feature "inline namespace" enabled under -std=c++98; no warnings)
authorRodrigo Rivas Costa <rodrigorivascosta@gmail.com>
Fri, 10 Sep 2010 18:28:59 +0000 (18:28 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 10 Sep 2010 18:28:59 +0000 (14:28 -0400)
PR c++/43824
* error.c (maybe_warn_cpp0x): Add new warning
CPP0X_INLINE_NAMESPACES.
* parser.c (cp_parser_namespace_definition): Likewise.
* cp-tree.h (cpp0x_warn_str): Likewise.

From-SVN: r164201

12 files changed:
gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/error.c
gcc/cp/parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/inline-ns3.C
gcc/testsuite/g++.dg/cpp0x/inline-ns4.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/inline-ns5.C [new file with mode: 0644]
gcc/testsuite/g++.dg/lookup/strong-using-1.C
gcc/testsuite/g++.dg/lookup/strong-using-2.C
gcc/testsuite/g++.dg/lookup/strong-using-3.C
gcc/testsuite/g++.dg/lookup/strong-using-5.C

index a5d46a8..5c58733 100644 (file)
@@ -1,3 +1,11 @@
+2010-09-10  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
+
+       PR c++/43824
+       * error.c (maybe_warn_cpp0x): Add new warning
+       CPP0X_INLINE_NAMESPACES.
+       * parser.c (cp_parser_namespace_definition): Likewise.
+       * cp-tree.h (cpp0x_warn_str): Likewise.
+
 2010-09-10  Richard Guenther  <rguenther@suse.de>
 
        * decl.c (reshape_init_vector): For VECTOR_TYPEs, use
index cb3b55f..bf8017e 100644 (file)
@@ -387,7 +387,9 @@ typedef enum cpp0x_warn_str
   /* scoped enums */
   CPP0X_SCOPED_ENUMS,
   /* defaulted and deleted functions */
-  CPP0X_DEFAULTED_DELETED
+  CPP0X_DEFAULTED_DELETED,
+  /* inline namespaces */
+  CPP0X_INLINE_NAMESPACES
 } cpp0x_warn_str;
   
 /* The various kinds of operation used by composite_pointer_type. */
index 2bcc35b..981b71f 100644 (file)
@@ -3028,6 +3028,11 @@ maybe_warn_cpp0x (cpp0x_warn_str str)
        pedwarn (input_location, 0,
                 "defaulted and deleted functions "
                 "only available with -std=c++0x or -std=gnu++0x");
+       break;
+      case CPP0X_INLINE_NAMESPACES:
+       pedwarn (input_location, OPT_pedantic,
+                "inline namespaces "
+                "only available with -std=c++0x or -std=gnu++0x");
        break;  
       default:
        gcc_unreachable();
index 8faf21d..3f2c4de 100644 (file)
@@ -13255,6 +13255,7 @@ cp_parser_namespace_definition (cp_parser* parser)
 
   if (cp_lexer_next_token_is_keyword (parser->lexer, RID_INLINE))
     {
+      maybe_warn_cpp0x (CPP0X_INLINE_NAMESPACES);
       is_inline = true;
       cp_lexer_consume_token (parser->lexer);
     }
index 9815d18..da33e09 100644 (file)
@@ -1,3 +1,15 @@
+2010-09-10  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
+
+       PR c++/43824
+       * g++.dg/lookup/strong-using-1.C: Set dg-options to "".
+       * g++.dg/lookup/strong-using-2.C: Likewise.
+       * g++.dg/lookup/strong-using-3.C: Likewise.
+       * g++.dg/lookup/strong-using-5.C: Likewise.
+
+       * g++.dg/cpp0x/inline-ns3.C: Add -std=c++0x.
+       * g++.dg/cpp0x/inline-ns4.C: New.
+       * g++.dg/cpp0x/inline-ns5.C: New.
+
 2010-09-10  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR middle-end/45634
index 8981a57..7c9d6b9 100644 (file)
@@ -1,3 +1,5 @@
+// { dg-options -std=c++0x }
+
 namespace C
 {
   void f();
diff --git a/gcc/testsuite/g++.dg/cpp0x/inline-ns4.C b/gcc/testsuite/g++.dg/cpp0x/inline-ns4.C
new file mode 100644 (file)
index 0000000..25caefc
--- /dev/null
@@ -0,0 +1,2 @@
+// { dg-options "-std=gnu++98 -pedantic" }
+inline namespace { } // { dg-warning "inline namespaces" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/inline-ns5.C b/gcc/testsuite/g++.dg/cpp0x/inline-ns5.C
new file mode 100644 (file)
index 0000000..20a3dc6
--- /dev/null
@@ -0,0 +1,2 @@
+// { dg-options "-std=gnu++98 -pedantic-errors" }
+inline namespace { } // { dg-error "inline namespaces" }
index 739dc93..aa0c5f9 100644 (file)
@@ -1,5 +1,6 @@
 // PR c++/13594 (secondary)
 
+// { dg-options "" }
 // { dg-do compile }
 
 namespace fool {
index 314aa52..38bb54c 100644 (file)
@@ -1,5 +1,6 @@
 // PR c++/13594
 
+// { dg-options "" }
 // { dg-do compile }
 
 namespace foo {
index 17c5032..7679c6f 100644 (file)
@@ -1,5 +1,6 @@
 // PR c++/13659
 
+// { dg-options "" }
 // { dg-do compile }
 
 namespace bar {
index 789c8e3..555adb0 100644 (file)
@@ -1,5 +1,7 @@
 // PR c++/33486
 
+// { dg-options "" }
+
 namespace A
 {
   inline namespace B