annotate .cms/lib/codemirror/mode/swift/test.js @ 0:78edf6b517a0 draft

24.10
author Coffee CMS <info@coffee-cms.ru>
date Fri, 11 Oct 2024 22:40:23 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
2 // Distributed under an MIT license: https://codemirror.net/5/LICENSE
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
3
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4 (function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5 var mode = CodeMirror.getMode({indentUnit: 2}, "swift");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
6 function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
7
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8 // Ensure all number types are properly represented.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 MT("numbers",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10 "[keyword var] [def a] [operator =] [number 17]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11 "[keyword var] [def b] [operator =] [number -0.5]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 "[keyword var] [def c] [operator =] [number 0.3456e-4]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13 "[keyword var] [def d] [operator =] [number 345e2]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
14 "[keyword var] [def e] [operator =] [number 0o7324]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
15 "[keyword var] [def f] [operator =] [number 0b10010]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
16 "[keyword var] [def g] [operator =] [number -0x35ade]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 "[keyword var] [def h] [operator =] [number 0xaea.ep-13]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18 "[keyword var] [def i] [operator =] [number 0x13ep6]");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20 // Variable/class/etc definition.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21 MT("definition",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
22 "[keyword var] [def a] [operator =] [number 5]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23 "[keyword let] [def b][punctuation :] [variable-2 Int] [operator =] [number 10]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24 "[keyword class] [def C] [punctuation {] [punctuation }]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25 "[keyword struct] [def D] [punctuation {] [punctuation }]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 "[keyword enum] [def E] [punctuation {] [punctuation }]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
27 "[keyword extension] [def F] [punctuation {] [punctuation }]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
28 "[keyword protocol] [def G] [punctuation {] [punctuation }]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
29 "[keyword func] [def h][punctuation ()] [punctuation {] [punctuation }]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
30 "[keyword import] [def Foundation]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
31 "[keyword typealias] [def NewString] [operator =] [variable-2 String]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
32 "[keyword associatedtype] [def I]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
33 "[keyword for] [def j] [keyword in] [number 0][punctuation ..][operator <][number 3] [punctuation {] [punctuation }]");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
34
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
35 // Strings and string interpolation.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
36 MT("strings",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
37 "[keyword var] [def a][punctuation :] [variable-2 String] [operator =] [string \"test\"]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
38 "[keyword var] [def b][punctuation :] [variable-2 String] [operator =] [string \"\\(][variable a][string )\"]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
39 "[keyword var] [def c] [operator =] [string \"\"\"]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
40 "[string multi]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
41 "[string line]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
42 "[string \"test\"]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
43 "[string \"\"\"]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
44 "[variable print][punctuation (][string \"\"][punctuation )]");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
45
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
46 // Comments.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
47 MT("comments",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
48 "[comment // This is a comment]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
49 "[comment /* This is another comment */]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
50 "[keyword var] [def a] [operator =] [number 5] [comment // Third comment]");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
51
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
52 // Atoms.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
53 MT("atoms",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
54 "[keyword class] [def FooClass] [punctuation {]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
55 " [keyword let] [def fooBool][punctuation :] [variable-2 Bool][operator ?]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
56 " [keyword let] [def fooInt][punctuation :] [variable-2 Int][operator ?]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
57 " [keyword func] [keyword init][punctuation (][variable fooBool][punctuation :] [variable-2 Bool][punctuation ,] [variable barBool][punctuation :] [variable-2 Bool][punctuation )] [punctuation {]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
58 " [atom super][property .init][punctuation ()]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
59 " [atom self][property .fooBool] [operator =] [variable fooBool]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
60 " [variable fooInt] [operator =] [atom nil]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
61 " [keyword if] [variable barBool] [operator ==] [atom true] [punctuation {]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
62 " [variable print][punctuation (][string \"True!\"][punctuation )]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
63 " [punctuation }] [keyword else] [keyword if] [variable barBool] [operator ==] [atom false] [punctuation {]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
64 " [keyword for] [atom _] [keyword in] [number 0][punctuation ...][number 5] [punctuation {]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
65 " [variable print][punctuation (][string \"False!\"][punctuation )]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
66 " [punctuation }]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
67 " [punctuation }]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
68 " [punctuation }]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
69 "[punctuation }]");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
70
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
71 // Types.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
72 MT("types",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
73 "[keyword var] [def a] [operator =] [variable-2 Array][operator <][variable-2 Int][operator >]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
74 "[keyword var] [def b] [operator =] [variable-2 Set][operator <][variable-2 Bool][operator >]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
75 "[keyword var] [def c] [operator =] [variable-2 Dictionary][operator <][variable-2 String][punctuation ,][variable-2 Character][operator >]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
76 "[keyword var] [def d][punctuation :] [variable-2 Int64][operator ?] [operator =] [variable-2 Optional][punctuation (][number 8][punctuation )]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
77 "[keyword func] [def e][punctuation ()] [operator ->] [variable-2 Void] [punctuation {]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
78 " [keyword var] [def e1][punctuation :] [variable-2 Float] [operator =] [number 1.2]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
79 "[punctuation }]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
80 "[keyword func] [def f][punctuation ()] [operator ->] [variable-2 Never] [punctuation {]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
81 " [keyword var] [def f1][punctuation :] [variable-2 Double] [operator =] [number 2.4]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
82 "[punctuation }]");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
83
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
84 // Operators.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
85 MT("operators",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
86 "[keyword var] [def a] [operator =] [number 1] [operator +] [number 2]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
87 "[keyword var] [def b] [operator =] [number 1] [operator -] [number 2]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
88 "[keyword var] [def c] [operator =] [number 1] [operator *] [number 2]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
89 "[keyword var] [def d] [operator =] [number 1] [operator /] [number 2]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
90 "[keyword var] [def e] [operator =] [number 1] [operator %] [number 2]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
91 "[keyword var] [def f] [operator =] [number 1] [operator |] [number 2]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
92 "[keyword var] [def g] [operator =] [number 1] [operator &] [number 2]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
93 "[keyword var] [def h] [operator =] [number 1] [operator <<] [number 2]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
94 "[keyword var] [def i] [operator =] [number 1] [operator >>] [number 2]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
95 "[keyword var] [def j] [operator =] [number 1] [operator ^] [number 2]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
96 "[keyword var] [def k] [operator =] [operator ~][number 1]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
97 "[keyword var] [def l] [operator =] [variable foo] [operator ?] [number 1] [punctuation :] [number 2]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
98 "[keyword var] [def m][punctuation :] [variable-2 Int] [operator =] [variable-2 Optional][punctuation (][number 8][punctuation )][operator !]");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
99
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
100 // Punctuation.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
101 MT("punctuation",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
102 "[keyword let] [def a] [operator =] [number 1][punctuation ;] [keyword let] [def b] [operator =] [number 2]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
103 "[keyword let] [def testArr][punctuation :] [punctuation [[][variable-2 Int][punctuation ]]] [operator =] [punctuation [[][variable a][punctuation ,] [variable b][punctuation ]]]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
104 "[keyword for] [def i] [keyword in] [number 0][punctuation ..][operator <][variable testArr][property .count] [punctuation {]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
105 " [variable print][punctuation (][variable testArr][punctuation [[][variable i][punctuation ]])]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
106 "[punctuation }]");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
107
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
108 // Identifiers.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
109 MT("identifiers",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
110 "[keyword let] [def abc] [operator =] [number 1]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
111 "[keyword let] [def ABC] [operator =] [number 2]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
112 "[keyword let] [def _123] [operator =] [number 3]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
113 "[keyword let] [def _$1$2$3] [operator =] [number 4]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
114 "[keyword let] [def A1$_c32_$_] [operator =] [number 5]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
115 "[keyword let] [def `var`] [operator =] [punctuation [[][number 1][punctuation ,] [number 2][punctuation ,] [number 3][punctuation ]]]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
116 "[keyword let] [def square$] [operator =] [variable `var`][property .map] [punctuation {][variable $0] [operator *] [variable $0][punctuation }]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
117 "$$ [number 1][variable a] $[atom _] [variable _$] [variable __] `[variable a] [variable b]`");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
118
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
119 // Properties.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
120 MT("properties",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
121 "[variable print][punctuation (][variable foo][property .abc][punctuation )]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
122 "[variable print][punctuation (][variable foo][property .ABC][punctuation )]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
123 "[variable print][punctuation (][variable foo][property ._123][punctuation )]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
124 "[variable print][punctuation (][variable foo][property ._$1$2$3][punctuation )]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
125 "[variable print][punctuation (][variable foo][property .A1$_c32_$_][punctuation )]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
126 "[variable print][punctuation (][variable foo][property .`var`][punctuation )]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
127 "[variable print][punctuation (][variable foo][property .__][punctuation )]");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
128
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
129 // Instructions or other things that start with #.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
130 MT("instructions",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
131 "[keyword if] [builtin #available][punctuation (][variable iOS] [number 9][punctuation ,] [operator *][punctuation )] [punctuation {}]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
132 "[variable print][punctuation (][builtin #file][punctuation ,] [builtin #function][punctuation )]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
133 "[variable print][punctuation (][builtin #line][punctuation ,] [builtin #column][punctuation )]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
134 "[builtin #if] [atom true]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
135 "[keyword import] [def A]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
136 "[builtin #elseif] [atom false]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
137 "[keyword import] [def B]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
138 "[builtin #endif]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
139 "[builtin #sourceLocation][punctuation (][variable file][punctuation :] [string \"file.swift\"][punctuation ,] [variable line][punctuation :] [number 2][punctuation )]");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
140
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
141 // Attributes; things that start with @.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
142 MT("attributes",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
143 "[attribute @objc][punctuation (][variable objcFoo][punctuation :)]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
144 "[attribute @available][punctuation (][variable iOS][punctuation )]");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
145
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
146 // Property/number edge case.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
147 MT("property_number",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
148 "[variable print][punctuation (][variable foo][property ._123][punctuation )]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
149 "[variable print][punctuation (]")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
150
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
151 MT("nested_comments",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
152 "[comment /*]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
153 "[comment But wait /* this is a nested comment */ for real]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
154 "[comment /**** let * me * show * you ****/]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
155 "[comment ///// let / me / show / you /////]",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
156 "[comment */]");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
157
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
158 // TODO: correctly identify when multiple variables are being declared
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
159 // by use of a comma-separated list.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
160 // TODO: correctly identify when variables are being declared in a tuple.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
161 // TODO: identify protocols as types when used before an extension?
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
162 })();