diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-07-18 23:01:54 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-07-18 23:01:54 +0200 |
commit | a171a8bb39d5674f0f1fafcec642e625d601dbe2 (patch) | |
tree | db5105875721a43e82f277b51244420ccba5ce39 /gcc | |
parent | 6f41f92bebfb0b5eb3a3859b1c3bb7710d1cb48b (diff) | |
download | gcc-a171a8bb39d5674f0f1fafcec642e625d601dbe2.zip gcc-a171a8bb39d5674f0f1fafcec642e625d601dbe2.tar.gz gcc-a171a8bb39d5674f0f1fafcec642e625d601dbe2.tar.bz2 |
re PR c++/86550 (Lambda parsing allows arbitrary types in decl-specifier-seq)
PR c++/86550
* parser.c (cp_parser_decl_specifier_seq): Diagnose invalid type
specifier if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.
* g++.dg/cpp0x/lambda/lambda-86550.C: New test.
From-SVN: r262862
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/parser.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/lambda/lambda-86550.C | 9 |
4 files changed, 23 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 738b179..4a28c83 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2018-07-18 Jakub Jelinek <jakub@redhat.com> + + PR c++/86550 + * parser.c (cp_parser_decl_specifier_seq): Diagnose invalid type + specifier if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR. + 2018-07-18 Marek Polacek <polacek@redhat.com> PR c++/86190 - bogus -Wsign-conversion warning diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index d0f1e1e..90d5d00 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -13797,6 +13797,9 @@ cp_parser_decl_specifier_seq (cp_parser* parser, found_decl_spec = true; if (!is_cv_qualifier) decl_specs->any_type_specifiers_p = true; + + if ((flags & CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR) != 0) + error_at (token->location, "type-specifier invalid in lambda"); } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 37354f3..1b7364a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-07-18 Jakub Jelinek <jakub@redhat.com> + + PR c++/86550 + * g++.dg/cpp0x/lambda/lambda-86550.C: New test. + 2018-07-18 Bernd Edlinger <bernd.edlinger@hotmail.de> PR 69558 diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-86550.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-86550.C new file mode 100644 index 0000000..4f79850 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-86550.C @@ -0,0 +1,9 @@ +// PR c++/86550 +// { dg-do compile { target c++11 } } + +void +foo () +{ + auto a = []() bool {}; // { dg-error "type-specifier invalid in lambda" } + auto b = []() bool bool bool bool int {}; // { dg-error "type-specifier invalid in lambda" } +} |