If a function has optional arguments (arguments with default values), the tooltip that appears when typing the arguments in a call shows square brackets around the optional arguments: def func1(arg1, arg2, arg3=None, arg4=42, arg5='default'): pass func1( # argument tooltip says void func1 (arg1, arg2, [arg3, arg4, arg5]) However, an instance method with optional arguments shows the square brackets in the wrong set of arguments: class C: def func1(self, arg1, arg2, arg3=None, arg4=42, arg5='default'): pass c = C() c.func1( # argument tooltip says void func1 (arg1, arg2, arg3, [arg4, arg5]) It appears as if arg3 was not optional, but it is. This is probably because it's not compensating for the presence of the implicit 'self' parameter.
Git commit cbcde7f0136bde15858931774fb9e44a8e217a7e by Francis Herne. Committed on 01/01/2017 at 01:03. Pushed by flherne into branch '5.1'. Completion hint: Correct default-argument index for non-static methods. >From the bug: ``` class C: def func1(self, arg1, arg2, arg3=None, arg4=42, arg5='default'): pass c = C() c.func1( # argument tooltip says void func1 (arg1, arg2, arg3, [arg4, arg5]) ``` Now '(arg1, arg2, [arg3, arg4, arg5])' as expected. Still wrong in case of calling the method directly from the class: `C.func1(c,` <- same tooltip, but now the self argument is explicit. This was broken before too, and would require much more intrusive changes to fix because we only have the function declaration currently. Quick fix for 5.1, I'm making some larger changes for master. M +4 -5 codecompletion/helpers.cpp https://commits.kde.org/kdev-python/cbcde7f0136bde15858931774fb9e44a8e217a7e