[Differential] [Request, 70 lines] D3770: Create declaration for lambda expressions
flherne (Francis Herne)
noreply at phabricator.kde.org
Tue Dec 20 23:51:30 UTC 2016
flherne created this revision.
flherne added a reviewer: brauch.
flherne set the repository for this revision to R53 KDevelop: Python Support.
Restricted Application added a subscriber: kdevelop-devel.
This is an alternative to D3555 <https://phabricator.kde.org/D3555>.
Lambda expression improvements.
Lambda expressions were given the type of their return expression, e.g. `lambda x: 12` has type "int".
That caused calling them to get no or an incorrect return type:
`a = (lamba x: 12)("arg")` # a should be int, but is mixed.
They should have a function type instead.
`*args` or `**kwargs` arguments to a lambda were shown as undefined in the return expression:
`lambda *args, **kwargs: args + kwargs["foo"]`
The types of arguments were never known, even with default arguments.
Create function declarations for lambdas; this is slightly hacky but allows the use of `visitArguments()` and `addArgumentTypeHints()` without modification.
Lambdas do now show up in the outline view, which is not ideal.
Fixes one test. Adds five more, none of which passed before.
No test regressions.
I'll run duchainify over the python3.5 source before pushing.
R53 KDevelop: Python Support
To: flherne, brauch
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the KDevelop-devel