diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 050717f1ba3..f09fa0a8327 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2013-03-08 Paolo Carlini + + PR c++/51412 + * cxx-pretty-print.c (pp_cxx_expression): Handle LAMBDA_EXPR. + * error.c (dump_expr): Likewise. + 2013-03-08 Jason Merrill PR c++/51884 diff --git a/gcc/cp/cxx-pretty-print.c b/gcc/cp/cxx-pretty-print.c index a92dfd47275..45ad20cd9a9 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, ""); + break; default: pp_c_expression (pp_c_base (pp), t); diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 60119ec6302..c2bf54dcb2c 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_("")); + 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 feb546f083c..544d7fc134a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-03-08 Paolo Carlini + + PR c++/51412 + * g++.dg/cpp0x/lambda/lambda-err3.C: New. + 2013-03-08 Marek Polacek 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 00000000000..fec01acb6b6 --- /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 void bar() +{ + foo([]{}...); // { dg-error "" } + foo([]{}=0 ...); // { dg-error "" } +}