OSDN Git Service

/cp
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 14 Aug 2008 15:11:01 +0000 (15:11 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 14 Aug 2008 15:11:01 +0000 (15:11 +0000)
2008-08-14  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/34600
* decl.c (grokdeclarator): In case of extern and initializer, return
error_mark_node after the error.

/testsuite
2008-08-14  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/34600
* g++.dg/parse/crash43.C: New.

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

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

index e34fb22..48aab06 100644 (file)
@@ -1,3 +1,9 @@
+2008-08-14  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/34600
+       * decl.c (grokdeclarator): In case of extern and initializer, return
+       error_mark_node after the error.
+
 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
 
        PR 30551
index 3cd2511..b053160 100644 (file)
@@ -9270,7 +9270,10 @@ grokdeclarator (const cp_declarator *declarator,
              warning (0, "%qs initialized and declared %<extern%>", name);
          }
        else
-         error ("%qs has both %<extern%> and initializer", name);
+         {
+           error ("%qs has both %<extern%> and initializer", name);
+           return error_mark_node;
+         }
       }
 
     /* Record `register' declaration for warnings on &
index bdbc354..5355b4d 100644 (file)
@@ -1,3 +1,8 @@
+2008-08-14  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/34600
+       * g++.dg/parse/crash43.C: New.
+
 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
 
         PR c/28152
diff --git a/gcc/testsuite/g++.dg/parse/crash43.C b/gcc/testsuite/g++.dg/parse/crash43.C
new file mode 100644 (file)
index 0000000..84fe8c5
--- /dev/null
@@ -0,0 +1,9 @@
+// PR c++/34600
+
+namespace N
+{
+  void foo()
+  {
+    extern int i = 0; // { dg-error "error: 'i' has both 'extern' and initializer" }
+  }
+}