lookup_name_fuzzy can offer some reserved words as suggestions for
misspelled words, helping with "singed"/"signed" typos.
PR c++/81610 and PR c++/80567 report problems where the C++ frontend
suggested "if", "for" and "else" as corrections for misspelled variable
names.
The root cause is that in r247233
  ("Fix spelling suggestions for reserved words (PR c++/80177)")
I loosened the conditions on these reserved words, adding this condition:
   if (kind == FUZZY_LOOKUP_TYPENAME)
to the logic for rejecting words that don't start decl-specifiers, to
allow for "static_assert" to be offered.
This is too loose a condition: we don't want to suggest *any* reserved word
when we're in a context where we don't know we expect a typename.
For the kinds of error-recover situations where we're suggesting
spelling corrections we don't have much contextual information, so it
seems prudent to be stricter about which reserved words we offer
as spelling suggestions; I don't think it makes sense for us to
suggest e.g. "for".
This patch implements that by effectively reinstating the old logic,
but special-casing RID_STATIC_ASSERT, moving the logic to a new
subroutine (in case we want to allow for other special-cases).
I attempted to add suggestions for the various RID_*CAST, to cope
with e.g. "reinterptet_cast" (I can never type that correctly on the
first try), but the following '<' token confuses the error-recovery
enough that the suggestion code isn't triggered.
gcc/cp/ChangeLog:
	PR c++/81610
	PR c++/80567
	* name-lookup.c (suggest_rid_p): New function.
	(lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
	suggest_rid_p.
gcc/testsuite/ChangeLog:
	PR c++/81610
	PR c++/80567
	* g++.dg/spellcheck-reswords.C: New test case.
	* g++.dg/spellcheck-stdlib.C: Remove xfail from dg-bogus
	suggestion of "if".
From-SVN: r257456
| Name | 
 Last commit 
 | 
Last update | 
|---|---|---|
| .. | ||
| ChangeLog | Loading commit data... | |
| ChangeLog-1993 | Loading commit data... | |
| ChangeLog-1994 | Loading commit data... | |
| ChangeLog-1995 | Loading commit data... | |
| ChangeLog-1996 | Loading commit data... | |
| ChangeLog-1997 | Loading commit data... | |
| ChangeLog-1998 | Loading commit data... | |
| ChangeLog-1999 | Loading commit data... | |
| ChangeLog-2000 | Loading commit data... | |
| ChangeLog-2001 | Loading commit data... | |
| ChangeLog-2002 | Loading commit data... | |
| ChangeLog-2003 | Loading commit data... | |
| ChangeLog-2004 | Loading commit data... | |
| ChangeLog-2005 | Loading commit data... | |
| ChangeLog-2006 | Loading commit data... | |
| ChangeLog-2007 | Loading commit data... | |
| ChangeLog-2008 | Loading commit data... | |
| ChangeLog-2009 | Loading commit data... | |
| ChangeLog-2010 | Loading commit data... | |
| ChangeLog-2011 | Loading commit data... | |
| ChangeLog-2012 | Loading commit data... | |
| ChangeLog-2013 | Loading commit data... | |
| ChangeLog-2014 | Loading commit data... | |
| ChangeLog-2015 | Loading commit data... | |
| ChangeLog-2016 | Loading commit data... | |
| ChangeLog-2017 | Loading commit data... | |
| ChangeLog.ptr | Loading commit data... | |
| ChangeLog.tree-ssa | Loading commit data... | |
| Make-lang.in | Loading commit data... | |
| NEWS | Loading commit data... | |
| call.c | Loading commit data... | |
| cfns.gperf | Loading commit data... | |
| cfns.h | Loading commit data... | |
| class.c | Loading commit data... | |
| config-lang.in | Loading commit data... | |
| constexpr.c | Loading commit data... | |
| constraint.cc | Loading commit data... | |
| cp-gimplify.c | Loading commit data... | |
| cp-lang.c | Loading commit data... | |
| cp-objcp-common.c | Loading commit data... | |
| cp-objcp-common.h | Loading commit data... | |
| cp-tree.def | Loading commit data... | |
| cp-tree.h | Loading commit data... | |
| cp-ubsan.c | Loading commit data... | |
| cvt.c | Loading commit data... | |
| cxx-pretty-print.c | Loading commit data... | |
| cxx-pretty-print.h | Loading commit data... | |
| decl.c | Loading commit data... | |
| decl.h | Loading commit data... | |
| decl2.c | Loading commit data... | |
| dump.c | Loading commit data... | |
| error.c | Loading commit data... | |
| except.c | Loading commit data... | |
| expr.c | Loading commit data... | |
| friend.c | Loading commit data... | |
| g++spec.c | Loading commit data... | |
| init.c | Loading commit data... | |
| lambda.c | Loading commit data... | |
| lang-specs.h | Loading commit data... | |
| lex.c | Loading commit data... | |
| logic.cc | Loading commit data... | |
| mangle.c | Loading commit data... | |
| method.c | Loading commit data... | |
| name-lookup.c | Loading commit data... | |
| name-lookup.h | Loading commit data... | |
| operators.def | Loading commit data... | |
| optimize.c | Loading commit data... | |
| parser.c | Loading commit data... | |
| parser.h | Loading commit data... | |
| pt.c | Loading commit data... | |
| ptree.c | Loading commit data... | |
| repo.c | Loading commit data... | |
| rtti.c | Loading commit data... | |
| search.c | Loading commit data... | |
| semantics.c | Loading commit data... | |
| tree.c | Loading commit data... | |
| type-utils.h | Loading commit data... | |
| typeck.c | Loading commit data... | |
| typeck2.c | Loading commit data... | |
| vtable-class-hierarchy.c | Loading commit data... |