Mercurial > vim
annotate src/testdir/test_vim9_class.vim @ 31708:f6309f6742e5 v9.0.1186
patch 9.0.1186: imported class does not work when used twice in a line
Commit: https://github.com/vim/vim/commit/4059400993ff380414dce9b577eff0f8c86b7725
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Jan 12 20:04:51 2023 +0000
patch 9.0.1186: imported class does not work when used twice in a line
Problem: Imported class does not work when used twice in a line.
Solution: Fix the type parsing.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 12 Jan 2023 21:15:03 +0100 |
parents | 824fc05d9571 |
children | 2d68375d5ddf |
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 |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
51 endclass school's out |
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()) |
31396
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
158 END |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
159 v9.CheckScriptSuccess(lines) |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
160 enddef |
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
161 |
31424
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
162 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
|
163 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
|
164 vim9script |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
165 |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
166 class TextPosition |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
167 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
|
168 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
|
169 |
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
|
170 # 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
|
171 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
|
172 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
|
173 enddef |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
174 endclass |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
175 |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
176 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
|
177 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
|
178 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
|
179 |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
180 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
|
181 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
|
182 '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
|
183 '\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
|
184 '\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
|
185 '\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
|
186 '\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
|
187 '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
|
188 '\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
|
189 '\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
|
190 '\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
|
191 '\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
|
192 '\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
|
193 instr) |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
194 END |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
195 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
|
196 enddef |
e31fc75f6aff
patch 9.0.1045: in a class object members cannot be initialized
Bram Moolenaar <Bram@vim.org>
parents:
31416
diff
changeset
|
197 |
31441
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
198 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
|
199 var lines =<< trim END |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
200 vim9script |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
201 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
202 class TextPosition |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
203 this.lnum: number = 1 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
204 this.col: number = 1 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
205 endclass |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
206 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
207 var pos = TextPosition.new() |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
208 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
|
209 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
|
210 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
211 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
|
212 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
|
213 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
|
214 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
215 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
|
216 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
|
217 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
|
218 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
219 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
|
220 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
|
221 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
|
222 END |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
223 v9.CheckScriptSuccess(lines) |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
224 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
225 lines =<< trim END |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
226 vim9script |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
227 class Person |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
228 this.name: string |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
229 this.age: number = 42 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
230 this.education: string = "unknown" |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
231 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
232 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
|
233 enddef |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
234 endclass |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
235 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
236 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
|
237 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
|
238 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
|
239 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
|
240 |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
241 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
|
242 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
|
243 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
|
244 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
|
245 END |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
246 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
|
247 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
248 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
|
249 vim9script |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
250 class Person |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
251 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
|
252 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
|
253 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
|
254 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
255 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
|
256 enddef |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
257 endclass |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
258 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
259 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
|
260 END |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
261 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
|
262 enddef |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
263 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
264 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
|
265 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
|
266 vim9script |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
267 class TextPosition |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
268 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
|
269 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
|
270 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
|
271 endclass |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
272 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
273 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
|
274 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
|
275 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
|
276 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
|
277 END |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
278 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
|
279 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
280 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
|
281 vim9script |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
282 class TextPosition |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
283 this.lnum |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
284 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
|
285 endclass |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
286 END |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
287 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
|
288 |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
289 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
|
290 vim9script |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
291 class TextPosition |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
292 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
|
293 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
|
294 endclass |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
295 END |
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
296 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
|
297 enddef |
e572ff386670
patch 9.0.1053: default constructor arguments are not optional
Bram Moolenaar <Bram@vim.org>
parents:
31426
diff
changeset
|
298 |
31455
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
299 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
|
300 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
|
301 vim9script |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
302 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
|
303 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
|
304 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
|
305 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
|
306 |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
307 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
|
308 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
|
309 enddef |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
310 endclass |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
311 |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
312 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
|
313 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
|
314 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
|
315 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
|
316 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
|
317 |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
318 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
|
319 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
|
320 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
|
321 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
|
322 |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
323 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
|
324 END |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
325 v9.CheckScriptSuccess(lines) |
31521
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
326 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
327 lines =<< trim END |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
328 vim9script |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
329 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
330 class MyCar |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
331 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
|
332 this.age = 5 |
31521
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
333 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
334 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
|
335 this.make = make_arg |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
336 enddef |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
337 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
338 def GetMake(): string |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
339 return $"make = {this.make}" |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
340 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
|
341 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
|
342 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
|
343 enddef |
31521
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
344 endclass |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
345 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
346 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
|
347 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
|
348 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
349 c = MyCar.new("def") |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
350 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
|
351 |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
352 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
|
353 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
|
354 |
0eb51cec2154
patch 9.0.1140: cannot call an object method in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31614
diff
changeset
|
355 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
|
356 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
|
357 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
|
358 enddef |
0eb51cec2154
patch 9.0.1140: cannot call an object method in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31614
diff
changeset
|
359 CheckCar() |
31521
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
360 END |
065e4ccf5e10
patch 9.0.1093: using freed memory of object member
Bram Moolenaar <Bram@vim.org>
parents:
31517
diff
changeset
|
361 v9.CheckScriptSuccess(lines) |
31525
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
362 |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
363 lines =<< trim END |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
364 vim9script |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
365 |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
366 class MyCar |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
367 this.make: string |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
368 |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
369 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
|
370 this.make = make_arg |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
371 enddef |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
372 endclass |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
373 |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
374 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
|
375 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
|
376 END |
f7c82a85e88a
patch 9.0.1095: using freed memory when declaration fails
Bram Moolenaar <Bram@vim.org>
parents:
31521
diff
changeset
|
377 v9.CheckScriptFailure(lines, 'E1041:') |
31483
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
378 enddef |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
379 |
31604
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
380 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
|
381 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
|
382 vim9script |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
383 class Item |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
384 this.nr = 0 |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
385 this.name = 'xx' |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
386 endclass |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
387 END |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
388 |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
389 # 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
|
390 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
|
391 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
|
392 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
|
393 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
|
394 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
|
395 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
|
396 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
|
397 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
|
398 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
|
399 |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
400 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
|
401 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
|
402 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
|
403 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
|
404 END |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
405 |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
406 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
|
407 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
|
408 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
|
409 |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
410 for op in ['>', '>=', '<', '<=', '=~', '!~'] |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
411 var op_lines = [ |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
412 '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
|
413 '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
|
414 '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
|
415 ] |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
416 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
|
417 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
|
418 + ['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
|
419 endfor |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
420 enddef |
9b13b3a63bc0
patch 9.0.1134: comparing objects uses identity instead of equality
Bram Moolenaar <Bram@vim.org>
parents:
31590
diff
changeset
|
421 |
31698
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
422 def Test_object_type() |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
423 var lines =<< trim END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
424 vim9script |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
425 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
426 class One |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
427 this.one = 1 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
428 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
429 class Two |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
430 this.two = 2 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
431 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
432 class TwoMore extends Two |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
433 this.more = 9 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
434 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
435 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
436 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
|
437 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
|
438 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
|
439 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
|
440 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
441 t = m |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
442 END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
443 v9.CheckScriptSuccess(lines) |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
444 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
445 lines =<< trim END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
446 vim9script |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
447 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
448 class One |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
449 this.one = 1 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
450 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
451 class Two |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
452 this.two = 2 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
453 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
454 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
455 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
|
456 END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
457 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
|
458 |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
459 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
|
460 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
|
461 |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
462 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
|
463 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
|
464 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
|
465 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
|
466 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
|
467 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
|
468 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
|
469 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
|
470 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
|
471 |
69ee530cac28
patch 9.0.1184: interface of an object is not recognized when checking type
Bram Moolenaar <Bram@vim.org>
parents:
31698
diff
changeset
|
472 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
|
473 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
|
474 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
|
475 v9.CheckScriptSuccess(lines) |
31698
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
476 enddef |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
477 |
31590
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
478 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
|
479 # check access rules |
31483
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
480 var lines =<< trim END |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
481 vim9script |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
482 class TextPos |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
483 this.lnum = 1 |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
484 this.col = 1 |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
485 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
|
486 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
|
487 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
|
488 |
31582
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
489 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
|
490 counter += nr |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
491 enddef |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
492 endclass |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
493 |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
494 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
|
495 TextPos.AddToCounter(3) |
1bebc2093e6b
patch 9.0.1074: class members are not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
31455
diff
changeset
|
496 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
|
497 assert_fails('echo TextPos.noSuchMember', 'E1338:') |
31630
5400eba7c3f3
patch 9.0.1147: cannot access a class member in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31616
diff
changeset
|
498 |
5400eba7c3f3
patch 9.0.1147: cannot access a class member in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31616
diff
changeset
|
499 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
|
500 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
|
501 enddef |
5400eba7c3f3
patch 9.0.1147: cannot access a class member in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
31616
diff
changeset
|
502 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
|
503 |
31517
cd5247f4da06
patch 9.0.1091: assignment to non-existing member causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
31501
diff
changeset
|
504 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
|
505 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
|
506 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
|
507 |
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
508 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
|
509 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
|
510 |
9f2a9dd57226
patch 9.0.1122: class member access is not fully tested yet
Bram Moolenaar <Bram@vim.org>
parents:
31525
diff
changeset
|
511 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
|
512 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
|
513 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
|
514 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
|
515 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
|
516 END |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
517 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
|
518 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
519 # check shadowing |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
520 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
|
521 vim9script |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
522 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
523 class Some |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
524 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
|
525 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
|
526 echo count |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
527 enddef |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
528 endclass |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
529 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
530 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
|
531 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
|
532 END |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
533 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
|
534 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
535 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
|
536 vim9script |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
537 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
538 class Some |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
539 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
|
540 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
|
541 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
|
542 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
|
543 enddef |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
544 endclass |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
545 |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
546 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
|
547 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
|
548 END |
aee868b9229a
patch 9.0.1127: no error if function argument shadows class member
Bram Moolenaar <Bram@vim.org>
parents:
31582
diff
changeset
|
549 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
|
550 enddef |
5ef28f5ff357
patch 9.0.1060: private and public object members are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31451
diff
changeset
|
551 |
31633
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
552 func Test_class_garbagecollect() |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
553 let lines =<< trim END |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
554 vim9script |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
555 |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
556 class Point |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
557 this.p = [2, 3] |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
558 static pl = ['a', 'b'] |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
559 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
|
560 endclass |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
561 |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
562 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
|
563 call test_garbagecollect_now() |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
564 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
|
565 END |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
566 call v9.CheckScriptSuccess(lines) |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
567 endfunc |
d19377e0a0b4
patch 9.0.1149: class members may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
31630
diff
changeset
|
568 |
31582
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
569 def Test_class_function() |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
570 var lines =<< trim END |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
571 vim9script |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
572 class Value |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
573 this.value = 0 |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
574 static objects = 0 |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
575 |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
576 def new(v: number) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
577 this.value = v |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
578 ++objects |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
579 enddef |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
580 |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
581 static def GetCount(): number |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
582 return objects |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
583 enddef |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
584 endclass |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
585 |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
586 assert_equal(0, Value.GetCount()) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
587 var v1 = Value.new(2) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
588 assert_equal(1, Value.GetCount()) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
589 var v2 = Value.new(7) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
590 assert_equal(2, Value.GetCount()) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
591 END |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
592 v9.CheckScriptSuccess(lines) |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
593 enddef |
8bbc932fbd09
patch 9.0.1123: class function not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31580
diff
changeset
|
594 |
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
|
595 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
|
596 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
|
597 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
|
598 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
|
599 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
|
600 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
|
601 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
|
602 |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
603 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
|
604 |
5804270d6e9b
patch 9.0.1058: string value of class and object do not have information
Bram Moolenaar <Bram@vim.org>
parents:
31443
diff
changeset
|
605 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
|
606 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
|
607 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
|
608 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
|
609 enddef |
31396
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
610 |
31635
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
611 def Test_interface_basics() |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
612 var lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
613 vim9script |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
614 interface Something |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
615 this.value: string |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
616 static count: number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
617 def GetCount(): number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
618 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
619 END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
620 v9.CheckScriptSuccess(lines) |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
621 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
622 lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
623 interface SomethingWrong |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
624 static count = 7 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
625 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
626 END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
627 v9.CheckScriptFailure(lines, 'E1342:') |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
628 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
629 lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
630 vim9script |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
631 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
632 interface Some |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
633 static count: number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
634 def Method(count: number) |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
635 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
636 END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
637 # TODO: this should give an error for "count" shadowing |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
638 v9.CheckScriptSuccess(lines) |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
639 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
640 lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
641 vim9script |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
642 interface somethingWrong |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
643 static count = 7 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
644 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
645 END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
646 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
|
647 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
648 lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
649 vim9script |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
650 interface SomethingWrong |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
651 this.value: string |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
652 static count = 7 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
653 def GetCount(): number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
654 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
655 END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
656 v9.CheckScriptFailure(lines, 'E1344:') |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
657 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
658 lines =<< trim END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
659 vim9script |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
660 interface SomethingWrong |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
661 this.value: string |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
662 static count: number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
663 def GetCount(): number |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
664 return 5 |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
665 enddef |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
666 endinterface |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
667 END |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
668 v9.CheckScriptFailure(lines, 'E1345: Not a valid command in an interface: return 5') |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
669 enddef |
5c1b7a87466e
patch 9.0.1150: :interface is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31633
diff
changeset
|
670 |
31639
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
671 def Test_class_implements_interface() |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
672 var lines =<< trim END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
673 vim9script |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
674 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
675 interface Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
676 static count: number |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
677 def Method(nr: number) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
678 endinterface |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
679 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
680 class SomeImpl implements Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
681 static count: number |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
682 def Method(nr: number) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
683 echo nr |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
684 enddef |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
685 endclass |
31649
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
686 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
687 interface Another |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
688 this.member: string |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
689 endinterface |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
690 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
691 class SomeImpl implements Some, Another |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
692 this.member = 'abc' |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
693 static count: number |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
694 def Method(nr: number) |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
695 echo nr |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
696 enddef |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
697 endclass |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
698 |
31639
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
699 END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
700 v9.CheckScriptSuccess(lines) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
701 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
702 lines =<< trim END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
703 vim9script |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
704 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
705 interface Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
706 static counter: number |
31649
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
707 endinterface |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
708 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
709 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
|
710 static count: number |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
711 endclass |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
712 END |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
713 v9.CheckScriptFailure(lines, 'E1350:') |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
714 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
715 lines =<< trim END |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
716 vim9script |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
717 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
718 interface Some |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
719 static counter: number |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
720 endinterface |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
721 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
722 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
|
723 static count: number |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
724 endclass |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
725 END |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
726 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
|
727 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
728 lines =<< trim END |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
729 vim9script |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
730 |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
731 interface Some |
520857d1fda7
patch 9.0.1157: "implements" only handles one interface name
Bram Moolenaar <Bram@vim.org>
parents:
31645
diff
changeset
|
732 static counter: number |
31639
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
733 def Method(nr: number) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
734 endinterface |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
735 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
736 class SomeImpl implements Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
737 static count: number |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
738 def Method(nr: number) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
739 echo nr |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
740 enddef |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
741 endclass |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
742 END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
743 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
|
744 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
745 lines =<< trim END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
746 vim9script |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
747 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
748 interface Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
749 static count: number |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
750 def Methods(nr: number) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
751 endinterface |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
752 |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
753 class SomeImpl implements Some |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
754 static count: number |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
755 def Method(nr: number) |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
756 echo nr |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
757 enddef |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
758 endclass |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
759 END |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
760 v9.CheckScriptFailure(lines, 'E1349: Function "Methods" of interface "Some" not implemented') |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
761 enddef |
62237ea155d9
patch 9.0.1152: class "implements" argument not implemented
Bram Moolenaar <Bram@vim.org>
parents:
31635
diff
changeset
|
762 |
31645
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
763 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
|
764 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
|
765 vim9script |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
766 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
767 class Point |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
768 this.x = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
769 this.y = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
770 endclass |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
771 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
772 var p: Point |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
773 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
|
774 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
|
775 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
|
776 END |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
777 v9.CheckScriptSuccess(lines) |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
778 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
779 lines =<< trim END |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
780 vim9script |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
781 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
782 interface HasX |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
783 this.x: number |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
784 endinterface |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
785 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
786 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
|
787 this.x = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
788 this.y = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
789 endclass |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
790 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
791 var p: Point |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
792 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
|
793 var hx = p |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
794 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
|
795 END |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
796 v9.CheckScriptSuccess(lines) |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
797 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
798 lines =<< trim END |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
799 vim9script |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
800 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
801 class Point |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
802 this.x = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
803 this.y = 0 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
804 endclass |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
805 |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
806 var p: Point |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
807 p = 'text' |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
808 END |
31698
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
809 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
|
810 enddef |
fc259e8db5bf
patch 9.0.1155: cannot use a class as a type
Bram Moolenaar <Bram@vim.org>
parents:
31639
diff
changeset
|
811 |
31653
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
812 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
|
813 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
|
814 vim9script |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
815 class Base |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
816 this.one = 1 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
817 def GetOne(): number |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
818 return this.one |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
819 enddef |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
820 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
821 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
|
822 this.two = 2 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
823 def GetTotal(): number |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
824 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
|
825 enddef |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
826 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
827 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
|
828 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
|
829 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
|
830 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
|
831 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
|
832 END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
833 v9.CheckScriptSuccess(lines) |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
834 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
835 lines =<< trim END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
836 vim9script |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
837 class Base |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
838 this.one = 1 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
839 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
840 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
|
841 this.two = 2 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
842 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
843 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
|
844 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
|
845 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
|
846 END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
847 v9.CheckScriptSuccess(lines) |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
848 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
849 lines =<< trim END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
850 vim9script |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
851 class Base |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
852 this.one = 1 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
853 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
854 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
|
855 this.two = 2 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
856 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
857 END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
858 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
|
859 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
860 lines =<< trim END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
861 vim9script |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
862 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
|
863 this.two = 2 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
864 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
865 END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
866 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
|
867 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
868 lines =<< trim END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
869 vim9script |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
870 var SomeVar = 99 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
871 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
|
872 this.two = 2 |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
873 endclass |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
874 END |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
875 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
|
876 |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
877 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
|
878 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
|
879 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
|
880 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
|
881 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
|
882 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
|
883 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
|
884 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
|
885 |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
886 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
|
887 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
|
888 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
|
889 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
|
890 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
|
891 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
|
892 |
2f1af1b2f82d
patch 9.0.1178: a child class cannot override functions from a base class
Bram Moolenaar <Bram@vim.org>
parents:
31653
diff
changeset
|
893 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
|
894 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
|
895 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
|
896 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
|
897 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
898 lines =<< trim END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
899 vim9script |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
900 class Child |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
901 this.age: number |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
902 def ToString(): number |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
903 return this.age |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
904 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
905 def ToString(): string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
906 return this.age |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
907 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
908 endclass |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
909 END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
910 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
|
911 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
912 lines =<< trim END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
913 vim9script |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
914 class Child |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
915 this.age: number |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
916 def ToString(): string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
917 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
|
918 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
919 endclass |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
920 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
|
921 echo o.ToString() |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
922 END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
923 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
|
924 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
925 lines =<< trim END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
926 vim9script |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
927 class Base |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
928 this.name: string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
929 def ToString(): string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
930 return this.name |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
931 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
932 endclass |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
933 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
934 var age = 42 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
935 def ToString(): string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
936 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
|
937 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
938 echo ToString() |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
939 END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
940 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
|
941 |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
942 lines =<< trim END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
943 vim9script |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
944 class Child |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
945 this.age: number |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
946 def ToString(): string |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
947 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
|
948 enddef |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
949 endclass |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
950 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
|
951 echo o.ToString() |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
952 END |
2f61e308b997
patch 9.0.1179: not all errors around inheritance are tested
Bram Moolenaar <Bram@vim.org>
parents:
31692
diff
changeset
|
953 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
|
954 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
955 lines =<< trim END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
956 vim9script |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
957 class Base |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
958 this.name: string |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
959 static def ToString(): string |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
960 return 'Base class' |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
961 enddef |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
962 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
963 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
964 class Child extends Base |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
965 this.age: number |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
966 def ToString(): string |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
967 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
|
968 enddef |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
969 endclass |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
970 |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
971 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
|
972 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
|
973 END |
9fba3e8bbadc
patch 9.0.1181: class inheritance and typing insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
31694
diff
changeset
|
974 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
|
975 enddef |
ec76f9d2319e
patch 9.0.1159: extends argument for class not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
31649
diff
changeset
|
976 |
31706
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
977 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
|
978 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
|
979 vim9script |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
980 export class Animal |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
981 this.kind: string |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
982 this.name: string |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
983 endclass |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
984 END |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
985 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
|
986 |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
987 lines =<< trim END |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
988 vim9script |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
989 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
|
990 |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
991 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
|
992 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
|
993 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
|
994 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
|
995 |
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
|
996 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
|
997 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
|
998 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
|
999 END |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1000 v9.CheckScriptSuccess(lines) |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1001 enddef |
824fc05d9571
patch 9.0.1185: using class from imported script not tested
Bram Moolenaar <Bram@vim.org>
parents:
31704
diff
changeset
|
1002 |
31443
9ae3720f9bd9
patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents:
31441
diff
changeset
|
1003 |
31396
307f68a41b03
patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1004 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker |