diff options
author | Jakub Jelinek <jakub@redhat.com> | 2019-11-21 02:00:43 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-11-21 02:00:43 +0100 |
commit | b69d4d4542d718e9010a71f0b05e20422b3f0d40 (patch) | |
tree | 0f9ba94125c17b68f82364fbe137f77d8c9faef5 /gcc/testsuite | |
parent | f0a2c2c89c8213ee3cf291983a7b4b4ed73b7e1e (diff) | |
download | gcc-b69d4d4542d718e9010a71f0b05e20422b3f0d40.zip gcc-b69d4d4542d718e9010a71f0b05e20422b3f0d40.tar.gz gcc-b69d4d4542d718e9010a71f0b05e20422b3f0d40.tar.bz2 |
re PR c++/90842 (ICE in poplevel, at cp/decl.c:585)
PR c++/90842
* parser.c (cp_parser_decl_specifier_seq): For concept or typedef
break early if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.
For type specifiers, set CP_PARSER_FLAGS_NO_TYPE_DEFINITIONS
if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR is set.
* g++.dg/cpp1y/lambda-generic-90842.C: New test.
Co-Authored-By: Jason Merrill <jason@redhat.com>
From-SVN: r278538
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1y/lambda-generic-90842.C | 10 |
2 files changed, 15 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index eb33e63..d9499e5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-11-21 Jakub Jelinek <jakub@redhat.com> + + PR c++/90842 + * g++.dg/cpp1y/lambda-generic-90842.C: New test. + 2019-11-20 Marek Polacek <polacek@redhat.com> PR c++/92443 diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-90842.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-90842.C new file mode 100644 index 0000000..b3dc8c0 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-90842.C @@ -0,0 +1,10 @@ +// PR c++/90842 +// { dg-do compile { target c++14 } } + +auto a = [](auto x) struct C { void foo (); } {}; // { dg-error "expected" } + // { dg-error "type-specifier invalid in lambda" "" { target *-*-* } .-1 } +auto b = [](auto x) mutable typedef {}; // { dg-error "'typedef' invalid in lambda" } +#if __cpp_concepts >= 201907L +auto c = [](auto x) constexpr concept {}; // { dg-error "'concept' invalid in lambda" "" { target c++2a } } +#endif +auto d = [](auto x) mutable friend {}; // { dg-error "'friend' invalid in lambda" } |