forked from aniani/vim
patch 9.0.1045: in a class object members cannot be initialized
Problem: In a class object members cannot be initialized.
Solution: Support initializing object members. Make "dissassemble" work on
an object method.
This commit is contained in:
@@ -129,7 +129,7 @@ def Test_class_basic()
|
||||
|
||||
class TextPosition
|
||||
this.lnum: number
|
||||
this.col: number
|
||||
this.col: number
|
||||
|
||||
def ToString(): string
|
||||
return $'({this.lnum}, {this.col})'
|
||||
@@ -147,5 +147,40 @@ def Test_class_basic()
|
||||
v9.CheckScriptSuccess(lines)
|
||||
enddef
|
||||
|
||||
def Test_class_member_initializer()
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
|
||||
class TextPosition
|
||||
this.lnum: number = 1
|
||||
this.col: number = 1
|
||||
|
||||
def new(lnum: number)
|
||||
this.lnum = lnum
|
||||
enddef
|
||||
endclass
|
||||
|
||||
var pos = TextPosition.new(3)
|
||||
assert_equal(3, pos.lnum)
|
||||
assert_equal(1, pos.col)
|
||||
|
||||
var instr = execute('disassemble TextPosition.new')
|
||||
assert_match('new\_s*' ..
|
||||
'0 NEW TextPosition size 72\_s*' ..
|
||||
'\d PUSHNR 1\_s*' ..
|
||||
'\d STORE_THIS 0\_s*' ..
|
||||
'\d PUSHNR 1\_s*' ..
|
||||
'\d STORE_THIS 1\_s*' ..
|
||||
'this.lnum = lnum\_s*' ..
|
||||
'\d LOAD arg\[-1]\_s*' ..
|
||||
'\d PUSHNR 0\_s*' ..
|
||||
'\d LOAD $0\_s*' ..
|
||||
'\d\+ STOREINDEX object\_s*' ..
|
||||
'\d\+ RETURN object.*',
|
||||
instr)
|
||||
END
|
||||
v9.CheckScriptSuccess(lines)
|
||||
enddef
|
||||
|
||||
|
||||
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
|
||||
|
||||
Reference in New Issue
Block a user