diff options
author | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2019-08-14 20:10:00 +0000 |
---|---|---|
committer | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2019-08-14 20:10:00 +0000 |
commit | f0838a5d45527fbca607cb66115b200a76c44e69 (patch) | |
tree | 2b112ea8d047e4707c3b0956778a0ae29d6dcbda | |
parent | 28a024c36afe1457953323eca2c88d86853f111c (diff) |
PR c++/91436 fix C++ dialect for std::make_unique fix-it hint
The std::make_unique function wasn't added until C++14, and neither was
the std::complex_literals namespace.
gcc/cp:
PR c++/91436
* name-lookup.c (get_std_name_hint): Fix min_dialect field for
complex_literals and make_unique entries.
gcc/testsuite:
PR c++/91436
* g++.dg/lookup/missing-std-include-5.C: Limit test to C++14 and up.
* g++.dg/lookup/missing-std-include-6.C: Don't check make_unique in
test that runs for C++11.
* g++.dg/lookup/missing-std-include-8.C: Check make_unique here.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-9-branch@274493 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/name-lookup.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lookup/missing-std-include-5.C | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lookup/missing-std-include-6.C | 9 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lookup/missing-std-include-8.C | 9 |
6 files changed, 26 insertions, 11 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 925341d5d47..307f1e6b032 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2019-08-14 Jonathan Wakely <jwakely@redhat.com> + + PR c++/91436 + * name-lookup.c (get_std_name_hint): Fix min_dialect field for + complex_literals and make_unique entries. + 2019-08-12 Tom Honermann <tom@honermann.net> * parser.c (cp_parser_template_declaration_after_parameters): Enable diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 4ca976c812d..29004d920b1 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -5656,7 +5656,7 @@ get_std_name_hint (const char *name) {"bitset", "<bitset>", cxx11}, /* <complex>. */ {"complex", "<complex>", cxx98}, - {"complex_literals", "<complex>", cxx98}, + {"complex_literals", "<complex>", cxx14}, /* <condition_variable>. */ {"condition_variable", "<condition_variable>", cxx11}, {"condition_variable_any", "<condition_variable>", cxx11}, @@ -5718,7 +5718,7 @@ get_std_name_hint (const char *name) {"multimap", "<map>", cxx98}, /* <memory>. */ {"make_shared", "<memory>", cxx11}, - {"make_unique", "<memory>", cxx11}, + {"make_unique", "<memory>", cxx14}, {"shared_ptr", "<memory>", cxx11}, {"unique_ptr", "<memory>", cxx11}, {"weak_ptr", "<memory>", cxx11}, diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 111c5ace065..255786692a0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2019-08-14 Jonathan Wakely <jwakely@redhat.com> + + PR c++/91436 + * g++.dg/lookup/missing-std-include-5.C: Limit test to C++14 and up. + * g++.dg/lookup/missing-std-include-6.C: Don't check make_unique in + test that runs for C++11. + * g++.dg/lookup/missing-std-include-8.C: Check make_unique here. + 2019-08-13 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/87991 diff --git a/gcc/testsuite/g++.dg/lookup/missing-std-include-5.C b/gcc/testsuite/g++.dg/lookup/missing-std-include-5.C index fe880a6263b..3ec9abd9316 100644 --- a/gcc/testsuite/g++.dg/lookup/missing-std-include-5.C +++ b/gcc/testsuite/g++.dg/lookup/missing-std-include-5.C @@ -1,2 +1,3 @@ +// { dg-do compile { target c++14 } } using namespace std::complex_literals; // { dg-error "" } // { dg-message "#include <complex>" "" { target *-*-* } .-1 } diff --git a/gcc/testsuite/g++.dg/lookup/missing-std-include-6.C b/gcc/testsuite/g++.dg/lookup/missing-std-include-6.C index d9eeb4284e8..a8f27473e6d 100644 --- a/gcc/testsuite/g++.dg/lookup/missing-std-include-6.C +++ b/gcc/testsuite/g++.dg/lookup/missing-std-include-6.C @@ -11,15 +11,6 @@ void test_make_shared () // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 } } -template<class T> -void test_make_unique () -{ - auto p = std::make_unique<T>(); // { dg-error "'make_unique' is not a member of 'std'" } - // { dg-message "'#include <memory>'" "" { target *-*-* } .-1 } - // { dg-error "expected primary-expression before '>' token" "" { target *-*-* } .-2 } - // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 } -} - std::shared_ptr<int> test_shared_ptr; // { dg-error "'shared_ptr' in namespace 'std' does not name a template type" } // { dg-message "'#include <memory>'" "" { target *-*-* } .-1 } diff --git a/gcc/testsuite/g++.dg/lookup/missing-std-include-8.C b/gcc/testsuite/g++.dg/lookup/missing-std-include-8.C index 68b208299f2..73532c82968 100644 --- a/gcc/testsuite/g++.dg/lookup/missing-std-include-8.C +++ b/gcc/testsuite/g++.dg/lookup/missing-std-include-8.C @@ -13,6 +13,15 @@ void test_make_shared () // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 } } +template<class T> +void test_make_unique () +{ + std::make_unique<T>(); // { dg-error "'make_unique' is not a member of 'std'" } + // { dg-message "'std::make_unique' is only available from C\\+\\+14 onwards" "" { target *-*-* } .-1 } + // { dg-error "expected primary-expression before '>' token" "" { target *-*-* } .-2 } + // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 } +} + void test_array () { std::array a; // { dg-error "'array' is not a member of 'std'" } |