PR c++/38637
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 29 Dec 2008 08:28:06 +0000 (08:28 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 29 Dec 2008 08:28:06 +0000 (08:28 +0000)
* decl.c (start_enum): If enumtype is error_mark_node, exit early.

* g++.dg/cpp0x/enum2.C: New test.

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

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

index df04c1b..8611d92 100644 (file)
@@ -1,3 +1,8 @@
+2008-12-29  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/38637
+       * decl.c (start_enum): If enumtype is error_mark_node, exit early.
+
 2008-12-28  Jakub Jelinek  <jakub@redhat.com>
 
        PR c++/38650
index efc7e2e..76482d2 100644 (file)
@@ -10891,6 +10891,9 @@ start_enum (tree name, tree underlying_type, bool scoped_enum_p)
       enumtype = pushtag (name, enumtype, /*tag_scope=*/ts_current);
     }
 
+  if (enumtype == error_mark_node)
+    return enumtype;
+
   if (scoped_enum_p)
     {
       SET_SCOPED_ENUM_P (enumtype, 1);
index 42cc3da..33f1b47 100644 (file)
@@ -1,3 +1,8 @@
+2008-12-29  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/38637
+       * g++.dg/cpp0x/enum2.C: New test.
+
 2008-12-28  Andrew Pinski  <pinskia@gmail.com>
 
        PR libobjc/36610
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum2.C b/gcc/testsuite/g++.dg/cpp0x/enum2.C
new file mode 100644 (file)
index 0000000..2353f1d
--- /dev/null
@@ -0,0 +1,5 @@
+// PR c++/38637
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+template<int> enum E : int { e };      // { dg-error "template declaration of" }