Commit de6a69ee by David Malcolm Committed by David Malcolm

C: convert return type of lookup_name_fuzzy from tree to const char *

gcc/c-family/ChangeLog:
	* c-common.h (lookup_name_fuzzy): Convert return type from tree to
	const char *.

gcc/c/ChangeLog:
	* c-decl.c (implicit_decl_warning): Update for conversion of
	return type of lookup_name_fuzzy to const char *.
	(undeclared_variable): Likewise.
	(lookup_name_fuzzy): Convert return type from tree to
	const char *.
	* c-parser.c (c_parser_declaration_or_fndef): Update for
	conversion of return type of lookup_name_fuzzy to const char *.
	(c_parser_parameter_declaration): Likewise.

gcc/ChangeLog:
	* gcc-rich-location.c
	(gcc_rich_location::add_fixit_misspelled_id): New overload, taking
	a const char *.
	* gcc-rich-location.h
	(gcc_rich_location::add_fixit_misspelled_id): Likewise.

From-SVN: r238517
parent ffc22840
2016-07-20 David Malcolm <dmalcolm@redhat.com>
* gcc-rich-location.c
(gcc_rich_location::add_fixit_misspelled_id): New overload, taking
a const char *.
* gcc-rich-location.h
(gcc_rich_location::add_fixit_misspelled_id): Likewise.
2016-07-20 Georg-Johann Lay <avr@gjlay.de> 2016-07-20 Georg-Johann Lay <avr@gjlay.de>
* target.def (addr_space): Add new diagnose_usage to hook vector. * target.def (addr_space): Add new diagnose_usage to hook vector.
......
2016-07-20 David Malcolm <dmalcolm@redhat.com>
* c-common.h (lookup_name_fuzzy): Convert return type from tree to
const char *.
2016-07-15 Jason Merrill <jason@redhat.com> 2016-07-15 Jason Merrill <jason@redhat.com>
* c-opts.c (c_common_post_options): Update -fabi-version default to 11. * c-opts.c (c_common_post_options): Update -fabi-version default to 11.
......
...@@ -1000,7 +1000,7 @@ enum lookup_name_fuzzy_kind { ...@@ -1000,7 +1000,7 @@ enum lookup_name_fuzzy_kind {
/* Any name. */ /* Any name. */
FUZZY_LOOKUP_NAME FUZZY_LOOKUP_NAME
}; };
extern tree lookup_name_fuzzy (tree, enum lookup_name_fuzzy_kind); extern const char *lookup_name_fuzzy (tree, enum lookup_name_fuzzy_kind);
extern bool vector_targets_convertible_p (const_tree t1, const_tree t2); extern bool vector_targets_convertible_p (const_tree t1, const_tree t2);
extern bool vector_types_convertible_p (const_tree t1, const_tree t2, bool emit_lax_note); extern bool vector_types_convertible_p (const_tree t1, const_tree t2, bool emit_lax_note);
......
2016-07-20 David Malcolm <dmalcolm@redhat.com>
* c-decl.c (implicit_decl_warning): Update for conversion of
return type of lookup_name_fuzzy to const char *.
(undeclared_variable): Likewise.
(lookup_name_fuzzy): Convert return type from tree to
const char *.
* c-parser.c (c_parser_declaration_or_fndef): Update for
conversion of return type of lookup_name_fuzzy to const char *.
(c_parser_parameter_declaration): Likewise.
2016-07-15 Cesar Philippidis <cesar@codesourcery.com> 2016-07-15 Cesar Philippidis <cesar@codesourcery.com>
* c-parser.c (c_parser_oacc_declare): Don't scan for * c-parser.c (c_parser_oacc_declare): Don't scan for
......
...@@ -3088,7 +3088,7 @@ implicit_decl_warning (location_t loc, tree id, tree olddecl) ...@@ -3088,7 +3088,7 @@ implicit_decl_warning (location_t loc, tree id, tree olddecl)
if (warn_implicit_function_declaration) if (warn_implicit_function_declaration)
{ {
bool warned; bool warned;
tree hint = NULL_TREE; const char *hint = NULL;
if (!olddecl) if (!olddecl)
hint = lookup_name_fuzzy (id, FUZZY_LOOKUP_FUNCTION_NAME); hint = lookup_name_fuzzy (id, FUZZY_LOOKUP_FUNCTION_NAME);
...@@ -3099,7 +3099,7 @@ implicit_decl_warning (location_t loc, tree id, tree olddecl) ...@@ -3099,7 +3099,7 @@ implicit_decl_warning (location_t loc, tree id, tree olddecl)
richloc.add_fixit_misspelled_id (loc, hint); richloc.add_fixit_misspelled_id (loc, hint);
warned = pedwarn_at_rich_loc warned = pedwarn_at_rich_loc
(&richloc, OPT_Wimplicit_function_declaration, (&richloc, OPT_Wimplicit_function_declaration,
"implicit declaration of function %qE; did you mean %qE?", "implicit declaration of function %qE; did you mean %qs?",
id, hint); id, hint);
} }
else else
...@@ -3112,7 +3112,7 @@ implicit_decl_warning (location_t loc, tree id, tree olddecl) ...@@ -3112,7 +3112,7 @@ implicit_decl_warning (location_t loc, tree id, tree olddecl)
richloc.add_fixit_misspelled_id (loc, hint); richloc.add_fixit_misspelled_id (loc, hint);
warned = warning_at_rich_loc warned = warning_at_rich_loc
(&richloc, OPT_Wimplicit_function_declaration, (&richloc, OPT_Wimplicit_function_declaration,
G_("implicit declaration of function %qE;did you mean %qE?"), G_("implicit declaration of function %qE;did you mean %qs?"),
id, hint); id, hint);
} }
else else
...@@ -3433,14 +3433,14 @@ undeclared_variable (location_t loc, tree id) ...@@ -3433,14 +3433,14 @@ undeclared_variable (location_t loc, tree id)
if (current_function_decl == 0) if (current_function_decl == 0)
{ {
tree guessed_id = lookup_name_fuzzy (id, FUZZY_LOOKUP_NAME); const char *guessed_id = lookup_name_fuzzy (id, FUZZY_LOOKUP_NAME);
if (guessed_id) if (guessed_id)
{ {
gcc_rich_location richloc (loc); gcc_rich_location richloc (loc);
richloc.add_fixit_misspelled_id (loc, guessed_id); richloc.add_fixit_misspelled_id (loc, guessed_id);
error_at_rich_loc (&richloc, error_at_rich_loc (&richloc,
"%qE undeclared here (not in a function);" "%qE undeclared here (not in a function);"
" did you mean %qE?", " did you mean %qs?",
id, guessed_id); id, guessed_id);
} }
else else
...@@ -3451,7 +3451,7 @@ undeclared_variable (location_t loc, tree id) ...@@ -3451,7 +3451,7 @@ undeclared_variable (location_t loc, tree id)
{ {
if (!objc_diagnose_private_ivar (id)) if (!objc_diagnose_private_ivar (id))
{ {
tree guessed_id = lookup_name_fuzzy (id, FUZZY_LOOKUP_NAME); const char *guessed_id = lookup_name_fuzzy (id, FUZZY_LOOKUP_NAME);
if (guessed_id) if (guessed_id)
{ {
gcc_rich_location richloc (loc); gcc_rich_location richloc (loc);
...@@ -3459,7 +3459,7 @@ undeclared_variable (location_t loc, tree id) ...@@ -3459,7 +3459,7 @@ undeclared_variable (location_t loc, tree id)
error_at_rich_loc error_at_rich_loc
(&richloc, (&richloc,
"%qE undeclared (first use in this function);" "%qE undeclared (first use in this function);"
" did you mean %qE?", " did you mean %qs?",
id, guessed_id); id, guessed_id);
} }
else else
...@@ -4010,7 +4010,7 @@ find_closest_macro_cpp_cb (cpp_reader *, cpp_hashnode *hashnode, ...@@ -4010,7 +4010,7 @@ find_closest_macro_cpp_cb (cpp_reader *, cpp_hashnode *hashnode,
It also looks for start_typename keywords, to detect "singed" vs "signed" It also looks for start_typename keywords, to detect "singed" vs "signed"
typos. */ typos. */
tree const char *
lookup_name_fuzzy (tree name, enum lookup_name_fuzzy_kind kind) lookup_name_fuzzy (tree name, enum lookup_name_fuzzy_kind kind)
{ {
gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE); gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE);
...@@ -4100,7 +4100,11 @@ lookup_name_fuzzy (tree name, enum lookup_name_fuzzy_kind kind) ...@@ -4100,7 +4100,11 @@ lookup_name_fuzzy (tree name, enum lookup_name_fuzzy_kind kind)
} }
} }
return bm.get_best_meaningful_candidate (); tree best = bm.get_best_meaningful_candidate ();
if (best)
return IDENTIFIER_POINTER (best);
else
return NULL;
} }
......
...@@ -1698,12 +1698,12 @@ c_parser_declaration_or_fndef (c_parser *parser, bool fndef_ok, ...@@ -1698,12 +1698,12 @@ c_parser_declaration_or_fndef (c_parser *parser, bool fndef_ok,
} }
else else
{ {
tree hint = lookup_name_fuzzy (name, FUZZY_LOOKUP_TYPENAME); const char *hint = lookup_name_fuzzy (name, FUZZY_LOOKUP_TYPENAME);
if (hint) if (hint)
{ {
richloc.add_fixit_misspelled_id (here, hint); richloc.add_fixit_misspelled_id (here, hint);
error_at_rich_loc (&richloc, error_at_rich_loc (&richloc,
"unknown type name %qE; did you mean %qE?", "unknown type name %qE; did you mean %qs?",
name, hint); name, hint);
} }
else else
...@@ -3853,14 +3853,14 @@ c_parser_parameter_declaration (c_parser *parser, tree attrs) ...@@ -3853,14 +3853,14 @@ c_parser_parameter_declaration (c_parser *parser, tree attrs)
c_parser_set_source_position_from_token (token); c_parser_set_source_position_from_token (token);
if (c_parser_next_tokens_start_typename (parser, cla_prefer_type)) if (c_parser_next_tokens_start_typename (parser, cla_prefer_type))
{ {
tree hint = lookup_name_fuzzy (token->value, FUZZY_LOOKUP_TYPENAME); const char *hint = lookup_name_fuzzy (token->value,
FUZZY_LOOKUP_TYPENAME);
if (hint) if (hint)
{ {
gcc_assert (TREE_CODE (hint) == IDENTIFIER_NODE);
gcc_rich_location richloc (token->location); gcc_rich_location richloc (token->location);
richloc.add_fixit_misspelled_id (token->location, hint); richloc.add_fixit_misspelled_id (token->location, hint);
error_at_rich_loc (&richloc, error_at_rich_loc (&richloc,
"unknown type name %qE; did you mean %qE?", "unknown type name %qE; did you mean %qs?",
token->value, hint); token->value, hint);
} }
else else
......
...@@ -74,3 +74,16 @@ gcc_rich_location::add_fixit_misspelled_id (location_t misspelled_token_loc, ...@@ -74,3 +74,16 @@ gcc_rich_location::add_fixit_misspelled_id (location_t misspelled_token_loc,
= get_range_from_loc (line_table, misspelled_token_loc); = get_range_from_loc (line_table, misspelled_token_loc);
add_fixit_replace (misspelled_token_range, IDENTIFIER_POINTER (hint_id)); add_fixit_replace (misspelled_token_range, IDENTIFIER_POINTER (hint_id));
} }
/* As above, but with a const char * for the suggested replacement. */
void
gcc_rich_location::add_fixit_misspelled_id (location_t misspelled_token_loc,
const char *hint)
{
gcc_assert (hint);
source_range misspelled_token_range
= get_range_from_loc (line_table, misspelled_token_loc);
add_fixit_replace (misspelled_token_range, hint);
}
...@@ -45,6 +45,8 @@ class gcc_rich_location : public rich_location ...@@ -45,6 +45,8 @@ class gcc_rich_location : public rich_location
void add_fixit_misspelled_id (location_t misspelled_token_loc, void add_fixit_misspelled_id (location_t misspelled_token_loc,
tree hint_id); tree hint_id);
void add_fixit_misspelled_id (location_t misspelled_token_loc,
const char *hint);
}; };
#endif /* GCC_RICH_LOCATION_H */ #endif /* GCC_RICH_LOCATION_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment