Mercurial > vim
annotate src/testdir/test_vim9_class.vim @ 32051:e8c60d35fce3 v9.0.1357
patch 9.0.1357: using null_object results in an internal error
Commit: https://github.com/vim/vim/commit/c4e1b86cb0d88fa5ec1141d3c600e026dcc1bc21
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Feb 26 18:58:23 2023 +0000
patch 9.0.1357: using null_object results in an internal error
Problem: Using null_object results in an internal error. (Ernie Rael)
Solution: Add instructions for pushing an object and class. (closes https://github.com/vim/vim/issues/12044)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 26 Feb 2023 20:00:03 +0100 |
parents | b49db96c1e55 |
children | 615964c77be3 |
rev | line source |
---|---|
31396
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1 " Test Vim9 classes |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
3 source check.vim |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
4 import './vim9.vim' as v9 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
5 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
6 def Test_class_basic() |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
7 var lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
8 class NotWorking |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
9 endclass |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
10 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
11 v9.CheckScriptFailure(lines, 'E1316:') |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
12 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
13 lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
14 vim9script |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
15 class notWorking |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
16 endclass |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
17 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
18 v9.CheckScriptFailure(lines, 'E1314:') |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
19 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
20 lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
21 vim9script |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
22 class Not@working |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
23 endclass |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
24 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
25 v9.CheckScriptFailure(lines, 'E1315:') |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
26 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
27 lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
28 vim9script |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
29 abstract noclass Something |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
30 endclass |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
31 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
32 v9.CheckScriptFailure(lines, 'E475:') |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
33 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
34 lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
35 vim9script |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
36 abstract classy Something |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
37 endclass |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
38 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
39 v9.CheckScriptFailure(lines, 'E475:') |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
40 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
41 lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
42 vim9script |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
43 class Something |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
44 endcl |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
45 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
46 v9.CheckScriptFailure(lines, 'E1065:') |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
47 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
48 lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
49 vim9script |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
50 class Something |
31849
dbec60b8c253
patch 9.0.1257: code style is not check in test scripts
Bram Moolenaar <Bram@vim.org>
parents:
31843
diff
changeset
|
51 endclass school's out |
31396
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
52 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
53 v9.CheckScriptFailure(lines, 'E488:') |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
54 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
55 lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
56 vim9script |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
57 class Something |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
58 endclass | echo 'done' |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
59 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
60 v9.CheckScriptFailure(lines, 'E488:') |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
61 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
62 lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
63 vim9script |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
64 class Something |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
65 this |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
66 endclass |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
67 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
68 v9.CheckScriptFailure(lines, 'E1317:') |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
69 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
70 lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
71 vim9script |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
72 class Something |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
73 this. |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
74 endclass |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
75 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
76 v9.CheckScriptFailure(lines, 'E1317:') |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
77 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
78 lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
79 vim9script |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
80 class Something |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
81 this .count |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
82 endclass |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
83 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
84 v9.CheckScriptFailure(lines, 'E1317:') |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
85 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
86 lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
87 vim9script |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
88 class Something |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
89 this. count |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
90 endclass |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
91 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
92 v9.CheckScriptFailure(lines, 'E1317:') |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
93 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
94 lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
95 vim9script |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
96 class Something |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
97 this.count: number |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
98 that.count |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
99 endclass |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
100 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
101 v9.CheckScriptFailure(lines, 'E1318: Not a valid command in a class: that.count') |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
102 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
103 lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
104 vim9script |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
105 class Something |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
106 this.count |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
107 endclass |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
108 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
109 v9.CheckScriptFailure(lines, 'E1022:') |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
110 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
111 lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
112 vim9script |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
113 class Something |
31517
cd5247f4da06
patch 9.0.1091: assignment to non-existing member causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31501
diff
changeset
|
114 def new() |
cd5247f4da06
patch 9.0.1091: assignment to non-existing member causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31501
diff
changeset
|
115 this.state = 0 |
cd5247f4da06
patch 9.0.1091: assignment to non-existing member causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31501
diff
changeset
|
116 enddef |
cd5247f4da06
patch 9.0.1091: assignment to non-existing member causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31501
diff
changeset
|
117 endclass |
cd5247f4da06
patch 9.0.1091: assignment to non-existing member causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31501
diff
changeset
|
118 var obj = Something.new() |
cd5247f4da06
patch 9.0.1091: assignment to non-existing member causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31501
diff
changeset
|
119 END |
cd5247f4da06
patch 9.0.1091: assignment to non-existing member causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31501
diff
changeset
|
120 v9.CheckScriptFailure(lines, 'E1089:') |
cd5247f4da06
patch 9.0.1091: assignment to non-existing member causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31501
diff
changeset
|
121 |
cd5247f4da06
patch 9.0.1091: assignment to non-existing member causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31501
diff
changeset
|
122 lines =<< trim END |
cd5247f4da06
patch 9.0.1091: assignment to non-existing member causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31501
diff
changeset
|
123 vim9script |
cd5247f4da06
patch 9.0.1091: assignment to non-existing member causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31501
diff
changeset
|
124 class Something |
31396
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
125 this.count : number |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
126 endclass |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
127 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
128 v9.CheckScriptFailure(lines, 'E1059:') |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
129 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
130 lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
131 vim9script |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
132 class Something |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
133 this.count:number |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
134 endclass |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
135 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
136 v9.CheckScriptFailure(lines, 'E1069:') |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
137 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
138 lines =<< trim END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
139 vim9script |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
140 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
141 class TextPosition |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
142 this.lnum: number |
31424
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
143 this.col: number |
31416
f088f1d97eee
patch 9.0.1041: cannot define a method in a class
Bram Moolenaar <Bram@vim.org>
parents:
31404
diff
changeset
|
144 |
31501
560ba934725f
patch 9.0.1083: empty and comment lines in a class cause an error
Bram Moolenaar <Bram@vim.org>
parents:
31483
diff
changeset
|
145 # make a nicely formatted string |
31416
f088f1d97eee
patch 9.0.1041: cannot define a method in a class
Bram Moolenaar <Bram@vim.org>
parents:
31404
diff
changeset
|
146 def ToString(): string |
f088f1d97eee
patch 9.0.1041: cannot define a method in a class
Bram Moolenaar <Bram@vim.org>
parents:
31404
diff
changeset
|
147 return $'({this.lnum}, {this.col})' |
f088f1d97eee
patch 9.0.1041: cannot define a method in a class
Bram Moolenaar <Bram@vim.org>
parents:
31404
diff
changeset
|
148 enddef |
31396
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
149 endclass |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
150 |
31404
60b1d266548d
patch 9.0.1035: object members are not being marked as used
Bram Moolenaar <Bram@vim.org>
parents:
31396
diff
changeset
|
151 # use the automatically generated new() method |
60b1d266548d
patch 9.0.1035: object members are not being marked as used
Bram Moolenaar <Bram@vim.org>
parents:
31396
diff
changeset
|
152 var pos = TextPosition.new(2, 12) |
60b1d266548d
patch 9.0.1035: object members are not being marked as used
Bram Moolenaar <Bram@vim.org>
parents:
31396
diff
changeset
|
153 assert_equal(2, pos.lnum) |
60b1d266548d
patch 9.0.1035: object members are not being marked as used
Bram Moolenaar <Bram@vim.org>
parents:
31396
diff
changeset
|
154 assert_equal(12, pos.col) |
31416
f088f1d97eee
patch 9.0.1041: cannot define a method in a class
Bram Moolenaar <Bram@vim.org>
parents:
31404
diff
changeset
|
155 |
f088f1d97eee
patch 9.0.1041: cannot define a method in a class
Bram Moolenaar <Bram@vim.org>
parents:
31404
diff
changeset
|
156 # call an object method |
f088f1d97eee
patch 9.0.1041: cannot define a method in a class
Bram Moolenaar <Bram@vim.org>
parents:
31404
diff
changeset
|
157 assert_equal('(2, 12)', pos.ToString()) |
31712
2d68375d5ddf
patch 9.0.1188: return value of type() for class and object unclear
Bram Moolenaar <Bram@vim.org>
parents:
31708
diff
changeset
|
158 |
2d68375d5ddf
patch 9.0.1188: return value of type() for class and object unclear
Bram Moolenaar <Bram@vim.org>
parents:
31708
diff
changeset
|
159 assert_equal(v:t_class, type(TextPosition)) |
2d68375d5ddf
patch 9.0.1188: return value of type() for class and object unclear
Bram Moolenaar <Bram@vim.org>
parents:
31708
diff
changeset
|
160 assert_equal(v:t_object, type(pos)) |
2d68375d5ddf
patch 9.0.1188: return value of type() for class and object unclear
Bram Moolenaar <Bram@vim.org>
parents:
31708
diff
changeset
|
161 assert_equal('class<TextPosition>', typename(TextPosition)) |
2d68375d5ddf
patch 9.0.1188: return value of type() for class and object unclear
Bram Moolenaar <Bram@vim.org>
parents:
31708
diff
changeset
|
162 assert_equal('object<TextPosition>', typename(pos)) |
31396
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
163 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
164 v9.CheckScriptSuccess(lines) |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
165 enddef |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
166 |
32047
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
167 def Test_class_defined_twice() |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
168 # class defined twice should fail |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
169 var lines =<< trim END |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
170 vim9script |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
171 class There |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
172 endclass |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
173 class There |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
174 endclass |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
175 END |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
176 v9.CheckScriptFailure(lines, 'E1041: Redefining script item: "There"') |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
177 |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
178 # one class, reload same script twice is OK |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
179 lines =<< trim END |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
180 vim9script |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
181 class There |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
182 endclass |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
183 END |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
184 writefile(lines, 'XclassTwice.vim', 'D') |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
185 source XclassTwice.vim |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
186 source XclassTwice.vim |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
187 enddef |
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
188 |
32051
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
189 def Test_returning_null_object() |
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
190 # this was causing an internal error |
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
191 var lines =<< trim END |
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
192 vim9script |
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
193 |
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
194 class BufferList |
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
195 def Current(): any |
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
196 return null_object |
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
197 enddef |
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
198 endclass |
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
199 |
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
200 var buffers = BufferList.new() |
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
201 echo buffers.Current() |
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
202 END |
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
203 v9.CheckScriptSuccess(lines) |
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
204 enddef |
e8c60d35fce3
patch 9.0.1357: using null_object results in an internal error
Bram Moolenaar <Bram@vim.org>
parents:
32047
diff
changeset
|
205 |
31833
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
206 def Test_class_interface_wrong_end() |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
207 var lines =<< trim END |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
208 vim9script |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
209 abstract class SomeName |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
210 this.member = 'text' |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
211 endinterface |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
212 END |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
213 v9.CheckScriptFailure(lines, 'E476: Invalid command: endinterface, expected endclass') |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
214 |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
215 lines =<< trim END |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
216 vim9script |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
217 export interface AnotherName |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
218 this.member: string |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
219 endclass |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
220 END |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
221 v9.CheckScriptFailure(lines, 'E476: Invalid command: endclass, expected endinterface') |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
222 enddef |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
223 |
31970
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
224 def Test_object_not_set() |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
225 var lines =<< trim END |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
226 vim9script |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
227 |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
228 class State |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
229 this.value = 'xyz' |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
230 endclass |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
231 |
31972
4e59c4260d84
patch 9.0.1318: code style test fails
Bram Moolenaar <Bram@vim.org>
parents:
31970
diff
changeset
|
232 var state: State |
31970
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
233 var db = {'xyz': 789} |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
234 echo db[state.value] |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
235 END |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
236 v9.CheckScriptFailure(lines, 'E1360:') |
31976
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
237 |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
238 lines =<< trim END |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
239 vim9script |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
240 |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
241 class Background |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
242 this.background = 'dark' |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
243 endclass |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
244 |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
245 class Colorscheme |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
246 this._bg: Background |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
247 |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
248 def GetBackground(): string |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
249 return this._bg.background |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
250 enddef |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
251 endclass |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
252 |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
253 var bg: Background # UNINITIALIZED |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
254 echo Colorscheme.new(bg).GetBackground() |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
255 END |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
256 v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected object<Background> but got object<Unknown>') |
31970
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
257 enddef |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
258 |
31424
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
259 def Test_class_member_initializer() |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
260 var lines =<< trim END |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
261 vim9script |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
262 |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
263 class TextPosition |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
264 this.lnum: number = 1 |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
265 this.col: number = 1 |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
266 |
31501
560ba934725f
patch 9.0.1083: empty and comment lines in a class cause an error
Bram Moolenaar <Bram@vim.org>
parents:
31483
diff
changeset
|
267 # constructor with only the line number |
31424
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
268 def new(lnum: number) |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
269 this.lnum = lnum |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
270 enddef |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
271 endclass |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
272 |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
273 var pos = TextPosition.new(3) |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
274 assert_equal(3, pos.lnum) |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
275 assert_equal(1, pos.col) |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
276 |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
277 var instr = execute('disassemble TextPosition.new') |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
278 assert_match('new\_s*' .. |
31426
92afb904fbee
patch 9.0.1046: class method disassemble test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents:
31424
diff
changeset
|
279 '0 NEW TextPosition size \d\+\_s*' .. |
31424
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
280 '\d PUSHNR 1\_s*' .. |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
281 '\d STORE_THIS 0\_s*' .. |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
282 '\d PUSHNR 1\_s*' .. |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
283 '\d STORE_THIS 1\_s*' .. |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
284 'this.lnum = lnum\_s*' .. |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
285 '\d LOAD arg\[-1]\_s*' .. |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
286 '\d PUSHNR 0\_s*' .. |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
287 '\d LOAD $0\_s*' .. |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
288 '\d\+ STOREINDEX object\_s*' .. |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
289 '\d\+ RETURN object.*', |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
290 instr) |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
291 END |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
292 v9.CheckScriptSuccess(lines) |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
293 enddef |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
294 |
31980
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
295 def Test_member_any_used_as_object() |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
296 var lines =<< trim END |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
297 vim9script |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
298 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
299 class Inner |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
300 this.value: number = 0 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
301 endclass |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
302 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
303 class Outer |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
304 this.inner: any |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
305 endclass |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
306 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
307 def F(outer: Outer) |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
308 outer.inner.value = 1 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
309 enddef |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
310 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
311 var inner_obj = Inner.new(0) |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
312 var outer_obj = Outer.new(inner_obj) |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
313 F(outer_obj) |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
314 assert_equal(1, inner_obj.value) |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
315 END |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
316 v9.CheckScriptSuccess(lines) |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
317 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
318 lines =<< trim END |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
319 vim9script |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
320 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
321 class Inner |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
322 this.value: number = 0 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
323 endclass |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
324 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
325 class Outer |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
326 this.inner: Inner |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
327 endclass |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
328 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
329 def F(outer: Outer) |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
330 outer.inner.value = 1 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
331 enddef |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
332 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
333 def Test_assign_to_nested_typed_member() |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
334 var inner = Inner.new(0) |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
335 var outer = Outer.new(inner) |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
336 F(outer) |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
337 assert_equal(1, inner.value) |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
338 enddef |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
339 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
340 Test_assign_to_nested_typed_member() |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
341 END |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
342 v9.CheckScriptSuccess(lines) |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
343 enddef |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
344 |
31738
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
345 def Test_assignment_with_operator() |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
346 var lines =<< trim END |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
347 vim9script |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
348 |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
349 class Foo |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
350 this.x: number |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
351 |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
352 def Add(n: number) |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
353 this.x += n |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
354 enddef |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
355 endclass |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
356 |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
357 var f = Foo.new(3) |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
358 f.Add(17) |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
359 assert_equal(20, f.x) |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
360 END |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
361 v9.CheckScriptSuccess(lines) |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
362 enddef |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
363 |
31740
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
364 def Test_list_of_objects() |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
365 var lines =<< trim END |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
366 vim9script |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
367 |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
368 class Foo |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
369 def Add() |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
370 enddef |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
371 endclass |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
372 |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
373 def ProcessList(fooList: list<Foo>) |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
374 for foo in fooList |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
375 foo.Add() |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
376 endfor |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
377 enddef |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
378 |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
379 var l: list<Foo> = [Foo.new()] |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
380 ProcessList(l) |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
381 END |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
382 v9.CheckScriptSuccess(lines) |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
383 enddef |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
384 |
31744
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
385 def Test_expr_after_using_object() |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
386 var lines =<< trim END |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
387 vim9script |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
388 |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
389 class Something |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
390 this.label: string = '' |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
391 endclass |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
392 |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
393 def Foo(): Something |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
394 var v = Something.new() |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
395 echo 'in Foo(): ' .. typename(v) |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
396 return v |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
397 enddef |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
398 |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
399 Foo() |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
400 END |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
401 v9.CheckScriptSuccess(lines) |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
402 enddef |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
403 |
31441
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
404 def Test_class_default_new() |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
405 var lines =<< trim END |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
406 vim9script |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
407 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
408 class TextPosition |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
409 this.lnum: number = 1 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
410 this.col: number = 1 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
411 endclass |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
412 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
413 var pos = TextPosition.new() |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
414 assert_equal(1, pos.lnum) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
415 assert_equal(1, pos.col) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
416 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
417 pos = TextPosition.new(v:none, v:none) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
418 assert_equal(1, pos.lnum) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
419 assert_equal(1, pos.col) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
420 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
421 pos = TextPosition.new(3, 22) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
422 assert_equal(3, pos.lnum) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
423 assert_equal(22, pos.col) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
424 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
425 pos = TextPosition.new(v:none, 33) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
426 assert_equal(1, pos.lnum) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
427 assert_equal(33, pos.col) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
428 END |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
429 v9.CheckScriptSuccess(lines) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
430 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
431 lines =<< trim END |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
432 vim9script |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
433 class Person |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
434 this.name: string |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
435 this.age: number = 42 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
436 this.education: string = "unknown" |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
437 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
438 def new(this.name, this.age = v:none, this.education = v:none) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
439 enddef |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
440 endclass |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
441 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
442 var piet = Person.new("Piet") |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
443 assert_equal("Piet", piet.name) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
444 assert_equal(42, piet.age) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
445 assert_equal("unknown", piet.education) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
446 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
447 var chris = Person.new("Chris", 4, "none") |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
448 assert_equal("Chris", chris.name) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
449 assert_equal(4, chris.age) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
450 assert_equal("none", chris.education) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
451 END |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
452 v9.CheckScriptSuccess(lines) |
31443
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
453 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
454 lines =<< trim END |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
455 vim9script |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
456 class Person |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
457 this.name: string |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
458 this.age: number = 42 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
459 this.education: string = "unknown" |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
460 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
461 def new(this.name, this.age = v:none, this.education = v:none) |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
462 enddef |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
463 endclass |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
464 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
465 var missing = Person.new() |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
466 END |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
467 v9.CheckScriptFailure(lines, 'E119:') |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
468 enddef |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
469 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
470 def Test_class_object_member_inits() |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
471 var lines =<< trim END |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
472 vim9script |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
473 class TextPosition |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
474 this.lnum: number |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
475 this.col = 1 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
476 this.addcol: number = 2 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
477 endclass |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
478 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
479 var pos = TextPosition.new() |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
480 assert_equal(0, pos.lnum) |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
481 assert_equal(1, pos.col) |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
482 assert_equal(2, pos.addcol) |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
483 END |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
484 v9.CheckScriptSuccess(lines) |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
485 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
486 lines =<< trim END |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
487 vim9script |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
488 class TextPosition |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
489 this.lnum |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
490 this.col = 1 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
491 endclass |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
492 END |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
493 v9.CheckScriptFailure(lines, 'E1022:') |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
494 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
495 lines =<< trim END |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
496 vim9script |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
497 class TextPosition |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
498 this.lnum = v:none |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
499 this.col = 1 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
500 endclass |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
501 END |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
502 v9.CheckScriptFailure(lines, 'E1330:') |
31441
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
503 enddef |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
504 |
31455
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
505 def Test_class_object_member_access() |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
506 var lines =<< trim END |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
507 vim9script |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
508 class Triple |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
509 this._one = 1 |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
510 this.two = 2 |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
511 public this.three = 3 |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
512 |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
513 def GetOne(): number |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
514 return this._one |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
515 enddef |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
516 endclass |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
517 |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
518 var trip = Triple.new() |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
519 assert_equal(1, trip.GetOne()) |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
520 assert_equal(2, trip.two) |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
521 assert_equal(3, trip.three) |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
522 assert_fails('echo trip._one', 'E1333') |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
523 |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
524 assert_fails('trip._one = 11', 'E1333') |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
525 assert_fails('trip.two = 22', 'E1335') |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
526 trip.three = 33 |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
527 assert_equal(33, trip.three) |
31483
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
528 |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
529 assert_fails('trip.four = 4', 'E1334') |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
530 END |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
531 v9.CheckScriptSuccess(lines) |
31521
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
532 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
533 lines =<< trim END |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
534 vim9script |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
535 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
536 class MyCar |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
537 this.make: string |
31616
0eb51cec2154
patch 9.0.1140: cannot call an object method in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31614
diff
changeset
|
538 this.age = 5 |
31521
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
539 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
540 def new(make_arg: string) |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
541 this.make = make_arg |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
542 enddef |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
543 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
544 def GetMake(): string |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
545 return $"make = {this.make}" |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
546 enddef |
31616
0eb51cec2154
patch 9.0.1140: cannot call an object method in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31614
diff
changeset
|
547 def GetAge(): number |
0eb51cec2154
patch 9.0.1140: cannot call an object method in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31614
diff
changeset
|
548 return this.age |
0eb51cec2154
patch 9.0.1140: cannot call an object method in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31614
diff
changeset
|
549 enddef |
31521
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
550 endclass |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
551 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
552 var c = MyCar.new("abc") |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
553 assert_equal('make = abc', c.GetMake()) |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
554 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
555 c = MyCar.new("def") |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
556 assert_equal('make = def', c.GetMake()) |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
557 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
558 var c2 = MyCar.new("123") |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
559 assert_equal('make = 123', c2.GetMake()) |
31616
0eb51cec2154
patch 9.0.1140: cannot call an object method in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31614
diff
changeset
|
560 |
0eb51cec2154
patch 9.0.1140: cannot call an object method in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31614
diff
changeset
|
561 def CheckCar() |
0eb51cec2154
patch 9.0.1140: cannot call an object method in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31614
diff
changeset
|
562 assert_equal("make = def", c.GetMake()) |
0eb51cec2154
patch 9.0.1140: cannot call an object method in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31614
diff
changeset
|
563 assert_equal(5, c.GetAge()) |
0eb51cec2154
patch 9.0.1140: cannot call an object method in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31614
diff
changeset
|
564 enddef |
0eb51cec2154
patch 9.0.1140: cannot call an object method in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31614
diff
changeset
|
565 CheckCar() |
31521
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
566 END |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
567 v9.CheckScriptSuccess(lines) |
31525
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
568 |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
569 lines =<< trim END |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
570 vim9script |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
571 |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
572 class MyCar |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
573 this.make: string |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
574 |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
575 def new(make_arg: string) |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
576 this.make = make_arg |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
577 enddef |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
578 endclass |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
579 |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
580 var c = MyCar.new("abc") |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
581 var c = MyCar.new("def") |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
582 END |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
583 v9.CheckScriptFailure(lines, 'E1041:') |
31813
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
584 |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
585 lines =<< trim END |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
586 vim9script |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
587 |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
588 class Foo |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
589 this.x: list<number> = [] |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
590 |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
591 def Add(n: number): any |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
592 this.x->add(n) |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
593 return this |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
594 enddef |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
595 endclass |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
596 |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
597 echo Foo.new().Add(1).Add(2).x |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
598 echo Foo.new().Add(1).Add(2) |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
599 .x |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
600 echo Foo.new().Add(1) |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
601 .Add(2).x |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
602 echo Foo.new() |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
603 .Add(1).Add(2).x |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
604 echo Foo.new() |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
605 .Add(1) |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
606 .Add(2) |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
607 .x |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
608 END |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
609 v9.CheckScriptSuccess(lines) |
31483
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
610 enddef |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
611 |
31604
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
612 def Test_class_object_compare() |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
613 var class_lines =<< trim END |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
614 vim9script |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
615 class Item |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
616 this.nr = 0 |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
617 this.name = 'xx' |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
618 endclass |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
619 END |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
620 |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
621 # used at the script level and in a compiled function |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
622 var test_lines =<< trim END |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
623 var i1 = Item.new() |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
624 assert_equal(i1, i1) |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
625 assert_true(i1 is i1) |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
626 var i2 = Item.new() |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
627 assert_equal(i1, i2) |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
628 assert_false(i1 is i2) |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
629 var i3 = Item.new(0, 'xx') |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
630 assert_equal(i1, i3) |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
631 |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
632 var io1 = Item.new(1, 'xx') |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
633 assert_notequal(i1, io1) |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
634 var io2 = Item.new(0, 'yy') |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
635 assert_notequal(i1, io2) |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
636 END |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
637 |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
638 v9.CheckScriptSuccess(class_lines + test_lines) |
31614
f3c7e573b7be
patch 9.0.1139: cannot create a new object in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31604
diff
changeset
|
639 v9.CheckScriptSuccess( |
f3c7e573b7be
patch 9.0.1139: cannot create a new object in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31604
diff
changeset
|
640 class_lines + ['def Test()'] + test_lines + ['enddef', 'Test()']) |
31604
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
641 |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
642 for op in ['>', '>=', '<', '<=', '=~', '!~'] |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
643 var op_lines = [ |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
644 'var i1 = Item.new()', |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
645 'var i2 = Item.new()', |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
646 'echo i1 ' .. op .. ' i2', |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
647 ] |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
648 v9.CheckScriptFailure(class_lines + op_lines, 'E1153: Invalid operation for object') |
31614
f3c7e573b7be
patch 9.0.1139: cannot create a new object in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31604
diff
changeset
|
649 v9.CheckScriptFailure(class_lines |
f3c7e573b7be
patch 9.0.1139: cannot create a new object in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31604
diff
changeset
|
650 + ['def Test()'] + op_lines + ['enddef', 'Test()'], 'E1153: Invalid operation for object') |
31604
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
651 endfor |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
652 enddef |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
653 |
31698
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
654 def Test_object_type() |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
655 var lines =<< trim END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
656 vim9script |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
657 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
658 class One |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
659 this.one = 1 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
660 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
661 class Two |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
662 this.two = 2 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
663 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
664 class TwoMore extends Two |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
665 this.more = 9 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
666 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
667 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
668 var o: One = One.new() |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
669 var t: Two = Two.new() |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
670 var m: TwoMore = TwoMore.new() |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
671 var tm: Two = TwoMore.new() |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
672 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
673 t = m |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
674 END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
675 v9.CheckScriptSuccess(lines) |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
676 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
677 lines =<< trim END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
678 vim9script |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
679 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
680 class One |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
681 this.one = 1 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
682 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
683 class Two |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
684 this.two = 2 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
685 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
686 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
687 var o: One = Two.new() |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
688 END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
689 v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected object<One> but got object<Two>') |
31704
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
690 |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
691 lines =<< trim END |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
692 vim9script |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
693 |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
694 interface One |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
695 def GetMember(): number |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
696 endinterface |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
697 class Two implements One |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
698 this.one = 1 |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
699 def GetMember(): number |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
700 return this.one |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
701 enddef |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
702 endclass |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
703 |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
704 var o: One = Two.new(5) |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
705 assert_equal(5, o.GetMember()) |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
706 END |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
707 v9.CheckScriptSuccess(lines) |
31750
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
708 |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
709 lines =<< trim END |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
710 vim9script |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
711 |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
712 class Num |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
713 this.n: number = 0 |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
714 endclass |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
715 |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
716 def Ref(name: string): func(Num): Num |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
717 return (arg: Num): Num => { |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
718 return eval(name)(arg) |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
719 } |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
720 enddef |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
721 |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
722 const Fn = Ref('Double') |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
723 var Double = (m: Num): Num => Num.new(m.n * 2) |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
724 |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
725 echo Fn(Num.new(4)) |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
726 END |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
727 v9.CheckScriptSuccess(lines) |
31698
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
728 enddef |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
729 |
31590
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
730 def Test_class_member() |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
731 # check access rules |
31483
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
732 var lines =<< trim END |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
733 vim9script |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
734 class TextPos |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
735 this.lnum = 1 |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
736 this.col = 1 |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
737 static counter = 0 |
31580
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
738 static _secret = 7 |
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
739 public static anybody = 42 |
31483
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
740 |
31582
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
741 static def AddToCounter(nr: number) |
31483
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
742 counter += nr |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
743 enddef |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
744 endclass |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
745 |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
746 assert_equal(0, TextPos.counter) |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
747 TextPos.AddToCounter(3) |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
748 assert_equal(3, TextPos.counter) |
31517
cd5247f4da06
patch 9.0.1091: assignment to non-existing member causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31501
diff
changeset
|
749 assert_fails('echo TextPos.noSuchMember', 'E1338:') |
31849
dbec60b8c253
patch 9.0.1257: code style is not check in test scripts
Bram Moolenaar <Bram@vim.org>
parents:
31843
diff
changeset
|
750 |
31630
5400eba7c3f3
patch 9.0.1147: cannot access a class member in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31616
diff
changeset
|
751 def GetCounter(): number |
5400eba7c3f3
patch 9.0.1147: cannot access a class member in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31616
diff
changeset
|
752 return TextPos.counter |
5400eba7c3f3
patch 9.0.1147: cannot access a class member in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31616
diff
changeset
|
753 enddef |
5400eba7c3f3
patch 9.0.1147: cannot access a class member in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31616
diff
changeset
|
754 assert_equal(3, GetCounter()) |
31483
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
755 |
31517
cd5247f4da06
patch 9.0.1091: assignment to non-existing member causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31501
diff
changeset
|
756 assert_fails('TextPos.noSuchMember = 2', 'E1337:') |
31580
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
757 assert_fails('TextPos.counter = 5', 'E1335:') |
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
758 assert_fails('TextPos.counter += 5', 'E1335:') |
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
759 |
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
760 assert_fails('echo TextPos._secret', 'E1333:') |
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
761 assert_fails('TextPos._secret = 8', 'E1333:') |
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
762 |
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
763 assert_equal(42, TextPos.anybody) |
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
764 TextPos.anybody = 12 |
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
765 assert_equal(12, TextPos.anybody) |
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
766 TextPos.anybody += 5 |
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
767 assert_equal(17, TextPos.anybody) |
31455
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
768 END |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
769 v9.CheckScriptSuccess(lines) |
31590
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
770 |
31738
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
771 # example in the help |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
772 lines =<< trim END |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
773 vim9script |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
774 class OtherThing |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
775 this.size: number |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
776 static totalSize: number |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
777 |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
778 def new(this.size) |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
779 totalSize += this.size |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
780 enddef |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
781 endclass |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
782 assert_equal(0, OtherThing.totalSize) |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
783 var to3 = OtherThing.new(3) |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
784 assert_equal(3, OtherThing.totalSize) |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
785 var to7 = OtherThing.new(7) |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
786 assert_equal(10, OtherThing.totalSize) |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
787 END |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
788 v9.CheckScriptSuccess(lines) |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
789 |
31815
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
790 # access private member in lambda |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
791 lines =<< trim END |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
792 vim9script |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
793 |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
794 class Foo |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
795 this._x: number = 0 |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
796 |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
797 def Add(n: number): number |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
798 const F = (): number => this._x + n |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
799 return F() |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
800 enddef |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
801 endclass |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
802 |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
803 var foo = Foo.new() |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
804 assert_equal(5, foo.Add(5)) |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
805 END |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
806 v9.CheckScriptSuccess(lines) |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
807 |
31590
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
808 # check shadowing |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
809 lines =<< trim END |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
810 vim9script |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
811 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
812 class Some |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
813 static count = 0 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
814 def Method(count: number) |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
815 echo count |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
816 enddef |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
817 endclass |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
818 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
819 var s = Some.new() |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
820 s.Method(7) |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
821 END |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
822 v9.CheckScriptFailure(lines, 'E1340: Argument already declared in the class: count') |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
823 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
824 lines =<< trim END |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
825 vim9script |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
826 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
827 class Some |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
828 static count = 0 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
829 def Method(arg: number) |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
830 var count = 3 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
831 echo arg count |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
832 enddef |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
833 endclass |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
834 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
835 var s = Some.new() |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
836 s.Method(7) |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
837 END |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
838 v9.CheckScriptFailure(lines, 'E1341: Variable already declared in the class: count') |
31455
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
839 enddef |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
840 |
31633
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
841 func Test_class_garbagecollect() |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
842 let lines =<< trim END |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
843 vim9script |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
844 |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
845 class Point |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
846 this.p = [2, 3] |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
847 static pl = ['a', 'b'] |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
848 static pd = {a: 'a', b: 'b'} |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
849 endclass |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
850 |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
851 echo Point.pl Point.pd |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
852 call test_garbagecollect_now() |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
853 echo Point.pl Point.pd |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
854 END |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
855 call v9.CheckScriptSuccess(lines) |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
856 endfunc |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
857 |
31582
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
858 def Test_class_function() |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
859 var lines =<< trim END |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
860 vim9script |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
861 class Value |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
862 this.value = 0 |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
863 static objects = 0 |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
864 |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
865 def new(v: number) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
866 this.value = v |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
867 ++objects |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
868 enddef |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
869 |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
870 static def GetCount(): number |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
871 return objects |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
872 enddef |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
873 endclass |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
874 |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
875 assert_equal(0, Value.GetCount()) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
876 var v1 = Value.new(2) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
877 assert_equal(1, Value.GetCount()) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
878 var v2 = Value.new(7) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
879 assert_equal(2, Value.GetCount()) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
880 END |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
881 v9.CheckScriptSuccess(lines) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
882 enddef |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
883 |
32013
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
884 def Test_class_defcompile() |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
885 var lines =<< trim END |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
886 vim9script |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
887 |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
888 class C |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
889 def Fo(i: number): string |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
890 return i |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
891 enddef |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
892 endclass |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
893 |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
894 defcompile C.Fo |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
895 END |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
896 v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number') |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
897 |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
898 lines =<< trim END |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
899 vim9script |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
900 |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
901 class C |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
902 static def Fc(): number |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
903 return 'x' |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
904 enddef |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
905 endclass |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
906 |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
907 defcompile C.Fc |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
908 END |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
909 v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected number but got string') |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
910 enddef |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
911 |
31451
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
912 def Test_class_object_to_string() |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
913 var lines =<< trim END |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
914 vim9script |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
915 class TextPosition |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
916 this.lnum = 1 |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
917 this.col = 22 |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
918 endclass |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
919 |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
920 assert_equal("class TextPosition", string(TextPosition)) |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
921 |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
922 var pos = TextPosition.new() |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
923 assert_equal("object of TextPosition {lnum: 1, col: 22}", string(pos)) |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
924 END |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
925 v9.CheckScriptSuccess(lines) |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
926 enddef |
31396
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
927 |
31635
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
928 def Test_interface_basics() |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
929 var lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
930 vim9script |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
931 interface Something |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
932 this.value: string |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
933 static count: number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
934 def GetCount(): number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
935 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
936 END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
937 v9.CheckScriptSuccess(lines) |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
938 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
939 lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
940 interface SomethingWrong |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
941 static count = 7 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
942 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
943 END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
944 v9.CheckScriptFailure(lines, 'E1342:') |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
945 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
946 lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
947 vim9script |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
948 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
949 interface Some |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
950 static count: number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
951 def Method(count: number) |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
952 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
953 END |
31720
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
954 v9.CheckScriptFailure(lines, 'E1340: Argument already declared in the class: count') |
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
955 |
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
956 lines =<< trim END |
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
957 vim9script |
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
958 |
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
959 interface Some |
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
960 this.value: number |
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
961 def Method(value: number) |
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
962 endinterface |
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
963 END |
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
964 v9.CheckScriptFailure(lines, 'E1340: Argument already declared in the class: value') |
31635
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
965 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
966 lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
967 vim9script |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
968 interface somethingWrong |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
969 static count = 7 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
970 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
971 END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
972 v9.CheckScriptFailure(lines, 'E1343: Interface name must start with an uppercase letter: somethingWrong') |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
973 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
974 lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
975 vim9script |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
976 interface SomethingWrong |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
977 this.value: string |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
978 static count = 7 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
979 def GetCount(): number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
980 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
981 END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
982 v9.CheckScriptFailure(lines, 'E1344:') |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
983 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
984 lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
985 vim9script |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
986 interface SomethingWrong |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
987 this.value: string |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
988 static count: number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
989 def GetCount(): number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
990 return 5 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
991 enddef |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
992 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
993 END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
994 v9.CheckScriptFailure(lines, 'E1345: Not a valid command in an interface: return 5') |
31831
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
995 |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
996 lines =<< trim END |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
997 vim9script |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
998 export interface EnterExit |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
999 def Enter(): void |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1000 def Exit(): void |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1001 endinterface |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1002 END |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1003 writefile(lines, 'XdefIntf.vim', 'D') |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1004 |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1005 lines =<< trim END |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1006 vim9script |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1007 import './XdefIntf.vim' as defIntf |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1008 export def With(ee: defIntf.EnterExit, F: func) |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1009 ee.Enter() |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1010 try |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1011 F() |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1012 finally |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1013 ee.Exit() |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1014 endtry |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1015 enddef |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1016 END |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1017 v9.CheckScriptSuccess(lines) |
31833
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1018 |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1019 var imported =<< trim END |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1020 vim9script |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1021 export abstract class EnterExit |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1022 def Enter(): void |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1023 enddef |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1024 def Exit(): void |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1025 enddef |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1026 endclass |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1027 END |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1028 writefile(imported, 'XdefIntf2.vim', 'D') |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1029 |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1030 lines[1] = " import './XdefIntf2.vim' as defIntf" |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1031 v9.CheckScriptSuccess(lines) |
31635
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
1032 enddef |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
1033 |
31639
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1034 def Test_class_implements_interface() |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1035 var lines =<< trim END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1036 vim9script |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1037 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1038 interface Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1039 static count: number |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1040 def Method(nr: number) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1041 endinterface |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1042 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1043 class SomeImpl implements Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1044 static count: number |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1045 def Method(nr: number) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1046 echo nr |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1047 enddef |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1048 endclass |
31649
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1049 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1050 interface Another |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1051 this.member: string |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1052 endinterface |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1053 |
32047
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
1054 class AnotherImpl implements Some, Another |
31649
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1055 this.member = 'abc' |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1056 static count: number |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1057 def Method(nr: number) |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1058 echo nr |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1059 enddef |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1060 endclass |
31639
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1061 END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1062 v9.CheckScriptSuccess(lines) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1063 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1064 lines =<< trim END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1065 vim9script |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1066 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1067 interface Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1068 static counter: number |
31649
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1069 endinterface |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1070 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1071 class SomeImpl implements Some implements Some |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1072 static count: number |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1073 endclass |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1074 END |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1075 v9.CheckScriptFailure(lines, 'E1350:') |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1076 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1077 lines =<< trim END |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1078 vim9script |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1079 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1080 interface Some |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1081 static counter: number |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1082 endinterface |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1083 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1084 class SomeImpl implements Some, Some |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1085 static count: number |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1086 endclass |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1087 END |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1088 v9.CheckScriptFailure(lines, 'E1351: Duplicate interface after "implements": Some') |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1089 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1090 lines =<< trim END |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1091 vim9script |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1092 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1093 interface Some |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1094 static counter: number |
31639
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1095 def Method(nr: number) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1096 endinterface |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1097 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1098 class SomeImpl implements Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1099 static count: number |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1100 def Method(nr: number) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1101 echo nr |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1102 enddef |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1103 endclass |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1104 END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1105 v9.CheckScriptFailure(lines, 'E1348: Member "counter" of interface "Some" not implemented') |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1106 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1107 lines =<< trim END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1108 vim9script |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1109 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1110 interface Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1111 static count: number |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1112 def Methods(nr: number) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1113 endinterface |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1114 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1115 class SomeImpl implements Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1116 static count: number |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1117 def Method(nr: number) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1118 echo nr |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1119 enddef |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1120 endclass |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1121 END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1122 v9.CheckScriptFailure(lines, 'E1349: Function "Methods" of interface "Some" not implemented') |
31754
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1123 |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1124 # Check different order of members in class and interface works. |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1125 lines =<< trim END |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1126 vim9script |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1127 |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1128 interface Result |
31758
85f93e094810
patch 9.0.1211: storing value in interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31754
diff
changeset
|
1129 public this.label: string |
31754
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1130 this.errpos: number |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1131 endinterface |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1132 |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1133 # order of members is opposite of interface |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1134 class Failure implements Result |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1135 this.errpos: number = 42 |
31758
85f93e094810
patch 9.0.1211: storing value in interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31754
diff
changeset
|
1136 public this.label: string = 'label' |
31754
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1137 endclass |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1138 |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1139 def Test() |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1140 var result: Result = Failure.new() |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1141 |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1142 assert_equal('label', result.label) |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1143 assert_equal(42, result.errpos) |
31758
85f93e094810
patch 9.0.1211: storing value in interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31754
diff
changeset
|
1144 |
85f93e094810
patch 9.0.1211: storing value in interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31754
diff
changeset
|
1145 result.label = 'different' |
85f93e094810
patch 9.0.1211: storing value in interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31754
diff
changeset
|
1146 assert_equal('different', result.label) |
85f93e094810
patch 9.0.1211: storing value in interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31754
diff
changeset
|
1147 assert_equal(42, result.errpos) |
31754
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1148 enddef |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1149 |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1150 Test() |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1151 END |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1152 v9.CheckScriptSuccess(lines) |
31639
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1153 enddef |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1154 |
31843
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1155 def Test_call_interface_method() |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1156 var lines =<< trim END |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1157 vim9script |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1158 interface Base |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1159 def Enter(): void |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1160 endinterface |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1161 |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1162 class Child implements Base |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1163 def Enter(): void |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1164 g:result ..= 'child' |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1165 enddef |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1166 endclass |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1167 |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1168 def F(obj: Base) |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1169 obj.Enter() |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1170 enddef |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1171 |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1172 g:result = '' |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1173 F(Child.new()) |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1174 assert_equal('child', g:result) |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1175 unlet g:result |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1176 END |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1177 v9.CheckScriptSuccess(lines) |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1178 |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1179 lines =<< trim END |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1180 vim9script |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1181 class Base |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1182 def Enter(): void |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1183 g:result ..= 'base' |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1184 enddef |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1185 endclass |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1186 |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1187 class Child extends Base |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1188 def Enter(): void |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1189 g:result ..= 'child' |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1190 enddef |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1191 endclass |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1192 |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1193 def F(obj: Base) |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1194 obj.Enter() |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1195 enddef |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1196 |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1197 g:result = '' |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1198 F(Child.new()) |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1199 assert_equal('child', g:result) |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1200 unlet g:result |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1201 END |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1202 v9.CheckScriptSuccess(lines) |
31865
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1203 |
31896
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1204 # method of interface returns a value |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1205 lines =<< trim END |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1206 vim9script |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1207 interface Base |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1208 def Enter(): string |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1209 endinterface |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1210 |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1211 class Child implements Base |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1212 def Enter(): string |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1213 g:result ..= 'child' |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1214 return "/resource" |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1215 enddef |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1216 endclass |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1217 |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1218 def F(obj: Base) |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1219 var r = obj.Enter() |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1220 g:result ..= r |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1221 enddef |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1222 |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1223 g:result = '' |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1224 F(Child.new()) |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1225 assert_equal('child/resource', g:result) |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1226 unlet g:result |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1227 END |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1228 v9.CheckScriptSuccess(lines) |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1229 |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1230 lines =<< trim END |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1231 vim9script |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1232 class Base |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1233 def Enter(): string |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1234 return null_string |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1235 enddef |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1236 endclass |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1237 |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1238 class Child extends Base |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1239 def Enter(): string |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1240 g:result ..= 'child' |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1241 return "/resource" |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1242 enddef |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1243 endclass |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1244 |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1245 def F(obj: Base) |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1246 var r = obj.Enter() |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1247 g:result ..= r |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1248 enddef |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1249 |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1250 g:result = '' |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1251 F(Child.new()) |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1252 assert_equal('child/resource', g:result) |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1253 unlet g:result |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1254 END |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1255 v9.CheckScriptSuccess(lines) |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1256 |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1257 |
31865
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1258 # No class that implements the interface. |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1259 lines =<< trim END |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1260 vim9script |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1261 |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1262 interface IWithEE |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1263 def Enter(): any |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1264 def Exit(): void |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1265 endinterface |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1266 |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1267 def With1(ee: IWithEE, F: func) |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1268 var r = ee.Enter() |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1269 enddef |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1270 |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1271 defcompile |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1272 END |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1273 v9.CheckScriptSuccess(lines) |
31843
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1274 enddef |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1275 |
31645
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1276 def Test_class_used_as_type() |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1277 var lines =<< trim END |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1278 vim9script |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1279 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1280 class Point |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1281 this.x = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1282 this.y = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1283 endclass |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1284 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1285 var p: Point |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1286 p = Point.new(2, 33) |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1287 assert_equal(2, p.x) |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1288 assert_equal(33, p.y) |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1289 END |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1290 v9.CheckScriptSuccess(lines) |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1291 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1292 lines =<< trim END |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1293 vim9script |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1294 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1295 interface HasX |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1296 this.x: number |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1297 endinterface |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1298 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1299 class Point implements HasX |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1300 this.x = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1301 this.y = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1302 endclass |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1303 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1304 var p: Point |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1305 p = Point.new(2, 33) |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1306 var hx = p |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1307 assert_equal(2, hx.x) |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1308 END |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1309 v9.CheckScriptSuccess(lines) |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1310 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1311 lines =<< trim END |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1312 vim9script |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1313 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1314 class Point |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1315 this.x = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1316 this.y = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1317 endclass |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1318 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1319 var p: Point |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1320 p = 'text' |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1321 END |
31698
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1322 v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected object<Point> but got string') |
31645
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1323 enddef |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1324 |
31653
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1325 def Test_class_extends() |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1326 var lines =<< trim END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1327 vim9script |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1328 class Base |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1329 this.one = 1 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1330 def GetOne(): number |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1331 return this.one |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1332 enddef |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1333 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1334 class Child extends Base |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1335 this.two = 2 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1336 def GetTotal(): number |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1337 return this.one + this.two |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1338 enddef |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1339 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1340 var o = Child.new() |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1341 assert_equal(1, o.one) |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1342 assert_equal(2, o.two) |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1343 assert_equal(1, o.GetOne()) |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1344 assert_equal(3, o.GetTotal()) |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1345 END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1346 v9.CheckScriptSuccess(lines) |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1347 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1348 lines =<< trim END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1349 vim9script |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1350 class Base |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1351 this.one = 1 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1352 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1353 class Child extends Base |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1354 this.two = 2 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1355 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1356 var o = Child.new(3, 44) |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1357 assert_equal(3, o.one) |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1358 assert_equal(44, o.two) |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1359 END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1360 v9.CheckScriptSuccess(lines) |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1361 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1362 lines =<< trim END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1363 vim9script |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1364 class Base |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1365 this.one = 1 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1366 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1367 class Child extends Base extends Base |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1368 this.two = 2 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1369 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1370 END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1371 v9.CheckScriptFailure(lines, 'E1352: Duplicate "extends"') |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1372 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1373 lines =<< trim END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1374 vim9script |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1375 class Child extends BaseClass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1376 this.two = 2 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1377 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1378 END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1379 v9.CheckScriptFailure(lines, 'E1353: Class name not found: BaseClass') |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1380 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1381 lines =<< trim END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1382 vim9script |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1383 var SomeVar = 99 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1384 class Child extends SomeVar |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1385 this.two = 2 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1386 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1387 END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1388 v9.CheckScriptFailure(lines, 'E1354: Cannot extend SomeVar') |
31692
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1389 |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1390 lines =<< trim END |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1391 vim9script |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1392 class Base |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1393 this.name: string |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1394 def ToString(): string |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1395 return this.name |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1396 enddef |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1397 endclass |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1398 |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1399 class Child extends Base |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1400 this.age: number |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1401 def ToString(): string |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1402 return super.ToString() .. ': ' .. this.age |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1403 enddef |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1404 endclass |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1405 |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1406 var o = Child.new('John', 42) |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1407 assert_equal('John: 42', o.ToString()) |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1408 END |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1409 v9.CheckScriptSuccess(lines) |
31694
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1410 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1411 lines =<< trim END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1412 vim9script |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1413 class Child |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1414 this.age: number |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1415 def ToString(): number |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1416 return this.age |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1417 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1418 def ToString(): string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1419 return this.age |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1420 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1421 endclass |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1422 END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1423 v9.CheckScriptFailure(lines, 'E1355: Duplicate function: ToString') |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1424 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1425 lines =<< trim END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1426 vim9script |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1427 class Child |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1428 this.age: number |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1429 def ToString(): string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1430 return super .ToString() .. ': ' .. this.age |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1431 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1432 endclass |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1433 var o = Child.new(42) |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1434 echo o.ToString() |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1435 END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1436 v9.CheckScriptFailure(lines, 'E1356:') |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1437 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1438 lines =<< trim END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1439 vim9script |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1440 class Base |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1441 this.name: string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1442 def ToString(): string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1443 return this.name |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1444 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1445 endclass |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1446 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1447 var age = 42 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1448 def ToString(): string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1449 return super.ToString() .. ': ' .. age |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1450 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1451 echo ToString() |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1452 END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1453 v9.CheckScriptFailure(lines, 'E1357:') |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1454 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1455 lines =<< trim END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1456 vim9script |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1457 class Child |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1458 this.age: number |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1459 def ToString(): string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1460 return super.ToString() .. ': ' .. this.age |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1461 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1462 endclass |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1463 var o = Child.new(42) |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1464 echo o.ToString() |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1465 END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1466 v9.CheckScriptFailure(lines, 'E1358:') |
31698
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1467 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1468 lines =<< trim END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1469 vim9script |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1470 class Base |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1471 this.name: string |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1472 static def ToString(): string |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1473 return 'Base class' |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1474 enddef |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1475 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1476 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1477 class Child extends Base |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1478 this.age: number |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1479 def ToString(): string |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1480 return Base.ToString() .. ': ' .. this.age |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1481 enddef |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1482 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1483 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1484 var o = Child.new('John', 42) |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1485 assert_equal('Base class: 42', o.ToString()) |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1486 END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1487 v9.CheckScriptSuccess(lines) |
31738
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1488 |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1489 lines =<< trim END |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1490 vim9script |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1491 class Base |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1492 this.value = 1 |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1493 def new(init: number) |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1494 this.value = number + 1 |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1495 enddef |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1496 endclass |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1497 class Child extends Base |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1498 def new() |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1499 this.new(3) |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1500 enddef |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1501 endclass |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1502 var c = Child.new() |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1503 END |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1504 v9.CheckScriptFailure(lines, 'E1325: Method not found on class "Child": new(') |
31746
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1505 |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1506 # base class with more than one object member |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1507 lines =<< trim END |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1508 vim9script |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1509 |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1510 class Result |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1511 this.success: bool |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1512 this.value: any = null |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1513 endclass |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1514 |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1515 class Success extends Result |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1516 def new(this.value = v:none) |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1517 this.success = true |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1518 enddef |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1519 endclass |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1520 |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1521 var v = Success.new('asdf') |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1522 assert_equal("object of Success {success: true, value: 'asdf'}", string(v)) |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1523 END |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1524 v9.CheckScriptSuccess(lines) |
31653
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1525 enddef |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1526 |
31928
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1527 def Test_using_base_class() |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1528 var lines =<< trim END |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1529 vim9script |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1530 |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1531 class BaseEE |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1532 def Enter(): any |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1533 return null |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1534 enddef |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1535 def Exit(resource: any): void |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1536 enddef |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1537 endclass |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1538 |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1539 class ChildEE extends BaseEE |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1540 def Enter(): any |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1541 return 42 |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1542 enddef |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1543 |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1544 def Exit(resource: number): void |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1545 g:result ..= '/exit' |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1546 enddef |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1547 endclass |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1548 |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1549 def With(ee: BaseEE) |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1550 var r = ee.Enter() |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1551 try |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1552 g:result ..= r |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1553 finally |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1554 g:result ..= '/finally' |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1555 ee.Exit(r) |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1556 endtry |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1557 enddef |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1558 |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1559 g:result = '' |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1560 With(ChildEE.new()) |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1561 assert_equal('42/finally/exit', g:result) |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1562 END |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1563 v9.CheckScriptSuccess(lines) |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1564 unlet g:result |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1565 enddef |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1566 |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1567 |
31706
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1568 def Test_class_import() |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1569 var lines =<< trim END |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1570 vim9script |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1571 export class Animal |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1572 this.kind: string |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1573 this.name: string |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1574 endclass |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1575 END |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1576 writefile(lines, 'Xanimal.vim', 'D') |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1577 |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1578 lines =<< trim END |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1579 vim9script |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1580 import './Xanimal.vim' as animal |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1581 |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1582 var a: animal.Animal |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1583 a = animal.Animal.new('fish', 'Eric') |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1584 assert_equal('fish', a.kind) |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1585 assert_equal('Eric', a.name) |
31708
f6309f6742e5
patch 9.0.1186: imported class does not work when used twice in a line
Bram Moolenaar <Bram@vim.org>
parents:
31706
diff
changeset
|
1586 |
f6309f6742e5
patch 9.0.1186: imported class does not work when used twice in a line
Bram Moolenaar <Bram@vim.org>
parents:
31706
diff
changeset
|
1587 var b: animal.Animal = animal.Animal.new('cat', 'Garfield') |
f6309f6742e5
patch 9.0.1186: imported class does not work when used twice in a line
Bram Moolenaar <Bram@vim.org>
parents:
31706
diff
changeset
|
1588 assert_equal('cat', b.kind) |
f6309f6742e5
patch 9.0.1186: imported class does not work when used twice in a line
Bram Moolenaar <Bram@vim.org>
parents:
31706
diff
changeset
|
1589 assert_equal('Garfield', b.name) |
31706
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1590 END |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1591 v9.CheckScriptSuccess(lines) |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1592 enddef |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1593 |
31732
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1594 def Test_abstract_class() |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1595 var lines =<< trim END |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1596 vim9script |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1597 abstract class Base |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1598 this.name: string |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1599 endclass |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1600 class Person extends Base |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1601 this.age: number |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1602 endclass |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1603 var p: Base = Person.new('Peter', 42) |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1604 assert_equal('Peter', p.name) |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1605 assert_equal(42, p.age) |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1606 END |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1607 v9.CheckScriptSuccess(lines) |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1608 |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1609 lines =<< trim END |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1610 vim9script |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1611 abstract class Base |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1612 this.name: string |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1613 endclass |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1614 class Person extends Base |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1615 this.age: number |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1616 endclass |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1617 var p = Base.new('Peter') |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1618 END |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1619 v9.CheckScriptFailure(lines, 'E1325: Method not found on class "Base": new(') |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1620 |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1621 lines =<< trim END |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1622 abstract class Base |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1623 this.name: string |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1624 endclass |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1625 END |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1626 v9.CheckScriptFailure(lines, 'E1316:') |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1627 enddef |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1628 |
31770
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1629 def Test_closure_in_class() |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1630 var lines =<< trim END |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1631 vim9script |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1632 |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1633 class Foo |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1634 this.y: list<string> = ['B'] |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1635 |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1636 def new() |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1637 g:result = filter(['A', 'B'], (_, v) => index(this.y, v) == -1) |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1638 enddef |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1639 endclass |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1640 |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1641 Foo.new() |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1642 assert_equal(['A'], g:result) |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1643 END |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1644 v9.CheckScriptSuccess(lines) |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1645 enddef |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1646 |
31835
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1647 def Test_defer_with_object() |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1648 var lines =<< trim END |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1649 vim9script |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1650 |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1651 class CWithEE |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1652 def Enter() |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1653 g:result ..= "entered/" |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1654 enddef |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1655 def Exit() |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1656 g:result ..= "exited" |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1657 enddef |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1658 endclass |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1659 |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1660 def With(ee: CWithEE, F: func) |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1661 ee.Enter() |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1662 defer ee.Exit() |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1663 F() |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1664 enddef |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1665 |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1666 g:result = '' |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1667 var obj = CWithEE.new() |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1668 obj->With(() => { |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1669 g:result ..= "called/" |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1670 }) |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1671 assert_equal('entered/called/exited', g:result) |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1672 END |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1673 v9.CheckScriptSuccess(lines) |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1674 unlet g:result |
31920
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1675 |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1676 lines =<< trim END |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1677 vim9script |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1678 |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1679 class BaseWithEE |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1680 def Enter() |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1681 g:result ..= "entered-base/" |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1682 enddef |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1683 def Exit() |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1684 g:result ..= "exited-base" |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1685 enddef |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1686 endclass |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1687 |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1688 class CWithEE extends BaseWithEE |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1689 def Enter() |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1690 g:result ..= "entered-child/" |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1691 enddef |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1692 def Exit() |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1693 g:result ..= "exited-child" |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1694 enddef |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1695 endclass |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1696 |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1697 def With(ee: BaseWithEE, F: func) |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1698 ee.Enter() |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1699 defer ee.Exit() |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1700 F() |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1701 enddef |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1702 |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1703 g:result = '' |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1704 var obj = CWithEE.new() |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1705 obj->With(() => { |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1706 g:result ..= "called/" |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1707 }) |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1708 assert_equal('entered-child/called/exited-child', g:result) |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1709 END |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1710 v9.CheckScriptSuccess(lines) |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1711 unlet g:result |
31835
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1712 enddef |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1713 |
31443
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
1714 |
31396
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1715 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker |