@venn-lang/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +303 -0
  3. package/dist/index.d.ts +3654 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +13137 -0
  6. package/dist/index.js.map +1 -0
  7. package/package.json +61 -0
  8. package/src/ast/call-args.ts +15 -0
  9. package/src/ast/dotted-path.ts +22 -0
  10. package/src/ast/index.ts +7 -0
  11. package/src/ast/is-statement.ts +40 -0
  12. package/src/ast/split-call.ts +28 -0
  13. package/src/ast/walk.ts +6 -0
  14. package/src/codes/build-problem.ts +24 -0
  15. package/src/codes/catalog.ts +35 -0
  16. package/src/codes/code.types.ts +7 -0
  17. package/src/codes/index.ts +3 -0
  18. package/src/compile/compile.ts +169 -0
  19. package/src/compile/compile.types.ts +40 -0
  20. package/src/compile/index.ts +3 -0
  21. package/src/compile/lex-scope.ts +78 -0
  22. package/src/compile/nodes/binary.ts +56 -0
  23. package/src/compile/nodes/call.ts +50 -0
  24. package/src/compile/nodes/collection.ts +83 -0
  25. package/src/compile/nodes/const-lit.ts +30 -0
  26. package/src/compile/nodes/fast-binary.ts +71 -0
  27. package/src/compile/nodes/fn.ts +87 -0
  28. package/src/compile/nodes/index.ts +8 -0
  29. package/src/compile/nodes/literal.ts +86 -0
  30. package/src/compile/nodes/map-fields.ts +79 -0
  31. package/src/compile/nodes/member.ts +32 -0
  32. package/src/events/envelope.types.ts +17 -0
  33. package/src/events/event-data.types.ts +25 -0
  34. package/src/events/ids.types.ts +10 -0
  35. package/src/events/index.ts +5 -0
  36. package/src/events/run-plan.types.ts +18 -0
  37. package/src/events/status.types.ts +2 -0
  38. package/src/expand/accepted-kinds.ts +23 -0
  39. package/src/expand/deco/deco-decorator.ts +77 -0
  40. package/src/expand/deco/deco-env.ts +24 -0
  41. package/src/expand/deco/deco.types.ts +43 -0
  42. package/src/expand/deco/document-decos.ts +64 -0
  43. package/src/expand/deco/index.ts +7 -0
  44. package/src/expand/deco/read-signature.ts +57 -0
  45. package/src/expand/deco/run-body.ts +119 -0
  46. package/src/expand/decorate-callable.ts +49 -0
  47. package/src/expand/decorations.ts +41 -0
  48. package/src/expand/expand.ts +108 -0
  49. package/src/expand/expand.types.ts +78 -0
  50. package/src/expand/handles/around-verbs.ts +35 -0
  51. package/src/expand/handles/binding-verbs.ts +27 -0
  52. package/src/expand/handles/common-verbs.ts +40 -0
  53. package/src/expand/handles/fn-verbs.ts +58 -0
  54. package/src/expand/handles/handle.types.ts +33 -0
  55. package/src/expand/handles/index.ts +4 -0
  56. package/src/expand/handles/kind-of.ts +36 -0
  57. package/src/expand/handles/make-handle.ts +100 -0
  58. package/src/expand/handles/missing-verb.ts +27 -0
  59. package/src/expand/handles/runnable-verbs.ts +13 -0
  60. package/src/expand/handles/type-verbs.ts +56 -0
  61. package/src/expand/index.ts +40 -0
  62. package/src/expand/make-context.ts +69 -0
  63. package/src/expand/node-meta.ts +30 -0
  64. package/src/expand/node-span.ts +17 -0
  65. package/src/expand/swap-node.ts +28 -0
  66. package/src/expand/wrong-kind.ts +102 -0
  67. package/src/expr/cell.types.ts +25 -0
  68. package/src/expr/closure.ts +53 -0
  69. package/src/expr/closure.types.ts +31 -0
  70. package/src/expr/eval-env.types.ts +9 -0
  71. package/src/expr/evaluate.ts +18 -0
  72. package/src/expr/frame.ts +60 -0
  73. package/src/expr/index.ts +14 -0
  74. package/src/expr/invoke.ts +140 -0
  75. package/src/expr/member-value.ts +91 -0
  76. package/src/expr/methods/index.ts +65 -0
  77. package/src/expr/methods/list-grouping.ts +107 -0
  78. package/src/expr/methods/list-methods.ts +57 -0
  79. package/src/expr/methods/list-selection.ts +142 -0
  80. package/src/expr/methods/map-extras.ts +87 -0
  81. package/src/expr/methods/map-methods.ts +17 -0
  82. package/src/expr/methods/number-methods.ts +29 -0
  83. package/src/expr/methods/string-extras.ts +66 -0
  84. package/src/expr/methods/string-methods.ts +32 -0
  85. package/src/expr/methods/unit-methods.ts +54 -0
  86. package/src/expr/namespace.ts +20 -0
  87. package/src/expr/native.types.ts +40 -0
  88. package/src/expr/operators.ts +91 -0
  89. package/src/expr/pending.ts +47 -0
  90. package/src/expr/prelude.ts +75 -0
  91. package/src/expr/task.ts +71 -0
  92. package/src/format/format-text.ts +22 -0
  93. package/src/format/format.types.ts +18 -0
  94. package/src/format/from-settings.ts +40 -0
  95. package/src/format/index.ts +5 -0
  96. package/src/format/organize-header.ts +66 -0
  97. package/src/format/reindent.ts +35 -0
  98. package/src/generated/ast.ts +2383 -0
  99. package/src/generated/grammar.ts +5236 -0
  100. package/src/generated/module.ts +25 -0
  101. package/src/grammar/venn.langium +291 -0
  102. package/src/graph/graph.types.ts +20 -0
  103. package/src/graph/index.ts +2 -0
  104. package/src/graph/to-graph.ts +87 -0
  105. package/src/index.ts +93 -0
  106. package/src/interpolation/compile-template.ts +40 -0
  107. package/src/interpolation/index.ts +4 -0
  108. package/src/interpolation/interpolation.types.ts +18 -0
  109. package/src/interpolation/scan-interpolations.ts +47 -0
  110. package/src/interpolation/template.types.ts +19 -0
  111. package/src/lang/default-services.ts +14 -0
  112. package/src/lang/index.ts +3 -0
  113. package/src/lang/venn-lexer.ts +34 -0
  114. package/src/lang/venn-module.ts +51 -0
  115. package/src/module/index.ts +5 -0
  116. package/src/module/specifier.ts +21 -0
  117. package/src/parse/error-to-problem.ts +43 -0
  118. package/src/parse/index.ts +3 -0
  119. package/src/parse/parse-expression.ts +27 -0
  120. package/src/parse/parse-output.types.ts +8 -0
  121. package/src/parse/parse.ts +26 -0
  122. package/src/problem/build-diff.ts +116 -0
  123. package/src/problem/diff.types.ts +20 -0
  124. package/src/problem/format-value.ts +40 -0
  125. package/src/problem/index.ts +8 -0
  126. package/src/problem/problem-error.ts +15 -0
  127. package/src/problem/problem.types.ts +21 -0
  128. package/src/problem/related.types.ts +7 -0
  129. package/src/problem/severity.types.ts +2 -0
  130. package/src/problem/span.types.ts +8 -0
  131. package/src/typecheck/action-signature.ts +53 -0
  132. package/src/typecheck/builtin-types.ts +63 -0
  133. package/src/typecheck/builtins.ts +267 -0
  134. package/src/typecheck/catalog.types.ts +16 -0
  135. package/src/typecheck/check-deco.ts +174 -0
  136. package/src/typecheck/check-stmts.ts +151 -0
  137. package/src/typecheck/check-types.ts +232 -0
  138. package/src/typecheck/context.ts +31 -0
  139. package/src/typecheck/imported-types.ts +127 -0
  140. package/src/typecheck/index.ts +26 -0
  141. package/src/typecheck/infer.ts +416 -0
  142. package/src/typecheck/kind-types.ts +79 -0
  143. package/src/typecheck/member-docs.ts +211 -0
  144. package/src/typecheck/named-types.ts +57 -0
  145. package/src/typecheck/prelude-types.ts +152 -0
  146. package/src/typecheck/reshaped-fns.ts +58 -0
  147. package/src/typecheck/scheme.ts +75 -0
  148. package/src/typecheck/seed-params.ts +72 -0
  149. package/src/typecheck/seed-values.ts +64 -0
  150. package/src/typecheck/show.ts +64 -0
  151. package/src/typecheck/solidify.ts +60 -0
  152. package/src/typecheck/spec-to-type.ts +88 -0
  153. package/src/typecheck/type-env.ts +46 -0
  154. package/src/typecheck/type-ref.ts +62 -0
  155. package/src/typecheck/type.types.ts +168 -0
  156. package/src/typecheck/unify.ts +192 -0
  157. package/src/typecheck/unit-types.ts +49 -0
  158. package/src/units/combine.ts +97 -0
  159. package/src/units/index.ts +6 -0
  160. package/src/units/parse-instant.ts +12 -0
  161. package/src/units/parse-number.ts +48 -0
  162. package/src/units/unit-guards.ts +16 -0
  163. package/src/units/unit.types.ts +38 -0
  164. package/src/value/equals.ts +4 -0
  165. package/src/value/index.ts +4 -0
  166. package/src/value/is-numeric.ts +6 -0
  167. package/src/value/truthiness.ts +9 -0
  168. package/src/value/value.types.ts +12 -0
@@ -0,0 +1,2383 @@
1
+ /******************************************************************************
2
+ * This file was generated by langium-cli 4.3.0.
3
+ * DO NOT EDIT MANUALLY!
4
+ ******************************************************************************/
5
+
6
+ /* eslint-disable */
7
+ import * as langium from 'langium';
8
+
9
+ export const VennTerminals = {
10
+ NL: /([ \t]*(\r?\n|;)[ \t]*)+/,
11
+ WS: /[ \t]+/,
12
+ COMMENT: /#[^\n\r]*/,
13
+ INSTANT: /[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]+)?Z/,
14
+ STRING: /"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,
15
+ NUMBER: /[0-9]+(_[0-9]+)*(\.[0-9]+(_[0-9]+)*)?(ms|kb|mb|gb|b|s|m|h|%)?/,
16
+ ID: /[_a-zA-Z]\w*/,
17
+ };
18
+
19
+ export type VennTerminalNames = keyof typeof VennTerminals;
20
+
21
+ export type VennKeywordNames =
22
+ | "!"
23
+ | "!="
24
+ | "%"
25
+ | "&&"
26
+ | "("
27
+ | ")"
28
+ | "*"
29
+ | "+"
30
+ | ","
31
+ | "-"
32
+ | "->"
33
+ | "."
34
+ | "/"
35
+ | ":"
36
+ | "<"
37
+ | "<="
38
+ | "="
39
+ | "=="
40
+ | "=>"
41
+ | ">"
42
+ | ">="
43
+ | "?"
44
+ | "?."
45
+ | "??"
46
+ | "@"
47
+ | "["
48
+ | "]"
49
+ | "afterEach"
50
+ | "all"
51
+ | "as"
52
+ | "beforeEach"
53
+ | "break"
54
+ | "capture"
55
+ | "catch"
56
+ | "config"
57
+ | "const"
58
+ | "continue"
59
+ | "dataset"
60
+ | "deco"
61
+ | "defer"
62
+ | "else"
63
+ | "expect"
64
+ | "factory"
65
+ | "false"
66
+ | "finally"
67
+ | "flow"
68
+ | "fn"
69
+ | "forEach"
70
+ | "fragment"
71
+ | "from"
72
+ | "group"
73
+ | "if"
74
+ | "import"
75
+ | "in"
76
+ | "let"
77
+ | "matrix"
78
+ | "module"
79
+ | "not"
80
+ | "null"
81
+ | "on"
82
+ | "parallel"
83
+ | "pub"
84
+ | "race"
85
+ | "repeat"
86
+ | "report"
87
+ | "return"
88
+ | "run"
89
+ | "setup"
90
+ | "soft"
91
+ | "step"
92
+ | "teardown"
93
+ | "true"
94
+ | "try"
95
+ | "type"
96
+ | "use"
97
+ | "while"
98
+ | "{"
99
+ | "|"
100
+ | "||"
101
+ | "}"
102
+ | "~=";
103
+
104
+ export type VennTokenNames = VennTerminalNames | VennKeywordNames;
105
+
106
+ export interface ActionCall extends Declaration, Statement {
107
+ readonly $type: 'ActionCall';
108
+ args: Array<Expr>;
109
+ call?: ArgList;
110
+ called: boolean;
111
+ opts?: MapLit;
112
+ target: QualifiedName;
113
+ }
114
+
115
+ export const ActionCall = {
116
+ $type: 'ActionCall',
117
+ annotations: 'annotations',
118
+ args: 'args',
119
+ call: 'call',
120
+ called: 'called',
121
+ opts: 'opts',
122
+ target: 'target'
123
+ } as const;
124
+
125
+ export function isActionCall(item: unknown): item is ActionCall {
126
+ return reflection.isInstance(item, ActionCall.$type);
127
+ }
128
+
129
+ export interface Annotation extends langium.AstNode {
130
+ readonly $container: Declaration | FieldDecl | Param | Statement;
131
+ readonly $type: 'Annotation';
132
+ args?: ArgList;
133
+ name: string;
134
+ }
135
+
136
+ export const Annotation = {
137
+ $type: 'Annotation',
138
+ args: 'args',
139
+ name: 'name'
140
+ } as const;
141
+
142
+ export function isAnnotation(item: unknown): item is Annotation {
143
+ return reflection.isInstance(item, Annotation.$type);
144
+ }
145
+
146
+ export interface Arg extends langium.AstNode {
147
+ readonly $container: ArgList;
148
+ readonly $type: 'Arg';
149
+ name?: string;
150
+ value: Expr;
151
+ }
152
+
153
+ export const Arg = {
154
+ $type: 'Arg',
155
+ name: 'name',
156
+ value: 'value'
157
+ } as const;
158
+
159
+ export function isArg(item: unknown): item is Arg {
160
+ return reflection.isInstance(item, Arg.$type);
161
+ }
162
+
163
+ export interface ArgList extends langium.AstNode {
164
+ readonly $container: ActionCall | Annotation | Call | RunStmt;
165
+ readonly $type: 'ArgList';
166
+ args: Array<Arg>;
167
+ }
168
+
169
+ export const ArgList = {
170
+ $type: 'ArgList',
171
+ args: 'args'
172
+ } as const;
173
+
174
+ export function isArgList(item: unknown): item is ArgList {
175
+ return reflection.isInstance(item, ArgList.$type);
176
+ }
177
+
178
+ export interface Binary extends langium.AstNode {
179
+ readonly $container: ActionCall | Arg | Binary | Call | CaptureStmt | DatasetDecl | ExpectStmt | FnBody | ForEachStmt | IfStmt | Index | LetStmt | LifecycleDecl | ListLit | MapEntry | MatcherClause | Member | RepeatStmt | ReportDecl | ReturnStmt | Ternary | Unary | WhileStmt;
180
+ readonly $type: 'Binary';
181
+ left: Expr;
182
+ operator: '!=' | '%' | '&&' | '*' | '+' | '-' | '/' | '<' | '<=' | '==' | '>' | '>=' | '??' | 'in' | '||' | '~=';
183
+ right: Expr;
184
+ }
185
+
186
+ export const Binary = {
187
+ $type: 'Binary',
188
+ left: 'left',
189
+ operator: 'operator',
190
+ right: 'right'
191
+ } as const;
192
+
193
+ export function isBinary(item: unknown): item is Binary {
194
+ return reflection.isInstance(item, Binary.$type);
195
+ }
196
+
197
+ export interface Block extends langium.AstNode {
198
+ readonly $container: DecoDecl | FlowDecl | ForEachStmt | FragmentDecl | GroupDecl | IfStmt | LifecycleDecl | ParallelStmt | RaceStmt | RepeatStmt | StepDecl | TryStmt | WhileStmt;
199
+ readonly $type: 'Block';
200
+ stmts: Array<Statement>;
201
+ }
202
+
203
+ export const Block = {
204
+ $type: 'Block',
205
+ stmts: 'stmts'
206
+ } as const;
207
+
208
+ export function isBlock(item: unknown): item is Block {
209
+ return reflection.isInstance(item, Block.$type);
210
+ }
211
+
212
+ export interface BoolLit extends langium.AstNode {
213
+ readonly $container: ActionCall | Arg | Binary | Call | CaptureStmt | DatasetDecl | ExpectStmt | FnBody | ForEachStmt | IfStmt | Index | LetStmt | LifecycleDecl | ListLit | MapEntry | MatcherClause | Member | RepeatStmt | ReportDecl | ReturnStmt | Ternary | Unary | WhileStmt;
214
+ readonly $type: 'BoolLit';
215
+ value: 'false' | 'true';
216
+ }
217
+
218
+ export const BoolLit = {
219
+ $type: 'BoolLit',
220
+ value: 'value'
221
+ } as const;
222
+
223
+ export function isBoolLit(item: unknown): item is BoolLit {
224
+ return reflection.isInstance(item, BoolLit.$type);
225
+ }
226
+
227
+ export interface BreakStmt extends Statement {
228
+ readonly $type: 'BreakStmt';
229
+ }
230
+
231
+ export const BreakStmt = {
232
+ $type: 'BreakStmt',
233
+ annotations: 'annotations'
234
+ } as const;
235
+
236
+ export function isBreakStmt(item: unknown): item is BreakStmt {
237
+ return reflection.isInstance(item, BreakStmt.$type);
238
+ }
239
+
240
+ export interface Call extends langium.AstNode {
241
+ readonly $container: ActionCall | Arg | Binary | Call | CaptureStmt | DatasetDecl | ExpectStmt | FnBody | ForEachStmt | IfStmt | Index | LetStmt | LifecycleDecl | ListLit | MapEntry | MatcherClause | Member | RepeatStmt | ReportDecl | ReturnStmt | Ternary | Unary | WhileStmt;
242
+ readonly $type: 'Call';
243
+ args?: ArgList;
244
+ callee: Expr;
245
+ }
246
+
247
+ export const Call = {
248
+ $type: 'Call',
249
+ args: 'args',
250
+ callee: 'callee'
251
+ } as const;
252
+
253
+ export function isCall(item: unknown): item is Call {
254
+ return reflection.isInstance(item, Call.$type);
255
+ }
256
+
257
+ export interface CaptureStmt extends Statement {
258
+ readonly $type: 'CaptureStmt';
259
+ name: string;
260
+ opts?: MapLit;
261
+ value: Expr;
262
+ }
263
+
264
+ export const CaptureStmt = {
265
+ $type: 'CaptureStmt',
266
+ annotations: 'annotations',
267
+ name: 'name',
268
+ opts: 'opts',
269
+ value: 'value'
270
+ } as const;
271
+
272
+ export function isCaptureStmt(item: unknown): item is CaptureStmt {
273
+ return reflection.isInstance(item, CaptureStmt.$type);
274
+ }
275
+
276
+ export interface ConfigDecl extends Declaration {
277
+ readonly $type: 'ConfigDecl';
278
+ body: MapLit;
279
+ }
280
+
281
+ export const ConfigDecl = {
282
+ $type: 'ConfigDecl',
283
+ annotations: 'annotations',
284
+ body: 'body'
285
+ } as const;
286
+
287
+ export function isConfigDecl(item: unknown): item is ConfigDecl {
288
+ return reflection.isInstance(item, ConfigDecl.$type);
289
+ }
290
+
291
+ export interface ContinueStmt extends Statement {
292
+ readonly $type: 'ContinueStmt';
293
+ }
294
+
295
+ export const ContinueStmt = {
296
+ $type: 'ContinueStmt',
297
+ annotations: 'annotations'
298
+ } as const;
299
+
300
+ export function isContinueStmt(item: unknown): item is ContinueStmt {
301
+ return reflection.isInstance(item, ContinueStmt.$type);
302
+ }
303
+
304
+ export interface DatasetDecl extends Declaration {
305
+ readonly $type: 'DatasetDecl';
306
+ declaredType?: TypeRef;
307
+ name: string;
308
+ value: Expr;
309
+ }
310
+
311
+ export const DatasetDecl = {
312
+ $type: 'DatasetDecl',
313
+ annotations: 'annotations',
314
+ declaredType: 'declaredType',
315
+ name: 'name',
316
+ value: 'value'
317
+ } as const;
318
+
319
+ export function isDatasetDecl(item: unknown): item is DatasetDecl {
320
+ return reflection.isInstance(item, DatasetDecl.$type);
321
+ }
322
+
323
+ export interface Declaration extends langium.AstNode {
324
+ readonly $type: 'ActionCall' | 'ConfigDecl' | 'DatasetDecl' | 'Declaration' | 'DecoDecl' | 'ExpectStmt' | 'FactoryDecl' | 'FlowDecl' | 'FnDecl' | 'ForEachStmt' | 'FragmentDecl' | 'IfStmt' | 'LetStmt' | 'LifecycleDecl' | 'MatrixDecl' | 'ParallelStmt' | 'RaceStmt' | 'RepeatStmt' | 'ReportDecl' | 'RunStmt' | 'TryStmt' | 'TypeDecl' | 'WhileStmt';
325
+ annotations: Array<Annotation>;
326
+ }
327
+
328
+ export const Declaration = {
329
+ $type: 'Declaration',
330
+ annotations: 'annotations'
331
+ } as const;
332
+
333
+ export function isDeclaration(item: unknown): item is Declaration {
334
+ return reflection.isInstance(item, Declaration.$type);
335
+ }
336
+
337
+ export interface DecoDecl extends Declaration {
338
+ readonly $type: 'DecoDecl';
339
+ body: Block;
340
+ export: boolean;
341
+ name: string;
342
+ params?: ParamList;
343
+ }
344
+
345
+ export const DecoDecl = {
346
+ $type: 'DecoDecl',
347
+ annotations: 'annotations',
348
+ body: 'body',
349
+ export: 'export',
350
+ name: 'name',
351
+ params: 'params'
352
+ } as const;
353
+
354
+ export function isDecoDecl(item: unknown): item is DecoDecl {
355
+ return reflection.isInstance(item, DecoDecl.$type);
356
+ }
357
+
358
+ export interface Document extends langium.AstNode {
359
+ readonly $type: 'Document';
360
+ decls: Array<Declaration>;
361
+ imports: Array<ImportDecl>;
362
+ name?: QualifiedName;
363
+ }
364
+
365
+ export const Document = {
366
+ $type: 'Document',
367
+ decls: 'decls',
368
+ imports: 'imports',
369
+ name: 'name'
370
+ } as const;
371
+
372
+ export function isDocument(item: unknown): item is Document {
373
+ return reflection.isInstance(item, Document.$type);
374
+ }
375
+
376
+ export type ElseBranch = Block | IfStmt;
377
+
378
+ export const ElseBranch = {
379
+ $type: 'ElseBranch'
380
+ } as const;
381
+
382
+ export function isElseBranch(item: unknown): item is ElseBranch {
383
+ return reflection.isInstance(item, ElseBranch.$type);
384
+ }
385
+
386
+ export interface ExpectStmt extends Declaration, Statement {
387
+ readonly $type: 'ExpectStmt';
388
+ checks: Array<Expr>;
389
+ matcher?: MatcherClause;
390
+ modifier?: 'all' | 'soft';
391
+ negate: boolean;
392
+ subject?: Expr;
393
+ }
394
+
395
+ export const ExpectStmt = {
396
+ $type: 'ExpectStmt',
397
+ annotations: 'annotations',
398
+ checks: 'checks',
399
+ matcher: 'matcher',
400
+ modifier: 'modifier',
401
+ negate: 'negate',
402
+ subject: 'subject'
403
+ } as const;
404
+
405
+ export function isExpectStmt(item: unknown): item is ExpectStmt {
406
+ return reflection.isInstance(item, ExpectStmt.$type);
407
+ }
408
+
409
+ export type Expr = Binary | BoolLit | Call | FnExpr | Index | InstantLit | ListLit | MapLit | Member | NullLit | NumberLit | Ref | StringLit | Ternary | Unary;
410
+
411
+ export const Expr = {
412
+ $type: 'Expr'
413
+ } as const;
414
+
415
+ export function isExpr(item: unknown): item is Expr {
416
+ return reflection.isInstance(item, Expr.$type);
417
+ }
418
+
419
+ export interface FactoryDecl extends Declaration {
420
+ readonly $type: 'FactoryDecl';
421
+ body: MapLit;
422
+ name: string;
423
+ }
424
+
425
+ export const FactoryDecl = {
426
+ $type: 'FactoryDecl',
427
+ annotations: 'annotations',
428
+ body: 'body',
429
+ name: 'name'
430
+ } as const;
431
+
432
+ export function isFactoryDecl(item: unknown): item is FactoryDecl {
433
+ return reflection.isInstance(item, FactoryDecl.$type);
434
+ }
435
+
436
+ export interface FieldDecl extends langium.AstNode {
437
+ readonly $container: TypeBody;
438
+ readonly $type: 'FieldDecl';
439
+ annotations: Array<Annotation>;
440
+ fieldType: TypeRef;
441
+ name: string;
442
+ optional: boolean;
443
+ }
444
+
445
+ export const FieldDecl = {
446
+ $type: 'FieldDecl',
447
+ annotations: 'annotations',
448
+ fieldType: 'fieldType',
449
+ name: 'name',
450
+ optional: 'optional'
451
+ } as const;
452
+
453
+ export function isFieldDecl(item: unknown): item is FieldDecl {
454
+ return reflection.isInstance(item, FieldDecl.$type);
455
+ }
456
+
457
+ export interface FlowDecl extends Declaration {
458
+ readonly $type: 'FlowDecl';
459
+ body: Block;
460
+ title: string;
461
+ }
462
+
463
+ export const FlowDecl = {
464
+ $type: 'FlowDecl',
465
+ annotations: 'annotations',
466
+ body: 'body',
467
+ title: 'title'
468
+ } as const;
469
+
470
+ export function isFlowDecl(item: unknown): item is FlowDecl {
471
+ return reflection.isInstance(item, FlowDecl.$type);
472
+ }
473
+
474
+ export interface FnBody extends langium.AstNode {
475
+ readonly $container: FnDecl | FnExpr;
476
+ readonly $type: 'FnBody';
477
+ locals: Array<LetStmt>;
478
+ result: Expr;
479
+ }
480
+
481
+ export const FnBody = {
482
+ $type: 'FnBody',
483
+ locals: 'locals',
484
+ result: 'result'
485
+ } as const;
486
+
487
+ export function isFnBody(item: unknown): item is FnBody {
488
+ return reflection.isInstance(item, FnBody.$type);
489
+ }
490
+
491
+ export interface FnDecl extends Declaration {
492
+ readonly $type: 'FnDecl';
493
+ body: FnBody;
494
+ export: boolean;
495
+ name: string;
496
+ params?: ParamList;
497
+ returns?: TypeRef;
498
+ }
499
+
500
+ export const FnDecl = {
501
+ $type: 'FnDecl',
502
+ annotations: 'annotations',
503
+ body: 'body',
504
+ export: 'export',
505
+ name: 'name',
506
+ params: 'params',
507
+ returns: 'returns'
508
+ } as const;
509
+
510
+ export function isFnDecl(item: unknown): item is FnDecl {
511
+ return reflection.isInstance(item, FnDecl.$type);
512
+ }
513
+
514
+ export interface FnExpr extends langium.AstNode {
515
+ readonly $container: ActionCall | Arg | Binary | Call | CaptureStmt | DatasetDecl | ExpectStmt | FnBody | ForEachStmt | IfStmt | Index | LetStmt | LifecycleDecl | ListLit | MapEntry | MatcherClause | Member | RepeatStmt | ReportDecl | ReturnStmt | Ternary | Unary | WhileStmt;
516
+ readonly $type: 'FnExpr';
517
+ body: FnBody;
518
+ params: ParamList;
519
+ returns?: TypeRef;
520
+ }
521
+
522
+ export const FnExpr = {
523
+ $type: 'FnExpr',
524
+ body: 'body',
525
+ params: 'params',
526
+ returns: 'returns'
527
+ } as const;
528
+
529
+ export function isFnExpr(item: unknown): item is FnExpr {
530
+ return reflection.isInstance(item, FnExpr.$type);
531
+ }
532
+
533
+ export interface ForEachStmt extends Declaration, Statement {
534
+ readonly $type: 'ForEachStmt';
535
+ body: Block;
536
+ item: string;
537
+ opts?: MapLit;
538
+ source: Expr;
539
+ }
540
+
541
+ export const ForEachStmt = {
542
+ $type: 'ForEachStmt',
543
+ annotations: 'annotations',
544
+ body: 'body',
545
+ item: 'item',
546
+ opts: 'opts',
547
+ source: 'source'
548
+ } as const;
549
+
550
+ export function isForEachStmt(item: unknown): item is ForEachStmt {
551
+ return reflection.isInstance(item, ForEachStmt.$type);
552
+ }
553
+
554
+ export interface FragmentDecl extends Declaration {
555
+ readonly $type: 'FragmentDecl';
556
+ body: Block;
557
+ export: boolean;
558
+ name: string;
559
+ params?: ParamList;
560
+ returns?: TypeRef;
561
+ }
562
+
563
+ export const FragmentDecl = {
564
+ $type: 'FragmentDecl',
565
+ annotations: 'annotations',
566
+ body: 'body',
567
+ export: 'export',
568
+ name: 'name',
569
+ params: 'params',
570
+ returns: 'returns'
571
+ } as const;
572
+
573
+ export function isFragmentDecl(item: unknown): item is FragmentDecl {
574
+ return reflection.isInstance(item, FragmentDecl.$type);
575
+ }
576
+
577
+ export interface GroupDecl extends Statement {
578
+ readonly $type: 'GroupDecl';
579
+ body: Block;
580
+ title: string;
581
+ }
582
+
583
+ export const GroupDecl = {
584
+ $type: 'GroupDecl',
585
+ annotations: 'annotations',
586
+ body: 'body',
587
+ title: 'title'
588
+ } as const;
589
+
590
+ export function isGroupDecl(item: unknown): item is GroupDecl {
591
+ return reflection.isInstance(item, GroupDecl.$type);
592
+ }
593
+
594
+ export interface IfStmt extends Declaration, Statement {
595
+ readonly $container: IfStmt;
596
+ readonly $type: 'IfStmt';
597
+ cond: Expr;
598
+ otherwise?: ElseBranch;
599
+ then: Block;
600
+ }
601
+
602
+ export const IfStmt = {
603
+ $type: 'IfStmt',
604
+ annotations: 'annotations',
605
+ cond: 'cond',
606
+ otherwise: 'otherwise',
607
+ then: 'then'
608
+ } as const;
609
+
610
+ export function isIfStmt(item: unknown): item is IfStmt {
611
+ return reflection.isInstance(item, IfStmt.$type);
612
+ }
613
+
614
+ export type ImportDecl = UseDecl | ValueImport;
615
+
616
+ export const ImportDecl = {
617
+ $type: 'ImportDecl'
618
+ } as const;
619
+
620
+ export function isImportDecl(item: unknown): item is ImportDecl {
621
+ return reflection.isInstance(item, ImportDecl.$type);
622
+ }
623
+
624
+ export interface Index extends langium.AstNode {
625
+ readonly $container: ActionCall | Arg | Binary | Call | CaptureStmt | DatasetDecl | ExpectStmt | FnBody | ForEachStmt | IfStmt | Index | LetStmt | LifecycleDecl | ListLit | MapEntry | MatcherClause | Member | RepeatStmt | ReportDecl | ReturnStmt | Ternary | Unary | WhileStmt;
626
+ readonly $type: 'Index';
627
+ index: Expr;
628
+ receiver: Expr;
629
+ }
630
+
631
+ export const Index = {
632
+ $type: 'Index',
633
+ index: 'index',
634
+ receiver: 'receiver'
635
+ } as const;
636
+
637
+ export function isIndex(item: unknown): item is Index {
638
+ return reflection.isInstance(item, Index.$type);
639
+ }
640
+
641
+ export interface InstantLit extends langium.AstNode {
642
+ readonly $container: ActionCall | Arg | Binary | Call | CaptureStmt | DatasetDecl | ExpectStmt | FnBody | ForEachStmt | IfStmt | Index | LetStmt | LifecycleDecl | ListLit | MapEntry | MatcherClause | Member | RepeatStmt | ReportDecl | ReturnStmt | Ternary | Unary | WhileStmt;
643
+ readonly $type: 'InstantLit';
644
+ value: string;
645
+ }
646
+
647
+ export const InstantLit = {
648
+ $type: 'InstantLit',
649
+ value: 'value'
650
+ } as const;
651
+
652
+ export function isInstantLit(item: unknown): item is InstantLit {
653
+ return reflection.isInstance(item, InstantLit.$type);
654
+ }
655
+
656
+ export interface LetStmt extends Declaration, Statement {
657
+ readonly $container: FnBody;
658
+ readonly $type: 'LetStmt';
659
+ args: Array<Expr>;
660
+ declaredType?: TypeRef;
661
+ kind: 'const' | 'let';
662
+ name: string;
663
+ opts?: MapLit;
664
+ value: Expr;
665
+ }
666
+
667
+ export const LetStmt = {
668
+ $type: 'LetStmt',
669
+ annotations: 'annotations',
670
+ args: 'args',
671
+ declaredType: 'declaredType',
672
+ kind: 'kind',
673
+ name: 'name',
674
+ opts: 'opts',
675
+ value: 'value'
676
+ } as const;
677
+
678
+ export function isLetStmt(item: unknown): item is LetStmt {
679
+ return reflection.isInstance(item, LetStmt.$type);
680
+ }
681
+
682
+ export interface LifecycleDecl extends Declaration, Statement {
683
+ readonly $type: 'LifecycleDecl';
684
+ arg?: Expr;
685
+ body: Block;
686
+ event?: string;
687
+ hook?: 'afterEach' | 'beforeEach' | 'defer' | 'setup' | 'teardown';
688
+ }
689
+
690
+ export const LifecycleDecl = {
691
+ $type: 'LifecycleDecl',
692
+ annotations: 'annotations',
693
+ arg: 'arg',
694
+ body: 'body',
695
+ event: 'event',
696
+ hook: 'hook'
697
+ } as const;
698
+
699
+ export function isLifecycleDecl(item: unknown): item is LifecycleDecl {
700
+ return reflection.isInstance(item, LifecycleDecl.$type);
701
+ }
702
+
703
+ export interface ListLit extends langium.AstNode {
704
+ readonly $container: ActionCall | Arg | Binary | Call | CaptureStmt | DatasetDecl | ExpectStmt | FnBody | ForEachStmt | IfStmt | Index | LetStmt | LifecycleDecl | ListLit | MapEntry | MatcherClause | Member | RepeatStmt | ReportDecl | ReturnStmt | Ternary | Unary | WhileStmt;
705
+ readonly $type: 'ListLit';
706
+ items: Array<Expr>;
707
+ }
708
+
709
+ export const ListLit = {
710
+ $type: 'ListLit',
711
+ items: 'items'
712
+ } as const;
713
+
714
+ export function isListLit(item: unknown): item is ListLit {
715
+ return reflection.isInstance(item, ListLit.$type);
716
+ }
717
+
718
+ export interface LiteralType extends langium.AstNode {
719
+ readonly $container: TypeRef;
720
+ readonly $type: 'LiteralType';
721
+ value: string;
722
+ }
723
+
724
+ export const LiteralType = {
725
+ $type: 'LiteralType',
726
+ value: 'value'
727
+ } as const;
728
+
729
+ export function isLiteralType(item: unknown): item is LiteralType {
730
+ return reflection.isInstance(item, LiteralType.$type);
731
+ }
732
+
733
+ export interface MapEntry extends langium.AstNode {
734
+ readonly $container: MapLit;
735
+ readonly $type: 'MapEntry';
736
+ key: MapKey;
737
+ value: Expr;
738
+ }
739
+
740
+ export const MapEntry = {
741
+ $type: 'MapEntry',
742
+ key: 'key',
743
+ value: 'value'
744
+ } as const;
745
+
746
+ export function isMapEntry(item: unknown): item is MapEntry {
747
+ return reflection.isInstance(item, MapEntry.$type);
748
+ }
749
+
750
+ export type MapKey = Word | string;
751
+
752
+ export function isMapKey(item: unknown): item is MapKey {
753
+ return isWord(item) || (typeof item === 'string' && (/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/.test(item)));
754
+ }
755
+
756
+ export interface MapLit extends langium.AstNode {
757
+ readonly $container: ActionCall | Arg | Binary | Call | CaptureStmt | ConfigDecl | DatasetDecl | ExpectStmt | FactoryDecl | FnBody | ForEachStmt | IfStmt | Index | LetStmt | LifecycleDecl | ListLit | MapEntry | MatcherClause | MatrixDecl | Member | ParallelStmt | RaceStmt | RepeatStmt | ReportDecl | ReturnStmt | Ternary | Unary | WhileStmt;
758
+ readonly $type: 'MapLit';
759
+ entries: Array<MapEntry>;
760
+ }
761
+
762
+ export const MapLit = {
763
+ $type: 'MapLit',
764
+ entries: 'entries'
765
+ } as const;
766
+
767
+ export function isMapLit(item: unknown): item is MapLit {
768
+ return reflection.isInstance(item, MapLit.$type);
769
+ }
770
+
771
+ export interface MatcherClause extends langium.AstNode {
772
+ readonly $container: ExpectStmt;
773
+ readonly $type: 'MatcherClause';
774
+ args: Array<Expr>;
775
+ name: string;
776
+ opts?: MapLit;
777
+ }
778
+
779
+ export const MatcherClause = {
780
+ $type: 'MatcherClause',
781
+ args: 'args',
782
+ name: 'name',
783
+ opts: 'opts'
784
+ } as const;
785
+
786
+ export function isMatcherClause(item: unknown): item is MatcherClause {
787
+ return reflection.isInstance(item, MatcherClause.$type);
788
+ }
789
+
790
+ export interface MatrixDecl extends Declaration {
791
+ readonly $type: 'MatrixDecl';
792
+ body: MapLit;
793
+ }
794
+
795
+ export const MatrixDecl = {
796
+ $type: 'MatrixDecl',
797
+ annotations: 'annotations',
798
+ body: 'body'
799
+ } as const;
800
+
801
+ export function isMatrixDecl(item: unknown): item is MatrixDecl {
802
+ return reflection.isInstance(item, MatrixDecl.$type);
803
+ }
804
+
805
+ export interface Member extends langium.AstNode {
806
+ readonly $container: ActionCall | Arg | Binary | Call | CaptureStmt | DatasetDecl | ExpectStmt | FnBody | ForEachStmt | IfStmt | Index | LetStmt | LifecycleDecl | ListLit | MapEntry | MatcherClause | Member | RepeatStmt | ReportDecl | ReturnStmt | Ternary | Unary | WhileStmt;
807
+ readonly $type: 'Member';
808
+ member: Word | string;
809
+ optional: boolean;
810
+ receiver: Expr;
811
+ }
812
+
813
+ export const Member = {
814
+ $type: 'Member',
815
+ member: 'member',
816
+ optional: 'optional',
817
+ receiver: 'receiver'
818
+ } as const;
819
+
820
+ export function isMember(item: unknown): item is Member {
821
+ return reflection.isInstance(item, Member.$type);
822
+ }
823
+
824
+ export interface NamedType extends langium.AstNode {
825
+ readonly $container: TypeRef;
826
+ readonly $type: 'NamedType';
827
+ args: Array<TypeRef>;
828
+ name: QualifiedName;
829
+ }
830
+
831
+ export const NamedType = {
832
+ $type: 'NamedType',
833
+ args: 'args',
834
+ name: 'name'
835
+ } as const;
836
+
837
+ export function isNamedType(item: unknown): item is NamedType {
838
+ return reflection.isInstance(item, NamedType.$type);
839
+ }
840
+
841
+ export interface NullLit extends langium.AstNode {
842
+ readonly $container: ActionCall | Arg | Binary | Call | CaptureStmt | DatasetDecl | ExpectStmt | FnBody | ForEachStmt | IfStmt | Index | LetStmt | LifecycleDecl | ListLit | MapEntry | MatcherClause | Member | RepeatStmt | ReportDecl | ReturnStmt | Ternary | Unary | WhileStmt;
843
+ readonly $type: 'NullLit';
844
+ }
845
+
846
+ export const NullLit = {
847
+ $type: 'NullLit'
848
+ } as const;
849
+
850
+ export function isNullLit(item: unknown): item is NullLit {
851
+ return reflection.isInstance(item, NullLit.$type);
852
+ }
853
+
854
+ export interface NumberLit extends langium.AstNode {
855
+ readonly $container: ActionCall | Arg | Binary | Call | CaptureStmt | DatasetDecl | ExpectStmt | FnBody | ForEachStmt | IfStmt | Index | LetStmt | LifecycleDecl | ListLit | MapEntry | MatcherClause | Member | RepeatStmt | ReportDecl | ReturnStmt | Ternary | Unary | WhileStmt;
856
+ readonly $type: 'NumberLit';
857
+ raw: string;
858
+ }
859
+
860
+ export const NumberLit = {
861
+ $type: 'NumberLit',
862
+ raw: 'raw'
863
+ } as const;
864
+
865
+ export function isNumberLit(item: unknown): item is NumberLit {
866
+ return reflection.isInstance(item, NumberLit.$type);
867
+ }
868
+
869
+ export interface ParallelStmt extends Declaration, Statement {
870
+ readonly $type: 'ParallelStmt';
871
+ body: Block;
872
+ opts?: MapLit;
873
+ }
874
+
875
+ export const ParallelStmt = {
876
+ $type: 'ParallelStmt',
877
+ annotations: 'annotations',
878
+ body: 'body',
879
+ opts: 'opts'
880
+ } as const;
881
+
882
+ export function isParallelStmt(item: unknown): item is ParallelStmt {
883
+ return reflection.isInstance(item, ParallelStmt.$type);
884
+ }
885
+
886
+ export interface Param extends langium.AstNode {
887
+ readonly $container: ParamList;
888
+ readonly $type: 'Param';
889
+ annotations: Array<Annotation>;
890
+ name: string;
891
+ paramType?: TypeRef;
892
+ }
893
+
894
+ export const Param = {
895
+ $type: 'Param',
896
+ annotations: 'annotations',
897
+ name: 'name',
898
+ paramType: 'paramType'
899
+ } as const;
900
+
901
+ export function isParam(item: unknown): item is Param {
902
+ return reflection.isInstance(item, Param.$type);
903
+ }
904
+
905
+ export interface ParamList extends langium.AstNode {
906
+ readonly $container: DecoDecl | FnDecl | FnExpr | FragmentDecl;
907
+ readonly $type: 'ParamList';
908
+ params: Array<Param>;
909
+ }
910
+
911
+ export const ParamList = {
912
+ $type: 'ParamList',
913
+ params: 'params'
914
+ } as const;
915
+
916
+ export function isParamList(item: unknown): item is ParamList {
917
+ return reflection.isInstance(item, ParamList.$type);
918
+ }
919
+
920
+ export type QualifiedName = string;
921
+
922
+ export function isQualifiedName(item: unknown): item is QualifiedName {
923
+ return typeof item === 'string';
924
+ }
925
+
926
+ export interface RaceStmt extends Declaration, Statement {
927
+ readonly $type: 'RaceStmt';
928
+ body: Block;
929
+ opts?: MapLit;
930
+ }
931
+
932
+ export const RaceStmt = {
933
+ $type: 'RaceStmt',
934
+ annotations: 'annotations',
935
+ body: 'body',
936
+ opts: 'opts'
937
+ } as const;
938
+
939
+ export function isRaceStmt(item: unknown): item is RaceStmt {
940
+ return reflection.isInstance(item, RaceStmt.$type);
941
+ }
942
+
943
+ export interface Ref extends langium.AstNode {
944
+ readonly $container: ActionCall | Arg | Binary | Call | CaptureStmt | DatasetDecl | ExpectStmt | FnBody | ForEachStmt | IfStmt | Index | LetStmt | LifecycleDecl | ListLit | MapEntry | MatcherClause | Member | RepeatStmt | ReportDecl | ReturnStmt | Ternary | Unary | WhileStmt;
945
+ readonly $type: 'Ref';
946
+ name: RefName;
947
+ }
948
+
949
+ export const Ref = {
950
+ $type: 'Ref',
951
+ name: 'name'
952
+ } as const;
953
+
954
+ export function isRef(item: unknown): item is Ref {
955
+ return reflection.isInstance(item, Ref.$type);
956
+ }
957
+
958
+ export type RefName = 'flow' | 'matrix' | 'step' | string;
959
+
960
+ export function isRefName(item: unknown): item is RefName {
961
+ return item === 'matrix' || item === 'flow' || item === 'step' || (typeof item === 'string' && (/[_a-zA-Z]\w*/.test(item)));
962
+ }
963
+
964
+ export interface RepeatStmt extends Declaration, Statement {
965
+ readonly $type: 'RepeatStmt';
966
+ body: Block;
967
+ count: Expr;
968
+ index?: string;
969
+ }
970
+
971
+ export const RepeatStmt = {
972
+ $type: 'RepeatStmt',
973
+ annotations: 'annotations',
974
+ body: 'body',
975
+ count: 'count',
976
+ index: 'index'
977
+ } as const;
978
+
979
+ export function isRepeatStmt(item: unknown): item is RepeatStmt {
980
+ return reflection.isInstance(item, RepeatStmt.$type);
981
+ }
982
+
983
+ export interface ReportDecl extends Declaration {
984
+ readonly $type: 'ReportDecl';
985
+ reporters: Array<Expr>;
986
+ }
987
+
988
+ export const ReportDecl = {
989
+ $type: 'ReportDecl',
990
+ annotations: 'annotations',
991
+ reporters: 'reporters'
992
+ } as const;
993
+
994
+ export function isReportDecl(item: unknown): item is ReportDecl {
995
+ return reflection.isInstance(item, ReportDecl.$type);
996
+ }
997
+
998
+ export interface ReturnStmt extends Statement {
999
+ readonly $type: 'ReturnStmt';
1000
+ value?: Expr;
1001
+ }
1002
+
1003
+ export const ReturnStmt = {
1004
+ $type: 'ReturnStmt',
1005
+ annotations: 'annotations',
1006
+ value: 'value'
1007
+ } as const;
1008
+
1009
+ export function isReturnStmt(item: unknown): item is ReturnStmt {
1010
+ return reflection.isInstance(item, ReturnStmt.$type);
1011
+ }
1012
+
1013
+ export interface RunStmt extends Declaration, Statement {
1014
+ readonly $type: 'RunStmt';
1015
+ args?: ArgList;
1016
+ bind?: string;
1017
+ target: QualifiedName;
1018
+ }
1019
+
1020
+ export const RunStmt = {
1021
+ $type: 'RunStmt',
1022
+ annotations: 'annotations',
1023
+ args: 'args',
1024
+ bind: 'bind',
1025
+ target: 'target'
1026
+ } as const;
1027
+
1028
+ export function isRunStmt(item: unknown): item is RunStmt {
1029
+ return reflection.isInstance(item, RunStmt.$type);
1030
+ }
1031
+
1032
+ export type SingleType = LiteralType | NamedType;
1033
+
1034
+ export const SingleType = {
1035
+ $type: 'SingleType'
1036
+ } as const;
1037
+
1038
+ export function isSingleType(item: unknown): item is SingleType {
1039
+ return reflection.isInstance(item, SingleType.$type);
1040
+ }
1041
+
1042
+ export interface Statement extends langium.AstNode {
1043
+ readonly $type: 'ActionCall' | 'BreakStmt' | 'CaptureStmt' | 'ContinueStmt' | 'ExpectStmt' | 'ForEachStmt' | 'GroupDecl' | 'IfStmt' | 'LetStmt' | 'LifecycleDecl' | 'ParallelStmt' | 'RaceStmt' | 'RepeatStmt' | 'ReturnStmt' | 'RunStmt' | 'Statement' | 'StepDecl' | 'TryStmt' | 'WhileStmt';
1044
+ annotations: Array<Annotation>;
1045
+ }
1046
+
1047
+ export const Statement = {
1048
+ $type: 'Statement',
1049
+ annotations: 'annotations'
1050
+ } as const;
1051
+
1052
+ export function isStatement(item: unknown): item is Statement {
1053
+ return reflection.isInstance(item, Statement.$type);
1054
+ }
1055
+
1056
+ export interface StepDecl extends Statement {
1057
+ readonly $type: 'StepDecl';
1058
+ body: Block;
1059
+ title: string;
1060
+ }
1061
+
1062
+ export const StepDecl = {
1063
+ $type: 'StepDecl',
1064
+ annotations: 'annotations',
1065
+ body: 'body',
1066
+ title: 'title'
1067
+ } as const;
1068
+
1069
+ export function isStepDecl(item: unknown): item is StepDecl {
1070
+ return reflection.isInstance(item, StepDecl.$type);
1071
+ }
1072
+
1073
+ export interface StringLit extends langium.AstNode {
1074
+ readonly $container: ActionCall | Arg | Binary | Call | CaptureStmt | DatasetDecl | ExpectStmt | FnBody | ForEachStmt | IfStmt | Index | LetStmt | LifecycleDecl | ListLit | MapEntry | MatcherClause | Member | RepeatStmt | ReportDecl | ReturnStmt | Ternary | Unary | WhileStmt;
1075
+ readonly $type: 'StringLit';
1076
+ value: string;
1077
+ }
1078
+
1079
+ export const StringLit = {
1080
+ $type: 'StringLit',
1081
+ value: 'value'
1082
+ } as const;
1083
+
1084
+ export function isStringLit(item: unknown): item is StringLit {
1085
+ return reflection.isInstance(item, StringLit.$type);
1086
+ }
1087
+
1088
+ export interface Ternary extends langium.AstNode {
1089
+ readonly $container: ActionCall | Arg | Binary | Call | CaptureStmt | DatasetDecl | ExpectStmt | FnBody | ForEachStmt | IfStmt | Index | LetStmt | LifecycleDecl | ListLit | MapEntry | MatcherClause | Member | RepeatStmt | ReportDecl | ReturnStmt | Ternary | Unary | WhileStmt;
1090
+ readonly $type: 'Ternary';
1091
+ condition: Expr;
1092
+ otherwise: Expr;
1093
+ then: Expr;
1094
+ }
1095
+
1096
+ export const Ternary = {
1097
+ $type: 'Ternary',
1098
+ condition: 'condition',
1099
+ otherwise: 'otherwise',
1100
+ then: 'then'
1101
+ } as const;
1102
+
1103
+ export function isTernary(item: unknown): item is Ternary {
1104
+ return reflection.isInstance(item, Ternary.$type);
1105
+ }
1106
+
1107
+ export interface TryStmt extends Declaration, Statement {
1108
+ readonly $type: 'TryStmt';
1109
+ body: Block;
1110
+ error?: string;
1111
+ finalizer?: Block;
1112
+ handler?: Block;
1113
+ }
1114
+
1115
+ export const TryStmt = {
1116
+ $type: 'TryStmt',
1117
+ annotations: 'annotations',
1118
+ body: 'body',
1119
+ error: 'error',
1120
+ finalizer: 'finalizer',
1121
+ handler: 'handler'
1122
+ } as const;
1123
+
1124
+ export function isTryStmt(item: unknown): item is TryStmt {
1125
+ return reflection.isInstance(item, TryStmt.$type);
1126
+ }
1127
+
1128
+ export interface TypeBody extends langium.AstNode {
1129
+ readonly $container: TypeDecl;
1130
+ readonly $type: 'TypeBody';
1131
+ fields: Array<FieldDecl>;
1132
+ }
1133
+
1134
+ export const TypeBody = {
1135
+ $type: 'TypeBody',
1136
+ fields: 'fields'
1137
+ } as const;
1138
+
1139
+ export function isTypeBody(item: unknown): item is TypeBody {
1140
+ return reflection.isInstance(item, TypeBody.$type);
1141
+ }
1142
+
1143
+ export interface TypeDecl extends Declaration {
1144
+ readonly $type: 'TypeDecl';
1145
+ alias?: TypeRef;
1146
+ body?: TypeBody;
1147
+ name: string;
1148
+ }
1149
+
1150
+ export const TypeDecl = {
1151
+ $type: 'TypeDecl',
1152
+ alias: 'alias',
1153
+ annotations: 'annotations',
1154
+ body: 'body',
1155
+ name: 'name'
1156
+ } as const;
1157
+
1158
+ export function isTypeDecl(item: unknown): item is TypeDecl {
1159
+ return reflection.isInstance(item, TypeDecl.$type);
1160
+ }
1161
+
1162
+ export interface TypeRef extends langium.AstNode {
1163
+ readonly $container: DatasetDecl | FieldDecl | FnDecl | FnExpr | FragmentDecl | LetStmt | NamedType | Param | TypeDecl;
1164
+ readonly $type: 'TypeRef';
1165
+ members: Array<SingleType>;
1166
+ }
1167
+
1168
+ export const TypeRef = {
1169
+ $type: 'TypeRef',
1170
+ members: 'members'
1171
+ } as const;
1172
+
1173
+ export function isTypeRef(item: unknown): item is TypeRef {
1174
+ return reflection.isInstance(item, TypeRef.$type);
1175
+ }
1176
+
1177
+ export interface Unary extends langium.AstNode {
1178
+ readonly $container: ActionCall | Arg | Binary | Call | CaptureStmt | DatasetDecl | ExpectStmt | FnBody | ForEachStmt | IfStmt | Index | LetStmt | LifecycleDecl | ListLit | MapEntry | MatcherClause | Member | RepeatStmt | ReportDecl | ReturnStmt | Ternary | Unary | WhileStmt;
1179
+ readonly $type: 'Unary';
1180
+ operand: Expr;
1181
+ operator: '!' | '-';
1182
+ }
1183
+
1184
+ export const Unary = {
1185
+ $type: 'Unary',
1186
+ operand: 'operand',
1187
+ operator: 'operator'
1188
+ } as const;
1189
+
1190
+ export function isUnary(item: unknown): item is Unary {
1191
+ return reflection.isInstance(item, Unary.$type);
1192
+ }
1193
+
1194
+ export interface UseDecl extends langium.AstNode {
1195
+ readonly $container: Document;
1196
+ readonly $type: 'UseDecl';
1197
+ alias?: string;
1198
+ pkg: string;
1199
+ }
1200
+
1201
+ export const UseDecl = {
1202
+ $type: 'UseDecl',
1203
+ alias: 'alias',
1204
+ pkg: 'pkg'
1205
+ } as const;
1206
+
1207
+ export function isUseDecl(item: unknown): item is UseDecl {
1208
+ return reflection.isInstance(item, UseDecl.$type);
1209
+ }
1210
+
1211
+ export interface ValueImport extends langium.AstNode {
1212
+ readonly $container: Document;
1213
+ readonly $type: 'ValueImport';
1214
+ default?: string;
1215
+ export: boolean;
1216
+ names: Array<string>;
1217
+ path: string;
1218
+ wildcard?: string;
1219
+ }
1220
+
1221
+ export const ValueImport = {
1222
+ $type: 'ValueImport',
1223
+ default: 'default',
1224
+ export: 'export',
1225
+ names: 'names',
1226
+ path: 'path',
1227
+ wildcard: 'wildcard'
1228
+ } as const;
1229
+
1230
+ export function isValueImport(item: unknown): item is ValueImport {
1231
+ return reflection.isInstance(item, ValueImport.$type);
1232
+ }
1233
+
1234
+ export interface WhileStmt extends Declaration, Statement {
1235
+ readonly $type: 'WhileStmt';
1236
+ body: Block;
1237
+ cond: Expr;
1238
+ }
1239
+
1240
+ export const WhileStmt = {
1241
+ $type: 'WhileStmt',
1242
+ annotations: 'annotations',
1243
+ body: 'body',
1244
+ cond: 'cond'
1245
+ } as const;
1246
+
1247
+ export function isWhileStmt(item: unknown): item is WhileStmt {
1248
+ return reflection.isInstance(item, WhileStmt.$type);
1249
+ }
1250
+
1251
+ export type Word = 'afterEach' | 'all' | 'as' | 'beforeEach' | 'break' | 'capture' | 'catch' | 'config' | 'const' | 'continue' | 'dataset' | 'deco' | 'defer' | 'else' | 'expect' | 'factory' | 'finally' | 'flow' | 'fn' | 'forEach' | 'fragment' | 'from' | 'group' | 'if' | 'import' | 'in' | 'let' | 'matrix' | 'module' | 'not' | 'on' | 'parallel' | 'pub' | 'race' | 'repeat' | 'report' | 'return' | 'run' | 'setup' | 'soft' | 'step' | 'teardown' | 'try' | 'type' | 'use' | 'while' | string;
1252
+
1253
+ export function isWord(item: unknown): item is Word {
1254
+ return item === 'module' || item === 'use' || item === 'as' || item === 'pub' || item === 'import' || item === 'from' || item === 'flow' || item === 'fragment' || item === 'fn' || item === 'deco' || item === 'return' || item === 'const' || item === 'let' || item === 'config' || item === 'matrix' || item === 'report' || item === 'type' || item === 'factory' || item === 'dataset' || item === 'setup' || item === 'teardown' || item === 'beforeEach' || item === 'afterEach' || item === 'defer' || item === 'on' || item === 'step' || item === 'group' || item === 'if' || item === 'else' || item === 'forEach' || item === 'in' || item === 'repeat' || item === 'while' || item === 'parallel' || item === 'race' || item === 'try' || item === 'catch' || item === 'finally' || item === 'capture' || item === 'run' || item === 'break' || item === 'continue' || item === 'expect' || item === 'all' || item === 'soft' || item === 'not' || (typeof item === 'string' && (/[_a-zA-Z]\w*/.test(item)));
1255
+ }
1256
+
1257
+ export type VennAstType = {
1258
+ ActionCall: ActionCall
1259
+ Annotation: Annotation
1260
+ Arg: Arg
1261
+ ArgList: ArgList
1262
+ Binary: Binary
1263
+ Block: Block
1264
+ BoolLit: BoolLit
1265
+ BreakStmt: BreakStmt
1266
+ Call: Call
1267
+ CaptureStmt: CaptureStmt
1268
+ ConfigDecl: ConfigDecl
1269
+ ContinueStmt: ContinueStmt
1270
+ DatasetDecl: DatasetDecl
1271
+ Declaration: Declaration
1272
+ DecoDecl: DecoDecl
1273
+ Document: Document
1274
+ ElseBranch: ElseBranch
1275
+ ExpectStmt: ExpectStmt
1276
+ Expr: Expr
1277
+ FactoryDecl: FactoryDecl
1278
+ FieldDecl: FieldDecl
1279
+ FlowDecl: FlowDecl
1280
+ FnBody: FnBody
1281
+ FnDecl: FnDecl
1282
+ FnExpr: FnExpr
1283
+ ForEachStmt: ForEachStmt
1284
+ FragmentDecl: FragmentDecl
1285
+ GroupDecl: GroupDecl
1286
+ IfStmt: IfStmt
1287
+ ImportDecl: ImportDecl
1288
+ Index: Index
1289
+ InstantLit: InstantLit
1290
+ LetStmt: LetStmt
1291
+ LifecycleDecl: LifecycleDecl
1292
+ ListLit: ListLit
1293
+ LiteralType: LiteralType
1294
+ MapEntry: MapEntry
1295
+ MapLit: MapLit
1296
+ MatcherClause: MatcherClause
1297
+ MatrixDecl: MatrixDecl
1298
+ Member: Member
1299
+ NamedType: NamedType
1300
+ NullLit: NullLit
1301
+ NumberLit: NumberLit
1302
+ ParallelStmt: ParallelStmt
1303
+ Param: Param
1304
+ ParamList: ParamList
1305
+ RaceStmt: RaceStmt
1306
+ Ref: Ref
1307
+ RepeatStmt: RepeatStmt
1308
+ ReportDecl: ReportDecl
1309
+ ReturnStmt: ReturnStmt
1310
+ RunStmt: RunStmt
1311
+ SingleType: SingleType
1312
+ Statement: Statement
1313
+ StepDecl: StepDecl
1314
+ StringLit: StringLit
1315
+ Ternary: Ternary
1316
+ TryStmt: TryStmt
1317
+ TypeBody: TypeBody
1318
+ TypeDecl: TypeDecl
1319
+ TypeRef: TypeRef
1320
+ Unary: Unary
1321
+ UseDecl: UseDecl
1322
+ ValueImport: ValueImport
1323
+ WhileStmt: WhileStmt
1324
+ }
1325
+
1326
+ export class VennAstReflection extends langium.AbstractAstReflection {
1327
+ override readonly types = {
1328
+ ActionCall: {
1329
+ name: ActionCall.$type,
1330
+ properties: {
1331
+ annotations: {
1332
+ name: ActionCall.annotations,
1333
+ defaultValue: [],
1334
+ optional: true
1335
+ },
1336
+ args: {
1337
+ name: ActionCall.args,
1338
+ defaultValue: [],
1339
+ optional: true
1340
+ },
1341
+ call: {
1342
+ name: ActionCall.call,
1343
+ optional: true
1344
+ },
1345
+ called: {
1346
+ name: ActionCall.called,
1347
+ defaultValue: false,
1348
+ optional: true
1349
+ },
1350
+ opts: {
1351
+ name: ActionCall.opts,
1352
+ optional: true
1353
+ },
1354
+ target: {
1355
+ name: ActionCall.target
1356
+ }
1357
+ },
1358
+ superTypes: [Declaration.$type, Statement.$type]
1359
+ },
1360
+ Annotation: {
1361
+ name: Annotation.$type,
1362
+ properties: {
1363
+ args: {
1364
+ name: Annotation.args,
1365
+ optional: true
1366
+ },
1367
+ name: {
1368
+ name: Annotation.name
1369
+ }
1370
+ },
1371
+ superTypes: []
1372
+ },
1373
+ Arg: {
1374
+ name: Arg.$type,
1375
+ properties: {
1376
+ name: {
1377
+ name: Arg.name,
1378
+ optional: true
1379
+ },
1380
+ value: {
1381
+ name: Arg.value
1382
+ }
1383
+ },
1384
+ superTypes: []
1385
+ },
1386
+ ArgList: {
1387
+ name: ArgList.$type,
1388
+ properties: {
1389
+ args: {
1390
+ name: ArgList.args,
1391
+ defaultValue: []
1392
+ }
1393
+ },
1394
+ superTypes: []
1395
+ },
1396
+ Binary: {
1397
+ name: Binary.$type,
1398
+ properties: {
1399
+ left: {
1400
+ name: Binary.left
1401
+ },
1402
+ operator: {
1403
+ name: Binary.operator
1404
+ },
1405
+ right: {
1406
+ name: Binary.right
1407
+ }
1408
+ },
1409
+ superTypes: [Expr.$type]
1410
+ },
1411
+ Block: {
1412
+ name: Block.$type,
1413
+ properties: {
1414
+ stmts: {
1415
+ name: Block.stmts,
1416
+ defaultValue: [],
1417
+ optional: true
1418
+ }
1419
+ },
1420
+ superTypes: [ElseBranch.$type]
1421
+ },
1422
+ BoolLit: {
1423
+ name: BoolLit.$type,
1424
+ properties: {
1425
+ value: {
1426
+ name: BoolLit.value
1427
+ }
1428
+ },
1429
+ superTypes: [Expr.$type]
1430
+ },
1431
+ BreakStmt: {
1432
+ name: BreakStmt.$type,
1433
+ properties: {
1434
+ annotations: {
1435
+ name: BreakStmt.annotations,
1436
+ defaultValue: [],
1437
+ optional: true
1438
+ }
1439
+ },
1440
+ superTypes: [Statement.$type]
1441
+ },
1442
+ Call: {
1443
+ name: Call.$type,
1444
+ properties: {
1445
+ args: {
1446
+ name: Call.args,
1447
+ optional: true
1448
+ },
1449
+ callee: {
1450
+ name: Call.callee
1451
+ }
1452
+ },
1453
+ superTypes: [Expr.$type]
1454
+ },
1455
+ CaptureStmt: {
1456
+ name: CaptureStmt.$type,
1457
+ properties: {
1458
+ annotations: {
1459
+ name: CaptureStmt.annotations,
1460
+ defaultValue: [],
1461
+ optional: true
1462
+ },
1463
+ name: {
1464
+ name: CaptureStmt.name
1465
+ },
1466
+ opts: {
1467
+ name: CaptureStmt.opts,
1468
+ optional: true
1469
+ },
1470
+ value: {
1471
+ name: CaptureStmt.value
1472
+ }
1473
+ },
1474
+ superTypes: [Statement.$type]
1475
+ },
1476
+ ConfigDecl: {
1477
+ name: ConfigDecl.$type,
1478
+ properties: {
1479
+ annotations: {
1480
+ name: ConfigDecl.annotations,
1481
+ defaultValue: [],
1482
+ optional: true
1483
+ },
1484
+ body: {
1485
+ name: ConfigDecl.body
1486
+ }
1487
+ },
1488
+ superTypes: [Declaration.$type]
1489
+ },
1490
+ ContinueStmt: {
1491
+ name: ContinueStmt.$type,
1492
+ properties: {
1493
+ annotations: {
1494
+ name: ContinueStmt.annotations,
1495
+ defaultValue: [],
1496
+ optional: true
1497
+ }
1498
+ },
1499
+ superTypes: [Statement.$type]
1500
+ },
1501
+ DatasetDecl: {
1502
+ name: DatasetDecl.$type,
1503
+ properties: {
1504
+ annotations: {
1505
+ name: DatasetDecl.annotations,
1506
+ defaultValue: [],
1507
+ optional: true
1508
+ },
1509
+ declaredType: {
1510
+ name: DatasetDecl.declaredType,
1511
+ optional: true
1512
+ },
1513
+ name: {
1514
+ name: DatasetDecl.name
1515
+ },
1516
+ value: {
1517
+ name: DatasetDecl.value
1518
+ }
1519
+ },
1520
+ superTypes: [Declaration.$type]
1521
+ },
1522
+ Declaration: {
1523
+ name: Declaration.$type,
1524
+ properties: {
1525
+ annotations: {
1526
+ name: Declaration.annotations,
1527
+ defaultValue: [],
1528
+ optional: true
1529
+ }
1530
+ },
1531
+ superTypes: []
1532
+ },
1533
+ DecoDecl: {
1534
+ name: DecoDecl.$type,
1535
+ properties: {
1536
+ annotations: {
1537
+ name: DecoDecl.annotations,
1538
+ defaultValue: [],
1539
+ optional: true
1540
+ },
1541
+ body: {
1542
+ name: DecoDecl.body
1543
+ },
1544
+ export: {
1545
+ name: DecoDecl.export,
1546
+ defaultValue: false,
1547
+ optional: true
1548
+ },
1549
+ name: {
1550
+ name: DecoDecl.name
1551
+ },
1552
+ params: {
1553
+ name: DecoDecl.params,
1554
+ optional: true
1555
+ }
1556
+ },
1557
+ superTypes: [Declaration.$type]
1558
+ },
1559
+ Document: {
1560
+ name: Document.$type,
1561
+ properties: {
1562
+ decls: {
1563
+ name: Document.decls,
1564
+ defaultValue: [],
1565
+ optional: true
1566
+ },
1567
+ imports: {
1568
+ name: Document.imports,
1569
+ defaultValue: [],
1570
+ optional: true
1571
+ },
1572
+ name: {
1573
+ name: Document.name,
1574
+ optional: true
1575
+ }
1576
+ },
1577
+ superTypes: []
1578
+ },
1579
+ ElseBranch: {
1580
+ name: ElseBranch.$type,
1581
+ properties: {
1582
+ },
1583
+ superTypes: []
1584
+ },
1585
+ ExpectStmt: {
1586
+ name: ExpectStmt.$type,
1587
+ properties: {
1588
+ annotations: {
1589
+ name: ExpectStmt.annotations,
1590
+ defaultValue: [],
1591
+ optional: true
1592
+ },
1593
+ checks: {
1594
+ name: ExpectStmt.checks,
1595
+ defaultValue: [],
1596
+ optional: true
1597
+ },
1598
+ matcher: {
1599
+ name: ExpectStmt.matcher,
1600
+ optional: true
1601
+ },
1602
+ modifier: {
1603
+ name: ExpectStmt.modifier,
1604
+ optional: true
1605
+ },
1606
+ negate: {
1607
+ name: ExpectStmt.negate,
1608
+ defaultValue: false,
1609
+ optional: true
1610
+ },
1611
+ subject: {
1612
+ name: ExpectStmt.subject,
1613
+ optional: true
1614
+ }
1615
+ },
1616
+ superTypes: [Declaration.$type, Statement.$type]
1617
+ },
1618
+ Expr: {
1619
+ name: Expr.$type,
1620
+ properties: {
1621
+ },
1622
+ superTypes: []
1623
+ },
1624
+ FactoryDecl: {
1625
+ name: FactoryDecl.$type,
1626
+ properties: {
1627
+ annotations: {
1628
+ name: FactoryDecl.annotations,
1629
+ defaultValue: [],
1630
+ optional: true
1631
+ },
1632
+ body: {
1633
+ name: FactoryDecl.body
1634
+ },
1635
+ name: {
1636
+ name: FactoryDecl.name
1637
+ }
1638
+ },
1639
+ superTypes: [Declaration.$type]
1640
+ },
1641
+ FieldDecl: {
1642
+ name: FieldDecl.$type,
1643
+ properties: {
1644
+ annotations: {
1645
+ name: FieldDecl.annotations,
1646
+ defaultValue: [],
1647
+ optional: true
1648
+ },
1649
+ fieldType: {
1650
+ name: FieldDecl.fieldType
1651
+ },
1652
+ name: {
1653
+ name: FieldDecl.name
1654
+ },
1655
+ optional: {
1656
+ name: FieldDecl.optional,
1657
+ defaultValue: false,
1658
+ optional: true
1659
+ }
1660
+ },
1661
+ superTypes: []
1662
+ },
1663
+ FlowDecl: {
1664
+ name: FlowDecl.$type,
1665
+ properties: {
1666
+ annotations: {
1667
+ name: FlowDecl.annotations,
1668
+ defaultValue: [],
1669
+ optional: true
1670
+ },
1671
+ body: {
1672
+ name: FlowDecl.body
1673
+ },
1674
+ title: {
1675
+ name: FlowDecl.title
1676
+ }
1677
+ },
1678
+ superTypes: [Declaration.$type]
1679
+ },
1680
+ FnBody: {
1681
+ name: FnBody.$type,
1682
+ properties: {
1683
+ locals: {
1684
+ name: FnBody.locals,
1685
+ defaultValue: [],
1686
+ optional: true
1687
+ },
1688
+ result: {
1689
+ name: FnBody.result
1690
+ }
1691
+ },
1692
+ superTypes: []
1693
+ },
1694
+ FnDecl: {
1695
+ name: FnDecl.$type,
1696
+ properties: {
1697
+ annotations: {
1698
+ name: FnDecl.annotations,
1699
+ defaultValue: [],
1700
+ optional: true
1701
+ },
1702
+ body: {
1703
+ name: FnDecl.body
1704
+ },
1705
+ export: {
1706
+ name: FnDecl.export,
1707
+ defaultValue: false,
1708
+ optional: true
1709
+ },
1710
+ name: {
1711
+ name: FnDecl.name
1712
+ },
1713
+ params: {
1714
+ name: FnDecl.params,
1715
+ optional: true
1716
+ },
1717
+ returns: {
1718
+ name: FnDecl.returns,
1719
+ optional: true
1720
+ }
1721
+ },
1722
+ superTypes: [Declaration.$type]
1723
+ },
1724
+ FnExpr: {
1725
+ name: FnExpr.$type,
1726
+ properties: {
1727
+ body: {
1728
+ name: FnExpr.body
1729
+ },
1730
+ params: {
1731
+ name: FnExpr.params
1732
+ },
1733
+ returns: {
1734
+ name: FnExpr.returns,
1735
+ optional: true
1736
+ }
1737
+ },
1738
+ superTypes: [Expr.$type]
1739
+ },
1740
+ ForEachStmt: {
1741
+ name: ForEachStmt.$type,
1742
+ properties: {
1743
+ annotations: {
1744
+ name: ForEachStmt.annotations,
1745
+ defaultValue: [],
1746
+ optional: true
1747
+ },
1748
+ body: {
1749
+ name: ForEachStmt.body
1750
+ },
1751
+ item: {
1752
+ name: ForEachStmt.item
1753
+ },
1754
+ opts: {
1755
+ name: ForEachStmt.opts,
1756
+ optional: true
1757
+ },
1758
+ source: {
1759
+ name: ForEachStmt.source
1760
+ }
1761
+ },
1762
+ superTypes: [Declaration.$type, Statement.$type]
1763
+ },
1764
+ FragmentDecl: {
1765
+ name: FragmentDecl.$type,
1766
+ properties: {
1767
+ annotations: {
1768
+ name: FragmentDecl.annotations,
1769
+ defaultValue: [],
1770
+ optional: true
1771
+ },
1772
+ body: {
1773
+ name: FragmentDecl.body
1774
+ },
1775
+ export: {
1776
+ name: FragmentDecl.export,
1777
+ defaultValue: false,
1778
+ optional: true
1779
+ },
1780
+ name: {
1781
+ name: FragmentDecl.name
1782
+ },
1783
+ params: {
1784
+ name: FragmentDecl.params,
1785
+ optional: true
1786
+ },
1787
+ returns: {
1788
+ name: FragmentDecl.returns,
1789
+ optional: true
1790
+ }
1791
+ },
1792
+ superTypes: [Declaration.$type]
1793
+ },
1794
+ GroupDecl: {
1795
+ name: GroupDecl.$type,
1796
+ properties: {
1797
+ annotations: {
1798
+ name: GroupDecl.annotations,
1799
+ defaultValue: [],
1800
+ optional: true
1801
+ },
1802
+ body: {
1803
+ name: GroupDecl.body
1804
+ },
1805
+ title: {
1806
+ name: GroupDecl.title
1807
+ }
1808
+ },
1809
+ superTypes: [Statement.$type]
1810
+ },
1811
+ IfStmt: {
1812
+ name: IfStmt.$type,
1813
+ properties: {
1814
+ annotations: {
1815
+ name: IfStmt.annotations,
1816
+ defaultValue: [],
1817
+ optional: true
1818
+ },
1819
+ cond: {
1820
+ name: IfStmt.cond
1821
+ },
1822
+ otherwise: {
1823
+ name: IfStmt.otherwise,
1824
+ optional: true
1825
+ },
1826
+ then: {
1827
+ name: IfStmt.then
1828
+ }
1829
+ },
1830
+ superTypes: [Declaration.$type, Statement.$type, ElseBranch.$type]
1831
+ },
1832
+ ImportDecl: {
1833
+ name: ImportDecl.$type,
1834
+ properties: {
1835
+ },
1836
+ superTypes: []
1837
+ },
1838
+ Index: {
1839
+ name: Index.$type,
1840
+ properties: {
1841
+ index: {
1842
+ name: Index.index
1843
+ },
1844
+ receiver: {
1845
+ name: Index.receiver
1846
+ }
1847
+ },
1848
+ superTypes: [Expr.$type]
1849
+ },
1850
+ InstantLit: {
1851
+ name: InstantLit.$type,
1852
+ properties: {
1853
+ value: {
1854
+ name: InstantLit.value
1855
+ }
1856
+ },
1857
+ superTypes: [Expr.$type]
1858
+ },
1859
+ LetStmt: {
1860
+ name: LetStmt.$type,
1861
+ properties: {
1862
+ annotations: {
1863
+ name: LetStmt.annotations,
1864
+ defaultValue: [],
1865
+ optional: true
1866
+ },
1867
+ args: {
1868
+ name: LetStmt.args,
1869
+ defaultValue: [],
1870
+ optional: true
1871
+ },
1872
+ declaredType: {
1873
+ name: LetStmt.declaredType,
1874
+ optional: true
1875
+ },
1876
+ kind: {
1877
+ name: LetStmt.kind
1878
+ },
1879
+ name: {
1880
+ name: LetStmt.name
1881
+ },
1882
+ opts: {
1883
+ name: LetStmt.opts,
1884
+ optional: true
1885
+ },
1886
+ value: {
1887
+ name: LetStmt.value
1888
+ }
1889
+ },
1890
+ superTypes: [Declaration.$type, Statement.$type]
1891
+ },
1892
+ LifecycleDecl: {
1893
+ name: LifecycleDecl.$type,
1894
+ properties: {
1895
+ annotations: {
1896
+ name: LifecycleDecl.annotations,
1897
+ defaultValue: [],
1898
+ optional: true
1899
+ },
1900
+ arg: {
1901
+ name: LifecycleDecl.arg,
1902
+ optional: true
1903
+ },
1904
+ body: {
1905
+ name: LifecycleDecl.body
1906
+ },
1907
+ event: {
1908
+ name: LifecycleDecl.event,
1909
+ optional: true
1910
+ },
1911
+ hook: {
1912
+ name: LifecycleDecl.hook,
1913
+ optional: true
1914
+ }
1915
+ },
1916
+ superTypes: [Declaration.$type, Statement.$type]
1917
+ },
1918
+ ListLit: {
1919
+ name: ListLit.$type,
1920
+ properties: {
1921
+ items: {
1922
+ name: ListLit.items,
1923
+ defaultValue: [],
1924
+ optional: true
1925
+ }
1926
+ },
1927
+ superTypes: [Expr.$type]
1928
+ },
1929
+ LiteralType: {
1930
+ name: LiteralType.$type,
1931
+ properties: {
1932
+ value: {
1933
+ name: LiteralType.value
1934
+ }
1935
+ },
1936
+ superTypes: [SingleType.$type]
1937
+ },
1938
+ MapEntry: {
1939
+ name: MapEntry.$type,
1940
+ properties: {
1941
+ key: {
1942
+ name: MapEntry.key
1943
+ },
1944
+ value: {
1945
+ name: MapEntry.value
1946
+ }
1947
+ },
1948
+ superTypes: []
1949
+ },
1950
+ MapLit: {
1951
+ name: MapLit.$type,
1952
+ properties: {
1953
+ entries: {
1954
+ name: MapLit.entries,
1955
+ defaultValue: [],
1956
+ optional: true
1957
+ }
1958
+ },
1959
+ superTypes: [Expr.$type]
1960
+ },
1961
+ MatcherClause: {
1962
+ name: MatcherClause.$type,
1963
+ properties: {
1964
+ args: {
1965
+ name: MatcherClause.args,
1966
+ defaultValue: [],
1967
+ optional: true
1968
+ },
1969
+ name: {
1970
+ name: MatcherClause.name
1971
+ },
1972
+ opts: {
1973
+ name: MatcherClause.opts,
1974
+ optional: true
1975
+ }
1976
+ },
1977
+ superTypes: []
1978
+ },
1979
+ MatrixDecl: {
1980
+ name: MatrixDecl.$type,
1981
+ properties: {
1982
+ annotations: {
1983
+ name: MatrixDecl.annotations,
1984
+ defaultValue: [],
1985
+ optional: true
1986
+ },
1987
+ body: {
1988
+ name: MatrixDecl.body
1989
+ }
1990
+ },
1991
+ superTypes: [Declaration.$type]
1992
+ },
1993
+ Member: {
1994
+ name: Member.$type,
1995
+ properties: {
1996
+ member: {
1997
+ name: Member.member
1998
+ },
1999
+ optional: {
2000
+ name: Member.optional,
2001
+ defaultValue: false,
2002
+ optional: true
2003
+ },
2004
+ receiver: {
2005
+ name: Member.receiver
2006
+ }
2007
+ },
2008
+ superTypes: [Expr.$type]
2009
+ },
2010
+ NamedType: {
2011
+ name: NamedType.$type,
2012
+ properties: {
2013
+ args: {
2014
+ name: NamedType.args,
2015
+ defaultValue: [],
2016
+ optional: true
2017
+ },
2018
+ name: {
2019
+ name: NamedType.name
2020
+ }
2021
+ },
2022
+ superTypes: [SingleType.$type]
2023
+ },
2024
+ NullLit: {
2025
+ name: NullLit.$type,
2026
+ properties: {
2027
+ },
2028
+ superTypes: [Expr.$type]
2029
+ },
2030
+ NumberLit: {
2031
+ name: NumberLit.$type,
2032
+ properties: {
2033
+ raw: {
2034
+ name: NumberLit.raw
2035
+ }
2036
+ },
2037
+ superTypes: [Expr.$type]
2038
+ },
2039
+ ParallelStmt: {
2040
+ name: ParallelStmt.$type,
2041
+ properties: {
2042
+ annotations: {
2043
+ name: ParallelStmt.annotations,
2044
+ defaultValue: [],
2045
+ optional: true
2046
+ },
2047
+ body: {
2048
+ name: ParallelStmt.body
2049
+ },
2050
+ opts: {
2051
+ name: ParallelStmt.opts,
2052
+ optional: true
2053
+ }
2054
+ },
2055
+ superTypes: [Declaration.$type, Statement.$type]
2056
+ },
2057
+ Param: {
2058
+ name: Param.$type,
2059
+ properties: {
2060
+ annotations: {
2061
+ name: Param.annotations,
2062
+ defaultValue: [],
2063
+ optional: true
2064
+ },
2065
+ name: {
2066
+ name: Param.name
2067
+ },
2068
+ paramType: {
2069
+ name: Param.paramType,
2070
+ optional: true
2071
+ }
2072
+ },
2073
+ superTypes: []
2074
+ },
2075
+ ParamList: {
2076
+ name: ParamList.$type,
2077
+ properties: {
2078
+ params: {
2079
+ name: ParamList.params,
2080
+ defaultValue: []
2081
+ }
2082
+ },
2083
+ superTypes: []
2084
+ },
2085
+ RaceStmt: {
2086
+ name: RaceStmt.$type,
2087
+ properties: {
2088
+ annotations: {
2089
+ name: RaceStmt.annotations,
2090
+ defaultValue: [],
2091
+ optional: true
2092
+ },
2093
+ body: {
2094
+ name: RaceStmt.body
2095
+ },
2096
+ opts: {
2097
+ name: RaceStmt.opts,
2098
+ optional: true
2099
+ }
2100
+ },
2101
+ superTypes: [Declaration.$type, Statement.$type]
2102
+ },
2103
+ Ref: {
2104
+ name: Ref.$type,
2105
+ properties: {
2106
+ name: {
2107
+ name: Ref.name
2108
+ }
2109
+ },
2110
+ superTypes: [Expr.$type]
2111
+ },
2112
+ RepeatStmt: {
2113
+ name: RepeatStmt.$type,
2114
+ properties: {
2115
+ annotations: {
2116
+ name: RepeatStmt.annotations,
2117
+ defaultValue: [],
2118
+ optional: true
2119
+ },
2120
+ body: {
2121
+ name: RepeatStmt.body
2122
+ },
2123
+ count: {
2124
+ name: RepeatStmt.count
2125
+ },
2126
+ index: {
2127
+ name: RepeatStmt.index,
2128
+ optional: true
2129
+ }
2130
+ },
2131
+ superTypes: [Declaration.$type, Statement.$type]
2132
+ },
2133
+ ReportDecl: {
2134
+ name: ReportDecl.$type,
2135
+ properties: {
2136
+ annotations: {
2137
+ name: ReportDecl.annotations,
2138
+ defaultValue: [],
2139
+ optional: true
2140
+ },
2141
+ reporters: {
2142
+ name: ReportDecl.reporters,
2143
+ defaultValue: []
2144
+ }
2145
+ },
2146
+ superTypes: [Declaration.$type]
2147
+ },
2148
+ ReturnStmt: {
2149
+ name: ReturnStmt.$type,
2150
+ properties: {
2151
+ annotations: {
2152
+ name: ReturnStmt.annotations,
2153
+ defaultValue: [],
2154
+ optional: true
2155
+ },
2156
+ value: {
2157
+ name: ReturnStmt.value,
2158
+ optional: true
2159
+ }
2160
+ },
2161
+ superTypes: [Statement.$type]
2162
+ },
2163
+ RunStmt: {
2164
+ name: RunStmt.$type,
2165
+ properties: {
2166
+ annotations: {
2167
+ name: RunStmt.annotations,
2168
+ defaultValue: [],
2169
+ optional: true
2170
+ },
2171
+ args: {
2172
+ name: RunStmt.args,
2173
+ optional: true
2174
+ },
2175
+ bind: {
2176
+ name: RunStmt.bind,
2177
+ optional: true
2178
+ },
2179
+ target: {
2180
+ name: RunStmt.target
2181
+ }
2182
+ },
2183
+ superTypes: [Declaration.$type, Statement.$type]
2184
+ },
2185
+ SingleType: {
2186
+ name: SingleType.$type,
2187
+ properties: {
2188
+ },
2189
+ superTypes: []
2190
+ },
2191
+ Statement: {
2192
+ name: Statement.$type,
2193
+ properties: {
2194
+ annotations: {
2195
+ name: Statement.annotations,
2196
+ defaultValue: [],
2197
+ optional: true
2198
+ }
2199
+ },
2200
+ superTypes: []
2201
+ },
2202
+ StepDecl: {
2203
+ name: StepDecl.$type,
2204
+ properties: {
2205
+ annotations: {
2206
+ name: StepDecl.annotations,
2207
+ defaultValue: [],
2208
+ optional: true
2209
+ },
2210
+ body: {
2211
+ name: StepDecl.body
2212
+ },
2213
+ title: {
2214
+ name: StepDecl.title
2215
+ }
2216
+ },
2217
+ superTypes: [Statement.$type]
2218
+ },
2219
+ StringLit: {
2220
+ name: StringLit.$type,
2221
+ properties: {
2222
+ value: {
2223
+ name: StringLit.value
2224
+ }
2225
+ },
2226
+ superTypes: [Expr.$type]
2227
+ },
2228
+ Ternary: {
2229
+ name: Ternary.$type,
2230
+ properties: {
2231
+ condition: {
2232
+ name: Ternary.condition
2233
+ },
2234
+ otherwise: {
2235
+ name: Ternary.otherwise
2236
+ },
2237
+ then: {
2238
+ name: Ternary.then
2239
+ }
2240
+ },
2241
+ superTypes: [Expr.$type]
2242
+ },
2243
+ TryStmt: {
2244
+ name: TryStmt.$type,
2245
+ properties: {
2246
+ annotations: {
2247
+ name: TryStmt.annotations,
2248
+ defaultValue: [],
2249
+ optional: true
2250
+ },
2251
+ body: {
2252
+ name: TryStmt.body
2253
+ },
2254
+ error: {
2255
+ name: TryStmt.error,
2256
+ optional: true
2257
+ },
2258
+ finalizer: {
2259
+ name: TryStmt.finalizer,
2260
+ optional: true
2261
+ },
2262
+ handler: {
2263
+ name: TryStmt.handler,
2264
+ optional: true
2265
+ }
2266
+ },
2267
+ superTypes: [Declaration.$type, Statement.$type]
2268
+ },
2269
+ TypeBody: {
2270
+ name: TypeBody.$type,
2271
+ properties: {
2272
+ fields: {
2273
+ name: TypeBody.fields,
2274
+ defaultValue: []
2275
+ }
2276
+ },
2277
+ superTypes: []
2278
+ },
2279
+ TypeDecl: {
2280
+ name: TypeDecl.$type,
2281
+ properties: {
2282
+ alias: {
2283
+ name: TypeDecl.alias,
2284
+ optional: true
2285
+ },
2286
+ annotations: {
2287
+ name: TypeDecl.annotations,
2288
+ defaultValue: [],
2289
+ optional: true
2290
+ },
2291
+ body: {
2292
+ name: TypeDecl.body,
2293
+ optional: true
2294
+ },
2295
+ name: {
2296
+ name: TypeDecl.name
2297
+ }
2298
+ },
2299
+ superTypes: [Declaration.$type]
2300
+ },
2301
+ TypeRef: {
2302
+ name: TypeRef.$type,
2303
+ properties: {
2304
+ members: {
2305
+ name: TypeRef.members,
2306
+ defaultValue: []
2307
+ }
2308
+ },
2309
+ superTypes: []
2310
+ },
2311
+ Unary: {
2312
+ name: Unary.$type,
2313
+ properties: {
2314
+ operand: {
2315
+ name: Unary.operand
2316
+ },
2317
+ operator: {
2318
+ name: Unary.operator
2319
+ }
2320
+ },
2321
+ superTypes: [Expr.$type]
2322
+ },
2323
+ UseDecl: {
2324
+ name: UseDecl.$type,
2325
+ properties: {
2326
+ alias: {
2327
+ name: UseDecl.alias,
2328
+ optional: true
2329
+ },
2330
+ pkg: {
2331
+ name: UseDecl.pkg
2332
+ }
2333
+ },
2334
+ superTypes: [ImportDecl.$type]
2335
+ },
2336
+ ValueImport: {
2337
+ name: ValueImport.$type,
2338
+ properties: {
2339
+ default: {
2340
+ name: ValueImport.default,
2341
+ optional: true
2342
+ },
2343
+ export: {
2344
+ name: ValueImport.export,
2345
+ defaultValue: false,
2346
+ optional: true
2347
+ },
2348
+ names: {
2349
+ name: ValueImport.names,
2350
+ defaultValue: [],
2351
+ optional: true
2352
+ },
2353
+ path: {
2354
+ name: ValueImport.path
2355
+ },
2356
+ wildcard: {
2357
+ name: ValueImport.wildcard,
2358
+ optional: true
2359
+ }
2360
+ },
2361
+ superTypes: [ImportDecl.$type]
2362
+ },
2363
+ WhileStmt: {
2364
+ name: WhileStmt.$type,
2365
+ properties: {
2366
+ annotations: {
2367
+ name: WhileStmt.annotations,
2368
+ defaultValue: [],
2369
+ optional: true
2370
+ },
2371
+ body: {
2372
+ name: WhileStmt.body
2373
+ },
2374
+ cond: {
2375
+ name: WhileStmt.cond
2376
+ }
2377
+ },
2378
+ superTypes: [Declaration.$type, Statement.$type]
2379
+ }
2380
+ } as const satisfies langium.AstMetaData
2381
+ }
2382
+
2383
+ export const reflection = new VennAstReflection();