@algosail/lang 0.2.12 → 0.5.1

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 (145) hide show
  1. package/bin/sail.mjs +4 -0
  2. package/cli/run-cli.js +176 -0
  3. package/index.js +12 -2
  4. package/lib/codegen/README.md +230 -0
  5. package/lib/codegen/codegen-diagnostics.js +164 -0
  6. package/lib/codegen/compile-graph.js +107 -0
  7. package/lib/codegen/emit-adt.js +177 -0
  8. package/lib/codegen/emit-body.js +1265 -0
  9. package/lib/codegen/emit-builtin.js +371 -0
  10. package/lib/codegen/emit-jsdoc-sail.js +383 -0
  11. package/lib/codegen/emit-module.js +498 -0
  12. package/lib/codegen/esm-imports.js +26 -0
  13. package/lib/codegen/index.js +69 -0
  14. package/lib/codegen/out-layout.js +102 -0
  15. package/lib/ffi/extract-jsdoc-sail.js +34 -0
  16. package/lib/io-node/index.js +4 -0
  17. package/lib/io-node/package-root.js +18 -0
  18. package/lib/io-node/read-file.js +12 -0
  19. package/lib/io-node/resolve-package.js +24 -0
  20. package/lib/io-node/resolve-sail-names-from-disk.js +21 -0
  21. package/lib/ir/assert-json-serializable.js +30 -0
  22. package/lib/ir/attach-call-effects.js +108 -0
  23. package/lib/ir/bind-values.js +594 -0
  24. package/lib/ir/build-module-ir.js +290 -0
  25. package/lib/ir/index.js +31 -0
  26. package/lib/ir/lower-body-steps.js +170 -0
  27. package/lib/ir/module-metadata.js +65 -0
  28. package/lib/ir/schema-version.js +15 -0
  29. package/lib/ir/serialize.js +202 -0
  30. package/lib/ir/stitch-types.js +92 -0
  31. package/lib/names/adt-autogen.js +22 -0
  32. package/lib/names/import-path.js +28 -0
  33. package/lib/names/index.js +1 -0
  34. package/lib/names/local-declarations.js +127 -0
  35. package/lib/names/lower-first.js +6 -0
  36. package/lib/names/module-scope.js +120 -0
  37. package/lib/names/resolve-sail.js +365 -0
  38. package/lib/names/walk-ast-refs.js +91 -0
  39. package/lib/parse/ast-build.js +51 -0
  40. package/lib/parse/ast-spec.js +212 -0
  41. package/lib/parse/builtins-set.js +12 -0
  42. package/lib/parse/diagnostics.js +180 -0
  43. package/lib/parse/index.js +46 -0
  44. package/lib/parse/lexer.js +390 -0
  45. package/lib/parse/parse-source.js +912 -0
  46. package/lib/typecheck/adt-autogen-sigs.js +345 -0
  47. package/lib/typecheck/build-type-env.js +148 -0
  48. package/lib/typecheck/builtin-signatures.js +183 -0
  49. package/lib/typecheck/check-word-body.js +1021 -0
  50. package/lib/typecheck/effect-decl.js +124 -0
  51. package/lib/typecheck/index.js +55 -0
  52. package/lib/typecheck/normalize-sig.js +369 -0
  53. package/lib/typecheck/stack-step-snapshots.js +56 -0
  54. package/lib/typecheck/unify-type.js +665 -0
  55. package/lib/typecheck/validate-adt.js +201 -0
  56. package/package.json +4 -9
  57. package/scripts/regen-demo-full-syntax-ast.mjs +22 -0
  58. package/test/cli/sail-cli.test.js +64 -0
  59. package/test/codegen/compile-bracket-ffi-e2e.test.js +64 -0
  60. package/test/codegen/compile-stage0.test.js +128 -0
  61. package/test/codegen/compile-stage4-layout.test.js +124 -0
  62. package/test/codegen/e2e-prelude-ffi-adt/app/extra.sail +6 -0
  63. package/test/codegen/e2e-prelude-ffi-adt/app/lib.sail +34 -0
  64. package/test/codegen/e2e-prelude-ffi-adt/app/main.sail +28 -0
  65. package/test/codegen/e2e-prelude-ffi-adt/artifacts/.gitignore +2 -0
  66. package/test/codegen/e2e-prelude-ffi-adt/ffi/helpers.js +27 -0
  67. package/test/codegen/e2e-prelude-ffi-adt.test.js +100 -0
  68. package/test/codegen/emit-adt-stage6.test.js +168 -0
  69. package/test/codegen/emit-async-stage5.test.js +164 -0
  70. package/test/codegen/emit-body-stage2.test.js +139 -0
  71. package/test/codegen/emit-body.test.js +163 -0
  72. package/test/codegen/emit-builtins-stage7.test.js +258 -0
  73. package/test/codegen/emit-diagnostics-stage9.test.js +90 -0
  74. package/test/codegen/emit-jsdoc-stage8.test.js +113 -0
  75. package/test/codegen/emit-module-stage3.test.js +78 -0
  76. package/test/conformance/conformance-ir-l4.test.js +38 -0
  77. package/test/conformance/conformance-l5-codegen.test.js +111 -0
  78. package/test/conformance/conformance-runner.js +91 -0
  79. package/test/conformance/conformance-suite-l3.test.js +32 -0
  80. package/test/ffi/prelude-jsdoc.test.js +49 -0
  81. package/test/fixtures/demo-full-syntax.ast.json +1471 -0
  82. package/test/fixtures/demo-full-syntax.sail +35 -0
  83. package/test/fixtures/io-node-ffi-adt/ffi.js +7 -0
  84. package/test/fixtures/io-node-ffi-adt/use.sail +4 -0
  85. package/test/fixtures/io-node-mini/dep.sail +2 -0
  86. package/test/fixtures/io-node-mini/entry.sail +4 -0
  87. package/test/fixtures/io-node-prelude/entry.sail +4 -0
  88. package/test/fixtures/io-node-reexport-chain/a.sail +4 -0
  89. package/test/fixtures/io-node-reexport-chain/b.sail +2 -0
  90. package/test/fixtures/io-node-reexport-chain/c.sail +2 -0
  91. package/test/io-node/resolve-disk.test.js +59 -0
  92. package/test/ir/bind-values.test.js +84 -0
  93. package/test/ir/build-module-ir.test.js +100 -0
  94. package/test/ir/call-effects.test.js +97 -0
  95. package/test/ir/ffi-bracket-ir.test.js +59 -0
  96. package/test/ir/full-ir-document.test.js +51 -0
  97. package/test/ir/ir-document-assert.js +67 -0
  98. package/test/ir/lower-body-steps.test.js +90 -0
  99. package/test/ir/module-metadata.test.js +42 -0
  100. package/test/ir/serialization-model.test.js +172 -0
  101. package/test/ir/stitch-types.test.js +74 -0
  102. package/test/names/l2-resolve-adt-autogen.test.js +155 -0
  103. package/test/names/l2-resolve-bracket-ffi.test.js +108 -0
  104. package/test/names/l2-resolve-declaration-and-bracket-errors.test.js +276 -0
  105. package/test/names/l2-resolve-graph.test.js +105 -0
  106. package/test/names/l2-resolve-single-file.test.js +79 -0
  107. package/test/parse/ast-spec.test.js +56 -0
  108. package/test/parse/ast.test.js +476 -0
  109. package/test/parse/contract.test.js +37 -0
  110. package/test/parse/fixtures-full-syntax.test.js +24 -0
  111. package/test/parse/helpers.js +27 -0
  112. package/test/parse/l0-lex-diagnostics-matrix.test.js +59 -0
  113. package/test/parse/l0-lex.test.js +40 -0
  114. package/test/parse/l1-diagnostics.test.js +77 -0
  115. package/test/parse/l1-import.test.js +28 -0
  116. package/test/parse/l1-parse-diagnostics-matrix.test.js +32 -0
  117. package/test/parse/l1-top-level.test.js +47 -0
  118. package/test/parse/l1-types.test.js +31 -0
  119. package/test/parse/l1-words.test.js +49 -0
  120. package/test/parse/l2-diagnostics-contract.test.js +67 -0
  121. package/test/parse/l3-diagnostics-contract.test.js +66 -0
  122. package/test/typecheck/adt-decl-stage2.test.js +83 -0
  123. package/test/typecheck/container-contract-e1309.test.js +258 -0
  124. package/test/typecheck/ffi-bracket-l3.test.js +61 -0
  125. package/test/typecheck/l3-diagnostics-matrix.test.js +248 -0
  126. package/test/typecheck/l3-partial-pipeline.test.js +74 -0
  127. package/test/typecheck/opaque-ffi-type.test.js +78 -0
  128. package/test/typecheck/sig-type-stage3.test.js +190 -0
  129. package/test/typecheck/stack-check-stage4.test.js +149 -0
  130. package/test/typecheck/stack-check-stage5.test.js +74 -0
  131. package/test/typecheck/stack-check-stage6.test.js +56 -0
  132. package/test/typecheck/stack-check-stage7.test.js +160 -0
  133. package/test/typecheck/stack-check-stage8.test.js +146 -0
  134. package/test/typecheck/stack-check-stage9.test.js +105 -0
  135. package/test/typecheck/typecheck-env.test.js +53 -0
  136. package/test/typecheck/typecheck-pipeline.test.js +37 -0
  137. package/README.md +0 -37
  138. package/cli/sail.js +0 -151
  139. package/cli/typecheck.js +0 -39
  140. package/docs/ARCHITECTURE.md +0 -50
  141. package/docs/CHANGELOG.md +0 -18
  142. package/docs/FFI-GUIDE.md +0 -65
  143. package/docs/RELEASE.md +0 -36
  144. package/docs/TESTING.md +0 -86
  145. package/test/integration.test.js +0 -61
@@ -0,0 +1,1471 @@
1
+ {
2
+ "kind": "source_file",
3
+ "span": {
4
+ "start": {
5
+ "offset": 0,
6
+ "line": 1,
7
+ "column": 1
8
+ },
9
+ "end": {
10
+ "offset": 606,
11
+ "line": 36,
12
+ "column": 1
13
+ }
14
+ },
15
+ "items": [
16
+ {
17
+ "kind": "import",
18
+ "span": {
19
+ "start": {
20
+ "offset": 17,
21
+ "line": 2,
22
+ "column": 1
23
+ },
24
+ "end": {
25
+ "offset": 41,
26
+ "line": 2,
27
+ "column": 25
28
+ }
29
+ },
30
+ "module": "Base",
31
+ "path": "./vendor/base.sail",
32
+ "bracket": null,
33
+ "doc": [
34
+ " import doc "
35
+ ]
36
+ },
37
+ {
38
+ "kind": "import",
39
+ "span": {
40
+ "start": {
41
+ "offset": 42,
42
+ "line": 3,
43
+ "column": 1
44
+ },
45
+ "end": {
46
+ "offset": 68,
47
+ "line": 3,
48
+ "column": 27
49
+ }
50
+ },
51
+ "module": "Num",
52
+ "path": "@algosail/prelude/num",
53
+ "bracket": null,
54
+ "doc": []
55
+ },
56
+ {
57
+ "kind": "import",
58
+ "span": {
59
+ "start": {
60
+ "offset": 69,
61
+ "line": 4,
62
+ "column": 1
63
+ },
64
+ "end": {
65
+ "offset": 115,
66
+ "line": 4,
67
+ "column": 47
68
+ }
69
+ },
70
+ "module": "Std",
71
+ "path": "./std/lib.sail",
72
+ "bracket": {
73
+ "words": [
74
+ "map",
75
+ "filter"
76
+ ],
77
+ "types": [
78
+ "Vec",
79
+ "Map"
80
+ ]
81
+ },
82
+ "doc": []
83
+ },
84
+ {
85
+ "kind": "sum_type",
86
+ "span": {
87
+ "start": {
88
+ "offset": 117,
89
+ "line": 6,
90
+ "column": 1
91
+ },
92
+ "end": {
93
+ "offset": 184,
94
+ "line": 10,
95
+ "column": 2
96
+ }
97
+ },
98
+ "name": "Maybe",
99
+ "typeParams": [
100
+ "a"
101
+ ],
102
+ "doc": [
103
+ " sum header doc "
104
+ ],
105
+ "tags": [
106
+ {
107
+ "name": "None",
108
+ "payload": null,
109
+ "span": {
110
+ "start": {
111
+ "offset": 151,
112
+ "line": 7,
113
+ "column": 5
114
+ },
115
+ "end": {
116
+ "offset": 174,
117
+ "line": 8,
118
+ "column": 4
119
+ }
120
+ },
121
+ "doc": [
122
+ " tag None "
123
+ ]
124
+ },
125
+ {
126
+ "name": "Just",
127
+ "payload": {
128
+ "kind": "type_var",
129
+ "span": {
130
+ "start": {
131
+ "offset": 180,
132
+ "line": 8,
133
+ "column": 10
134
+ },
135
+ "end": {
136
+ "offset": 181,
137
+ "line": 8,
138
+ "column": 11
139
+ }
140
+ },
141
+ "name": "a"
142
+ },
143
+ "span": {
144
+ "start": {
145
+ "offset": 175,
146
+ "line": 8,
147
+ "column": 5
148
+ },
149
+ "end": {
150
+ "offset": 184,
151
+ "line": 10,
152
+ "column": 2
153
+ }
154
+ },
155
+ "doc": []
156
+ }
157
+ ]
158
+ },
159
+ {
160
+ "kind": "product_type",
161
+ "span": {
162
+ "start": {
163
+ "offset": 183,
164
+ "line": 10,
165
+ "column": 1
166
+ },
167
+ "end": {
168
+ "offset": 247,
169
+ "line": 14,
170
+ "column": 8
171
+ }
172
+ },
173
+ "name": "Vec2",
174
+ "typeParams": [],
175
+ "doc": [
176
+ " product doc "
177
+ ],
178
+ "fields": [
179
+ {
180
+ "name": "x",
181
+ "type": {
182
+ "kind": "type_name",
183
+ "span": {
184
+ "start": {
185
+ "offset": 212,
186
+ "line": 11,
187
+ "column": 6
188
+ },
189
+ "end": {
190
+ "offset": 229,
191
+ "line": 11,
192
+ "column": 23
193
+ }
194
+ },
195
+ "name": "Num"
196
+ },
197
+ "span": {
198
+ "start": {
199
+ "offset": 210,
200
+ "line": 11,
201
+ "column": 4
202
+ },
203
+ "end": {
204
+ "offset": 229,
205
+ "line": 11,
206
+ "column": 23
207
+ }
208
+ },
209
+ "doc": [
210
+ " field x "
211
+ ]
212
+ },
213
+ {
214
+ "name": "y",
215
+ "type": {
216
+ "kind": "type_name",
217
+ "span": {
218
+ "start": {
219
+ "offset": 235,
220
+ "line": 12,
221
+ "column": 6
222
+ },
223
+ "end": {
224
+ "offset": 247,
225
+ "line": 14,
226
+ "column": 8
227
+ }
228
+ },
229
+ "name": "Num"
230
+ },
231
+ "span": {
232
+ "start": {
233
+ "offset": 233,
234
+ "line": 12,
235
+ "column": 4
236
+ },
237
+ "end": {
238
+ "offset": 247,
239
+ "line": 14,
240
+ "column": 8
241
+ }
242
+ },
243
+ "doc": []
244
+ }
245
+ ]
246
+ },
247
+ {
248
+ "kind": "word",
249
+ "span": {
250
+ "start": {
251
+ "offset": 240,
252
+ "line": 14,
253
+ "column": 1
254
+ },
255
+ "end": {
256
+ "offset": 301,
257
+ "line": 18,
258
+ "column": 9
259
+ }
260
+ },
261
+ "name": "stacky",
262
+ "signature": {
263
+ "kind": "signature",
264
+ "span": {
265
+ "start": {
266
+ "offset": 248,
267
+ "line": 14,
268
+ "column": 9
269
+ },
270
+ "end": {
271
+ "offset": 268,
272
+ "line": 14,
273
+ "column": 29
274
+ }
275
+ },
276
+ "left": [
277
+ {
278
+ "kind": "stack_var",
279
+ "span": {
280
+ "start": {
281
+ "offset": 250,
282
+ "line": 14,
283
+ "column": 11
284
+ },
285
+ "end": {
286
+ "offset": 252,
287
+ "line": 14,
288
+ "column": 13
289
+ }
290
+ },
291
+ "name": "s"
292
+ },
293
+ {
294
+ "kind": "sig_type_expr",
295
+ "span": {
296
+ "start": {
297
+ "offset": 253,
298
+ "line": 14,
299
+ "column": 14
300
+ },
301
+ "end": {
302
+ "offset": 259,
303
+ "line": 14,
304
+ "column": 20
305
+ }
306
+ },
307
+ "type": {
308
+ "kind": "type_name",
309
+ "span": {
310
+ "start": {
311
+ "offset": 253,
312
+ "line": 14,
313
+ "column": 14
314
+ },
315
+ "end": {
316
+ "offset": 259,
317
+ "line": 14,
318
+ "column": 20
319
+ }
320
+ },
321
+ "name": "Num"
322
+ }
323
+ }
324
+ ],
325
+ "right": [
326
+ {
327
+ "kind": "stack_var",
328
+ "span": {
329
+ "start": {
330
+ "offset": 260,
331
+ "line": 14,
332
+ "column": 21
333
+ },
334
+ "end": {
335
+ "offset": 262,
336
+ "line": 14,
337
+ "column": 23
338
+ }
339
+ },
340
+ "name": "s"
341
+ },
342
+ {
343
+ "kind": "sig_type_expr",
344
+ "span": {
345
+ "start": {
346
+ "offset": 263,
347
+ "line": 14,
348
+ "column": 24
349
+ },
350
+ "end": {
351
+ "offset": 268,
352
+ "line": 14,
353
+ "column": 29
354
+ }
355
+ },
356
+ "type": {
357
+ "kind": "type_name",
358
+ "span": {
359
+ "start": {
360
+ "offset": 263,
361
+ "line": 14,
362
+ "column": 24
363
+ },
364
+ "end": {
365
+ "offset": 268,
366
+ "line": 14,
367
+ "column": 29
368
+ }
369
+ },
370
+ "name": "Num"
371
+ }
372
+ }
373
+ ],
374
+ "effectsAdd": [],
375
+ "effectsRemove": []
376
+ },
377
+ "doc": [
378
+ " word doc "
379
+ ],
380
+ "body": [
381
+ {
382
+ "kind": "builtin",
383
+ "span": {
384
+ "start": {
385
+ "offset": 288,
386
+ "line": 16,
387
+ "column": 3
388
+ },
389
+ "end": {
390
+ "offset": 291,
391
+ "line": 16,
392
+ "column": 6
393
+ }
394
+ },
395
+ "name": "dup"
396
+ }
397
+ ]
398
+ },
399
+ {
400
+ "kind": "word",
401
+ "span": {
402
+ "start": {
403
+ "offset": 293,
404
+ "line": 18,
405
+ "column": 1
406
+ },
407
+ "end": {
408
+ "offset": 346,
409
+ "line": 20,
410
+ "column": 9
411
+ }
412
+ },
413
+ "name": "effects",
414
+ "signature": {
415
+ "kind": "signature",
416
+ "span": {
417
+ "start": {
418
+ "offset": 302,
419
+ "line": 18,
420
+ "column": 10
421
+ },
422
+ "end": {
423
+ "offset": 336,
424
+ "line": 18,
425
+ "column": 44
426
+ }
427
+ },
428
+ "left": [
429
+ {
430
+ "kind": "sig_type_expr",
431
+ "span": {
432
+ "start": {
433
+ "offset": 304,
434
+ "line": 18,
435
+ "column": 12
436
+ },
437
+ "end": {
438
+ "offset": 310,
439
+ "line": 18,
440
+ "column": 18
441
+ }
442
+ },
443
+ "type": {
444
+ "kind": "type_name",
445
+ "span": {
446
+ "start": {
447
+ "offset": 304,
448
+ "line": 18,
449
+ "column": 12
450
+ },
451
+ "end": {
452
+ "offset": 310,
453
+ "line": 18,
454
+ "column": 18
455
+ }
456
+ },
457
+ "name": "Num"
458
+ }
459
+ }
460
+ ],
461
+ "right": [
462
+ {
463
+ "kind": "sig_type_expr",
464
+ "span": {
465
+ "start": {
466
+ "offset": 311,
467
+ "line": 18,
468
+ "column": 19
469
+ },
470
+ "end": {
471
+ "offset": 321,
472
+ "line": 18,
473
+ "column": 29
474
+ }
475
+ },
476
+ "type": {
477
+ "kind": "type_name",
478
+ "span": {
479
+ "start": {
480
+ "offset": 311,
481
+ "line": 18,
482
+ "column": 19
483
+ },
484
+ "end": {
485
+ "offset": 321,
486
+ "line": 18,
487
+ "column": 29
488
+ }
489
+ },
490
+ "name": "Str"
491
+ }
492
+ }
493
+ ],
494
+ "effectsAdd": [
495
+ {
496
+ "kind": "sig_effect_add",
497
+ "span": {
498
+ "start": {
499
+ "offset": 315,
500
+ "line": 18,
501
+ "column": 23
502
+ },
503
+ "end": {
504
+ "offset": 321,
505
+ "line": 18,
506
+ "column": 29
507
+ }
508
+ },
509
+ "name": "Async",
510
+ "side": "right"
511
+ },
512
+ {
513
+ "kind": "sig_effect_add",
514
+ "span": {
515
+ "start": {
516
+ "offset": 322,
517
+ "line": 18,
518
+ "column": 30
519
+ },
520
+ "end": {
521
+ "offset": 327,
522
+ "line": 18,
523
+ "column": 35
524
+ }
525
+ },
526
+ "name": "Fail",
527
+ "side": "right"
528
+ }
529
+ ],
530
+ "effectsRemove": [
531
+ {
532
+ "kind": "sig_effect_remove",
533
+ "span": {
534
+ "start": {
535
+ "offset": 328,
536
+ "line": 18,
537
+ "column": 36
538
+ },
539
+ "end": {
540
+ "offset": 334,
541
+ "line": 18,
542
+ "column": 42
543
+ }
544
+ },
545
+ "name": "Async",
546
+ "side": "right"
547
+ }
548
+ ]
549
+ },
550
+ "doc": [],
551
+ "body": []
552
+ },
553
+ {
554
+ "kind": "word",
555
+ "span": {
556
+ "start": {
557
+ "offset": 338,
558
+ "line": 20,
559
+ "column": 1
560
+ },
561
+ "end": {
562
+ "offset": 376,
563
+ "line": 22,
564
+ "column": 11
565
+ }
566
+ },
567
+ "name": "modType",
568
+ "signature": {
569
+ "kind": "signature",
570
+ "span": {
571
+ "start": {
572
+ "offset": 347,
573
+ "line": 20,
574
+ "column": 10
575
+ },
576
+ "end": {
577
+ "offset": 364,
578
+ "line": 20,
579
+ "column": 27
580
+ }
581
+ },
582
+ "left": [
583
+ {
584
+ "kind": "sig_type_expr",
585
+ "span": {
586
+ "start": {
587
+ "offset": 349,
588
+ "line": 20,
589
+ "column": 12
590
+ },
591
+ "end": {
592
+ "offset": 359,
593
+ "line": 20,
594
+ "column": 22
595
+ }
596
+ },
597
+ "type": {
598
+ "kind": "module_type_ref",
599
+ "span": {
600
+ "start": {
601
+ "offset": 349,
602
+ "line": 20,
603
+ "column": 12
604
+ },
605
+ "end": {
606
+ "offset": 359,
607
+ "line": 20,
608
+ "column": 22
609
+ }
610
+ },
611
+ "module": "Lib",
612
+ "type": "Point"
613
+ }
614
+ }
615
+ ],
616
+ "right": [],
617
+ "effectsAdd": [],
618
+ "effectsRemove": []
619
+ },
620
+ "doc": [],
621
+ "body": []
622
+ },
623
+ {
624
+ "kind": "word",
625
+ "span": {
626
+ "start": {
627
+ "offset": 366,
628
+ "line": 22,
629
+ "column": 1
630
+ },
631
+ "end": {
632
+ "offset": 407,
633
+ "line": 24,
634
+ "column": 9
635
+ }
636
+ },
637
+ "name": "maybeSlot",
638
+ "signature": {
639
+ "kind": "signature",
640
+ "span": {
641
+ "start": {
642
+ "offset": 377,
643
+ "line": 22,
644
+ "column": 12
645
+ },
646
+ "end": {
647
+ "offset": 397,
648
+ "line": 22,
649
+ "column": 32
650
+ }
651
+ },
652
+ "left": [
653
+ {
654
+ "kind": "sig_type_expr",
655
+ "span": {
656
+ "start": {
657
+ "offset": 379,
658
+ "line": 22,
659
+ "column": 14
660
+ },
661
+ "end": {
662
+ "offset": 392,
663
+ "line": 22,
664
+ "column": 27
665
+ }
666
+ },
667
+ "type": {
668
+ "kind": "paren_type",
669
+ "span": {
670
+ "start": {
671
+ "offset": 379,
672
+ "line": 22,
673
+ "column": 14
674
+ },
675
+ "end": {
676
+ "offset": 392,
677
+ "line": 22,
678
+ "column": 27
679
+ }
680
+ },
681
+ "inner": {
682
+ "kind": "type_app",
683
+ "span": {
684
+ "start": {
685
+ "offset": 381,
686
+ "line": 22,
687
+ "column": 16
688
+ },
689
+ "end": {
690
+ "offset": 392,
691
+ "line": 22,
692
+ "column": 27
693
+ }
694
+ },
695
+ "ctor": "Maybe",
696
+ "args": [
697
+ {
698
+ "kind": "type_name",
699
+ "span": {
700
+ "start": {
701
+ "offset": 387,
702
+ "line": 22,
703
+ "column": 22
704
+ },
705
+ "end": {
706
+ "offset": 392,
707
+ "line": 22,
708
+ "column": 27
709
+ }
710
+ },
711
+ "name": "Num"
712
+ }
713
+ ]
714
+ }
715
+ }
716
+ }
717
+ ],
718
+ "right": [],
719
+ "effectsAdd": [],
720
+ "effectsRemove": []
721
+ },
722
+ "doc": [],
723
+ "body": []
724
+ },
725
+ {
726
+ "kind": "word",
727
+ "span": {
728
+ "start": {
729
+ "offset": 399,
730
+ "line": 24,
731
+ "column": 1
732
+ },
733
+ "end": {
734
+ "offset": 432,
735
+ "line": 26,
736
+ "column": 8
737
+ }
738
+ },
739
+ "name": "dictsig",
740
+ "signature": {
741
+ "kind": "signature",
742
+ "span": {
743
+ "start": {
744
+ "offset": 408,
745
+ "line": 24,
746
+ "column": 10
747
+ },
748
+ "end": {
749
+ "offset": 423,
750
+ "line": 24,
751
+ "column": 25
752
+ }
753
+ },
754
+ "left": [
755
+ {
756
+ "kind": "sig_type_expr",
757
+ "span": {
758
+ "start": {
759
+ "offset": 410,
760
+ "line": 24,
761
+ "column": 12
762
+ },
763
+ "end": {
764
+ "offset": 418,
765
+ "line": 24,
766
+ "column": 20
767
+ }
768
+ },
769
+ "type": {
770
+ "kind": "type_app",
771
+ "span": {
772
+ "start": {
773
+ "offset": 410,
774
+ "line": 24,
775
+ "column": 12
776
+ },
777
+ "end": {
778
+ "offset": 418,
779
+ "line": 24,
780
+ "column": 20
781
+ }
782
+ },
783
+ "ctor": "Dict",
784
+ "args": [
785
+ {
786
+ "kind": "type_name",
787
+ "span": {
788
+ "start": {
789
+ "offset": 415,
790
+ "line": 24,
791
+ "column": 17
792
+ },
793
+ "end": {
794
+ "offset": 418,
795
+ "line": 24,
796
+ "column": 20
797
+ }
798
+ },
799
+ "name": "Str"
800
+ }
801
+ ]
802
+ }
803
+ }
804
+ ],
805
+ "right": [],
806
+ "effectsAdd": [],
807
+ "effectsRemove": []
808
+ },
809
+ "doc": [],
810
+ "body": []
811
+ },
812
+ {
813
+ "kind": "word",
814
+ "span": {
815
+ "start": {
816
+ "offset": 425,
817
+ "line": 26,
818
+ "column": 1
819
+ },
820
+ "end": {
821
+ "offset": 463,
822
+ "line": 28,
823
+ "column": 7
824
+ }
825
+ },
826
+ "name": "mapSig",
827
+ "signature": {
828
+ "kind": "signature",
829
+ "span": {
830
+ "start": {
831
+ "offset": 433,
832
+ "line": 26,
833
+ "column": 9
834
+ },
835
+ "end": {
836
+ "offset": 455,
837
+ "line": 26,
838
+ "column": 31
839
+ }
840
+ },
841
+ "left": [
842
+ {
843
+ "kind": "sig_type_expr",
844
+ "span": {
845
+ "start": {
846
+ "offset": 435,
847
+ "line": 26,
848
+ "column": 11
849
+ },
850
+ "end": {
851
+ "offset": 450,
852
+ "line": 26,
853
+ "column": 26
854
+ }
855
+ },
856
+ "type": {
857
+ "kind": "paren_type",
858
+ "span": {
859
+ "start": {
860
+ "offset": 435,
861
+ "line": 26,
862
+ "column": 11
863
+ },
864
+ "end": {
865
+ "offset": 450,
866
+ "line": 26,
867
+ "column": 26
868
+ }
869
+ },
870
+ "inner": {
871
+ "kind": "type_app",
872
+ "span": {
873
+ "start": {
874
+ "offset": 437,
875
+ "line": 26,
876
+ "column": 13
877
+ },
878
+ "end": {
879
+ "offset": 448,
880
+ "line": 26,
881
+ "column": 24
882
+ }
883
+ },
884
+ "ctor": "Map",
885
+ "args": [
886
+ {
887
+ "kind": "type_name",
888
+ "span": {
889
+ "start": {
890
+ "offset": 441,
891
+ "line": 26,
892
+ "column": 17
893
+ },
894
+ "end": {
895
+ "offset": 444,
896
+ "line": 26,
897
+ "column": 20
898
+ }
899
+ },
900
+ "name": "Str"
901
+ },
902
+ {
903
+ "kind": "type_name",
904
+ "span": {
905
+ "start": {
906
+ "offset": 445,
907
+ "line": 26,
908
+ "column": 21
909
+ },
910
+ "end": {
911
+ "offset": 448,
912
+ "line": 26,
913
+ "column": 24
914
+ }
915
+ },
916
+ "name": "Num"
917
+ }
918
+ ]
919
+ }
920
+ }
921
+ }
922
+ ],
923
+ "right": [],
924
+ "effectsAdd": [],
925
+ "effectsRemove": []
926
+ },
927
+ "doc": [],
928
+ "body": []
929
+ },
930
+ {
931
+ "kind": "word",
932
+ "span": {
933
+ "start": {
934
+ "offset": 457,
935
+ "line": 28,
936
+ "column": 1
937
+ },
938
+ "end": {
939
+ "offset": 508,
940
+ "line": 31,
941
+ "column": 10
942
+ }
943
+ },
944
+ "name": "named",
945
+ "signature": {
946
+ "kind": "signature",
947
+ "span": {
948
+ "start": {
949
+ "offset": 464,
950
+ "line": 28,
951
+ "column": 8
952
+ },
953
+ "end": {
954
+ "offset": 489,
955
+ "line": 28,
956
+ "column": 33
957
+ }
958
+ },
959
+ "left": [
960
+ {
961
+ "kind": "named_quotation_sig",
962
+ "span": {
963
+ "start": {
964
+ "offset": 466,
965
+ "line": 28,
966
+ "column": 10
967
+ },
968
+ "end": {
969
+ "offset": 484,
970
+ "line": 28,
971
+ "column": 28
972
+ }
973
+ },
974
+ "prefix": "q",
975
+ "quotation": {
976
+ "kind": "quotation_sig",
977
+ "span": {
978
+ "start": {
979
+ "offset": 468,
980
+ "line": 28,
981
+ "column": 12
982
+ },
983
+ "end": {
984
+ "offset": 484,
985
+ "line": 28,
986
+ "column": 28
987
+ }
988
+ },
989
+ "inner": {
990
+ "kind": "signature",
991
+ "span": {
992
+ "start": {
993
+ "offset": 468,
994
+ "line": 28,
995
+ "column": 12
996
+ },
997
+ "end": {
998
+ "offset": 484,
999
+ "line": 28,
1000
+ "column": 28
1001
+ }
1002
+ },
1003
+ "left": [
1004
+ {
1005
+ "kind": "stack_var",
1006
+ "span": {
1007
+ "start": {
1008
+ "offset": 470,
1009
+ "line": 28,
1010
+ "column": 14
1011
+ },
1012
+ "end": {
1013
+ "offset": 472,
1014
+ "line": 28,
1015
+ "column": 16
1016
+ }
1017
+ },
1018
+ "name": "s"
1019
+ },
1020
+ {
1021
+ "kind": "sig_type_expr",
1022
+ "span": {
1023
+ "start": {
1024
+ "offset": 473,
1025
+ "line": 28,
1026
+ "column": 17
1027
+ },
1028
+ "end": {
1029
+ "offset": 477,
1030
+ "line": 28,
1031
+ "column": 21
1032
+ }
1033
+ },
1034
+ "type": {
1035
+ "kind": "type_var",
1036
+ "span": {
1037
+ "start": {
1038
+ "offset": 473,
1039
+ "line": 28,
1040
+ "column": 17
1041
+ },
1042
+ "end": {
1043
+ "offset": 477,
1044
+ "line": 28,
1045
+ "column": 21
1046
+ }
1047
+ },
1048
+ "name": "a"
1049
+ }
1050
+ }
1051
+ ],
1052
+ "right": [
1053
+ {
1054
+ "kind": "stack_var",
1055
+ "span": {
1056
+ "start": {
1057
+ "offset": 478,
1058
+ "line": 28,
1059
+ "column": 22
1060
+ },
1061
+ "end": {
1062
+ "offset": 480,
1063
+ "line": 28,
1064
+ "column": 24
1065
+ }
1066
+ },
1067
+ "name": "s"
1068
+ },
1069
+ {
1070
+ "kind": "sig_type_expr",
1071
+ "span": {
1072
+ "start": {
1073
+ "offset": 481,
1074
+ "line": 28,
1075
+ "column": 25
1076
+ },
1077
+ "end": {
1078
+ "offset": 484,
1079
+ "line": 28,
1080
+ "column": 28
1081
+ }
1082
+ },
1083
+ "type": {
1084
+ "kind": "type_var",
1085
+ "span": {
1086
+ "start": {
1087
+ "offset": 481,
1088
+ "line": 28,
1089
+ "column": 25
1090
+ },
1091
+ "end": {
1092
+ "offset": 484,
1093
+ "line": 28,
1094
+ "column": 28
1095
+ }
1096
+ },
1097
+ "name": "b"
1098
+ }
1099
+ }
1100
+ ],
1101
+ "effectsAdd": [],
1102
+ "effectsRemove": []
1103
+ }
1104
+ }
1105
+ }
1106
+ ],
1107
+ "right": [],
1108
+ "effectsAdd": [],
1109
+ "effectsRemove": []
1110
+ },
1111
+ "doc": [],
1112
+ "body": [
1113
+ {
1114
+ "kind": "word_ref",
1115
+ "span": {
1116
+ "start": {
1117
+ "offset": 492,
1118
+ "line": 29,
1119
+ "column": 3
1120
+ },
1121
+ "end": {
1122
+ "offset": 497,
1123
+ "line": 29,
1124
+ "column": 8
1125
+ }
1126
+ },
1127
+ "name": "drop"
1128
+ }
1129
+ ]
1130
+ },
1131
+ {
1132
+ "kind": "word",
1133
+ "span": {
1134
+ "start": {
1135
+ "offset": 499,
1136
+ "line": 31,
1137
+ "column": 1
1138
+ },
1139
+ "end": {
1140
+ "offset": 606,
1141
+ "line": 36,
1142
+ "column": 1
1143
+ }
1144
+ },
1145
+ "name": "demoBody",
1146
+ "signature": {
1147
+ "kind": "signature",
1148
+ "span": {
1149
+ "start": {
1150
+ "offset": 509,
1151
+ "line": 31,
1152
+ "column": 11
1153
+ },
1154
+ "end": {
1155
+ "offset": 515,
1156
+ "line": 31,
1157
+ "column": 17
1158
+ }
1159
+ },
1160
+ "left": [],
1161
+ "right": [],
1162
+ "effectsAdd": [],
1163
+ "effectsRemove": []
1164
+ },
1165
+ "doc": [],
1166
+ "body": [
1167
+ {
1168
+ "kind": "builtin",
1169
+ "span": {
1170
+ "start": {
1171
+ "offset": 518,
1172
+ "line": 32,
1173
+ "column": 3
1174
+ },
1175
+ "end": {
1176
+ "offset": 521,
1177
+ "line": 32,
1178
+ "column": 6
1179
+ }
1180
+ },
1181
+ "name": "dup"
1182
+ },
1183
+ {
1184
+ "kind": "builtin",
1185
+ "span": {
1186
+ "start": {
1187
+ "offset": 522,
1188
+ "line": 32,
1189
+ "column": 7
1190
+ },
1191
+ "end": {
1192
+ "offset": 526,
1193
+ "line": 32,
1194
+ "column": 11
1195
+ }
1196
+ },
1197
+ "name": "swap"
1198
+ },
1199
+ {
1200
+ "kind": "module_word_ref",
1201
+ "span": {
1202
+ "start": {
1203
+ "offset": 527,
1204
+ "line": 32,
1205
+ "column": 12
1206
+ },
1207
+ "end": {
1208
+ "offset": 537,
1209
+ "line": 32,
1210
+ "column": 22
1211
+ }
1212
+ },
1213
+ "module": "Net",
1214
+ "word": "fetch"
1215
+ },
1216
+ {
1217
+ "kind": "quotation",
1218
+ "span": {
1219
+ "start": {
1220
+ "offset": 540,
1221
+ "line": 33,
1222
+ "column": 3
1223
+ },
1224
+ "end": {
1225
+ "offset": 547,
1226
+ "line": 33,
1227
+ "column": 10
1228
+ }
1229
+ },
1230
+ "body": [
1231
+ {
1232
+ "kind": "builtin",
1233
+ "span": {
1234
+ "start": {
1235
+ "offset": 542,
1236
+ "line": 33,
1237
+ "column": 5
1238
+ },
1239
+ "end": {
1240
+ "offset": 545,
1241
+ "line": 33,
1242
+ "column": 8
1243
+ }
1244
+ },
1245
+ "name": "nip"
1246
+ }
1247
+ ]
1248
+ },
1249
+ {
1250
+ "kind": "list_literal",
1251
+ "span": {
1252
+ "start": {
1253
+ "offset": 548,
1254
+ "line": 33,
1255
+ "column": 11
1256
+ },
1257
+ "end": {
1258
+ "offset": 561,
1259
+ "line": 33,
1260
+ "column": 24
1261
+ }
1262
+ },
1263
+ "elements": [
1264
+ {
1265
+ "kind": "literal",
1266
+ "span": {
1267
+ "start": {
1268
+ "offset": 550,
1269
+ "line": 33,
1270
+ "column": 13
1271
+ },
1272
+ "end": {
1273
+ "offset": 551,
1274
+ "line": 33,
1275
+ "column": 14
1276
+ }
1277
+ },
1278
+ "litKind": "number",
1279
+ "raw": "0"
1280
+ },
1281
+ {
1282
+ "kind": "literal",
1283
+ "span": {
1284
+ "start": {
1285
+ "offset": 552,
1286
+ "line": 33,
1287
+ "column": 15
1288
+ },
1289
+ "end": {
1290
+ "offset": 556,
1291
+ "line": 33,
1292
+ "column": 19
1293
+ }
1294
+ },
1295
+ "litKind": "bool",
1296
+ "raw": "true"
1297
+ },
1298
+ {
1299
+ "kind": "literal",
1300
+ "span": {
1301
+ "start": {
1302
+ "offset": 557,
1303
+ "line": 33,
1304
+ "column": 20
1305
+ },
1306
+ "end": {
1307
+ "offset": 559,
1308
+ "line": 33,
1309
+ "column": 22
1310
+ }
1311
+ },
1312
+ "litKind": "bigint",
1313
+ "raw": "2n"
1314
+ }
1315
+ ]
1316
+ },
1317
+ {
1318
+ "kind": "slot_write",
1319
+ "span": {
1320
+ "start": {
1321
+ "offset": 565,
1322
+ "line": 34,
1323
+ "column": 4
1324
+ },
1325
+ "end": {
1326
+ "offset": 568,
1327
+ "line": 34,
1328
+ "column": 7
1329
+ }
1330
+ },
1331
+ "name": "tmp"
1332
+ },
1333
+ {
1334
+ "kind": "slot_read",
1335
+ "span": {
1336
+ "start": {
1337
+ "offset": 570,
1338
+ "line": 34,
1339
+ "column": 9
1340
+ },
1341
+ "end": {
1342
+ "offset": 573,
1343
+ "line": 34,
1344
+ "column": 12
1345
+ }
1346
+ },
1347
+ "name": "tmp"
1348
+ },
1349
+ {
1350
+ "kind": "literal",
1351
+ "span": {
1352
+ "start": {
1353
+ "offset": 574,
1354
+ "line": 34,
1355
+ "column": 13
1356
+ },
1357
+ "end": {
1358
+ "offset": 578,
1359
+ "line": 34,
1360
+ "column": 17
1361
+ }
1362
+ },
1363
+ "litKind": "string",
1364
+ "raw": "\"ok\""
1365
+ },
1366
+ {
1367
+ "kind": "literal",
1368
+ "span": {
1369
+ "start": {
1370
+ "offset": 579,
1371
+ "line": 34,
1372
+ "column": 18
1373
+ },
1374
+ "end": {
1375
+ "offset": 580,
1376
+ "line": 34,
1377
+ "column": 19
1378
+ }
1379
+ },
1380
+ "litKind": "number",
1381
+ "raw": "7"
1382
+ },
1383
+ {
1384
+ "kind": "literal",
1385
+ "span": {
1386
+ "start": {
1387
+ "offset": 581,
1388
+ "line": 34,
1389
+ "column": 20
1390
+ },
1391
+ "end": {
1392
+ "offset": 584,
1393
+ "line": 34,
1394
+ "column": 23
1395
+ }
1396
+ },
1397
+ "litKind": "regexp",
1398
+ "raw": "/x/"
1399
+ },
1400
+ {
1401
+ "kind": "literal",
1402
+ "span": {
1403
+ "start": {
1404
+ "offset": 587,
1405
+ "line": 35,
1406
+ "column": 3
1407
+ },
1408
+ "end": {
1409
+ "offset": 590,
1410
+ "line": 35,
1411
+ "column": 6
1412
+ }
1413
+ },
1414
+ "litKind": "bigint",
1415
+ "raw": "42n"
1416
+ },
1417
+ {
1418
+ "kind": "literal",
1419
+ "span": {
1420
+ "start": {
1421
+ "offset": 591,
1422
+ "line": 35,
1423
+ "column": 7
1424
+ },
1425
+ "end": {
1426
+ "offset": 594,
1427
+ "line": 35,
1428
+ "column": 10
1429
+ }
1430
+ },
1431
+ "litKind": "nil",
1432
+ "raw": "nil"
1433
+ },
1434
+ {
1435
+ "kind": "literal",
1436
+ "span": {
1437
+ "start": {
1438
+ "offset": 595,
1439
+ "line": 35,
1440
+ "column": 11
1441
+ },
1442
+ "end": {
1443
+ "offset": 599,
1444
+ "line": 35,
1445
+ "column": 15
1446
+ }
1447
+ },
1448
+ "litKind": "bool",
1449
+ "raw": "true"
1450
+ },
1451
+ {
1452
+ "kind": "literal",
1453
+ "span": {
1454
+ "start": {
1455
+ "offset": 600,
1456
+ "line": 35,
1457
+ "column": 16
1458
+ },
1459
+ "end": {
1460
+ "offset": 605,
1461
+ "line": 35,
1462
+ "column": 21
1463
+ }
1464
+ },
1465
+ "litKind": "bool",
1466
+ "raw": "false"
1467
+ }
1468
+ ]
1469
+ }
1470
+ ]
1471
+ }