diff options
author | David Malcolm <dmalcolm@redhat.com> | 2016-06-14 23:08:34 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2016-06-14 23:08:34 +0000 |
commit | 264757fb054a1f3639eafddb72e87c57004c6aaa (patch) | |
tree | 7f70847fe1c3fb731deac7600fe4baa87c0b3c8f | |
parent | 4eb24e010993b2d9152c2038566f0114fd65fac7 (diff) | |
download | gcc-264757fb054a1f3639eafddb72e87c57004c6aaa.zip gcc-264757fb054a1f3639eafddb72e87c57004c6aaa.tar.gz gcc-264757fb054a1f3639eafddb72e87c57004c6aaa.tar.bz2 |
Introduce gcc_rich_location::add_fixit_misspelled_id
gcc/c/ChangeLog:
* c-typeck.c (build_component_ref): Simplify fixit code by
using gcc_rich_location::add_fixit_misspelled_id.
(set_init_label): Likewise.
gcc/cp/ChangeLog:
* typeck.c: Include "gcc-rich-location.h".
(finish_class_member_access_expr): Simplify fixit code by
using gcc_rich_location::add_fixit_misspelled_id.
gcc/ChangeLog:
* gcc-rich-location.c
(gcc_rich_location::add_fixit_misspelled_id): New method.
* gcc-rich-location.h
(gcc_rich_location::add_fixit_misspelled_id): Add decl.
From-SVN: r237463
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/c/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c/c-typeck.c | 16 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 10 | ||||
-rw-r--r-- | gcc/gcc-rich-location.c | 14 | ||||
-rw-r--r-- | gcc/gcc-rich-location.h | 3 |
7 files changed, 44 insertions, 18 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2389681..c0141d6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2016-06-14 David Malcolm <dmalcolm@redhat.com> + + * gcc-rich-location.c + (gcc_rich_location::add_fixit_misspelled_id): New method. + * gcc-rich-location.h + (gcc_rich_location::add_fixit_misspelled_id): Add decl. + 2016-06-14 Andreas Tobler <andreast@gcc.gnu.org> * config/arm/freebsd.h: Only enable unaligned access for armv6 on diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 08fc250..85fe5e3 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,9 @@ +2016-06-14 David Malcolm <dmalcolm@redhat.com> + + * c-typeck.c (build_component_ref): Simplify fixit code by + using gcc_rich_location::add_fixit_misspelled_id. + (set_init_label): Likewise. + 2016-06-13 David Malcolm <dmalcolm@redhat.com> * c-parser.c (c_parser_initelt): Provide location of name for new diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c index ea04d5e..f987508 100644 --- a/gcc/c/c-typeck.c +++ b/gcc/c/c-typeck.c @@ -2371,14 +2371,9 @@ build_component_ref (location_t loc, tree datum, tree component, we have a valid range for the component. */ location_t reported_loc = (component_loc != UNKNOWN_LOCATION) ? component_loc : loc; - rich_location rich_loc (line_table, reported_loc); + gcc_rich_location rich_loc (reported_loc); if (component_loc != UNKNOWN_LOCATION) - { - source_range component_range = - get_range_from_loc (line_table, component_loc); - rich_loc.add_fixit_replace (component_range, - IDENTIFIER_POINTER (guessed_id)); - } + rich_loc.add_fixit_misspelled_id (component_loc, guessed_id); error_at_rich_loc (&rich_loc, "%qT has no member named %qE; did you mean %qE?", @@ -8234,11 +8229,8 @@ set_init_label (location_t loc, tree fieldname, location_t fieldname_loc, tree guessed_id = lookup_field_fuzzy (constructor_type, fieldname); if (guessed_id) { - rich_location rich_loc (line_table, fieldname_loc); - source_range component_range = - get_range_from_loc (line_table, fieldname_loc); - rich_loc.add_fixit_replace (component_range, - IDENTIFIER_POINTER (guessed_id)); + gcc_rich_location rich_loc (fieldname_loc); + rich_loc.add_fixit_misspelled_id (fieldname_loc, guessed_id); error_at_rich_loc (&rich_loc, "%qT has no member named %qE; did you mean %qE?", diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 54e934a..4e4a662 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2016-06-14 David Malcolm <dmalcolm@redhat.com> + + * typeck.c: Include "gcc-rich-location.h". + (finish_class_member_access_expr): Simplify fixit code by + using gcc_rich_location::add_fixit_misspelled_id. + 2016-06-14 Jason Merrill <jason@redhat.com> P0145R2: Refining Expression Order for C++. diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index f68c2a3..2ccd2da 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -36,6 +36,7 @@ along with GCC; see the file COPYING3. If not see #include "c-family/c-objc.h" #include "c-family/c-ubsan.h" #include "params.h" +#include "gcc-rich-location.h" static tree cp_build_addr_expr_strict (tree, tsubst_flags_t); static tree cp_build_function_call (tree, tree, tsubst_flags_t); @@ -2831,12 +2832,9 @@ finish_class_member_access_expr (cp_expr object, tree name, bool template_p, if (guessed_id) { location_t bogus_component_loc = input_location; - rich_location rich_loc (line_table, bogus_component_loc); - source_range bogus_component_range = - get_range_from_loc (line_table, bogus_component_loc); - rich_loc.add_fixit_replace - (bogus_component_range, - IDENTIFIER_POINTER (guessed_id)); + gcc_rich_location rich_loc (bogus_component_loc); + rich_loc.add_fixit_misspelled_id (bogus_component_loc, + guessed_id); error_at_rich_loc (&rich_loc, "%q#T has no member named %qE; did you mean %qE?", diff --git a/gcc/gcc-rich-location.c b/gcc/gcc-rich-location.c index a03ce0e..15c0700 100644 --- a/gcc/gcc-rich-location.c +++ b/gcc/gcc-rich-location.c @@ -60,3 +60,17 @@ gcc_rich_location::maybe_add_expr (tree t) if (EXPR_P (t)) add_expr (t); } + +/* Add a fixit hint suggesting replacing the range at MISSPELLED_TOKEN_LOC + with the identifier HINT_ID. */ + +void +gcc_rich_location::add_fixit_misspelled_id (location_t misspelled_token_loc, + tree hint_id) +{ + gcc_assert (TREE_CODE (hint_id) == IDENTIFIER_NODE); + + source_range misspelled_token_range + = get_range_from_loc (line_table, misspelled_token_loc); + add_fixit_replace (misspelled_token_range, IDENTIFIER_POINTER (hint_id)); +} diff --git a/gcc/gcc-rich-location.h b/gcc/gcc-rich-location.h index fd332de..9c8a790 100644 --- a/gcc/gcc-rich-location.h +++ b/gcc/gcc-rich-location.h @@ -42,6 +42,9 @@ class gcc_rich_location : public rich_location void maybe_add_expr (tree t); + + void add_fixit_misspelled_id (location_t misspelled_token_loc, + tree hint_id); }; #endif /* GCC_RICH_LOCATION_H */ |