Bug 17851 - [3.4/4.0 regression] Misleading diagnostic for invalid function declarations with undeclared types
Summary: [3.4/4.0 regression] Misleading diagnostic for invalid function declarations ...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 4.0.0
: P2 normal
Target Milestone: 3.4.3
Assignee: Not yet assigned to anyone
URL:
Keywords: diagnostic
Depends on:
Blocks:
 
Reported: 2004-10-05 20:05 UTC by Volker Reichelt
Modified: 2004-10-12 23:07 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2004-10-05 20:16:40


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Volker Reichelt 2004-10-05 20:05:18 UTC
Since gcc 3.4.0 I get an error message which is not very helpful for the
following invalid code snippet:

================================
struct A
{
    int operator[] (size_t);
};

struct B
{
    int foo(size_t);
};
================================

err.cc:3: error: declaration of `operator[]' as non-function
err.cc:3: error: expected `;' before '(' token
err.cc:8: error: expected `;' before '(' token

With gcc 3.3.5 and before I get:

err.cc:3: error: `size_t' was not declared in this scope
err.cc:3: error: invalid data member initialization
err.cc:3: error: (use `=' to initialize static data members)
err.cc:3: error: declaration of `operator[]' as non-function
err.cc:8: error: `size_t' was not declared in this scope
err.cc:8: error: invalid data member initialization

which says what's wrong: `size_t' was not declared in this scope.
Comment 1 Andrew Pinski 2004-10-05 20:16:40 UTC
Confirmed, note I found another bug in that we now produce a werid quoting, see PR 17852.
Comment 2 Volker Reichelt 2004-10-12 23:07:13 UTC
Fixed with Mark's patch for PR 15786.

With mainline I now get:

err.cc:3: error: `size_t' has not been declared
err.cc:8: error: `size_t' has not been declared