https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88036

            Bug ID: 88036
           Summary: bogus "was not declared in this scope; did you mean
                    ...?" fix-it when the declaration was ill-formed
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: enhancement
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
                CC: dmalcolm at gcc dot gnu.org
  Target Milestone: ---

void* f()
{
  undeclared_type fool;
  __attribute__((unused)) int food = 0;

  return &fool;
}

This produces:

dym.cc: In function 'void* f()':
dym.cc:3:3: error: 'undeclared_type' was not declared in this scope
    3 |   undeclared_type fool;
      |   ^~~~~~~~~~~~~~~
dym.cc:6:11: error: 'fool' was not declared in this scope; did you mean 'food'?
    6 |   return &fool;
      |           ^~~~
      |           food


Obviously the first error is correct, but the second one is unhelpful. It *was*
declared, but the declaration produced an error.

That second error would be ignorable if it didn't add the "did you mean ...?"
prompt and show a fix-it that comprises 50% of the output. No, I didn't mean
"food", and I don't want to fix it.

Could we maybe keep a list of erroneous declarations, and ignore uses of them
later? Or at least suppress the fix-it?

Reply via email to