This is an alternative to 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.
BUG: 306212
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[1] + 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.