This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/15179] bad parse error recovery with missing typename
- From: "manu at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 4 Aug 2009 09:22:16 -0000
- Subject: [Bug c++/15179] bad parse error recovery with missing typename
- References: <bug-15179-6594@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #15 from manu at gcc dot gnu dot org 2009-08-04 09:22 -------
Testcase in comment #9 does not produce any output anymore.
Testcase in comment #10 produces:
/home/manuel/src/pr15179.C:8:18: error: type ?A<yn>? is not derived from type
?B<yn>?
/home/manuel/src/pr15179.C:8:23: error: expected ?;? before ?Type?
Testcase in comment #14 produces:
/home/manuel/src/pr15179-3.C: At global scope:
/home/manuel/src/pr15179-3.C:22:23: error: expected constructor, destructor, or
type conversion before ?&? token
It seems to me that there is a tentative parse of a type in
cp_parser_decl_specifier_seq, that fails, and then we end up trying to parse
something else until it fails completely.
For the typedef testcases, the code in cp_parser_decl_specifier_seq could just
directly parse the complete typedef and return, because only a type can follow
typedef.
For the non-typedef testcase, it is less clear how to handle a failure to parse
a type, since that may actually mean we are looking at something else.
I don't really know where the "failure" happens. That would need more debugging
that I have time to do now. Any help appreciated.
--
manu at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to fail| |4.4.0
Last reconfirmed|2005-05-08 17:34:10 |2009-08-04 09:22:11
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15179