diff options
author | David Malcolm <dmalcolm@redhat.com> | 2016-07-20 18:42:11 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2016-07-20 18:42:11 +0000 |
commit | 52ed68f71a750260fd926479e41e3f7ad7cd9aa2 (patch) | |
tree | b49c604effb64ec60ec0f92309badfd3781fc6c4 /gcc/cp/parser.h | |
parent | 1397e163014843fa6803b3959adfc0011d75bc6a (diff) | |
download | gcc-52ed68f71a750260fd926479e41e3f7ad7cd9aa2.zip gcc-52ed68f71a750260fd926479e41e3f7ad7cd9aa2.tar.gz gcc-52ed68f71a750260fd926479e41e3f7ad7cd9aa2.tar.bz2 |
C++ FE: handle misspelled identifiers and typenames
gcc/cp/ChangeLog:
PR c/70339
PR c/71858
* name-lookup.c: Include gcc-rich-location.h, spellcheck-tree.h,
and parser.h.
(suggest_alternatives_for): If no candidates are found, try
lookup_name_fuzzy and report if if finds a suggestion.
(consider_binding_level): New function.
(lookup_name_fuzzy) New function.
* parser.c: Include gcc-rich-location.h.
(cp_lexer_next_token_is_decl_specifier_keyword): Move most of
logic into...
(cp_keyword_starts_decl_specifier_p): ...this new function.
(cp_parser_diagnose_invalid_type_name): When issuing
"does not name a type" errors, attempt to make a suggestion using
lookup_name_fuzzy.
* parser.h (cp_keyword_starts_decl_specifier_p): New prototype.
* search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Reject
types that are not CLASS_TYPE_P, rather than rejecting individual
tree codes.
gcc/testsuite/ChangeLog:
PR c/70339
PR c/71858
* g++.dg/spellcheck-identifiers.C: New test case, based on
gcc.dg/spellcheck-identifiers.c.
* g++.dg/spellcheck-identifiers-2.C: New test case, based on
gcc.dg/spellcheck-identifiers-2.c.
* g++.dg/spellcheck-typenames.C: New test case, based on
gcc.dg/spellcheck-typenames.c
From-SVN: r238538
Diffstat (limited to 'gcc/cp/parser.h')
-rw-r--r-- | gcc/cp/parser.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/cp/parser.h b/gcc/cp/parser.h index ccbace9..2923378 100644 --- a/gcc/cp/parser.h +++ b/gcc/cp/parser.h @@ -420,5 +420,6 @@ extern void debug (vec<cp_token, va_gc> *ptr); extern void cp_debug_parser (FILE *, cp_parser *); extern void debug (cp_parser &ref); extern void debug (cp_parser *ptr); +extern bool cp_keyword_starts_decl_specifier_p (enum rid keyword); #endif /* GCC_CP_PARSER_H */ |