annotate src/testdir/test_vim9_class.vim @ 31704:69ee530cac28 v9.0.1184

patch 9.0.1184: interface of an object is not recognized when checking type Commit: https://github.com/vim/vim/commit/a94bd9d9396183eb7781f8d6a5a0e6e97442e9ed Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jan 12 15:01:32 2023 +0000 patch 9.0.1184: interface of an object is not recognized when checking type Problem: Interface of an object is not recognized when checking type. Solution: Use the interface implemented by an object.
author Bram Moolenaar <Bram@vim.org>
date Thu, 12 Jan 2023 16:15:04 +0100
parents 9fba3e8bbadc
children 824fc05d9571
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
31443
9ae3720f9bd9 patch 9.0.1054: object member can't get type from initializer
Bram Moolenaar <Bram@vim.org>
parents: 31441
diff changeset
977
31396
307f68a41b03 patch 9.0.1031: Vim9 class is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
978 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker