mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-14 09:10:48 +08:00
c++: Don't suggest cdtor or conversion op identifiers in spelling hints [PR104806]
On the following testcase, we emit "did you mean '__dt '?" in the error message. "__dt " shows there because it is dtor_identifier, but we shouldn't suggest those to the user, they are purely internal and can't be really typed by the user because of the final space in it. 2022-03-08 Jakub Jelinek <jakub@redhat.com> PR c++/104806 * search.cc (lookup_field_fuzzy_info::fuzzy_lookup_field): Ignore identifiers with space at the end. * g++.dg/spellcheck-pr104806.C: New test.
This commit is contained in:
parent
768956c0d1
commit
e480c3c06d
@ -1275,6 +1275,13 @@ lookup_field_fuzzy_info::fuzzy_lookup_field (tree type)
|
||||
if (is_lambda_ignored_entity (field))
|
||||
continue;
|
||||
|
||||
/* Ignore special identifiers with space at the end like cdtor or
|
||||
conversion op identifiers. */
|
||||
if (TREE_CODE (DECL_NAME (field)) == IDENTIFIER_NODE)
|
||||
if (unsigned int len = IDENTIFIER_LENGTH (DECL_NAME (field)))
|
||||
if (IDENTIFIER_POINTER (DECL_NAME (field))[len - 1] == ' ')
|
||||
continue;
|
||||
|
||||
m_candidates.safe_push (DECL_NAME (field));
|
||||
}
|
||||
}
|
||||
|
5
gcc/testsuite/g++.dg/spellcheck-pr104806.C
Normal file
5
gcc/testsuite/g++.dg/spellcheck-pr104806.C
Normal file
@ -0,0 +1,5 @@
|
||||
// PR c++/104806
|
||||
|
||||
struct S {};
|
||||
int main() { S s; s.__d; } // { dg-bogus "'struct S' has no member named '__d'; did you mean '__\[a-z]* '" }
|
||||
// { dg-error "'struct S' has no member named '__d'" "" { target *-*-* } .-1 }
|
Loading…
x
Reference in New Issue
Block a user