diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2013-03-08 22:37:04 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2013-03-08 22:37:04 +0000 |
commit | f030a1dc032027d2968f0219a5f3388733f066aa (patch) | |
tree | c43dd61b568420d91d076694442c864d4503598c | |
parent | b7a786830fe9ca83ad84ba17ea657ec847089e3a (diff) | |
download | gcc-f030a1dc032027d2968f0219a5f3388733f066aa.zip gcc-f030a1dc032027d2968f0219a5f3388733f066aa.tar.gz gcc-f030a1dc032027d2968f0219a5f3388733f066aa.tar.bz2 |
re PR c++/51412 ([c++0x] Broken diagnostic with invalid lambda expressions)
/cp
2013-03-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51412
* cxx-pretty-print.c (pp_cxx_expression): Handle LAMBDA_EXPR.
* error.c (dump_expr): Likewise.
/testsuite
2013-03-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51412
* g++.dg/cpp0x/lambda/lambda-err3.C: New.
From-SVN: r196563
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/cxx-pretty-print.c | 4 | ||||
-rw-r--r-- | gcc/cp/error.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/lambda/lambda-err3.C | 10 |
5 files changed, 29 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 050717f..f09fa0a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2013-03-08 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/51412 + * cxx-pretty-print.c (pp_cxx_expression): Handle LAMBDA_EXPR. + * error.c (dump_expr): Likewise. + 2013-03-08 Jason Merrill <jason@redhat.com> PR c++/51884 diff --git a/gcc/cp/cxx-pretty-print.c b/gcc/cp/cxx-pretty-print.c index a92dfd4..45ad20c 100644 --- a/gcc/cp/cxx-pretty-print.c +++ b/gcc/cp/cxx-pretty-print.c @@ -1162,6 +1162,10 @@ pp_cxx_expression (cxx_pretty_printer *pp, tree t) } } break; + + case LAMBDA_EXPR: + pp_cxx_ws_string (pp, "<lambda>"); + break; default: pp_c_expression (pp_c_base (pp), t); diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 60119ec..c2bf54d 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -2494,6 +2494,10 @@ dump_expr (tree t, int flags) dump_expr (resolve_virtual_fun_from_obj_type_ref (t), flags); break; + case LAMBDA_EXPR: + pp_string (cxx_pp, M_("<lambda>")); + break; + /* This list is incomplete, but should suffice for now. It is very important that `sorry' does not call `report_error_function'. That could cause an infinite loop. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index feb546f..544d7fc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-03-08 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/51412 + * g++.dg/cpp0x/lambda/lambda-err3.C: New. + 2013-03-08 Marek Polacek <polacek@redhat.com> PR tree-optimization/56478 diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-err3.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-err3.C new file mode 100644 index 0000000..fec01ac --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-err3.C @@ -0,0 +1,10 @@ +// PR c++/51412 +// { dg-do compile { target c++11 } } + +void foo(int); + +template<int> void bar() +{ + foo([]{}...); // { dg-error "<lambda>" } + foo([]{}=0 ...); // { dg-error "<lambda>" } +} |