Mercurial > vim
annotate src/testdir/test_vim9_class.vim @ 32047:b49db96c1e55 v9.0.1355
patch 9.0.1355: no error when declaring a class twice
Commit: https://github.com/vim/vim/commit/83ae6150bf6bd313487b3a51f9be9836e8b9c20f
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Feb 25 19:59:31 2023 +0000
patch 9.0.1355: no error when declaring a class twice
Problem: No error when declaring a class twice. (Ernie Rael)
Solution: Pass different flags when declaring the class. (closes https://github.com/vim/vim/issues/12057)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 25 Feb 2023 21:00:04 +0100 |
parents | ec05de98b0f7 |
children | e8c60d35fce3 |
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 |
31833
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
189 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
|
190 var lines =<< trim END |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
191 vim9script |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
192 abstract class SomeName |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
193 this.member = 'text' |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
194 endinterface |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
195 END |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
196 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
|
197 |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
198 lines =<< trim END |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
199 vim9script |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
200 export interface AnotherName |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
201 this.member: string |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
202 endclass |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
203 END |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
204 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
|
205 enddef |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
206 |
31970
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
207 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
|
208 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
|
209 vim9script |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
210 |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
211 class State |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
212 this.value = 'xyz' |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
213 endclass |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
214 |
31972
4e59c4260d84
patch 9.0.1318: code style test fails
Bram Moolenaar <Bram@vim.org>
parents:
31970
diff
changeset
|
215 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
|
216 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
|
217 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
|
218 END |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
219 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
|
220 |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
221 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
|
222 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
|
223 |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
224 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
|
225 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
|
226 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
|
227 |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
228 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
|
229 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
|
230 |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
231 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
|
232 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
|
233 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
|
234 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
|
235 |
16025ef158bf
patch 9.0.1320: checking the type of a null object causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31972
diff
changeset
|
236 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
|
237 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
|
238 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 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
|
240 enddef |
fe66019e7a23
patch 9.0.1317: crash when using an unset object variable
Bram Moolenaar <Bram@vim.org>
parents:
31928
diff
changeset
|
241 |
31424
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
242 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
|
243 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
|
244 vim9script |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
245 |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
246 class TextPosition |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
247 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
|
248 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
|
249 |
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
|
250 # 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
|
251 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
|
252 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
|
253 enddef |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
254 endclass |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
255 |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
256 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
|
257 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
|
258 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
|
259 |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
260 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
|
261 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
|
262 '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
|
263 '\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
|
264 '\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
|
265 '\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
|
266 '\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
|
267 '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
|
268 '\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
|
269 '\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
|
270 '\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
|
271 '\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
|
272 '\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
|
273 instr) |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
274 END |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
275 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
|
276 enddef |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
277 |
31980
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
278 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
|
279 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
|
280 vim9script |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
281 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
282 class Inner |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
283 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
|
284 endclass |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
285 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
286 class Outer |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
287 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
|
288 endclass |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
289 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
290 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
|
291 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
|
292 enddef |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
293 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
294 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
|
295 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
|
296 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
|
297 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
|
298 END |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
299 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
|
300 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
301 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
|
302 vim9script |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
303 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
304 class Inner |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
305 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
|
306 endclass |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
307 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
308 class Outer |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
309 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
|
310 endclass |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
311 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
312 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
|
313 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
|
314 enddef |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
315 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
316 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
|
317 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
|
318 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
|
319 F(outer) |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
320 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
|
321 enddef |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
322 |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
323 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
|
324 END |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
325 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
|
326 enddef |
13329cb9faee
patch 9.0.1322: crash when indexing "any" which is an object
Bram Moolenaar <Bram@vim.org>
parents:
31976
diff
changeset
|
327 |
31738
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
328 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
|
329 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
|
330 vim9script |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
331 |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
332 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
|
333 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
|
334 |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
335 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
|
336 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
|
337 enddef |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
338 endclass |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
339 |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
340 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
|
341 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
|
342 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
|
343 END |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
344 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
|
345 enddef |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
346 |
31740
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
347 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
|
348 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
|
349 vim9script |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
350 |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
351 class Foo |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
352 def Add() |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
353 enddef |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
354 endclass |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
355 |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
356 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
|
357 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
|
358 foo.Add() |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
359 endfor |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
360 enddef |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
361 |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
362 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
|
363 ProcessList(l) |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
364 END |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
365 v9.CheckScriptSuccess(lines) |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
366 enddef |
22a4824d7964
patch 9.0.1202: crash when iterating over list of objects
Bram Moolenaar <Bram@vim.org>
parents:
31738
diff
changeset
|
367 |
31744
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
368 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
|
369 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
|
370 vim9script |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
371 |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
372 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
|
373 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
|
374 endclass |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
375 |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
376 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
|
377 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
|
378 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
|
379 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
|
380 enddef |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
381 |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
382 Foo() |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
383 END |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
384 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
|
385 enddef |
1b2bde0c64f2
patch 9.0.1204: expression compiled the wrong way after using an object
Bram Moolenaar <Bram@vim.org>
parents:
31740
diff
changeset
|
386 |
31441
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
387 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
|
388 var lines =<< trim END |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
389 vim9script |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
390 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
391 class TextPosition |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
392 this.lnum: number = 1 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
393 this.col: number = 1 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
394 endclass |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
395 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
396 var pos = TextPosition.new() |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
397 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
|
398 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
|
399 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
400 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
|
401 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
|
402 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
|
403 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
404 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
|
405 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
|
406 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
|
407 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
408 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
|
409 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
|
410 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
|
411 END |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
412 v9.CheckScriptSuccess(lines) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
413 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
414 lines =<< trim END |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
415 vim9script |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
416 class Person |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
417 this.name: string |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
418 this.age: number = 42 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
419 this.education: string = "unknown" |
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 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
|
422 enddef |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
423 endclass |
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 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
|
426 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
|
427 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
|
428 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
|
429 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
430 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
|
431 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
|
432 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
|
433 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
|
434 END |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
435 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
|
436 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
437 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
|
438 vim9script |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
439 class Person |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
440 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
|
441 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
|
442 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
|
443 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
444 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
|
445 enddef |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
446 endclass |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
447 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
448 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
|
449 END |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
450 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
|
451 enddef |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
452 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
453 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
|
454 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
|
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 TextPosition |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
457 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
|
458 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
|
459 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
|
460 endclass |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
461 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
462 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
|
463 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
|
464 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
|
465 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
|
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.CheckScriptSuccess(lines) |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
468 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
469 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
|
470 vim9script |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
471 class TextPosition |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
472 this.lnum |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
473 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
|
474 endclass |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
475 END |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
476 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
|
477 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
478 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
|
479 vim9script |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
480 class TextPosition |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
481 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
|
482 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
|
483 endclass |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
484 END |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
485 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
|
486 enddef |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
487 |
31455
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
488 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
|
489 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
|
490 vim9script |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
491 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
|
492 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
|
493 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
|
494 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
|
495 |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
496 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
|
497 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
|
498 enddef |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
499 endclass |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
500 |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
501 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
|
502 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
|
503 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
|
504 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
|
505 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
|
506 |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
507 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
|
508 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
|
509 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
|
510 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
|
511 |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
512 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
|
513 END |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
514 v9.CheckScriptSuccess(lines) |
31521
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
515 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
516 lines =<< trim END |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
517 vim9script |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
518 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
519 class MyCar |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
520 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
|
521 this.age = 5 |
31521
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
522 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
523 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
|
524 this.make = make_arg |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
525 enddef |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
526 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
527 def GetMake(): string |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
528 return $"make = {this.make}" |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
529 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
|
530 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
|
531 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
|
532 enddef |
31521
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
533 endclass |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
534 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
535 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
|
536 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
|
537 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
538 c = MyCar.new("def") |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
539 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
|
540 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
541 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
|
542 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
|
543 |
0eb51cec2154
patch 9.0.1140: cannot call an object method in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31614
diff
changeset
|
544 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
|
545 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
|
546 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
|
547 enddef |
0eb51cec2154
patch 9.0.1140: cannot call an object method in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31614
diff
changeset
|
548 CheckCar() |
31521
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
549 END |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
550 v9.CheckScriptSuccess(lines) |
31525
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
551 |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
552 lines =<< trim END |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
553 vim9script |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
554 |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
555 class MyCar |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
556 this.make: string |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
557 |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
558 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
|
559 this.make = make_arg |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
560 enddef |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
561 endclass |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
562 |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
563 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
|
564 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
|
565 END |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
566 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
|
567 |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
568 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
|
569 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
|
570 |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
571 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
|
572 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
|
573 |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
574 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
|
575 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
|
576 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
|
577 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
|
578 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
|
579 |
cd4065ab4503
patch 9.0.1239: cannot have a line break before an object member access
Bram Moolenaar <Bram@vim.org>
parents:
31770
diff
changeset
|
580 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
|
581 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
|
582 .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
|
583 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
|
584 .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
|
585 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
|
586 .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
|
587 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
|
588 .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
|
589 .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
|
590 .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
|
591 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
|
592 v9.CheckScriptSuccess(lines) |
31483
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
593 enddef |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
594 |
31604
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
595 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
|
596 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
|
597 vim9script |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
598 class Item |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
599 this.nr = 0 |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
600 this.name = 'xx' |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
601 endclass |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
602 END |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
603 |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
604 # 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
|
605 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
|
606 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
|
607 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
|
608 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
|
609 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
|
610 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
|
611 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
|
612 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
|
613 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
|
614 |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
615 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
|
616 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
|
617 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
|
618 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
|
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 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
|
622 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
|
623 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
|
624 |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
625 for op in ['>', '>=', '<', '<=', '=~', '!~'] |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
626 var op_lines = [ |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
627 '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
|
628 '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
|
629 '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
|
630 ] |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
631 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
|
632 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
|
633 + ['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
|
634 endfor |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
635 enddef |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
636 |
31698
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
637 def Test_object_type() |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
638 var lines =<< trim END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
639 vim9script |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
640 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
641 class One |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
642 this.one = 1 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
643 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
644 class Two |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
645 this.two = 2 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
646 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
647 class TwoMore extends Two |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
648 this.more = 9 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
649 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
650 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
651 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
|
652 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
|
653 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
|
654 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
|
655 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
656 t = m |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
657 END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
658 v9.CheckScriptSuccess(lines) |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
659 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
660 lines =<< trim END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
661 vim9script |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
662 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
663 class One |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
664 this.one = 1 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
665 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
666 class Two |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
667 this.two = 2 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
668 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
669 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
670 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
|
671 END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
672 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
|
673 |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
674 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
|
675 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
|
676 |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
677 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
|
678 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
|
679 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
|
680 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
|
681 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
|
682 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
|
683 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
|
684 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
|
685 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
|
686 |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
687 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
|
688 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
|
689 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
|
690 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
|
691 |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
692 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
|
693 vim9script |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
694 |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
695 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
|
696 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
|
697 endclass |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
698 |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
699 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
|
700 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
|
701 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
|
702 } |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
703 enddef |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
704 |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
705 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
|
706 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
|
707 |
13cecb002fe6
patch 9.0.1207: error when object type is expected but getting "any"
Bram Moolenaar <Bram@vim.org>
parents:
31746
diff
changeset
|
708 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
|
709 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 v9.CheckScriptSuccess(lines) |
31698
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
711 enddef |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
712 |
31590
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
713 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
|
714 # check access rules |
31483
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
715 var lines =<< trim END |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
716 vim9script |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
717 class TextPos |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
718 this.lnum = 1 |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
719 this.col = 1 |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
720 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
|
721 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
|
722 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
|
723 |
31582
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
724 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
|
725 counter += nr |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
726 enddef |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
727 endclass |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
728 |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
729 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
|
730 TextPos.AddToCounter(3) |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
731 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
|
732 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
|
733 |
31630
5400eba7c3f3
patch 9.0.1147: cannot access a class member in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31616
diff
changeset
|
734 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
|
735 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
|
736 enddef |
5400eba7c3f3
patch 9.0.1147: cannot access a class member in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31616
diff
changeset
|
737 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
|
738 |
31517
cd5247f4da06
patch 9.0.1091: assignment to non-existing member causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31501
diff
changeset
|
739 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
|
740 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
|
741 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
|
742 |
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
743 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
|
744 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
|
745 |
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
746 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
|
747 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
|
748 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
|
749 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
|
750 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
|
751 END |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
752 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
|
753 |
31738
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
754 # 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
|
755 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
|
756 vim9script |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
757 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
|
758 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
|
759 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
|
760 |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
761 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
|
762 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
|
763 enddef |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
764 endclass |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
765 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
|
766 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
|
767 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
|
768 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
|
769 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
|
770 END |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
771 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
|
772 |
31815
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
773 # 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
|
774 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
|
775 vim9script |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
776 |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
777 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
|
778 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
|
779 |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
780 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
|
781 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
|
782 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
|
783 enddef |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
784 endclass |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
785 |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
786 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
|
787 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
|
788 END |
64f03e860c91
patch 9.0.1240: cannot access a private object member in a lambda
Bram Moolenaar <Bram@vim.org>
parents:
31813
diff
changeset
|
789 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
|
790 |
31590
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
791 # check shadowing |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
792 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
|
793 vim9script |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
794 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
795 class Some |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
796 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
|
797 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
|
798 echo count |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
799 enddef |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
800 endclass |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
801 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
802 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
|
803 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
|
804 END |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
805 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
|
806 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
807 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
|
808 vim9script |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
809 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
810 class Some |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
811 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
|
812 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
|
813 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
|
814 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
|
815 enddef |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
816 endclass |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
817 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
818 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
|
819 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
|
820 END |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
821 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
|
822 enddef |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
823 |
31633
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
824 func Test_class_garbagecollect() |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
825 let lines =<< trim END |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
826 vim9script |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
827 |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
828 class Point |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
829 this.p = [2, 3] |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
830 static pl = ['a', 'b'] |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
831 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
|
832 endclass |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
833 |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
834 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
|
835 call test_garbagecollect_now() |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
836 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
|
837 END |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
838 call v9.CheckScriptSuccess(lines) |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
839 endfunc |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
840 |
31582
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
841 def Test_class_function() |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
842 var lines =<< trim END |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
843 vim9script |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
844 class Value |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
845 this.value = 0 |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
846 static objects = 0 |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
847 |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
848 def new(v: number) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
849 this.value = v |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
850 ++objects |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
851 enddef |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
852 |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
853 static def GetCount(): number |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
854 return objects |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
855 enddef |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
856 endclass |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
857 |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
858 assert_equal(0, Value.GetCount()) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
859 var v1 = Value.new(2) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
860 assert_equal(1, Value.GetCount()) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
861 var v2 = Value.new(7) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
862 assert_equal(2, Value.GetCount()) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
863 END |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
864 v9.CheckScriptSuccess(lines) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
865 enddef |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
866 |
32013
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
867 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
|
868 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
|
869 vim9script |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
870 |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
871 class C |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
872 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
|
873 return i |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
874 enddef |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
875 endclass |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
876 |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
877 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
|
878 END |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
879 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
|
880 |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
881 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
|
882 vim9script |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
883 |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
884 class C |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
885 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
|
886 return 'x' |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
887 enddef |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
888 endclass |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
889 |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
890 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
|
891 END |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
892 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
|
893 enddef |
ec05de98b0f7
patch 9.0.1338: :defcompile and :disassemble can't find class method
Bram Moolenaar <Bram@vim.org>
parents:
31980
diff
changeset
|
894 |
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
|
895 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
|
896 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
|
897 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
|
898 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
|
899 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
|
900 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
|
901 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
|
902 |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
903 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
|
904 |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
905 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
|
906 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
|
907 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
|
908 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
|
909 enddef |
31396
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
910 |
31635
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
911 def Test_interface_basics() |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
912 var lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
913 vim9script |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
914 interface Something |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
915 this.value: string |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
916 static count: number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
917 def GetCount(): number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
918 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
919 END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
920 v9.CheckScriptSuccess(lines) |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
921 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
922 lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
923 interface SomethingWrong |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
924 static count = 7 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
925 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
926 END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
927 v9.CheckScriptFailure(lines, 'E1342:') |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
928 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
929 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 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
932 interface Some |
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 Method(count: 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 |
31720
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
937 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
|
938 |
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
939 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
|
940 vim9script |
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
941 |
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
942 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
|
943 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
|
944 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
|
945 endinterface |
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
946 END |
1949c2613b3e
patch 9.0.1192: no error when class function argument shadows a member
Bram Moolenaar <Bram@vim.org>
parents:
31712
diff
changeset
|
947 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
|
948 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
949 lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
950 vim9script |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
951 interface somethingWrong |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
952 static count = 7 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
953 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
954 END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
955 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
|
956 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
957 lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
958 vim9script |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
959 interface SomethingWrong |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
960 this.value: string |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
961 static count = 7 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
962 def GetCount(): number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
963 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
964 END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
965 v9.CheckScriptFailure(lines, 'E1344:') |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
966 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
967 lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
968 vim9script |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
969 interface SomethingWrong |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
970 this.value: string |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
971 static count: number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
972 def GetCount(): number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
973 return 5 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
974 enddef |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
975 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
976 END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
977 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
|
978 |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
979 lines =<< trim END |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
980 vim9script |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
981 export interface EnterExit |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
982 def Enter(): void |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
983 def Exit(): void |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
984 endinterface |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
985 END |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
986 writefile(lines, 'XdefIntf.vim', 'D') |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
987 |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
988 lines =<< trim END |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
989 vim9script |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
990 import './XdefIntf.vim' as defIntf |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
991 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
|
992 ee.Enter() |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
993 try |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
994 F() |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
995 finally |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
996 ee.Exit() |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
997 endtry |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
998 enddef |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
999 END |
554bd03ff609
patch 9.0.1248: cannot export an interface
Bram Moolenaar <Bram@vim.org>
parents:
31815
diff
changeset
|
1000 v9.CheckScriptSuccess(lines) |
31833
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1001 |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1002 var imported =<< trim END |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1003 vim9script |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1004 export abstract class EnterExit |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1005 def Enter(): void |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1006 enddef |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1007 def Exit(): void |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1008 enddef |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1009 endclass |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1010 END |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1011 writefile(imported, 'XdefIntf2.vim', 'D') |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1012 |
3516e35f409f
patch 9.0.1249: cannot export an abstract class
Bram Moolenaar <Bram@vim.org>
parents:
31831
diff
changeset
|
1013 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
|
1014 v9.CheckScriptSuccess(lines) |
31635
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
1015 enddef |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
1016 |
31639
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1017 def Test_class_implements_interface() |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1018 var lines =<< trim END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1019 vim9script |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1020 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1021 interface Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1022 static count: number |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1023 def Method(nr: number) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1024 endinterface |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1025 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1026 class SomeImpl implements Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1027 static count: number |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1028 def Method(nr: number) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1029 echo nr |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1030 enddef |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1031 endclass |
31649
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1032 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1033 interface Another |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1034 this.member: string |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1035 endinterface |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1036 |
32047
b49db96c1e55
patch 9.0.1355: no error when declaring a class twice
Bram Moolenaar <Bram@vim.org>
parents:
32013
diff
changeset
|
1037 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
|
1038 this.member = 'abc' |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1039 static count: number |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1040 def Method(nr: number) |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1041 echo nr |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1042 enddef |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1043 endclass |
31639
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1044 END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1045 v9.CheckScriptSuccess(lines) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1046 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1047 lines =<< trim END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1048 vim9script |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1049 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1050 interface Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1051 static counter: number |
31649
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 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1054 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
|
1055 static count: number |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1056 endclass |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1057 END |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1058 v9.CheckScriptFailure(lines, 'E1350:') |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1059 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1060 lines =<< trim END |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1061 vim9script |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1062 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1063 interface Some |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1064 static counter: number |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1065 endinterface |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1066 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1067 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
|
1068 static count: number |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1069 endclass |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1070 END |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1071 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
|
1072 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1073 lines =<< trim END |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1074 vim9script |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1075 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1076 interface Some |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
1077 static counter: number |
31639
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1078 def Method(nr: number) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1079 endinterface |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1080 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1081 class SomeImpl implements Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1082 static count: number |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1083 def Method(nr: number) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1084 echo nr |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1085 enddef |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1086 endclass |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1087 END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1088 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
|
1089 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1090 lines =<< trim END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1091 vim9script |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1092 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1093 interface Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1094 static count: number |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1095 def Methods(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, '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
|
1106 |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1107 # 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
|
1108 lines =<< trim END |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1109 vim9script |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1110 |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1111 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
|
1112 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
|
1113 this.errpos: number |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1114 endinterface |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1115 |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1116 # 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
|
1117 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
|
1118 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
|
1119 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
|
1120 endclass |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1121 |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1122 def Test() |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1123 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
|
1124 |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1125 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
|
1126 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
|
1127 |
85f93e094810
patch 9.0.1211: storing value in interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31754
diff
changeset
|
1128 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
|
1129 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
|
1130 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
|
1131 enddef |
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 Test() |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1134 END |
48431422f766
patch 9.0.1209: getting interface member does not always work
Bram Moolenaar <Bram@vim.org>
parents:
31750
diff
changeset
|
1135 v9.CheckScriptSuccess(lines) |
31639
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1136 enddef |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
1137 |
31843
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1138 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
|
1139 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
|
1140 vim9script |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1141 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
|
1142 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
|
1143 endinterface |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1144 |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1145 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
|
1146 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
|
1147 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
|
1148 enddef |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1149 endclass |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1150 |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1151 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
|
1152 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
|
1153 enddef |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1154 |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1155 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
|
1156 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
|
1157 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
|
1158 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
|
1159 END |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1160 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
|
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 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
|
1163 vim9script |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1164 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
|
1165 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
|
1166 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
|
1167 enddef |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1168 endclass |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1169 |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1170 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
|
1171 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
|
1172 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
|
1173 enddef |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1174 endclass |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1175 |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1176 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
|
1177 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
|
1178 enddef |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1179 |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1180 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
|
1181 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
|
1182 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
|
1183 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
|
1184 END |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1185 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
|
1186 |
31896
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1187 # 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
|
1188 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
|
1189 vim9script |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1190 interface Base |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1191 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
|
1192 endinterface |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1193 |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1194 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
|
1195 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
|
1196 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
|
1197 return "/resource" |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1198 enddef |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1199 endclass |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1200 |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1201 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
|
1202 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
|
1203 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
|
1204 enddef |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1205 |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1206 g:result = '' |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1207 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
|
1208 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
|
1209 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
|
1210 END |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1211 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
|
1212 |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1213 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
|
1214 vim9script |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1215 class Base |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1216 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
|
1217 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
|
1218 enddef |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1219 endclass |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1220 |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1221 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
|
1222 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
|
1223 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
|
1224 return "/resource" |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1225 enddef |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1226 endclass |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1227 |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1228 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
|
1229 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
|
1230 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
|
1231 enddef |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1232 |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1233 g:result = '' |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1234 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
|
1235 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
|
1236 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
|
1237 END |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1238 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
|
1239 |
ecfabcaafc0b
patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes
Bram Moolenaar <Bram@vim.org>
parents:
31865
diff
changeset
|
1240 |
31865
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1241 # 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
|
1242 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
|
1243 vim9script |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1244 |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1245 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
|
1246 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
|
1247 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
|
1248 endinterface |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1249 |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1250 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
|
1251 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
|
1252 enddef |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1253 |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1254 defcompile |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1255 END |
86ed5031ff2b
patch 9.0.1265: using an interface method may give a compilation error
Bram Moolenaar <Bram@vim.org>
parents:
31849
diff
changeset
|
1256 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
|
1257 enddef |
ffa11e2757e7
patch 9.0.1254: calling a method on an interface does not work
Bram Moolenaar <Bram@vim.org>
parents:
31835
diff
changeset
|
1258 |
31645
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1259 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
|
1260 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
|
1261 vim9script |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1262 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1263 class Point |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1264 this.x = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1265 this.y = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1266 endclass |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1267 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1268 var p: Point |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1269 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
|
1270 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
|
1271 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
|
1272 END |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1273 v9.CheckScriptSuccess(lines) |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1274 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1275 lines =<< trim END |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1276 vim9script |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1277 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1278 interface HasX |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1279 this.x: number |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1280 endinterface |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1281 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1282 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
|
1283 this.x = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1284 this.y = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1285 endclass |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1286 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1287 var p: Point |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1288 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
|
1289 var hx = p |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1290 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
|
1291 END |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1292 v9.CheckScriptSuccess(lines) |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1293 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1294 lines =<< trim END |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1295 vim9script |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1296 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1297 class Point |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1298 this.x = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1299 this.y = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1300 endclass |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1301 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1302 var p: Point |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1303 p = 'text' |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1304 END |
31698
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1305 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
|
1306 enddef |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
1307 |
31653
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1308 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
|
1309 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
|
1310 vim9script |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1311 class Base |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1312 this.one = 1 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1313 def GetOne(): number |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1314 return this.one |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1315 enddef |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1316 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1317 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
|
1318 this.two = 2 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1319 def GetTotal(): number |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1320 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
|
1321 enddef |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1322 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1323 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
|
1324 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
|
1325 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
|
1326 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
|
1327 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
|
1328 END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1329 v9.CheckScriptSuccess(lines) |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1330 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1331 lines =<< trim END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1332 vim9script |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1333 class Base |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1334 this.one = 1 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1335 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1336 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
|
1337 this.two = 2 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1338 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1339 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
|
1340 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
|
1341 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
|
1342 END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1343 v9.CheckScriptSuccess(lines) |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1344 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1345 lines =<< trim END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1346 vim9script |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1347 class Base |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1348 this.one = 1 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1349 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1350 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
|
1351 this.two = 2 |
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 END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1354 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
|
1355 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1356 lines =<< trim END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1357 vim9script |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1358 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
|
1359 this.two = 2 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1360 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1361 END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1362 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
|
1363 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1364 lines =<< trim END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1365 vim9script |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1366 var SomeVar = 99 |
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 SomeVar |
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, '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
|
1372 |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1373 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
|
1374 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
|
1375 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
|
1376 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
|
1377 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
|
1378 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
|
1379 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
|
1380 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
|
1381 |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
1382 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
|
1383 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
|
1384 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
|
1385 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
|
1386 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
|
1387 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
|
1388 |
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 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
|
1390 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
|
1391 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
|
1392 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
|
1393 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1394 lines =<< trim END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1395 vim9script |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1396 class Child |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1397 this.age: number |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1398 def ToString(): number |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1399 return this.age |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1400 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1401 def ToString(): string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1402 return this.age |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1403 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1404 endclass |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1405 END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1406 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
|
1407 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1408 lines =<< trim END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1409 vim9script |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1410 class Child |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1411 this.age: number |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1412 def ToString(): string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1413 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
|
1414 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1415 endclass |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1416 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
|
1417 echo o.ToString() |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1418 END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1419 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
|
1420 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1421 lines =<< trim END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1422 vim9script |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1423 class Base |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1424 this.name: string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1425 def ToString(): string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1426 return this.name |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1427 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1428 endclass |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1429 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1430 var age = 42 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1431 def ToString(): string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1432 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
|
1433 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1434 echo 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, 'E1357:') |
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 Child |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1441 this.age: number |
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 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
|
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 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
|
1447 echo o.ToString() |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1448 END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
1449 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
|
1450 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1451 lines =<< trim END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1452 vim9script |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1453 class Base |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1454 this.name: string |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1455 static def ToString(): string |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1456 return 'Base class' |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1457 enddef |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1458 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1459 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1460 class Child extends Base |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1461 this.age: number |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1462 def ToString(): string |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1463 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
|
1464 enddef |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1465 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1466 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1467 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
|
1468 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
|
1469 END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
1470 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
|
1471 |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1472 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
|
1473 vim9script |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1474 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
|
1475 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
|
1476 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
|
1477 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
|
1478 enddef |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1479 endclass |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1480 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
|
1481 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
|
1482 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
|
1483 enddef |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1484 endclass |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1485 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
|
1486 END |
ad0712119bee
patch 9.0.1201: assignment with operator doesn't work in object method
Bram Moolenaar <Bram@vim.org>
parents:
31732
diff
changeset
|
1487 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
|
1488 |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1489 # 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
|
1490 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
|
1491 vim9script |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1492 |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1493 class Result |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1494 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
|
1495 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
|
1496 endclass |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1497 |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1498 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
|
1499 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
|
1500 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
|
1501 enddef |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1502 endclass |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1503 |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1504 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
|
1505 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
|
1506 END |
d3d3ed2c09f6
patch 9.0.1205: crash when handling class that extends another class
Bram Moolenaar <Bram@vim.org>
parents:
31744
diff
changeset
|
1507 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
|
1508 enddef |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
1509 |
31928
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1510 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
|
1511 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
|
1512 vim9script |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1513 |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1514 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
|
1515 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
|
1516 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
|
1517 enddef |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1518 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
|
1519 enddef |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1520 endclass |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1521 |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1522 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
|
1523 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
|
1524 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
|
1525 enddef |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1526 |
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 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
|
1528 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
|
1529 enddef |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1530 endclass |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1531 |
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 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
|
1533 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
|
1534 try |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1535 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
|
1536 finally |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1537 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
|
1538 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
|
1539 endtry |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1540 enddef |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1541 |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1542 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
|
1543 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
|
1544 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
|
1545 END |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1546 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
|
1547 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
|
1548 enddef |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1549 |
7b1cbb43506c
patch 9.0.1296: calling an object method with arguments does not work
Bram Moolenaar <Bram@vim.org>
parents:
31920
diff
changeset
|
1550 |
31706
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1551 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
|
1552 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
|
1553 vim9script |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1554 export class Animal |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1555 this.kind: string |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1556 this.name: string |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1557 endclass |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1558 END |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1559 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
|
1560 |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1561 lines =<< trim END |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1562 vim9script |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1563 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
|
1564 |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1565 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
|
1566 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
|
1567 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
|
1568 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
|
1569 |
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
|
1570 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
|
1571 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
|
1572 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
|
1573 END |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1574 v9.CheckScriptSuccess(lines) |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1575 enddef |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1576 |
31732
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1577 def Test_abstract_class() |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1578 var lines =<< trim END |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1579 vim9script |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1580 abstract class Base |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1581 this.name: string |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1582 endclass |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1583 class Person extends Base |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1584 this.age: number |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1585 endclass |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1586 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
|
1587 assert_equal('Peter', p.name) |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1588 assert_equal(42, p.age) |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1589 END |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1590 v9.CheckScriptSuccess(lines) |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1591 |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1592 lines =<< trim END |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1593 vim9script |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1594 abstract class Base |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1595 this.name: string |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1596 endclass |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1597 class Person extends Base |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1598 this.age: number |
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 var p = Base.new('Peter') |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1601 END |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1602 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
|
1603 |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1604 lines =<< trim END |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1605 abstract class Base |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1606 this.name: string |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1607 endclass |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1608 END |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1609 v9.CheckScriptFailure(lines, 'E1316:') |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1610 enddef |
ef7a9a7eb197
patch 9.0.1198: abstract class not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31720
diff
changeset
|
1611 |
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
|
1612 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
|
1613 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
|
1614 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
|
1615 |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1616 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
|
1617 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
|
1618 |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1619 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
|
1620 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
|
1621 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
|
1622 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
|
1623 |
8d2bfc85e3c5
patch 9.0.1217: using an object member in a closure doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
31758
diff
changeset
|
1624 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
|
1625 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
|
1626 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
|
1627 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
|
1628 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
|
1629 |
31835
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1630 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
|
1631 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
|
1632 vim9script |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1633 |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1634 class CWithEE |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1635 def Enter() |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1636 g:result ..= "entered/" |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1637 enddef |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1638 def Exit() |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1639 g:result ..= "exited" |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1640 enddef |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1641 endclass |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1642 |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1643 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
|
1644 ee.Enter() |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1645 defer ee.Exit() |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1646 F() |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1647 enddef |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1648 |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1649 g:result = '' |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1650 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
|
1651 obj->With(() => { |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1652 g:result ..= "called/" |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1653 }) |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1654 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
|
1655 END |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1656 v9.CheckScriptSuccess(lines) |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1657 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
|
1658 |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1659 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
|
1660 vim9script |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1661 |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1662 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
|
1663 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
|
1664 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
|
1665 enddef |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1666 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
|
1667 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
|
1668 enddef |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1669 endclass |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1670 |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1671 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
|
1672 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
|
1673 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
|
1674 enddef |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1675 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
|
1676 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
|
1677 enddef |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1678 endclass |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1679 |
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 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
|
1681 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
|
1682 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
|
1683 F() |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1684 enddef |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1685 |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1686 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
|
1687 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
|
1688 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
|
1689 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
|
1690 }) |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1691 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
|
1692 END |
f1a5e67e9a1b
patch 9.0.1292: :defer may call the wrong method for an object
Bram Moolenaar <Bram@vim.org>
parents:
31896
diff
changeset
|
1693 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
|
1694 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
|
1695 enddef |
5ce5d78afcc9
patch 9.0.1250: cannot use an object method with :defer
Bram Moolenaar <Bram@vim.org>
parents:
31833
diff
changeset
|
1696 |
31443
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
1697 |
31396
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1698 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker |