Compiling the following (illegal) code snipped... ----------<crashme.cc>----------- class A { enum E { ee=0 }; }; class B { static void foo(int x,A::e); }; void B::foo(int x,A::e) { } ------------------------ ...and you get ----------<compiler outpot>---------- crashme.cc:9: error: no type `e' in `A' crashme.cc:8: warning: all member functions in class `B' are private crashme.cc:12: error: no type `e' in `A' crashme.cc:13: internal compiler error: in grokdeclarator, at cp/decl.c:11304 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions. --------------------------- This seems to be the minimal test case. I can't strip it down any more. Release: gcc (GCC) 3.3 20030104 (prerelease) Environment: Linux i686 How-To-Repeat: See above.
Fix: Don't know.
State-Changed-From-To: open->closed State-Changed-Why: Fixed in gcc 3.4 with the new parser. The code crashes the compiler at least since gcc 2.95.x (the "confused by earlier errors, bailing out" messages in release versions are just hidden ICEs after a suitable error message). With the new parser we get: PR9173.cc:9: error: variable or field `foo' declared void PR9173.cc:9: error: expected function-definition PR9173.cc:12: error: variable or field `foo' declared void PR9173.cc:12: error: `int B::foo' is not a static member of `class B' PR9173.cc:12: error: expected primary-expression PR9173.cc:12: error: `e' is not a member of `class A' PR9173.cc:12: error: initializer list being treated as compound expression PR9173.cc:12: error: expected `,' or `;' I'll add this to the testsuite soon.
From: reichelt@gcc.gnu.org To: gcc-gnats@gcc.gnu.org Cc: Subject: c++/9173 Date: 22 Jan 2003 23:21:52 -0000 CVSROOT: /cvs/gcc Module name: gcc Changes by: reichelt@gcc.gnu.org 2003-01-22 23:21:51 Modified files: gcc/testsuite : ChangeLog Added files: gcc/testsuite/g++.dg/parse: ret-type1.C tmpl-outside1.C int-as-enum1.C no-typename1.C no-value1.C wrong-inline1.C ref1.C attr-ctor1.C namespace5.C func-def1.C undefined1.C specialization1.C struct-as-enum1.C undefined2.C Log message: PR c++/2738 * g++.dg/parse/ret-type1.C: New test. PR c++/3792 * g++.dg/parse/tmpl-outside1.C: New test. PR c++/4207 * g++.dg/parse/int-as-enum1.C: New test. PR c++/4903 * g++.dg/parse/no-typename1.C: New test. PR c++/5533 * g++.dg/parse/no-value1.C: New test. PR c++/5921 * g++.dg/parse/wrong-inline1.C: New test. PR c++/6402 * g++.dg/parse/ref1.C: New test. PR c++/6992 * g++.dg/parse/attr-ctor1.C: New test. PR c++/7229 * g++.dg/parse/namespace5.C: New test. PR c++/7917 * g++.dg/parse/func-def1.C: New test. PR c++/8143 * g++.dg/parse/undefined1.C: New test. PR c++/5723, PR c++/8522 * g++.dg/parse/specialization1.C: New test. PR c++/163, PR c++/8595 * g++.dg/parse/struct-as-enum1.C: New test. PR c++/9173 * g++.dg/parse/undefined2.C: New test. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.2361&r2=1.2362 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/ret-type1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/tmpl-outside1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/int-as-enum1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/no-typename1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/no-value1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/wrong-inline1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/ref1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/attr-ctor1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/namespace5.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/func-def1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/undefined1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/specialization1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/struct-as-enum1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/undefined2.C.diff?cvsroot=gcc&r1=NONE&r2=1.1