OSDN Git Service

/cp
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 16 Oct 2013 22:20:35 +0000 (22:20 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 16 Oct 2013 22:20:35 +0000 (22:20 +0000)
2013-10-16  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/58633
* parser.c (cp_parser_pseudo_destructor_name): Revert r174385 changes.

/testsuite
2013-10-16  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/58633
* g++.dg/cpp0x/decltype57.C: New.
* g++.dg/cpp0x/enum18.C: Revert r174385 changes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@203731 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/decltype57.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/enum18.C

index 35b41c0..57246b2 100644 (file)
@@ -1,3 +1,8 @@
+2013-10-16  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/58633
+       * parser.c (cp_parser_pseudo_destructor_name): Revert r174385 changes.
+
 2013-09-13  Jason Merrill  <jason@redhat.com>
 
        PR c++/58273
index 8f09b97..c230d90 100644 (file)
@@ -6317,10 +6317,6 @@ cp_parser_pseudo_destructor_name (cp_parser* parser,
   /* Look for the `~'.  */
   cp_parser_require (parser, CPP_COMPL, RT_COMPL);
 
-  /* Once we see the ~, this has to be a pseudo-destructor.  */
-  if (!processing_template_decl && !cp_parser_error_occurred (parser))
-    cp_parser_commit_to_tentative_parse (parser);
-
   /* Look for the type-name again.  We are not responsible for
      checking that it matches the first type-name.  */
   *type = cp_parser_nonclass_name (parser);
index 9861f91..aa8d6b1 100644 (file)
@@ -1,3 +1,9 @@
+2013-10-16  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/58633
+       * g++.dg/cpp0x/decltype57.C: New.
+       * g++.dg/cpp0x/enum18.C: Revert r174385 changes.
+
 2013-09-23  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gnat.dg/opt28.ad[sb]: New test.
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype57.C b/gcc/testsuite/g++.dg/cpp0x/decltype57.C
new file mode 100644 (file)
index 0000000..353cc72
--- /dev/null
@@ -0,0 +1,8 @@
+// PR c++/58633
+// { dg-do compile { target c++11 } }
+
+void foo(int i)
+{
+  typedef int I;
+  decltype(i.I::~I())* p;
+}
index 306ed82..7361595 100644 (file)
@@ -4,5 +4,5 @@
 int main(void) {
   enum e {};
   e ev;
-  ev.e::~e_u();        // { dg-error "e_u. has not been declared" }
+  ev.e::~e_u();        // { dg-error "" }
 }