@rcrsr/rill 0.14.0 → 0.16.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 (305) hide show
  1. package/dist/ast-nodes.d.ts +2 -11
  2. package/dist/ast-nodes.js +0 -1
  3. package/dist/ast-unions.d.ts +0 -1
  4. package/dist/ast-unions.js +0 -1
  5. package/dist/constants.d.ts +0 -1
  6. package/dist/constants.js +0 -1
  7. package/dist/error-classes.d.ts +0 -1
  8. package/dist/error-classes.js +0 -1
  9. package/dist/error-formatter.d.ts +0 -1
  10. package/dist/error-formatter.js +0 -1
  11. package/dist/error-registry.d.ts +0 -1
  12. package/dist/error-registry.js +50 -1
  13. package/dist/ext/crypto/index.d.ts +0 -1
  14. package/dist/ext/crypto/index.js +5 -6
  15. package/dist/ext/exec/index.d.ts +0 -1
  16. package/dist/ext/exec/index.js +3 -4
  17. package/dist/ext/exec/runner.d.ts +0 -1
  18. package/dist/ext/exec/runner.js +0 -1
  19. package/dist/ext/fetch/index.d.ts +0 -1
  20. package/dist/ext/fetch/index.js +8 -39
  21. package/dist/ext/fetch/request.d.ts +0 -1
  22. package/dist/ext/fetch/request.js +0 -1
  23. package/dist/ext/fs/index.d.ts +0 -1
  24. package/dist/ext/fs/index.js +26 -27
  25. package/dist/ext/fs/sandbox.d.ts +0 -1
  26. package/dist/ext/fs/sandbox.js +0 -1
  27. package/dist/ext/kv/index.d.ts +0 -1
  28. package/dist/ext/kv/index.js +19 -20
  29. package/dist/ext/kv/store.d.ts +0 -1
  30. package/dist/ext/kv/store.js +0 -1
  31. package/dist/generated/introspection-data.d.ts +0 -1
  32. package/dist/generated/introspection-data.js +0 -1
  33. package/dist/generated/version-data.d.ts +1 -2
  34. package/dist/generated/version-data.js +2 -3
  35. package/dist/highlight-map.d.ts +0 -1
  36. package/dist/highlight-map.js +0 -1
  37. package/dist/index.d.ts +1 -2
  38. package/dist/index.js +1 -2
  39. package/dist/lexer/errors.d.ts +0 -1
  40. package/dist/lexer/errors.js +0 -1
  41. package/dist/lexer/helpers.d.ts +0 -1
  42. package/dist/lexer/helpers.js +0 -1
  43. package/dist/lexer/index.d.ts +0 -1
  44. package/dist/lexer/index.js +0 -1
  45. package/dist/lexer/operators.d.ts +0 -1
  46. package/dist/lexer/operators.js +0 -1
  47. package/dist/lexer/readers.d.ts +0 -1
  48. package/dist/lexer/readers.js +0 -1
  49. package/dist/lexer/state.d.ts +0 -1
  50. package/dist/lexer/state.js +0 -1
  51. package/dist/lexer/tokenizer.d.ts +0 -1
  52. package/dist/lexer/tokenizer.js +0 -1
  53. package/dist/parser/helpers.d.ts +0 -1
  54. package/dist/parser/helpers.js +0 -1
  55. package/dist/parser/index.d.ts +0 -1
  56. package/dist/parser/index.js +0 -1
  57. package/dist/parser/parser-collect.d.ts +0 -1
  58. package/dist/parser/parser-collect.js +0 -1
  59. package/dist/parser/parser-control.d.ts +0 -1
  60. package/dist/parser/parser-control.js +0 -1
  61. package/dist/parser/parser-expr.d.ts +0 -1
  62. package/dist/parser/parser-expr.js +0 -1
  63. package/dist/parser/parser-extract.d.ts +0 -1
  64. package/dist/parser/parser-extract.js +0 -1
  65. package/dist/parser/parser-functions.d.ts +0 -1
  66. package/dist/parser/parser-functions.js +0 -1
  67. package/dist/parser/parser-literals.d.ts +0 -1
  68. package/dist/parser/parser-literals.js +4 -2
  69. package/dist/parser/parser-script.d.ts +0 -1
  70. package/dist/parser/parser-script.js +0 -1
  71. package/dist/parser/parser-shape.d.ts +2 -3
  72. package/dist/parser/parser-shape.js +8 -40
  73. package/dist/parser/parser-types.d.ts +28 -2
  74. package/dist/parser/parser-types.js +64 -13
  75. package/dist/parser/parser-use.d.ts +0 -1
  76. package/dist/parser/parser-use.js +0 -1
  77. package/dist/parser/parser-variables.d.ts +0 -1
  78. package/dist/parser/parser-variables.js +0 -1
  79. package/dist/parser/parser.d.ts +0 -1
  80. package/dist/parser/parser.js +0 -1
  81. package/dist/parser/state.d.ts +0 -1
  82. package/dist/parser/state.js +0 -1
  83. package/dist/runtime/core/callable.d.ts +40 -13
  84. package/dist/runtime/core/callable.js +137 -31
  85. package/dist/runtime/core/context.d.ts +0 -1
  86. package/dist/runtime/core/context.js +1 -2
  87. package/dist/runtime/core/equals.d.ts +0 -1
  88. package/dist/runtime/core/equals.js +35 -3
  89. package/dist/runtime/core/eval/base.d.ts +0 -1
  90. package/dist/runtime/core/eval/base.js +0 -1
  91. package/dist/runtime/core/eval/evaluator.d.ts +0 -1
  92. package/dist/runtime/core/eval/evaluator.js +0 -1
  93. package/dist/runtime/core/eval/index.d.ts +0 -1
  94. package/dist/runtime/core/eval/index.js +0 -1
  95. package/dist/runtime/core/eval/mixins/annotations.d.ts +0 -1
  96. package/dist/runtime/core/eval/mixins/annotations.js +0 -1
  97. package/dist/runtime/core/eval/mixins/closures.d.ts +0 -1
  98. package/dist/runtime/core/eval/mixins/closures.js +82 -69
  99. package/dist/runtime/core/eval/mixins/collections.d.ts +0 -1
  100. package/dist/runtime/core/eval/mixins/collections.js +9 -4
  101. package/dist/runtime/core/eval/mixins/control-flow.d.ts +0 -1
  102. package/dist/runtime/core/eval/mixins/control-flow.js +0 -1
  103. package/dist/runtime/core/eval/mixins/conversion.d.ts +0 -1
  104. package/dist/runtime/core/eval/mixins/conversion.js +263 -16
  105. package/dist/runtime/core/eval/mixins/core.d.ts +0 -1
  106. package/dist/runtime/core/eval/mixins/core.js +0 -1
  107. package/dist/runtime/core/eval/mixins/expressions.d.ts +0 -1
  108. package/dist/runtime/core/eval/mixins/expressions.js +0 -1
  109. package/dist/runtime/core/eval/mixins/extraction.d.ts +0 -1
  110. package/dist/runtime/core/eval/mixins/extraction.js +8 -9
  111. package/dist/runtime/core/eval/mixins/list-dispatch.d.ts +0 -1
  112. package/dist/runtime/core/eval/mixins/list-dispatch.js +0 -1
  113. package/dist/runtime/core/eval/mixins/literals.d.ts +0 -1
  114. package/dist/runtime/core/eval/mixins/literals.js +3 -7
  115. package/dist/runtime/core/eval/mixins/types.d.ts +2 -1
  116. package/dist/runtime/core/eval/mixins/types.js +222 -200
  117. package/dist/runtime/core/eval/mixins/use.d.ts +0 -1
  118. package/dist/runtime/core/eval/mixins/use.js +0 -1
  119. package/dist/runtime/core/eval/mixins/variables.d.ts +0 -1
  120. package/dist/runtime/core/eval/mixins/variables.js +6 -7
  121. package/dist/runtime/core/eval/types.d.ts +0 -1
  122. package/dist/runtime/core/eval/types.js +0 -1
  123. package/dist/runtime/core/execute.d.ts +0 -1
  124. package/dist/runtime/core/execute.js +0 -1
  125. package/dist/runtime/core/field-descriptor.d.ts +2 -3
  126. package/dist/runtime/core/field-descriptor.js +0 -1
  127. package/dist/runtime/core/introspection.d.ts +0 -1
  128. package/dist/runtime/core/introspection.js +0 -1
  129. package/dist/runtime/core/resolvers.d.ts +0 -1
  130. package/dist/runtime/core/resolvers.js +0 -1
  131. package/dist/runtime/core/signals.d.ts +0 -1
  132. package/dist/runtime/core/signals.js +0 -1
  133. package/dist/runtime/core/types.d.ts +0 -1
  134. package/dist/runtime/core/types.js +0 -1
  135. package/dist/runtime/core/values.d.ts +59 -8
  136. package/dist/runtime/core/values.js +338 -36
  137. package/dist/runtime/ext/builtins.d.ts +0 -1
  138. package/dist/runtime/ext/builtins.js +43 -17
  139. package/dist/runtime/ext/extensions.d.ts +0 -1
  140. package/dist/runtime/ext/extensions.js +0 -1
  141. package/dist/runtime/index.d.ts +2 -3
  142. package/dist/runtime/index.js +1 -2
  143. package/dist/signature-parser.d.ts +0 -1
  144. package/dist/signature-parser.js +8 -4
  145. package/dist/source-location.d.ts +0 -1
  146. package/dist/source-location.js +0 -1
  147. package/dist/token-types.d.ts +0 -1
  148. package/dist/token-types.js +0 -1
  149. package/dist/types.d.ts +0 -1
  150. package/dist/types.js +0 -1
  151. package/dist/value-types.d.ts +15 -12
  152. package/dist/value-types.js +0 -1
  153. package/package.json +2 -1
  154. package/dist/ast-nodes.d.ts.map +0 -1
  155. package/dist/ast-nodes.js.map +0 -1
  156. package/dist/ast-unions.d.ts.map +0 -1
  157. package/dist/ast-unions.js.map +0 -1
  158. package/dist/constants.d.ts.map +0 -1
  159. package/dist/constants.js.map +0 -1
  160. package/dist/error-classes.d.ts.map +0 -1
  161. package/dist/error-classes.js.map +0 -1
  162. package/dist/error-formatter.d.ts.map +0 -1
  163. package/dist/error-formatter.js.map +0 -1
  164. package/dist/error-registry.d.ts.map +0 -1
  165. package/dist/error-registry.js.map +0 -1
  166. package/dist/ext/crypto/index.d.ts.map +0 -1
  167. package/dist/ext/crypto/index.js.map +0 -1
  168. package/dist/ext/exec/index.d.ts.map +0 -1
  169. package/dist/ext/exec/index.js.map +0 -1
  170. package/dist/ext/exec/runner.d.ts.map +0 -1
  171. package/dist/ext/exec/runner.js.map +0 -1
  172. package/dist/ext/fetch/index.d.ts.map +0 -1
  173. package/dist/ext/fetch/index.js.map +0 -1
  174. package/dist/ext/fetch/request.d.ts.map +0 -1
  175. package/dist/ext/fetch/request.js.map +0 -1
  176. package/dist/ext/fs/index.d.ts.map +0 -1
  177. package/dist/ext/fs/index.js.map +0 -1
  178. package/dist/ext/fs/sandbox.d.ts.map +0 -1
  179. package/dist/ext/fs/sandbox.js.map +0 -1
  180. package/dist/ext/kv/index.d.ts.map +0 -1
  181. package/dist/ext/kv/index.js.map +0 -1
  182. package/dist/ext/kv/store.d.ts.map +0 -1
  183. package/dist/ext/kv/store.js.map +0 -1
  184. package/dist/generated/introspection-data.d.ts.map +0 -1
  185. package/dist/generated/introspection-data.js.map +0 -1
  186. package/dist/generated/version-data.d.ts.map +0 -1
  187. package/dist/generated/version-data.js.map +0 -1
  188. package/dist/highlight-map.d.ts.map +0 -1
  189. package/dist/highlight-map.js.map +0 -1
  190. package/dist/index.d.ts.map +0 -1
  191. package/dist/index.js.map +0 -1
  192. package/dist/lexer/errors.d.ts.map +0 -1
  193. package/dist/lexer/errors.js.map +0 -1
  194. package/dist/lexer/helpers.d.ts.map +0 -1
  195. package/dist/lexer/helpers.js.map +0 -1
  196. package/dist/lexer/index.d.ts.map +0 -1
  197. package/dist/lexer/index.js.map +0 -1
  198. package/dist/lexer/operators.d.ts.map +0 -1
  199. package/dist/lexer/operators.js.map +0 -1
  200. package/dist/lexer/readers.d.ts.map +0 -1
  201. package/dist/lexer/readers.js.map +0 -1
  202. package/dist/lexer/state.d.ts.map +0 -1
  203. package/dist/lexer/state.js.map +0 -1
  204. package/dist/lexer/tokenizer.d.ts.map +0 -1
  205. package/dist/lexer/tokenizer.js.map +0 -1
  206. package/dist/parser/helpers.d.ts.map +0 -1
  207. package/dist/parser/helpers.js.map +0 -1
  208. package/dist/parser/index.d.ts.map +0 -1
  209. package/dist/parser/index.js.map +0 -1
  210. package/dist/parser/parser-collect.d.ts.map +0 -1
  211. package/dist/parser/parser-collect.js.map +0 -1
  212. package/dist/parser/parser-control.d.ts.map +0 -1
  213. package/dist/parser/parser-control.js.map +0 -1
  214. package/dist/parser/parser-expr.d.ts.map +0 -1
  215. package/dist/parser/parser-expr.js.map +0 -1
  216. package/dist/parser/parser-extract.d.ts.map +0 -1
  217. package/dist/parser/parser-extract.js.map +0 -1
  218. package/dist/parser/parser-functions.d.ts.map +0 -1
  219. package/dist/parser/parser-functions.js.map +0 -1
  220. package/dist/parser/parser-literals.d.ts.map +0 -1
  221. package/dist/parser/parser-literals.js.map +0 -1
  222. package/dist/parser/parser-script.d.ts.map +0 -1
  223. package/dist/parser/parser-script.js.map +0 -1
  224. package/dist/parser/parser-shape.d.ts.map +0 -1
  225. package/dist/parser/parser-shape.js.map +0 -1
  226. package/dist/parser/parser-types.d.ts.map +0 -1
  227. package/dist/parser/parser-types.js.map +0 -1
  228. package/dist/parser/parser-use.d.ts.map +0 -1
  229. package/dist/parser/parser-use.js.map +0 -1
  230. package/dist/parser/parser-variables.d.ts.map +0 -1
  231. package/dist/parser/parser-variables.js.map +0 -1
  232. package/dist/parser/parser.d.ts.map +0 -1
  233. package/dist/parser/parser.js.map +0 -1
  234. package/dist/parser/state.d.ts.map +0 -1
  235. package/dist/parser/state.js.map +0 -1
  236. package/dist/runtime/core/callable.d.ts.map +0 -1
  237. package/dist/runtime/core/callable.js.map +0 -1
  238. package/dist/runtime/core/context.d.ts.map +0 -1
  239. package/dist/runtime/core/context.js.map +0 -1
  240. package/dist/runtime/core/equals.d.ts.map +0 -1
  241. package/dist/runtime/core/equals.js.map +0 -1
  242. package/dist/runtime/core/eval/base.d.ts.map +0 -1
  243. package/dist/runtime/core/eval/base.js.map +0 -1
  244. package/dist/runtime/core/eval/evaluator.d.ts.map +0 -1
  245. package/dist/runtime/core/eval/evaluator.js.map +0 -1
  246. package/dist/runtime/core/eval/index.d.ts.map +0 -1
  247. package/dist/runtime/core/eval/index.js.map +0 -1
  248. package/dist/runtime/core/eval/mixins/annotations.d.ts.map +0 -1
  249. package/dist/runtime/core/eval/mixins/annotations.js.map +0 -1
  250. package/dist/runtime/core/eval/mixins/closures.d.ts.map +0 -1
  251. package/dist/runtime/core/eval/mixins/closures.js.map +0 -1
  252. package/dist/runtime/core/eval/mixins/collections.d.ts.map +0 -1
  253. package/dist/runtime/core/eval/mixins/collections.js.map +0 -1
  254. package/dist/runtime/core/eval/mixins/control-flow.d.ts.map +0 -1
  255. package/dist/runtime/core/eval/mixins/control-flow.js.map +0 -1
  256. package/dist/runtime/core/eval/mixins/conversion.d.ts.map +0 -1
  257. package/dist/runtime/core/eval/mixins/conversion.js.map +0 -1
  258. package/dist/runtime/core/eval/mixins/core.d.ts.map +0 -1
  259. package/dist/runtime/core/eval/mixins/core.js.map +0 -1
  260. package/dist/runtime/core/eval/mixins/expressions.d.ts.map +0 -1
  261. package/dist/runtime/core/eval/mixins/expressions.js.map +0 -1
  262. package/dist/runtime/core/eval/mixins/extraction.d.ts.map +0 -1
  263. package/dist/runtime/core/eval/mixins/extraction.js.map +0 -1
  264. package/dist/runtime/core/eval/mixins/list-dispatch.d.ts.map +0 -1
  265. package/dist/runtime/core/eval/mixins/list-dispatch.js.map +0 -1
  266. package/dist/runtime/core/eval/mixins/literals.d.ts.map +0 -1
  267. package/dist/runtime/core/eval/mixins/literals.js.map +0 -1
  268. package/dist/runtime/core/eval/mixins/types.d.ts.map +0 -1
  269. package/dist/runtime/core/eval/mixins/types.js.map +0 -1
  270. package/dist/runtime/core/eval/mixins/use.d.ts.map +0 -1
  271. package/dist/runtime/core/eval/mixins/use.js.map +0 -1
  272. package/dist/runtime/core/eval/mixins/variables.d.ts.map +0 -1
  273. package/dist/runtime/core/eval/mixins/variables.js.map +0 -1
  274. package/dist/runtime/core/eval/types.d.ts.map +0 -1
  275. package/dist/runtime/core/eval/types.js.map +0 -1
  276. package/dist/runtime/core/execute.d.ts.map +0 -1
  277. package/dist/runtime/core/execute.js.map +0 -1
  278. package/dist/runtime/core/field-descriptor.d.ts.map +0 -1
  279. package/dist/runtime/core/field-descriptor.js.map +0 -1
  280. package/dist/runtime/core/introspection.d.ts.map +0 -1
  281. package/dist/runtime/core/introspection.js.map +0 -1
  282. package/dist/runtime/core/resolvers.d.ts.map +0 -1
  283. package/dist/runtime/core/resolvers.js.map +0 -1
  284. package/dist/runtime/core/signals.d.ts.map +0 -1
  285. package/dist/runtime/core/signals.js.map +0 -1
  286. package/dist/runtime/core/types.d.ts.map +0 -1
  287. package/dist/runtime/core/types.js.map +0 -1
  288. package/dist/runtime/core/values.d.ts.map +0 -1
  289. package/dist/runtime/core/values.js.map +0 -1
  290. package/dist/runtime/ext/builtins.d.ts.map +0 -1
  291. package/dist/runtime/ext/builtins.js.map +0 -1
  292. package/dist/runtime/ext/extensions.d.ts.map +0 -1
  293. package/dist/runtime/ext/extensions.js.map +0 -1
  294. package/dist/runtime/index.d.ts.map +0 -1
  295. package/dist/runtime/index.js.map +0 -1
  296. package/dist/signature-parser.d.ts.map +0 -1
  297. package/dist/signature-parser.js.map +0 -1
  298. package/dist/source-location.d.ts.map +0 -1
  299. package/dist/source-location.js.map +0 -1
  300. package/dist/token-types.d.ts.map +0 -1
  301. package/dist/token-types.js.map +0 -1
  302. package/dist/types.d.ts.map +0 -1
  303. package/dist/types.js.map +0 -1
  304. package/dist/value-types.d.ts.map +0 -1
  305. package/dist/value-types.js.map +0 -1
@@ -12,6 +12,8 @@
12
12
  * - evaluateTypeCheckPrimary(node) -> Promise<boolean>
13
13
  * - evaluateTypeConstructor(node) -> Promise<RillTypeValue> [IR-7]
14
14
  * - evaluateClosureSigLiteral(node) -> Promise<RillTypeValue> [IR-8]
15
+ * - resolveTypeRef(typeRef, getVariable) -> Promise<RillTypeValue> [IR-2]
16
+ * - buildCollectionType(name, args, resolveArg, evaluateDefault, location?) -> Promise<RillTypeValue> [IR-4]
15
17
  *
16
18
  * Error Handling:
17
19
  * - Type assertion failures throw RuntimeError(RUNTIME_TYPE_ERROR) [EC-24]
@@ -23,6 +25,19 @@
23
25
  import { RuntimeError } from '../../../../types.js';
24
26
  import { inferType, checkType, isTypeValue, structuralTypeMatches, inferStructuralType, formatStructuralType, } from '../../values.js';
25
27
  import { getVariable } from '../../context.js';
28
+ /**
29
+ * Leaf types that reject all type arguments.
30
+ * Extracted as module-level constant to avoid per-call allocation.
31
+ */
32
+ const LEAF_TYPES = new Set([
33
+ 'string',
34
+ 'number',
35
+ 'bool',
36
+ 'vector',
37
+ 'type',
38
+ 'any',
39
+ 'closure',
40
+ ]);
26
41
  /**
27
42
  * TypesMixin implementation.
28
43
  *
@@ -34,6 +49,7 @@ import { getVariable } from '../../context.js';
34
49
  * - EvaluatorBase: ctx, checkAborted(), getNodeLocation()
35
50
  * - evaluatePostfixExpr() (from future CoreMixin composition)
36
51
  * - evaluateExpression() (from CoreMixin, for type constructor arg evaluation)
52
+ * - evaluatePrimary() (from CoreMixin, for default value evaluation)
37
53
  *
38
54
  * Methods added:
39
55
  * - assertType(value, expected, location?) -> RillValue
@@ -43,133 +59,227 @@ import { getVariable } from '../../context.js';
43
59
  * - evaluateTypeCheckPrimary(node) -> Promise<boolean>
44
60
  * - evaluateTypeConstructor(node) -> Promise<RillTypeValue>
45
61
  * - evaluateClosureSigLiteral(node) -> Promise<RillTypeValue>
62
+ * - resolveTypeRef(typeRef, getVariable) -> Promise<RillTypeValue>
63
+ * - buildCollectionType(name, args, resolveArg, evaluateDefault, location?) -> Promise<RillTypeValue>
46
64
  */
47
65
  function createTypesMixin(Base) {
48
66
  return class TypesEvaluator extends Base {
49
67
  /**
50
- * Resolve a TypeRef to a RillTypeValue [IR-2].
68
+ * Shared helper that partitions args, enforces validation, evaluates
69
+ * defaults, and constructs a RillTypeValue [IR-4].
51
70
  *
52
- * Static refs with no args return a frozen RillTypeValue directly.
53
- * Static refs with args build a parameterized RillType.
54
- * Dynamic refs call getVariable, then dispatch on the result:
55
- * - RillTypeValue → return as-is
56
- * - Otherwise → throw RILL-R004
71
+ * Called by both resolveTypeRef and evaluateTypeConstructor with
72
+ * different resolution/evaluation strategies via callbacks.
57
73
  *
58
- * EC-1: Variable not found → undefined from getVariable → RILL-R005.
59
- * EC-2: Non-type variable value RILL-R004.
60
- * EC-3: Leaf type with args RILL-R004.
61
- * EC-4: list with != 1 positional arg → RILL-R004.
62
- * EC-5: dict/ordered with positional arg RILL-R004.
63
- * EC-6: tuple with named arg RILL-R004.
64
- * EC-7: arg value is not a type value RILL-R004.
74
+ * Error contracts:
75
+ * - EC-B1: Leaf type with args -> RILL-R004
76
+ * - EC-B2: list != 1 arg -> RILL-R004
77
+ * - EC-B3: Positional+named mix -> RILL-R004
78
+ * - EC-B4: tuple with named arg -> RILL-R004
79
+ * - EC-B5: Non-type arg value (delegated to resolveArg callback)
80
+ * - EC-B6: Default type mismatch -> RILL-R004
81
+ * - EC-B7: Tuple non-trailing default -> RILL-R004
65
82
  */
66
- resolveTypeRef(typeRef, getVariable) {
67
- if (typeRef.kind === 'static') {
68
- const { typeName, args } = typeRef;
69
- // No args: existing bare-type behavior
70
- if (!args || args.length === 0) {
71
- return Object.freeze({
72
- __rill_type: true,
73
- typeName,
74
- structure: { type: typeName },
75
- });
83
+ async buildCollectionType(name, args, resolveArg, evaluateDefault, location) {
84
+ if (name === 'list') {
85
+ // EC-B2: list requires exactly 1 positional arg
86
+ if (args.length !== 1 || args[0].name !== undefined) {
87
+ throw new RuntimeError('RILL-R004', 'list() requires exactly 1 type argument', location);
76
88
  }
77
- // EC-3: Leaf types reject all type arguments
78
- const LEAF_TYPES = new Set([
79
- 'string',
80
- 'number',
81
- 'bool',
82
- 'vector',
83
- 'type',
84
- 'any',
85
- 'closure',
86
- ]);
87
- if (LEAF_TYPES.has(typeName)) {
88
- throw new RuntimeError('RILL-R004', `${typeName} does not accept type arguments`);
89
+ const element = await resolveArg(args[0]);
90
+ const structure = { type: 'list', element };
91
+ return Object.freeze({
92
+ __rill_type: true,
93
+ typeName: name,
94
+ structure,
95
+ });
96
+ }
97
+ if (name === 'dict' || name === 'ordered') {
98
+ const positional = args.filter((a) => a.name === undefined);
99
+ const named = args.filter((a) => a.name !== undefined);
100
+ // EC-B3: Cannot mix positional and named arguments
101
+ if (positional.length > 0 && named.length > 0) {
102
+ throw new RuntimeError('RILL-R004', `${name}() cannot mix positional and named arguments`, location);
89
103
  }
90
- // Helper: recursively resolve one TypeRefArg to RillType
91
- const resolveArg = (arg) => {
92
- const resolved = this.resolveTypeRef(arg.ref, getVariable);
93
- return resolved.structure;
94
- };
95
- if (typeName === 'list') {
96
- // EC-4: list requires exactly 1 positional arg
97
- if (args.length !== 1 || args[0].name !== undefined) {
98
- throw new RuntimeError('RILL-R004', 'list() requires exactly 1 type argument');
104
+ // Uniform path: exactly 1 positional, 0 named -> valueType
105
+ if (positional.length === 1 && named.length === 0) {
106
+ const valueType = await resolveArg(positional[0]);
107
+ // EC-B6: Default type mismatch on uniform single-arg path
108
+ if (positional[0].defaultValue !== undefined) {
109
+ const defaultVal = await evaluateDefault(positional[0].defaultValue);
110
+ if (!structuralTypeMatches(defaultVal, valueType)) {
111
+ throw new RuntimeError('RILL-R004', `Default value for ${name} element must be ${formatStructuralType(valueType)}, got ${inferType(defaultVal)}`, location);
112
+ }
99
113
  }
100
- const structure = {
101
- type: 'list',
102
- element: resolveArg(args[0]),
103
- };
114
+ const structure = { type: name, valueType };
104
115
  return Object.freeze({
105
116
  __rill_type: true,
106
- typeName,
117
+ typeName: name,
107
118
  structure,
108
119
  });
109
120
  }
110
- if (typeName === 'dict') {
111
- // EC-5: dict requires named args only
112
- for (const arg of args) {
113
- if (arg.name === undefined) {
114
- throw new RuntimeError('RILL-R004', 'dict() requires named arguments (field: type)');
115
- }
116
- }
121
+ // EC: dict/ordered with 2+ positional args
122
+ if (positional.length >= 2) {
123
+ throw new RuntimeError('RILL-R004', `${name}() requires exactly 1 positional type argument`, location);
124
+ }
125
+ // Structural path: named args only -> fields
126
+ if (name === 'dict') {
117
127
  const fields = {};
118
128
  for (const arg of args) {
119
- fields[arg.name] = resolveArg(arg);
129
+ const resolvedType = await resolveArg(arg);
130
+ const fieldDef = { type: resolvedType };
131
+ if (arg.defaultValue !== undefined) {
132
+ const defaultVal = await evaluateDefault(arg.defaultValue);
133
+ // EC-B6: Default type mismatch
134
+ if (!structuralTypeMatches(defaultVal, resolvedType)) {
135
+ throw new RuntimeError('RILL-R004', `Default value for field '${arg.name}' must be ${formatStructuralType(resolvedType)}, got ${inferType(defaultVal)}`, location);
136
+ }
137
+ fieldDef.defaultValue = defaultVal;
138
+ }
139
+ fields[arg.name] = fieldDef;
120
140
  }
121
141
  const structure = { type: 'dict', fields };
122
142
  return Object.freeze({
123
143
  __rill_type: true,
124
- typeName,
144
+ typeName: name,
125
145
  structure,
126
146
  });
127
147
  }
128
- if (typeName === 'tuple') {
129
- // EC-6: tuple requires positional args only
130
- for (const arg of args) {
131
- if (arg.name !== undefined) {
132
- throw new RuntimeError('RILL-R004', 'tuple() requires positional arguments');
148
+ // name === 'ordered': structural path -> fields array with name
149
+ const orderedFields = [];
150
+ for (const arg of args) {
151
+ const resolvedType = await resolveArg(arg);
152
+ const fieldDef = {
153
+ name: arg.name,
154
+ type: resolvedType,
155
+ };
156
+ if (arg.defaultValue !== undefined) {
157
+ const defaultVal = await evaluateDefault(arg.defaultValue);
158
+ // EC-B6: Default type mismatch
159
+ if (!structuralTypeMatches(defaultVal, resolvedType)) {
160
+ throw new RuntimeError('RILL-R004', `Default value for field '${arg.name}' must be ${formatStructuralType(resolvedType)}, got ${inferType(defaultVal)}`, location);
133
161
  }
162
+ fieldDef.defaultValue = defaultVal;
134
163
  }
135
- const elements = args.map(resolveArg);
136
- const structure = { type: 'tuple', elements };
137
- return Object.freeze({
138
- __rill_type: true,
139
- typeName,
140
- structure,
141
- });
164
+ orderedFields.push(fieldDef);
142
165
  }
143
- // typeName === 'ordered'
144
- // EC-5: ordered requires named args only
145
- for (const arg of args) {
146
- if (arg.name === undefined) {
147
- throw new RuntimeError('RILL-R004', 'dict() requires named arguments (field: type)');
166
+ const structure = { type: 'ordered', fields: orderedFields };
167
+ return Object.freeze({
168
+ __rill_type: true,
169
+ typeName: name,
170
+ structure,
171
+ });
172
+ }
173
+ // name === 'tuple'
174
+ // EC-B4: tuple requires positional args only
175
+ for (const arg of args) {
176
+ if (arg.name !== undefined) {
177
+ throw new RuntimeError('RILL-R004', 'tuple() requires positional arguments', location);
178
+ }
179
+ }
180
+ // Uniform path: exactly 1 positional -> valueType
181
+ if (args.length === 1 && args[0].name === undefined) {
182
+ const valueType = await resolveArg(args[0]);
183
+ // EC-B6: Default type mismatch on uniform single-arg path
184
+ if (args[0].defaultValue !== undefined) {
185
+ const defaultVal = await evaluateDefault(args[0].defaultValue);
186
+ if (!structuralTypeMatches(defaultVal, valueType)) {
187
+ throw new RuntimeError('RILL-R004', `Default value for tuple element must be ${formatStructuralType(valueType)}, got ${inferType(defaultVal)}`, location);
148
188
  }
149
189
  }
150
- const orderedFields = args.map((arg) => [
151
- arg.name,
152
- resolveArg(arg),
153
- ]);
154
- const structure = {
155
- type: 'ordered',
156
- fields: orderedFields,
157
- };
190
+ const structure = { type: 'tuple', valueType };
158
191
  return Object.freeze({
159
192
  __rill_type: true,
160
- typeName,
193
+ typeName: 'tuple',
161
194
  structure,
162
195
  });
163
196
  }
164
- // Union type ref: (A | B) — resolve each member recursively and
197
+ // Structural path: 2+ positional -> elements
198
+ const elements = [];
199
+ for (const arg of args) {
200
+ const resolvedType = await resolveArg(arg);
201
+ const fieldDef = { type: resolvedType };
202
+ if (arg.defaultValue !== undefined) {
203
+ const defaultVal = await evaluateDefault(arg.defaultValue);
204
+ // EC-B6: Default type mismatch
205
+ if (!structuralTypeMatches(defaultVal, resolvedType)) {
206
+ throw new RuntimeError('RILL-R004', `Default value for tuple element must be ${formatStructuralType(resolvedType)}, got ${inferType(defaultVal)}`, location);
207
+ }
208
+ fieldDef.defaultValue = defaultVal;
209
+ }
210
+ elements.push(fieldDef);
211
+ }
212
+ // EC-B7: Tuple non-trailing default — no element without a default
213
+ // may follow an element that has one.
214
+ let sawDefault = false;
215
+ for (let i = 0; i < elements.length; i++) {
216
+ const hasDefault = elements[i].defaultValue !== undefined;
217
+ if (hasDefault) {
218
+ sawDefault = true;
219
+ }
220
+ else if (sawDefault) {
221
+ throw new RuntimeError('RILL-R004', `tuple() default values must be trailing: element at position ${i} has no default but a preceding element does`, location);
222
+ }
223
+ }
224
+ const structure = { type: 'tuple', elements };
225
+ return Object.freeze({
226
+ __rill_type: true,
227
+ typeName: 'tuple',
228
+ structure,
229
+ });
230
+ }
231
+ /**
232
+ * Resolve a TypeRef to a RillTypeValue [IR-2].
233
+ *
234
+ * Static refs with no args return a frozen RillTypeValue directly.
235
+ * Static refs with args delegate to buildCollectionType.
236
+ * Dynamic refs call getVariable, then dispatch on the result:
237
+ * - RillTypeValue -> return as-is
238
+ * - Otherwise -> throw RILL-R004
239
+ *
240
+ * EC-3: Variable not found -> RILL-R005.
241
+ * EC-4: Non-type variable value -> RILL-R004.
242
+ * EC-5: list with != 1 positional arg -> RILL-R004.
243
+ * EC-6: dict/ordered positional+named mix -> RILL-R004.
244
+ * EC-7: tuple with named arg -> RILL-R004.
245
+ * EC-8: Default type mismatch -> RILL-R004.
246
+ * EC-9: Default evaluation failure -> propagated.
247
+ * EC-10: Tuple non-trailing default -> RILL-R004.
248
+ */
249
+ async resolveTypeRef(typeRef, getVariableFn) {
250
+ if (typeRef.kind === 'static') {
251
+ const { typeName, args } = typeRef;
252
+ // No args: existing bare-type behavior
253
+ if (!args || args.length === 0) {
254
+ return Object.freeze({
255
+ __rill_type: true,
256
+ typeName,
257
+ structure: { type: typeName },
258
+ });
259
+ }
260
+ // EC-B1: Leaf types reject all type arguments
261
+ if (LEAF_TYPES.has(typeName)) {
262
+ throw new RuntimeError('RILL-R004', `${typeName} does not accept type arguments`);
263
+ }
264
+ // Delegate to buildCollectionType with recursive resolveTypeRef
265
+ return this.buildCollectionType(typeName, args, async (arg) => {
266
+ const resolved = await this.resolveTypeRef(arg.value, getVariableFn);
267
+ return resolved.structure;
268
+ }, async (node) => {
269
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
270
+ return this.evaluatePrimary(node);
271
+ });
272
+ }
273
+ // Union type ref: (A | B) -- resolve each member recursively and
165
274
  // return a RillTypeValue with structure: { type: 'union', members: [...] }.
166
275
  // typeName is set to a display string for error messages; the structure
167
276
  // field carries the authoritative type shape for validation (DR-1).
168
277
  if (typeRef.kind === 'union') {
169
- const members = typeRef.members.map((member) => {
170
- const resolved = this.resolveTypeRef(member, getVariable);
171
- return resolved.structure;
172
- });
278
+ const members = [];
279
+ for (const member of typeRef.members) {
280
+ const resolved = await this.resolveTypeRef(member, getVariableFn);
281
+ members.push(resolved.structure);
282
+ }
173
283
  const structure = { type: 'union', members };
174
284
  const displayName = members
175
285
  .map(formatStructuralType)
@@ -180,7 +290,7 @@ function createTypesMixin(Base) {
180
290
  structure,
181
291
  });
182
292
  }
183
- const result = getVariable(typeRef.varName);
293
+ const result = getVariableFn(typeRef.varName);
184
294
  if (result === undefined) {
185
295
  throw new RuntimeError('RILL-R005', `Variable $${typeRef.varName} is not defined`);
186
296
  }
@@ -202,7 +312,8 @@ function createTypesMixin(Base) {
202
312
  const hasSubFields = 'element' in expected ||
203
313
  'fields' in expected ||
204
314
  'elements' in expected ||
205
- 'members' in expected;
315
+ 'members' in expected ||
316
+ 'valueType' in expected;
206
317
  if (hasSubFields) {
207
318
  if (!structuralTypeMatches(value, expected)) {
208
319
  const expectedStr = formatStructuralType(expected);
@@ -234,7 +345,7 @@ function createTypesMixin(Base) {
234
345
  ? // eslint-disable-next-line @typescript-eslint/no-explicit-any
235
346
  await this.evaluatePostfixExpr(node.operand)
236
347
  : input;
237
- const resolved = this.resolveTypeRef(node.typeRef, (name) => getVariable(this.ctx, name));
348
+ const resolved = await this.resolveTypeRef(node.typeRef, (name) => getVariable(this.ctx, name));
238
349
  return this.assertType(value, resolved.structure, node.span.start);
239
350
  }
240
351
  /**
@@ -248,11 +359,12 @@ function createTypesMixin(Base) {
248
359
  ? // eslint-disable-next-line @typescript-eslint/no-explicit-any
249
360
  await this.evaluatePostfixExpr(node.operand)
250
361
  : input;
251
- const resolved = this.resolveTypeRef(node.typeRef, (name) => getVariable(this.ctx, name));
362
+ const resolved = await this.resolveTypeRef(node.typeRef, (name) => getVariable(this.ctx, name));
252
363
  const hasSubFields = 'element' in resolved.structure ||
253
364
  'fields' in resolved.structure ||
254
365
  'elements' in resolved.structure ||
255
- 'members' in resolved.structure;
366
+ 'members' in resolved.structure ||
367
+ 'valueType' in resolved.structure;
256
368
  if (hasSubFields) {
257
369
  return structuralTypeMatches(value, resolved.structure);
258
370
  }
@@ -285,115 +397,26 @@ function createTypesMixin(Base) {
285
397
  /**
286
398
  * Evaluate a type constructor node into a RillTypeValue [IR-7].
287
399
  *
288
- * Handles list(T), dict(k: T, ...), tuple(T1, T2, ...), ordered(k: T, ...).
289
- * All arguments must evaluate to RillTypeValue.
400
+ * Handles list(T), dict(...), tuple(...), ordered(...).
401
+ * Delegates to buildCollectionType with evaluateTypeConstructor-specific
402
+ * resolution strategy (resolves TypeRef via resolveTypeRef, evaluates
403
+ * defaults via evaluatePrimary).
290
404
  *
291
- * Error contracts:
292
- * - EC-4: list() with != 1 arg -> RILL-R004
293
- * - EC-5: non-type argument -> RILL-R004
294
- * - EC-6: positional arg in dict/ordered -> RILL-R004
295
- * - EC-7: named arg in tuple -> RILL-R004
405
+ * Error contracts delegated to buildCollectionType.
296
406
  */
297
407
  async evaluateTypeConstructor(node) {
298
408
  const name = node.constructorName;
299
409
  const location = node.span.start;
300
- // Helper: evaluate one arg expression and assert it is a RillTypeValue
301
- const resolveArgAsType = async (argValue) => {
302
- if (!isTypeValue(argValue)) {
303
- throw new RuntimeError('RILL-R004', `Type constructor argument must be a type value, got ${inferType(argValue)}`, location);
304
- }
305
- return argValue.structure.type === 'any' &&
306
- argValue.typeName !== 'any'
307
- ? { type: argValue.typeName }
308
- : argValue.structure;
309
- };
310
- if (name === 'list') {
311
- // EC-4: list() requires exactly 1 argument
312
- if (node.args.length !== 1) {
313
- throw new RuntimeError('RILL-R004', 'list() requires exactly 1 type argument', location);
314
- }
315
- const arg = node.args[0];
410
+ return this.buildCollectionType(name, node.args, async (arg) => {
411
+ const resolved = await this.resolveTypeRef(arg.value, (varName) => getVariable(this.ctx, varName));
412
+ return resolved.structure.type === 'any' &&
413
+ resolved.typeName !== 'any'
414
+ ? { type: resolved.typeName }
415
+ : resolved.structure;
416
+ }, async (node) => {
316
417
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
317
- const argVal = await this.evaluateExpression(arg.value);
318
- const elementType = await resolveArgAsType(argVal);
319
- const structure = {
320
- type: 'list',
321
- element: elementType,
322
- };
323
- return Object.freeze({
324
- __rill_type: true,
325
- typeName: 'list',
326
- structure,
327
- });
328
- }
329
- if (name === 'dict') {
330
- // EC-6: dict() requires named arguments
331
- for (const arg of node.args) {
332
- if (arg.kind === 'positional') {
333
- throw new RuntimeError('RILL-R004', 'dict() requires named arguments (field: type)', location);
334
- }
335
- }
336
- const fields = {};
337
- for (const arg of node.args) {
338
- if (arg.kind === 'named') {
339
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
340
- const argVal = await this.evaluateExpression(arg.value);
341
- fields[arg.name] = await resolveArgAsType(argVal);
342
- }
343
- }
344
- const structure = { type: 'dict', fields };
345
- return Object.freeze({
346
- __rill_type: true,
347
- typeName: 'dict',
348
- structure,
349
- });
350
- }
351
- if (name === 'tuple') {
352
- // EC-7: tuple() requires positional arguments
353
- for (const arg of node.args) {
354
- if (arg.kind === 'named') {
355
- throw new RuntimeError('RILL-R004', 'tuple() requires positional arguments', location);
356
- }
357
- }
358
- const elements = [];
359
- for (const arg of node.args) {
360
- if (arg.kind === 'positional') {
361
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
362
- const argVal = await this.evaluateExpression(arg.value);
363
- elements.push(await resolveArgAsType(argVal));
364
- }
365
- }
366
- const structure = { type: 'tuple', elements };
367
- return Object.freeze({
368
- __rill_type: true,
369
- typeName: 'tuple',
370
- structure,
371
- });
372
- }
373
- // name === 'ordered'
374
- // EC-6: ordered() requires named arguments
375
- for (const arg of node.args) {
376
- if (arg.kind === 'positional') {
377
- throw new RuntimeError('RILL-R004', 'ordered() requires named arguments (field: type)', location);
378
- }
379
- }
380
- const orderedFields = [];
381
- for (const arg of node.args) {
382
- if (arg.kind === 'named') {
383
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
384
- const argVal = await this.evaluateExpression(arg.value);
385
- orderedFields.push([arg.name, await resolveArgAsType(argVal)]);
386
- }
387
- }
388
- const structure = {
389
- type: 'ordered',
390
- fields: orderedFields,
391
- };
392
- return Object.freeze({
393
- __rill_type: true,
394
- typeName: 'ordered',
395
- structure,
396
- });
418
+ return this.evaluatePrimary(node);
419
+ }, location);
397
420
  }
398
421
  /**
399
422
  * Evaluate a closure signature literal into a RillTypeValue [IR-8].
@@ -423,9 +446,9 @@ function createTypesMixin(Base) {
423
446
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
424
447
  const paramVal = await this.evaluateExpression(param.typeExpr);
425
448
  const paramType = await resolveTypeExpr(paramVal);
426
- params.push([param.name, paramType]);
449
+ params.push({ name: param.name, type: paramType });
427
450
  }
428
- // Evaluate return type (EC-8: required parser enforces this at parse time)
451
+ // Evaluate return type (EC-8: required -- parser enforces this at parse time)
429
452
  // returnType is PostfixExprNode (stops before pipe operators) so the
430
453
  // return type annotation cannot accidentally consume a trailing pipe chain.
431
454
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -450,4 +473,3 @@ function createTypesMixin(Base) {
450
473
  // TypeScript can't generate declarations for functions returning classes with protected members
451
474
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
452
475
  export const TypesMixin = createTypesMixin;
453
- //# sourceMappingURL=types.js.map
@@ -22,4 +22,3 @@
22
22
  * @internal
23
23
  */
24
24
  export declare const UseMixin: any;
25
- //# sourceMappingURL=use.d.ts.map
@@ -179,4 +179,3 @@ function parseSchemeString(value, node) {
179
179
  // TypeScript can't generate declarations for functions returning classes with protected members
180
180
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
181
181
  export const UseMixin = createUseMixin;
182
- //# sourceMappingURL=use.js.map
@@ -31,4 +31,3 @@
31
31
  * @internal
32
32
  */
33
33
  export declare const VariablesMixin: any;
34
- //# sourceMappingURL=variables.d.ts.map
@@ -317,11 +317,11 @@ function createVariablesMixin(Base) {
317
317
  const finalAccess = node.existenceCheck.finalAccess;
318
318
  const typeRef = node.existenceCheck.typeRef;
319
319
  // Helper: check type match using structural resolution (EC-4: mismatch returns false)
320
- const matchesType = (fieldValue) => {
320
+ const matchesType = async (fieldValue) => {
321
321
  if (typeRef === null)
322
322
  return true;
323
323
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
324
- const resolved = this.resolveTypeRef(typeRef, (name) => getVariable(this.ctx, name));
324
+ const resolved = await this.resolveTypeRef(typeRef, (name) => getVariable(this.ctx, name));
325
325
  return structuralTypeMatches(fieldValue, resolved.structure);
326
326
  };
327
327
  if (finalAccess.kind === 'literal') {
@@ -331,7 +331,7 @@ function createVariablesMixin(Base) {
331
331
  const exists = fieldValue !== undefined && fieldValue !== null;
332
332
  // If type-qualified check, verify type matches
333
333
  if (exists && typeRef !== null) {
334
- return matchesType(fieldValue);
334
+ return await matchesType(fieldValue);
335
335
  }
336
336
  return exists;
337
337
  }
@@ -361,7 +361,7 @@ function createVariablesMixin(Base) {
361
361
  const exists = fieldValue !== undefined && fieldValue !== null;
362
362
  // If type-qualified check, verify type matches
363
363
  if (exists && typeRef !== null) {
364
- return matchesType(fieldValue);
364
+ return await matchesType(fieldValue);
365
365
  }
366
366
  return exists;
367
367
  }
@@ -388,7 +388,7 @@ function createVariablesMixin(Base) {
388
388
  const exists = fieldValue !== undefined && fieldValue !== null;
389
389
  // If type-qualified check, verify type matches
390
390
  if (exists && typeRef !== null) {
391
- return matchesType(fieldValue);
391
+ return await matchesType(fieldValue);
392
392
  }
393
393
  return exists;
394
394
  }
@@ -552,7 +552,7 @@ function createVariablesMixin(Base) {
552
552
  if (node.typeRef !== null) {
553
553
  // Resolve TypeRef and validate against the declared type
554
554
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
555
- const resolved = this.resolveTypeRef(node.typeRef, (name) => getVariable(this.ctx, name));
555
+ const resolved = await this.resolveTypeRef(node.typeRef, (name) => getVariable(this.ctx, name));
556
556
  this.setVariable(node.name, input, resolved.structure, node.span.start);
557
557
  }
558
558
  else {
@@ -578,4 +578,3 @@ function createVariablesMixin(Base) {
578
578
  // TypeScript can't generate declarations for functions returning classes with protected members
579
579
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
580
580
  export const VariablesMixin = createVariablesMixin;
581
- //# sourceMappingURL=variables.js.map
@@ -38,4 +38,3 @@ export type EvaluatorConstructor<TBase extends EvaluatorBase = EvaluatorBase> =
38
38
  * ```
39
39
  */
40
40
  export type Mixin<TBase extends EvaluatorBase = EvaluatorBase, TExtension extends TBase = TBase> = (Base: EvaluatorConstructor<TBase>) => EvaluatorConstructor<TExtension>;
41
- //# sourceMappingURL=types.d.ts.map
@@ -7,4 +7,3 @@
7
7
  * @internal
8
8
  */
9
9
  export {};
10
- //# sourceMappingURL=types.js.map
@@ -23,4 +23,3 @@ export declare function execute(script: ScriptNode, context: RuntimeContext): Pr
23
23
  * @returns A stepper for step-by-step execution
24
24
  */
25
25
  export declare function createStepper(script: ScriptNode, context: RuntimeContext): ExecutionStepper;
26
- //# sourceMappingURL=execute.d.ts.map
@@ -171,4 +171,3 @@ function isRecoveryErrorNode(stmt) {
171
171
  function getInnerStatement(stmt) {
172
172
  return stmt.type === 'AnnotatedStatement' ? stmt.statement : stmt;
173
173
  }
174
- //# sourceMappingURL=execute.js.map