mirror of
https://github.com/vim/vim.git
synced 2025-09-07 22:03:36 -04:00
patch 9.0.1720: Vim9 class using wrong index for overridden method
Problem: Vim9 class using wrong index for overridden method Solution: Use correct index for overridden method closes: #12524 closes: #12813 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
This commit is contained in:
parent
20b33b56ad
commit
a456b12011
@ -1948,4 +1948,42 @@ def Test_call_method_in_extended_class()
|
|||||||
v9.CheckScriptSuccess(lines)
|
v9.CheckScriptSuccess(lines)
|
||||||
enddef
|
enddef
|
||||||
|
|
||||||
|
" Test for calling a method in the parent class that is extended partially.
|
||||||
|
" This used to fail with the 'E118: Too many arguments for function: Text' error
|
||||||
|
" message (Github issue #12524).
|
||||||
|
def Test_call_method_in_parent_class()
|
||||||
|
var lines =<< trim END
|
||||||
|
vim9script
|
||||||
|
|
||||||
|
class Widget
|
||||||
|
this._lnum: number = 1
|
||||||
|
|
||||||
|
def SetY(lnum: number)
|
||||||
|
this._lnum = lnum
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def Text(): string
|
||||||
|
return ''
|
||||||
|
enddef
|
||||||
|
endclass
|
||||||
|
|
||||||
|
class Foo extends Widget
|
||||||
|
def Text(): string
|
||||||
|
return '<Foo>'
|
||||||
|
enddef
|
||||||
|
endclass
|
||||||
|
|
||||||
|
def Stack(w1: Widget, w2: Widget): list<Widget>
|
||||||
|
w1.SetY(1)
|
||||||
|
w2.SetY(2)
|
||||||
|
return [w1, w2]
|
||||||
|
enddef
|
||||||
|
|
||||||
|
var foo1 = Foo.new()
|
||||||
|
var foo2 = Foo.new()
|
||||||
|
var l = Stack(foo1, foo2)
|
||||||
|
END
|
||||||
|
v9.CheckScriptSuccess(lines)
|
||||||
|
enddef
|
||||||
|
|
||||||
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
|
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
|
||||||
|
@ -695,6 +695,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1720,
|
||||||
/**/
|
/**/
|
||||||
1719,
|
1719,
|
||||||
/**/
|
/**/
|
||||||
|
@ -911,7 +911,7 @@ early_ret:
|
|||||||
== 0)
|
== 0)
|
||||||
{
|
{
|
||||||
int *table = (int *)(if2cl + 1);
|
int *table = (int *)(if2cl + 1);
|
||||||
table[if_i] = cl_i;
|
table[if_i] = objmethods.ga_len + cl_i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user