OSDN Git Service

2007-02-23 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 23 Feb 2007 11:08:39 +0000 (11:08 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 23 Feb 2007 11:08:39 +0000 (11:08 +0000)
* class.c (note_name_declared_in_class): Make declaration
changes meaning a pedwarn.

* g++.dg/warn/changes-meaning.C: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122255 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/class.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/changes-meaning.C [new file with mode: 0644]

index 63dddf9..bdef6b5 100644 (file)
@@ -1,3 +1,8 @@
+2007-02-23  Richard Guenther  <rguenther@suse.de>
+
+       * class.c (note_name_declared_in_class): Make declaration
+       changes meaning a pedwarn.
+
 2007-02-22  Michael Matz  <matz@suse.de>
 
        PR c++/29433
index 0f19b67..f24a2fe 100644 (file)
@@ -6299,9 +6299,9 @@ note_name_declared_in_class (tree name, tree decl)
         A name N used in a class S shall refer to the same declaration
         in its context and when re-evaluated in the completed scope of
         S.  */
-      error ("declaration of %q#D", decl);
-      error ("changes meaning of %qD from %q+#D",
-            DECL_NAME (OVL_CURRENT (decl)), (tree) n->value);
+      pedwarn ("declaration of %q#D", decl);
+      pedwarn ("changes meaning of %qD from %q+#D",
+              DECL_NAME (OVL_CURRENT (decl)), (tree) n->value);
     }
 }
 
index cab1453..550665f 100644 (file)
@@ -1,3 +1,7 @@
+2007-02-23  Richard Guenther  <rguenther@suse.de>
+
+       * g++.dg/warn/changes-meaning.C: New testcase.
+
 2007-02-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libgfortran/30910    
diff --git a/gcc/testsuite/g++.dg/warn/changes-meaning.C b/gcc/testsuite/g++.dg/warn/changes-meaning.C
new file mode 100644 (file)
index 0000000..fdbddf8
--- /dev/null
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-fpermissive" } */
+
+template <class _Tp> class auto_ptr {};  /* { dg-warning "changes meaning" } */
+template <class _Tp>
+class counted_ptr
+{
+public:
+  auto_ptr<_Tp> auto_ptr(); /* { dg-warning "" } */
+};
+