aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2011-03-02 13:18:41 -0500
committerJason Merrill <jason@gcc.gnu.org>2011-03-02 13:18:41 -0500
commitf8221c67ba78dff0d80fb5f9d9d3edfa5d842735 (patch)
treed514bcbf0aba6bece4a3bfeda1c99e64db7ab5ec /gcc
parentc6f54c7aa725bb4bb8bb3af16cc49a855b3587ae (diff)
downloadgcc-f8221c67ba78dff0d80fb5f9d9d3edfa5d842735.zip
gcc-f8221c67ba78dff0d80fb5f9d9d3edfa5d842735.tar.gz
gcc-f8221c67ba78dff0d80fb5f9d9d3edfa5d842735.tar.bz2
re PR c++/46159 (Bogus warning about lambdas)
PR c++/46159 * parser.c (cp_parser_primary_expression): Don't warn about a failed tentative parse. From-SVN: r170621
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/parser.c10
-rw-r--r--gcc/testsuite/ChangeLog2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-98.C8
4 files changed, 22 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 2a5244f..a080431 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,9 @@
2011-03-01 Jason Merrill <jason@redhat.com>
+ PR c++/46159
+ * parser.c (cp_parser_primary_expression): Don't warn about a
+ failed tentative parse.
+
PR c++/47200
* semantics.c (cxx_bind_parameters_in_call): Don't call
adjust_temp_type on non-constant args.
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 314a2ff..c63d5b3 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -3712,8 +3712,14 @@ cp_parser_primary_expression (cp_parser *parser,
if (c_dialect_objc ())
/* We have an Objective-C++ message. */
return cp_parser_objc_expression (parser);
- maybe_warn_cpp0x (CPP0X_LAMBDA_EXPR);
- return cp_parser_lambda_expression (parser);
+ {
+ tree lam = cp_parser_lambda_expression (parser);
+ /* Don't warn about a failed tentative parse. */
+ if (cp_parser_error_occurred (parser))
+ return error_mark_node;
+ maybe_warn_cpp0x (CPP0X_LAMBDA_EXPR);
+ return lam;
+ }
case CPP_OBJC_STRING:
if (c_dialect_objc ())
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1ac00aa..c4f8cee 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,7 @@
2011-03-01 Jason Merrill <jason@redhat.com>
+ * g++.dg/cpp0x/lambda/lambda-98.C: New.
+
* g++.dg/cpp0x/constexpr-non-const-arg2.C: New.
2011-03-02 Richard Sandiford <richard.sandiford@linaro.org>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-98.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-98.C
new file mode 100644
index 0000000..ff1085f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-98.C
@@ -0,0 +1,8 @@
+// PR c++/46159
+// { dg-options -std=c++98 }
+
+void
+f()
+{
+ int **p = new(int(*[2]));
+}