]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/27821 (ICE with invalid ptr-to-member)
authorLee Millward <lee.millward@gmail.com>
Sun, 25 Jun 2006 17:05:22 +0000 (17:05 +0000)
committerLee Millward <lmillward@gcc.gnu.org>
Sun, 25 Jun 2006 17:05:22 +0000 (17:05 +0000)
PR c++/27821
* decl.c (grokdeclarator): Return error_mark_node
on invalid uses of the scope resolution operator.

From-SVN: r114989

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

index 572286e1020704a35bc0e1616f886d8878faf47e..f9b4ab3728984c9bb9dd488364a01c7d2568d3a9 100644 (file)
@@ -1,3 +1,9 @@
+2006-06-25  Lee Millward  <lee.millward@gmail.com>
+
+       PR c++/27821
+       * decl.c (grokdeclarator): Return error_mark_node on
+       invalid uses of the scope resolution operator.
+       
 2006-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
        PR c++/28112
index 6bb0911824b3c3c9ddc3dfa5904b77c777b4067a..9edf5b8d2f8d40aea2037960aedd9139105c2508 100644 (file)
@@ -7792,7 +7792,7 @@ grokdeclarator (const cp_declarator *declarator,
          {
            /* Something like struct S { int N::j; };  */
            error ("invalid use of %<::%>");
-           decl = NULL_TREE;
+           return error_mark_node;
          }
        else if (TREE_CODE (type) == FUNCTION_TYPE)
          {
index fe73ad4ac9a0cdc732c446d57d25cf2273fb0807..1636861d44f09c141a3fcf727fb85437b9e4933f 100644 (file)
@@ -1,3 +1,8 @@
+2006-06-25  Lee Millward  <lee.millward@gmail.com>
+
+       PR c++/27821
+       * g++.dg/template/error22.C: New test.
+       
 2006-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
        PR c++/28112
diff --git a/gcc/testsuite/g++.dg/template/error22.C b/gcc/testsuite/g++.dg/template/error22.C
new file mode 100644 (file)
index 0000000..d793fe4
--- /dev/null
@@ -0,0 +1,9 @@
+//PR c++/27821
+
+struct A
+{
+    template<void (A::*)()> struct B {};
+    void ::foo(); // { dg-error "invalid use" }
+    B<&A::foo> b; // { dg-error "incomplete type|template argument" }
+};