Community
Participate
Working Groups
For this code: void f() { [](int r){return r;}(5); } The parser gives the error: Return has value, in function returning void It seems the parser is misinterpreting the return statement inside the lambda to be a return statement for the enclosing function, for if I change f to return int instead of void, the error goes away.
that is why I prefer java...
fixed in 8.0
*** cdt cvs genie on behalf of elaskavaia *** Bug 332285 - fixed lambda expressions [*] ReturnCheckerTest.java 1.5 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/internal/checkers/ReturnCheckerTest.java?root=Tools_Project&r1=1.4&r2=1.5 [*] ReturnChecker.java 1.16 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ReturnChecker.java?root=Tools_Project&r1=1.15&r2=1.16
It now works on the original example, but it still gives an error on this one: void f() { if ([](int r){return r == 0;}(0)) ; }
another attempt to fix it...
*** cdt cvs genie on behalf of elaskavaia *** Bug 332285 - Parser misinterprets return statement in lambda [*] ReturnCheckerTest.java 1.8 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/internal/checkers/ReturnCheckerTest.java?root=Tools_Project&r1=1.7&r2=1.8 [*] ReturnChecker.java 1.21 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ReturnChecker.java?root=Tools_Project&r1=1.20&r2=1.21