[Bug c++/88036] bogus "was not declared in this scope; did you mean ...?" fix-it when the declaration was ill-formed
dmalcolm at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Nov 15 20:25:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88036
David Malcolm <dmalcolm at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2018-11-15
Ever confirmed|0 |1
--- Comment #3 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
Confirmed.
Currently unqualified_name_lookup_error makes a VAR_DECL for "undeclared_type".
Perhaps it should make an opaque type instead for this case?
519 /* Prevent repeated error messages by creating a VAR_DECL with
520 this NAME in the innermost block scope. */
521 if (local_bindings_p ())
522 {
523 tree decl = build_decl (loc, VAR_DECL, name,
error_mark_node);
524 TREE_USED (decl) = true;
525 pushdecl (decl);
526 }
The "fool" token at the "decl" gets consumed within
cp_parser_expression_statement here:
11225 statement = cp_parser_expression (parser);
11226 if (statement == error_mark_node
11227 && !cp_parser_uncommitted_to_tentative_parse_p (parser))
11228 {
11229 cp_parser_skip_to_end_of_block_or_statement (parser);
11230 return error_mark_node;
More information about the Gcc-bugs
mailing list