]> git.ipfire.org Git - thirdparty/gcc.git/commit
c/c++: Add fix-it hints for suggested missing #includes
authordmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Jul 2017 15:09:00 +0000 (15:09 +0000)
committerdmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Jul 2017 15:09:00 +0000 (15:09 +0000)
commit7f9c8569ae1b0f2981a684137b23c41c4abb31eb
tree91bce65baf3294434588bd452b06ed508518e076
parent9268b19c3d80e69b9ba2e5876a8bc4a706001b7f
c/c++: Add fix-it hints for suggested missing #includes

gcc/c-family/ChangeLog:
* c-common.c (try_to_locate_new_include_insertion_point): New
function.
(per_file_includes_t): New typedef.
(added_includes_t): New typedef.
(added_includes): New variable.
(maybe_add_include_fixit): New function.
* c-common.h (maybe_add_include_fixit): New decl.

gcc/c/ChangeLog:
* c-decl.c (implicitly_declare): When suggesting a missing
#include, provide a fix-it hint.

gcc/cp/ChangeLog:
* name-lookup.c (get_std_name_hint): Add '<' and '>' around
the header names.
(maybe_suggest_missing_header): Update for addition of '<' and '>'
to above.  Provide a fix-it hint.
* pt.c: Include "gcc-rich-location.h"
(listify): Attempt to add fix-it hint for missing
#include <initializer_list>.
* rtti.c: Include "gcc-rich-location.h".
(typeid_ok_p): Attempt to add fix-it hint for missing
#include <typeinfo>.

gcc/testsuite/ChangeLog:
* g++.dg/cpp0x/missing-initializer_list-include.C: New test case.
* g++.dg/lookup/missing-std-include-2.C: New test case.
* g++.dg/lookup/missing-std-include-3.C: New test case.
* g++.dg/rtti/missing-typeinfo-include.C: New test case.
* gcc.dg/missing-header-fixit-1.c: New test case.
* gcc.dg/missing-header-fixit-2.c: New test case.
* gcc.dg/missing-header-fixit-2.h: New header.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250203 138bc75d-0d04-0410-961f-82ee72b054a4
17 files changed:
gcc/c-family/ChangeLog
gcc/c-family/c-common.c
gcc/c-family/c-common.h
gcc/c/ChangeLog
gcc/c/c-decl.c
gcc/cp/ChangeLog
gcc/cp/name-lookup.c
gcc/cp/pt.c
gcc/cp/rtti.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/missing-initializer_list-include.C [new file with mode: 0644]
gcc/testsuite/g++.dg/lookup/missing-std-include-2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/lookup/missing-std-include-3.C [new file with mode: 0644]
gcc/testsuite/g++.dg/rtti/missing-typeinfo-include.C [new file with mode: 0644]
gcc/testsuite/gcc.dg/missing-header-fixit-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/missing-header-fixit-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/missing-header-fixit-2.h [new file with mode: 0644]