aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-07-18 23:01:54 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2018-07-18 23:01:54 +0200
commita171a8bb39d5674f0f1fafcec642e625d601dbe2 (patch)
treedb5105875721a43e82f277b51244420ccba5ce39 /gcc
parent6f41f92bebfb0b5eb3a3859b1c3bb7710d1cb48b (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/cp/parser.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-86550.C9
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" }
+}