Mercurial > vim
annotate src/testdir/test_vim9_typealias.vim @ 35141:920e132817da v9.1.0400
patch 9.1.0400: Vim9: confusing error message for unknown type
Commit: https://github.com/vim/vim/commit/1b53172901ebe5be3ddf1baee22d964c8d41e899
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Thu May 9 09:12:31 2024 +0200
patch 9.1.0400: Vim9: confusing error message for unknown type
Problem: Vim9: confusing error message for unknown type
(Doug Kearns)
Solution: For an unknown type, display only the type name in the error
message (Yegappan Lakshmanan)
fixes: #13153
closes: #14736
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 09 May 2024 09:30:06 +0200 |
parents | f57990be7526 |
children |
rev | line source |
---|---|
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
1 " Test Vim9 type aliases |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
2 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
3 source check.vim |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
4 import './vim9.vim' as v9 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
5 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
6 " Test for :type command to create type aliases |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
7 def Test_typealias() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
8 # Use type alias at script level |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
9 var lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
10 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
11 type ListOfStrings = list<string> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
12 def Foo(a: ListOfStrings): ListOfStrings |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
13 return a |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
14 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
15 var b: ListOfStrings = ['a', 'b'] |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
16 assert_equal(['a', 'b'], b) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
17 assert_equal(['e', 'f'], Foo(['e', 'f'])) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
18 assert_equal('typealias<list<string>>', typename(ListOfStrings)) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
19 assert_equal(v:t_typealias, type(ListOfStrings)) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
20 assert_equal('ListOfStrings', string(ListOfStrings)) |
34006
ab6a70fad5b5
patch 9.0.2184: Vim9: inconsistent :type/:class messages
Christian Brabandt <cb@256bit.org>
parents:
33949
diff
changeset
|
21 assert_fails('var x = null == ListOfStrings', 'E1403: Type alias "ListOfStrings" cannot be used as a value') |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
22 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
23 v9.CheckSourceSuccess(lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
24 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
25 # Use type alias at def function level |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
26 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
27 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
28 type ListOfStrings = list<string> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
29 def Foo(a: ListOfStrings): ListOfStrings |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
30 return a |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
31 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
32 def Bar() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
33 var c: ListOfStrings = ['c', 'd'] |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
34 assert_equal(['c', 'd'], c) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
35 assert_equal(['e', 'f'], Foo(['e', 'f'])) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
36 assert_equal('typealias<list<string>>', typename(ListOfStrings)) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
37 assert_equal(v:t_typealias, type(ListOfStrings)) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
38 assert_equal('ListOfStrings', string(ListOfStrings)) |
34006
ab6a70fad5b5
patch 9.0.2184: Vim9: inconsistent :type/:class messages
Christian Brabandt <cb@256bit.org>
parents:
33949
diff
changeset
|
39 #assert_equal(false, null == ListOfStrings) |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
40 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
41 Bar() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
42 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
43 v9.CheckSourceSuccess(lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
44 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
45 # Use :type outside a Vim9 script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
46 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
47 type Index = number |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
48 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
49 v9.CheckSourceFailure(lines, 'E1393: Type can only be defined in Vim9 script', 1) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
50 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
51 # Use :type without any arguments |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
52 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
53 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
54 type |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
55 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
56 v9.CheckSourceFailure(lines, 'E1397: Missing type alias name', 2) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
57 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
58 # Use :type with a name but no type |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
59 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
60 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
61 type MyType |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
62 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
63 v9.CheckSourceFailure(lines, "E398: Missing '=': ", 2) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
64 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
65 # Use :type with a name but no type following "=" |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
66 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
67 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
68 type MyType = |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
69 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
70 v9.CheckSourceFailure(lines, 'E1398: Missing type alias type', 2) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
71 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
72 # No space before or after "=" |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
73 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
74 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
75 type MyType=number |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
76 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
77 v9.CheckSourceFailure(lines, 'E1315: White space required after name: MyType=number', 2) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
78 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
79 # No space after "=" |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
80 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
81 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
82 type MyType =number |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
83 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
84 v9.CheckSourceFailure(lines, "E1069: White space required after '=': =number", 2) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
85 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
86 # type alias without "=" |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
87 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
88 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
89 type Index number |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
90 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
91 v9.CheckSourceFailure(lines, "E398: Missing '=': number", 2) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
92 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
93 # type alias for a non-existing type |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
94 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
95 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
96 type Index = integer |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
97 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
98 v9.CheckSourceFailure(lines, 'E1010: Type not recognized: integer', 2) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
99 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
100 # type alias starting with lower-case letter |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
101 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
102 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
103 type index = number |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
104 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
105 v9.CheckSourceFailure(lines, 'E1394: Type name must start with an uppercase letter: index = number', 2) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
106 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
107 # No white space following the alias name |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
108 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
109 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
110 type Index:number |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
111 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
112 v9.CheckSourceFailure(lines, 'E1315: White space required after name: Index:number', 2) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
113 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
114 # something following the type alias |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
115 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
116 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
117 type ListOfNums = list<number> string |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
118 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
119 v9.CheckSourceFailure(lines, 'E488: Trailing characters: string', 2) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
120 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
121 # type alias name collides with a variable name |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
122 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
123 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
124 var ListOfNums: number = 10 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
125 type ListOfNums = list<number> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
126 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
127 v9.CheckSourceFailure(lines, 'E1041: Redefining script item: "ListOfNums"', 3) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
128 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
129 # duplicate type alias name |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
130 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
131 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
132 type MyList = list<number> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
133 type MyList = list<string> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
134 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
135 v9.CheckSourceFailure(lines, 'E1396: Type alias "MyList" already exists', 3) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
136 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
137 # def function argument name collision with a type alias |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
138 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
139 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
140 type A = list<number> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
141 def Foo(A: number) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
142 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
143 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
144 v9.CheckSourceFailure(lines, 'E1168: Argument already declared in the script: A: number)', 3) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
145 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
146 # def function local variable name collision with a type alias |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
147 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
148 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
149 type A = list<number> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
150 def Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
151 var A: number = 10 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
152 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
153 Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
154 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
155 v9.CheckSourceFailure(lines, 'E1054: Variable already declared in the script: A', 1) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
156 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
157 # type alias a variable |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
158 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
159 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
160 var A: list<number> = [] |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
161 type B = A |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
162 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
163 v9.CheckSourceFailure(lines, 'E1010: Type not recognized: A', 3) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
164 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
165 # type alias a class |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
166 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
167 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
168 class C |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
169 endclass |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
170 type AC = C |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
171 assert_equal('class<C>', typename(AC)) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
172 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
173 v9.CheckSourceSuccess(lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
174 |
35062
f57990be7526
patch 9.1.0376: Vim9: Trailing commands after class/enum keywords ignored
Christian Brabandt <cb@256bit.org>
parents:
34344
diff
changeset
|
175 # another command follows a type alias |
f57990be7526
patch 9.1.0376: Vim9: Trailing commands after class/enum keywords ignored
Christian Brabandt <cb@256bit.org>
parents:
34344
diff
changeset
|
176 lines =<< trim END |
f57990be7526
patch 9.1.0376: Vim9: Trailing commands after class/enum keywords ignored
Christian Brabandt <cb@256bit.org>
parents:
34344
diff
changeset
|
177 vim9script |
f57990be7526
patch 9.1.0376: Vim9: Trailing commands after class/enum keywords ignored
Christian Brabandt <cb@256bit.org>
parents:
34344
diff
changeset
|
178 type MyType = number | var x = 20 |
f57990be7526
patch 9.1.0376: Vim9: Trailing commands after class/enum keywords ignored
Christian Brabandt <cb@256bit.org>
parents:
34344
diff
changeset
|
179 assert_equal(20, x) |
f57990be7526
patch 9.1.0376: Vim9: Trailing commands after class/enum keywords ignored
Christian Brabandt <cb@256bit.org>
parents:
34344
diff
changeset
|
180 END |
f57990be7526
patch 9.1.0376: Vim9: Trailing commands after class/enum keywords ignored
Christian Brabandt <cb@256bit.org>
parents:
34344
diff
changeset
|
181 v9.CheckSourceSuccess(lines) |
f57990be7526
patch 9.1.0376: Vim9: Trailing commands after class/enum keywords ignored
Christian Brabandt <cb@256bit.org>
parents:
34344
diff
changeset
|
182 |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
183 # Sourcing a script twice (which will free script local variables) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
184 # Uses "lines" from the previous test |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
185 new |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
186 setline(1, lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
187 :source |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
188 :source |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
189 bw! |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
190 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
191 # type alias a type alias |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
192 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
193 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
194 type A = string |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
195 type B = A |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
196 var b: B = 'abc' |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
197 assert_equal('abc', b) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
198 def Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
199 var c: B = 'def' |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
200 assert_equal('def', c) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
201 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
202 Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
203 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
204 v9.CheckSourceSuccess(lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
205 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
206 # Assigning to a type alias (script level) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
207 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
208 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
209 type MyType = list<number> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
210 MyType = [1, 2, 3] |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
211 END |
34006
ab6a70fad5b5
patch 9.0.2184: Vim9: inconsistent :type/:class messages
Christian Brabandt <cb@256bit.org>
parents:
33949
diff
changeset
|
212 v9.CheckSourceFailure(lines, 'E1403: Type alias "MyType" cannot be used as a value', 3) |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
213 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
214 # Assigning a type alias (def function level) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
215 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
216 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
217 type A = list<string> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
218 def Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
219 var x = A |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
220 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
221 Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
222 END |
33924
ccdb948c7273
patch 9.0.2160: instanceof() should use varargs as second arg
Christian Brabandt <cb@256bit.org>
parents:
33913
diff
changeset
|
223 v9.CheckSourceFailure(lines, 'E1407: Cannot use a Typealias as a variable or value', 1) |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
224 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
225 # Using type alias in an expression (script level) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
226 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
227 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
228 type MyType = list<number> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
229 assert_fails('var m = MyType', 'E1403: Type alias "MyType" cannot be used as a value') |
34006
ab6a70fad5b5
patch 9.0.2184: Vim9: inconsistent :type/:class messages
Christian Brabandt <cb@256bit.org>
parents:
33949
diff
changeset
|
230 assert_fails('var i = MyType + 1', 'E1403: Type alias "MyType" cannot be used as a value') |
ab6a70fad5b5
patch 9.0.2184: Vim9: inconsistent :type/:class messages
Christian Brabandt <cb@256bit.org>
parents:
33949
diff
changeset
|
231 assert_fails('var f = 1.0 + MyType', 'E1403: Type alias "MyType" cannot be used as a value') |
ab6a70fad5b5
patch 9.0.2184: Vim9: inconsistent :type/:class messages
Christian Brabandt <cb@256bit.org>
parents:
33949
diff
changeset
|
232 assert_fails('MyType += 10', 'E1403: Type alias "MyType" cannot be used as a value') |
ab6a70fad5b5
patch 9.0.2184: Vim9: inconsistent :type/:class messages
Christian Brabandt <cb@256bit.org>
parents:
33949
diff
changeset
|
233 assert_fails('var x = $"-{MyType}-"', 'E1403: Type alias "MyType" cannot be used as a value') |
ab6a70fad5b5
patch 9.0.2184: Vim9: inconsistent :type/:class messages
Christian Brabandt <cb@256bit.org>
parents:
33949
diff
changeset
|
234 assert_fails('var x = MyType[1]', 'E1403: Type alias "MyType" cannot be used as a value') |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
235 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
236 v9.CheckSourceSuccess(lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
237 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
238 # Using type alias in an expression (def function level) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
239 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
240 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
241 type MyType = list<number> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
242 def Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
243 var x = MyType + 1 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
244 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
245 Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
246 END |
34006
ab6a70fad5b5
patch 9.0.2184: Vim9: inconsistent :type/:class messages
Christian Brabandt <cb@256bit.org>
parents:
33949
diff
changeset
|
247 v9.CheckSourceFailure(lines, 'E1407: Cannot use a Typealias as a variable or value', 1) |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
248 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
249 # Using type alias in an expression (def function level) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
250 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
251 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
252 type MyType = list<number> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
253 def Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
254 MyType = list<string> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
255 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
256 Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
257 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
258 v9.CheckSourceFailure(lines, 'E46: Cannot change read-only variable "MyType"', 1) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
259 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
260 # Using type alias in an expression (def function level) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
261 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
262 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
263 type MyType = list<number> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
264 def Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
265 MyType += 10 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
266 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
267 Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
268 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
269 v9.CheckSourceFailure(lines, 'E46: Cannot change read-only variable "MyType"', 1) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
270 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
271 # Convert type alias to a string (def function level) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
272 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
273 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
274 type MyType = list<number> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
275 def Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
276 var x = $"-{MyType}-" |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
277 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
278 Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
279 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
280 v9.CheckSourceFailure(lines, 'E1105: Cannot convert typealias to string', 1) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
281 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
282 # Using type alias as a float |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
283 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
284 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
285 type B = number |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
286 sort([1.1, B], 'f') |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
287 END |
33933
aceaf677dd92
patch 9.0.2163: Vim9: type can be assigned to list/dict
Christian Brabandt <cb@256bit.org>
parents:
33924
diff
changeset
|
288 v9.CheckSourceFailure(lines, 'E1403: Type alias "B" cannot be used as a value', 3) |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
289 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
290 # Creating a typealias in a def function |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
291 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
292 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
293 def Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
294 var n: number = 10 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
295 type A = list<string> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
296 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
297 defcompile |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
298 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
299 v9.CheckSourceFailure(lines, 'E1399: Type can only be used in a script', 2) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
300 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
301 # json_encode should fail with a type alias |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
302 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
303 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
304 type A = list<string> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
305 var x = json_encode(A) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
306 END |
33949
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
307 v9.CheckSourceFailure(lines, 'E1403: Type alias "A" cannot be used as a value', 3) |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
308 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
309 # Comparing type alias with a number (script level) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
310 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
311 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
312 type A = list<string> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
313 var n: number |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
314 var x = A == n |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
315 END |
34006
ab6a70fad5b5
patch 9.0.2184: Vim9: inconsistent :type/:class messages
Christian Brabandt <cb@256bit.org>
parents:
33949
diff
changeset
|
316 v9.CheckSourceFailure(lines, 'E1403: Type alias "A" cannot be used as a value', 4) |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
317 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
318 # Comparing type alias with a number (def function level) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
319 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
320 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
321 type A = list<string> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
322 def Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
323 var n: number |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
324 var x = A == n |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
325 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
326 Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
327 END |
34006
ab6a70fad5b5
patch 9.0.2184: Vim9: inconsistent :type/:class messages
Christian Brabandt <cb@256bit.org>
parents:
33949
diff
changeset
|
328 v9.CheckSourceFailure(lines, 'E1407: Cannot use a Typealias as a variable or value', 2) |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
329 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
330 # casting a number to a type alias (script level) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
331 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
332 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
333 type MyType = bool |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
334 assert_equal(true, <MyType>1 == true) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
335 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
336 v9.CheckSourceSuccess(lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
337 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
338 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
339 " Test for exporting and importing type aliases |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
340 def Test_typealias_import() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
341 var lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
342 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
343 export type MyType = list<number> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
344 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
345 writefile(lines, 'Xtypeexport.vim', 'D') |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
346 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
347 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
348 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
349 import './Xtypeexport.vim' as A |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
350 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
351 var myList: A.MyType = [1, 2, 3] |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
352 def Foo(l: A.MyType) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
353 assert_equal([1, 2, 3], l) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
354 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
355 Foo(myList) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
356 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
357 v9.CheckScriptSuccess(lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
358 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
359 # Use a non existing type alias |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
360 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
361 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
362 import './Xtypeexport.vim' as A |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
363 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
364 var myNum: A.SomeType = 10 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
365 END |
35141
920e132817da
patch 9.1.0400: Vim9: confusing error message for unknown type
Christian Brabandt <cb@256bit.org>
parents:
35062
diff
changeset
|
366 v9.CheckScriptFailure(lines, 'E1010: Type not recognized: A.SomeType', 4) |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
367 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
368 # Use a type alias that is not exported |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
369 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
370 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
371 type NewType = dict<string> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
372 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
373 writefile(lines, 'Xtypeexport2.vim', 'D') |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
374 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
375 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
376 import './Xtypeexport2.vim' as A |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
377 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
378 var myDict: A.NewType = {} |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
379 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
380 v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: NewType', 4) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
381 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
382 # Using the same name as an imported type alias |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
383 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
384 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
385 export type MyType2 = list<number> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
386 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
387 writefile(lines, 'Xtypeexport3.vim', 'D') |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
388 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
389 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
390 import './Xtypeexport3.vim' as A |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
391 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
392 type MyType2 = A.MyType2 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
393 var myList1: A.MyType2 = [1, 2, 3] |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
394 var myList2: MyType2 = [4, 5, 6] |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
395 assert_equal([1, 2, 3], myList1) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
396 assert_equal([4, 5, 6], myList2) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
397 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
398 v9.CheckScriptSuccess(lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
399 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
400 # Using an exported class to create a type alias |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
401 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
402 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
403 export class MyClass |
33942
3bba09502b8d
patch 9.0.2167: Vim9: not consistently using :var for declarations
Christian Brabandt <cb@256bit.org>
parents:
33936
diff
changeset
|
404 var val = 10 |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
405 endclass |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
406 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
407 writefile(lines, 'Xtypeexport4.vim', 'D') |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
408 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
409 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
410 import './Xtypeexport4.vim' as T |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
411 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
412 type MyType3 = T.MyClass |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
413 var c: MyType3 = MyType3.new() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
414 assert_equal(10, c.val) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
415 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
416 v9.CheckScriptSuccess(lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
417 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
418 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
419 " Test for using typealias as a def function argument and return type |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
420 def Test_typealias_func_argument() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
421 var lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
422 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
423 type A = list<number> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
424 def Foo(l: A): A |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
425 assert_equal([1, 2], l) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
426 return l |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
427 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
428 var x: A = [1, 2] |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
429 assert_equal([1, 2], Foo(x)) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
430 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
431 v9.CheckScriptSuccess(lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
432 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
433 # passing a type alias variable to a function expecting a specific type |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
434 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
435 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
436 type A = list<number> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
437 def Foo(l: list<number>) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
438 assert_equal([1, 2], l) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
439 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
440 var x: A = [1, 2] |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
441 Foo(x) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
442 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
443 v9.CheckScriptSuccess(lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
444 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
445 # passing a type alias variable to a function expecting any |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
446 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
447 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
448 type A = list<number> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
449 def Foo(l: any) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
450 assert_equal([1, 2], l) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
451 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
452 var x: A = [1, 2] |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
453 Foo(x) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
454 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
455 v9.CheckScriptSuccess(lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
456 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
457 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
458 " Using a type alias with a builtin function |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
459 def Test_typealias_with_builtin_functions() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
460 var lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
461 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
462 type A = list<func> |
33949
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
463 var x = empty(A) |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
464 END |
33949
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
465 v9.CheckScriptFailure(lines, 'E1403: Type alias "A" cannot be used as a value', 3) |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
466 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
467 # Using a type alias with len() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
468 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
469 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
470 type A = list<func> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
471 var x = len(A) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
472 END |
33949
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
473 v9.CheckScriptFailure(lines, 'E1403: Type alias "A" cannot be used as a value', 3) |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
474 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
475 # Using a type alias with len() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
476 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
477 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
478 type A = list<func> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
479 def Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
480 var x = len(A) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
481 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
482 Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
483 END |
33949
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
484 v9.CheckScriptFailure(lines, 'E1407: Cannot use a Typealias as a variable or value', 1) |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
485 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
486 # Using a type alias with eval() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
487 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
488 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
489 type A = number |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
490 def Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
491 var x = eval("A") |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
492 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
493 Foo() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
494 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
495 v9.CheckScriptFailure(lines, 'E1403: Type alias "A" cannot be used as a value', 1) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
496 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
497 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
498 " Test for type alias refcount |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
499 def Test_typealias_refcount() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
500 var lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
501 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
502 type A = list<func> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
503 assert_equal(1, test_refcount(A)) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
504 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
505 v9.CheckScriptSuccess(lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
506 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
507 lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
508 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
509 type B = list<number> |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
510 var x: B = [] |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
511 assert_equal(1, test_refcount(B)) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
512 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
513 v9.CheckScriptSuccess(lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
514 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
515 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
516 " Test for using instanceof() with a type alias |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
517 def Test_typealias_instanceof() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
518 var lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
519 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
520 class C |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
521 endclass |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
522 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
523 type Ctype = C |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
524 var o = C.new() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
525 assert_equal(1, instanceof(o, Ctype)) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
526 type Ntype = number |
33924
ccdb948c7273
patch 9.0.2160: instanceof() should use varargs as second arg
Christian Brabandt <cb@256bit.org>
parents:
33913
diff
changeset
|
527 assert_fails('instanceof(o, Ntype)', 'E693: Class or class typealias required for argument 2') |
ccdb948c7273
patch 9.0.2160: instanceof() should use varargs as second arg
Christian Brabandt <cb@256bit.org>
parents:
33913
diff
changeset
|
528 assert_fails('instanceof(o, Ctype, Ntype)', 'E693: Class or class typealias required for argument 3') |
ccdb948c7273
patch 9.0.2160: instanceof() should use varargs as second arg
Christian Brabandt <cb@256bit.org>
parents:
33913
diff
changeset
|
529 |
ccdb948c7273
patch 9.0.2160: instanceof() should use varargs as second arg
Christian Brabandt <cb@256bit.org>
parents:
33913
diff
changeset
|
530 def F() |
ccdb948c7273
patch 9.0.2160: instanceof() should use varargs as second arg
Christian Brabandt <cb@256bit.org>
parents:
33913
diff
changeset
|
531 var x = instanceof(o, Ntype) |
ccdb948c7273
patch 9.0.2160: instanceof() should use varargs as second arg
Christian Brabandt <cb@256bit.org>
parents:
33913
diff
changeset
|
532 enddef |
ccdb948c7273
patch 9.0.2160: instanceof() should use varargs as second arg
Christian Brabandt <cb@256bit.org>
parents:
33913
diff
changeset
|
533 assert_fails('F()', 'E693: Class or class typealias required for argument 2') |
ccdb948c7273
patch 9.0.2160: instanceof() should use varargs as second arg
Christian Brabandt <cb@256bit.org>
parents:
33913
diff
changeset
|
534 |
ccdb948c7273
patch 9.0.2160: instanceof() should use varargs as second arg
Christian Brabandt <cb@256bit.org>
parents:
33913
diff
changeset
|
535 def G(): bool |
ccdb948c7273
patch 9.0.2160: instanceof() should use varargs as second arg
Christian Brabandt <cb@256bit.org>
parents:
33913
diff
changeset
|
536 return instanceof(o, Ctype) |
ccdb948c7273
patch 9.0.2160: instanceof() should use varargs as second arg
Christian Brabandt <cb@256bit.org>
parents:
33913
diff
changeset
|
537 enddef |
ccdb948c7273
patch 9.0.2160: instanceof() should use varargs as second arg
Christian Brabandt <cb@256bit.org>
parents:
33913
diff
changeset
|
538 assert_equal(1, G()) |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
539 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
540 v9.CheckScriptSuccess(lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
541 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
542 |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
543 " Test for type aliasing a class |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
544 def Test_typealias_class() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
545 var lines =<< trim END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
546 vim9script |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
547 class C |
33942
3bba09502b8d
patch 9.0.2167: Vim9: not consistently using :var for declarations
Christian Brabandt <cb@256bit.org>
parents:
33936
diff
changeset
|
548 var color = 'green' |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
549 endclass |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
550 type MyClass = C |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
551 var o: MyClass = MyClass.new() |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
552 assert_equal('green', o.color) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
553 END |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
554 v9.CheckScriptSuccess(lines) |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
555 enddef |
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
556 |
33936
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
557 " Test for typealias as function arg and return value |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
558 def Test_type_as_func_argument_or_return_value() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
559 # check typealias as arg, function call in script level |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
560 var lines =<< trim END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
561 vim9script |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
562 type A = number |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
563 def Foo(arg: any) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
564 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
565 Foo(A) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
566 END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
567 v9.CheckScriptFailure(lines, 'E1403: Type alias "A" cannot be used as a value', 5) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
568 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
569 # check typealias as function return, function call in script level |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
570 lines =<< trim END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
571 vim9script |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
572 type A = number |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
573 def Foo(): any |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
574 return A |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
575 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
576 Foo() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
577 END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
578 v9.CheckScriptFailure(lines, 'E1407: Cannot use a Typealias as a variable or value', 1) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
579 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
580 # check typealias as arg, function call in :def |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
581 lines =<< trim END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
582 vim9script |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
583 type A = number |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
584 def Foo(arg: any) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
585 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
586 def F() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
587 Foo(A) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
588 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
589 F() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
590 END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
591 v9.CheckScriptFailure(lines, 'E1407: Cannot use a Typealias as a variable or value', 1) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
592 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
593 # check typealias as function return, function call in :def |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
594 lines =<< trim END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
595 vim9script |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
596 type A = number |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
597 def Foo(): any |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
598 return A |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
599 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
600 def F() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
601 Foo() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
602 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
603 F() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
604 END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
605 v9.CheckScriptFailure(lines, 'E1407: Cannot use a Typealias as a variable or value', 1) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
606 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
607 # check funcref using typealias as arg at script level |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
608 lines =<< trim END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
609 vim9script |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
610 type A = number |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
611 def F(arg: any) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
612 echo typename(arg) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
613 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
614 var Fref: func(any) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
615 Fref = F |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
616 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
617 Fref(A) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
618 END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
619 v9.CheckScriptFailure(lines, 'E1403: Type alias "A" cannot be used as a value', 9) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
620 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
621 # check funcref using typealias as arg in :def |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
622 lines =<< trim END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
623 vim9script |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
624 type A = number |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
625 def F(arg: any) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
626 echo typename(arg) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
627 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
628 var Fref: func(any) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
629 Fref = F |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
630 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
631 def G() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
632 Fref(A) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
633 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
634 G() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
635 END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
636 v9.CheckScriptFailure(lines, 'E1407: Cannot use a Typealias as a variable or value', 1) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
637 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
638 # check funcref using typealias as return |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
639 lines =<< trim END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
640 vim9script |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
641 type A = number |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
642 def F(): any |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
643 return A |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
644 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
645 var Fref: func(): any |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
646 Fref = F |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
647 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
648 Fref() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
649 END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
650 v9.CheckScriptFailure(lines, 'E1407: Cannot use a Typealias as a variable or value', 1) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
651 |
34344
be4389b04043
patch 9.1.0105: Style: typos found
Christian Brabandt <cb@256bit.org>
parents:
34006
diff
changeset
|
652 # check deferred function using typealias as arg |
33936
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
653 lines =<< trim END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
654 vim9script |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
655 type A = number |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
656 def F(arg: any) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
657 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
658 def G() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
659 defer F(A) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
660 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
661 G() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
662 END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
663 v9.CheckScriptFailure(lines, 'E1407: Cannot use a Typealias as a variable or value', 1) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
664 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
665 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
666 " Test for class typealias as function arg and return value |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
667 def Test_class_as_func_argument_or_return_value() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
668 # check class typealias as arg, function call in script level |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
669 var lines =<< trim END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
670 vim9script |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
671 class C |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
672 endclass |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
673 type A = C |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
674 def Foo(arg: any) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
675 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
676 Foo(A) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
677 END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
678 v9.CheckScriptFailure(lines, 'E1405: Class "C" cannot be used as a value', 7) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
679 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
680 # check class typealias as function return, function call in script level |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
681 lines =<< trim END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
682 vim9script |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
683 class C |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
684 endclass |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
685 type A = C |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
686 def Foo(): any |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
687 return A |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
688 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
689 Foo() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
690 END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
691 v9.CheckScriptFailure(lines, 'E1405: Class "C" cannot be used as a value', 1) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
692 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
693 # check class typealias as arg, function call in :def |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
694 lines =<< trim END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
695 vim9script |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
696 class C |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
697 endclass |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
698 type A = C |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
699 def Foo(arg: any) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
700 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
701 def F() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
702 Foo(A) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
703 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
704 F() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
705 END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
706 v9.CheckScriptFailure(lines, 'E1405: Class "C" cannot be used as a value', 1) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
707 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
708 # check class typealias as function return, function call in :def |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
709 lines =<< trim END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
710 vim9script |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
711 class C |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
712 endclass |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
713 type A = C |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
714 def Foo(): any |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
715 return A |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
716 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
717 def F() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
718 Foo() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
719 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
720 F() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
721 END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
722 v9.CheckScriptFailure(lines, 'E1405: Class "C" cannot be used as a value', 1) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
723 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
724 # check funcref using class typealias as arg at script level |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
725 lines =<< trim END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
726 vim9script |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
727 class C |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
728 endclass |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
729 type A = C |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
730 def F(arg: any) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
731 echo typename(arg) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
732 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
733 var Fref: func(any) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
734 Fref = F |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
735 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
736 Fref(A) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
737 END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
738 v9.CheckScriptFailure(lines, 'E1405: Class "C" cannot be used as a value', 11) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
739 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
740 # check funcref using class typealias as arg in :def |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
741 lines =<< trim END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
742 vim9script |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
743 class C |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
744 endclass |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
745 type A = C |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
746 def F(arg: any) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
747 echo typename(arg) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
748 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
749 var Fref: func(any) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
750 Fref = F |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
751 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
752 def G() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
753 Fref(A) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
754 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
755 G() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
756 END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
757 v9.CheckScriptFailure(lines, 'E1405: Class "C" cannot be used as a value', 1) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
758 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
759 # check funcref using class typealias as return |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
760 lines =<< trim END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
761 vim9script |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
762 class C |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
763 endclass |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
764 type A = C |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
765 def F(): any |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
766 return A |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
767 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
768 var Fref: func(): any |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
769 Fref = F |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
770 |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
771 Fref() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
772 END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
773 v9.CheckScriptFailure(lines, 'E1405: Class "C" cannot be used as a value', 1) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
774 |
34344
be4389b04043
patch 9.1.0105: Style: typos found
Christian Brabandt <cb@256bit.org>
parents:
34006
diff
changeset
|
775 # check deferred function using class typealias as arg |
33936
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
776 lines =<< trim END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
777 vim9script |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
778 class C |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
779 endclass |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
780 type A = C |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
781 def F(arg: any) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
782 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
783 def G() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
784 defer F(A) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
785 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
786 G() |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
787 END |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
788 v9.CheckScriptFailure(lines, 'E1405: Class "C" cannot be used as a value', 1) |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
789 enddef |
bdd408288d95
patch 9.0.2164: Vim9: can use type a func arg/return value
Christian Brabandt <cb@256bit.org>
parents:
33933
diff
changeset
|
790 |
33949
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
791 def Test_passing_typealias_to_builtin() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
792 # type, typename, string, instanceof are allowed type argument |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
793 var lines =<< trim END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
794 vim9script |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
795 type T = number |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
796 var x: any |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
797 x = type(T) |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
798 x = typename(T) |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
799 x = string(T) |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
800 END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
801 v9.CheckScriptSuccess(lines) |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
802 |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
803 # check argument to add at script level |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
804 # Note: add() is special cased in compile_call in vim9expr |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
805 lines =<< trim END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
806 vim9script |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
807 type T = number |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
808 add([], T) |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
809 END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
810 v9.CheckScriptFailure(lines, 'E1403: Type alias "T" cannot be used as a value') |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
811 |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
812 # check argument to add in :def |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
813 lines =<< trim END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
814 vim9script |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
815 type T = number |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
816 def F() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
817 add([], T) |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
818 enddef |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
819 F() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
820 END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
821 v9.CheckScriptFailure(lines, 'E1407: Cannot use a Typealias as a variable or value') |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
822 |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
823 # check member call argument to add at script level |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
824 lines =<< trim END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
825 vim9script |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
826 type T = number |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
827 []->add(T) |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
828 END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
829 v9.CheckScriptFailure(lines, 'E1403: Type alias "T" cannot be used as a value') |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
830 |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
831 # check member call argument to add in :def |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
832 lines =<< trim END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
833 vim9script |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
834 type T = number |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
835 def F() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
836 []->add(T) |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
837 enddef |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
838 F() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
839 END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
840 v9.CheckScriptFailure(lines, 'E1407: Cannot use a Typealias as a variable or value') |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
841 |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
842 # Try "empty()" builtin |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
843 # check argument to empty at script level |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
844 lines =<< trim END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
845 vim9script |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
846 type T = number |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
847 empty(T) |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
848 END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
849 v9.CheckScriptFailure(lines, 'E1403: Type alias "T" cannot be used as a value') |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
850 |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
851 # check argument to empty in :def |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
852 lines =<< trim END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
853 vim9script |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
854 type T = number |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
855 def F() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
856 empty(T) |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
857 enddef |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
858 F() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
859 END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
860 v9.CheckScriptFailure(lines, 'E1407: Cannot use a Typealias as a variable or value') |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
861 |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
862 # check member call argument to empty at script level |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
863 lines =<< trim END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
864 vim9script |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
865 type T = number |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
866 T->empty() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
867 END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
868 v9.CheckScriptFailure(lines, 'E1403: Type alias "T" cannot be used as a value') |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
869 |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
870 # check member call argument to empty in :def |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
871 lines =<< trim END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
872 vim9script |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
873 type T = number |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
874 def F() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
875 T->empty() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
876 enddef |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
877 F() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
878 END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
879 v9.CheckScriptFailure(lines, 'E1407: Cannot use a Typealias as a variable or value') |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
880 |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
881 # Try "abs()" builtin |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
882 # check argument to abs at script level |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
883 lines =<< trim END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
884 vim9script |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
885 type T = number |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
886 abs(T) |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
887 END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
888 v9.CheckScriptFailure(lines, 'E1403: Type alias "T" cannot be used as a value') |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
889 |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
890 # check argument to abs in :def |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
891 lines =<< trim END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
892 vim9script |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
893 type T = number |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
894 def F() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
895 abs(T) |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
896 enddef |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
897 F() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
898 END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
899 v9.CheckScriptFailure(lines, 'E1407: Cannot use a Typealias as a variable or value') |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
900 |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
901 # check member call argument to abs at script level |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
902 lines =<< trim END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
903 vim9script |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
904 type T = number |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
905 T->abs() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
906 END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
907 v9.CheckScriptFailure(lines, 'E1403: Type alias "T" cannot be used as a value') |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
908 |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
909 # check member call argument to abs in :def |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
910 lines =<< trim END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
911 vim9script |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
912 type T = number |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
913 def F() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
914 T->abs() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
915 enddef |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
916 F() |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
917 END |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
918 v9.CheckScriptFailure(lines, 'E1407: Cannot use a Typealias as a variable or value') |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
919 enddef |
84b93d95a952
patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Christian Brabandt <cb@256bit.org>
parents:
33942
diff
changeset
|
920 |
33687
9a932ba43f6e
patch 9.0.2080: vim9_script test too large
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
921 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker |