| " Test Vim9 classes |
| |
| source check.vim |
| import './vim9.vim' as v9 |
| |
| def Test_class_basic() |
| var lines =<< trim END |
| class NotWorking |
| endclass |
| END |
| v9.CheckScriptFailure(lines, 'E1316:') |
| |
| lines =<< trim END |
| vim9script |
| class notWorking |
| endclass |
| END |
| v9.CheckScriptFailure(lines, 'E1314:') |
| |
| lines =<< trim END |
| vim9script |
| class Not@working |
| endclass |
| END |
| v9.CheckScriptFailure(lines, 'E1315:') |
| |
| lines =<< trim END |
| vim9script |
| abstract noclass Something |
| endclass |
| END |
| v9.CheckScriptFailure(lines, 'E475:') |
| |
| lines =<< trim END |
| vim9script |
| abstract classy Something |
| endclass |
| END |
| v9.CheckScriptFailure(lines, 'E475:') |
| |
| lines =<< trim END |
| vim9script |
| class Something |
| endcl |
| END |
| v9.CheckScriptFailure(lines, 'E1065:') |
| |
| lines =<< trim END |
| vim9script |
| class Something |
| endclass school's out |
| END |
| v9.CheckScriptFailure(lines, 'E488:') |
| |
| lines =<< trim END |
| vim9script |
| class Something |
| endclass | echo 'done' |
| END |
| v9.CheckScriptFailure(lines, 'E488:') |
| |
| lines =<< trim END |
| vim9script |
| class Something |
| this |
| endclass |
| END |
| v9.CheckScriptFailure(lines, 'E1317:') |
| |
| lines =<< trim END |
| vim9script |
| class Something |
| this. |
| endclass |
| END |
| v9.CheckScriptFailure(lines, 'E1317:') |
| |
| lines =<< trim END |
| vim9script |
| class Something |
| this .count |
| endclass |
| END |
| v9.CheckScriptFailure(lines, 'E1317:') |
| |
| lines =<< trim END |
| vim9script |
| class Something |
| this. count |
| endclass |
| END |
| v9.CheckScriptFailure(lines, 'E1317:') |
| |
| lines =<< trim END |
| vim9script |
| class Something |
| this.count: number |
| that.count |
| endclass |
| END |
| v9.CheckScriptFailure(lines, 'E1318: Not a valid command in a class: that.count') |
| |
| lines =<< trim END |
| vim9script |
| class Something |
| this.count |
| endclass |
| END |
| v9.CheckScriptFailure(lines, 'E1022:') |
| |
| lines =<< trim END |
| vim9script |
| class Something |
| this.count : number |
| endclass |
| END |
| v9.CheckScriptFailure(lines, 'E1059:') |
| |
| lines =<< trim END |
| vim9script |
| class Something |
| this.count:number |
| endclass |
| END |
| v9.CheckScriptFailure(lines, 'E1069:') |
| |
| lines =<< trim END |
| vim9script |
| |
| class TextPosition |
| this.lnum: number |
| this.col: number |
| |
| def ToString(): string |
| return $'({this.lnum}, {this.col})' |
| enddef |
| endclass |
| |
| # use the automatically generated new() method |
| var pos = TextPosition.new(2, 12) |
| assert_equal(2, pos.lnum) |
| assert_equal(12, pos.col) |
| |
| # call an object method |
| assert_equal('(2, 12)', pos.ToString()) |
| END |
| 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 \d\+\_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 |