http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60744

            Bug ID: 60744
           Summary: poor location and error recovery
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: preprocessor
          Assignee: unassigned at gcc dot gnu.org
          Reporter: manu at gcc dot gnu.org

#define DEBUG(X) X

void foo(void)
{
    DEBUG((
              0);
}

test.c: In function ‘foo’:
test.c:7:0: error: unterminated argument list invoking macro "DEBUG"
 }
 ^
test.c:5:5: error: ‘DEBUG’ undeclared (first use in this function)
     DEBUG((
     ^
test.c:5:5: note: each undeclared identifier is reported only once for each
function it appears in
test.c:5:5: error: expected ‘;’ at end of input
test.c:5:5: error: expected declaration or statement at end of input


Problems:

1. The first error does not point to the point where the macro was invoked,
which is the key location. Clang gets this right.

2. All the other errors are useless. This should be a fatal error, since it
will gobble the rest of the input and produce meaningless cascades of errors.

Reply via email to