This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/26058] [4.0/4.1/4.2 Regression] C++ error recovery regression
- From: "mmitchel at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 31 May 2006 04:54:16 -0000
- Subject: [Bug c++/26058] [4.0/4.1/4.2 Regression] C++ error recovery regression
- References: <bug-26058-6809@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #3 from mmitchel at gcc dot gnu dot org 2006-05-31 04:54 -------
There is no way to win here.
The EDG front end skips the entire rest of the file:
==
"pr26058.cpp", line 4: error: expected a ";"
int t2() {}
^
At end of source: warning: parsing restarts here after previous syntax error
At end of source: warning: missing return statement at end of non-void
function "t1"
At end of source: error: expected a "}"
==
That's quieter, but it also means that it issues no error message about the
bogus use of "i" in:
int t1() {
{ // unclosed brace
}
int t2() {}
if (i) ;
It's not a good idea to pop back to the top level because function declarations
are perfectly legal in function scope; it's just not legal to have a
definition.
So, the realistic choices are the EDG approach of just skipping to the end of
the current block (which may be the end of the file), or the current behavior.
I think the current behavior is better.
I've also marked this P5, so that if someone decides to reopen the bug it will
at least be clear that this is not a release-critical problem.
--
mmitchel at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Priority|P3 |P5
Resolution| |INVALID
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26058