diff options
author | David Malcolm <dmalcolm@redhat.com> | 2017-06-09 20:57:38 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2017-06-09 20:57:38 +0000 |
commit | b09649fdc609c79ea5acb9668636c7d8a5f64a7c (patch) | |
tree | 8ee5ecb323a5f1d30224c7950f593ad2f112c2f9 /gcc/diagnostic.c | |
parent | c5d6c6d94e74dd2f72e323ff01ad2506115ffe05 (diff) | |
download | gcc-b09649fdc609c79ea5acb9668636c7d8a5f64a7c.zip gcc-b09649fdc609c79ea5acb9668636c7d8a5f64a7c.tar.gz gcc-b09649fdc609c79ea5acb9668636c7d8a5f64a7c.tar.bz2 |
Add support for mutually-incompatible fix-it hints
This patch adds a method:
rich_location::fixits_cannot_be_auto_applied
for ensuring that mutually-incompatible fix-its hints don't
lead to insane output from -fdiagnostics-generate-patch.
Fix-it hints within such rich_location instances are printed
as normal by diagnostic_show_locus, but don't affect the output
of -fdiagnostics-generate-patch.
gcc/ChangeLog:
* diagnostic.c (diagnostic_report_diagnostic): Only add fixits
to the edit_context if they can be auto-applied.
gcc/testsuite/ChangeLog:
* gcc.dg/plugin/diagnostic-test-show-locus-bw.c
(test_mutually_exclusive_suggestions): New test function.
* gcc.dg/plugin/diagnostic-test-show-locus-generate-patch.c
(test_mutually_exclusive_suggestions): New test function.
* gcc.dg/plugin/diagnostic-test-show-locus-parseable-fixits.c
(test_mutually_exclusive_suggestions): New test function.
* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
(test_show_locus): Add special-case for
"test_mutually_exclusive_suggestions".
libcpp/ChangeLog:
* include/line-map.h
(rich_location::fixits_cannot_be_auto_applied): New method.
(rich_location::fixits_can_be_auto_applied_p): New accessor.
(rich_location::m_fixits_cannot_be_auto_applied): New field.
* line-map.c (rich_location::rich_location): Initialize new field.
From-SVN: r249081
Diffstat (limited to 'gcc/diagnostic.c')
-rw-r--r-- | gcc/diagnostic.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index 1585196..bbf5f5c 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -986,7 +986,8 @@ diagnostic_report_diagnostic (diagnostic_context *context, diagnostic->x_data = NULL; if (context->edit_context_ptr) - context->edit_context_ptr->add_fixits (diagnostic->richloc); + if (diagnostic->richloc->fixits_can_be_auto_applied_p ()) + context->edit_context_ptr->add_fixits (diagnostic->richloc); context->lock--; |