@aster-cloud/aster-lang-ts 1.6.0 → 2.0.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 (345) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/scripts/aster.js +5 -12
  3. package/dist/scripts/aster.js.map +1 -1
  4. package/dist/scripts/emit-classfiles.js +3 -1
  5. package/dist/scripts/emit-classfiles.js.map +1 -1
  6. package/dist/scripts/generate-core-ir-types.d.ts +16 -0
  7. package/dist/scripts/generate-core-ir-types.d.ts.map +1 -0
  8. package/dist/scripts/generate-core-ir-types.js +116 -0
  9. package/dist/scripts/generate-core-ir-types.js.map +1 -0
  10. package/dist/scripts/golden.js +1 -1
  11. package/dist/scripts/golden.js.map +1 -1
  12. package/dist/src/ast/ast_visitor.d.ts +27 -27
  13. package/dist/src/ast/ast_visitor.d.ts.map +1 -1
  14. package/dist/src/ast/ast_visitor.js.map +1 -1
  15. package/dist/src/browser.d.ts +7 -0
  16. package/dist/src/browser.d.ts.map +1 -1
  17. package/dist/src/browser.js +6 -1
  18. package/dist/src/browser.js.map +1 -1
  19. package/dist/src/cli/policy-converter.js +6 -10
  20. package/dist/src/cli/policy-converter.js.map +1 -1
  21. package/dist/src/cli/utils/core-ir-file.d.ts +8 -0
  22. package/dist/src/cli/utils/core-ir-file.d.ts.map +1 -0
  23. package/dist/src/cli/utils/core-ir-file.js +29 -0
  24. package/dist/src/cli/utils/core-ir-file.js.map +1 -0
  25. package/dist/src/cnl-printer.d.ts.map +1 -1
  26. package/dist/src/cnl-printer.js +13 -3
  27. package/dist/src/cnl-printer.js.map +1 -1
  28. package/dist/src/compile-pipeline.js +1 -1
  29. package/dist/src/compile-pipeline.js.map +1 -1
  30. package/dist/src/config/lexicons/diagnostic-overlays.generated.d.ts.map +1 -1
  31. package/dist/src/config/lexicons/diagnostic-overlays.generated.js +18 -6
  32. package/dist/src/config/lexicons/diagnostic-overlays.generated.js.map +1 -1
  33. package/dist/src/core/canonical-decimal.d.ts +3 -0
  34. package/dist/src/core/canonical-decimal.d.ts.map +1 -0
  35. package/dist/src/core/canonical-decimal.js +19 -0
  36. package/dist/src/core/canonical-decimal.js.map +1 -0
  37. package/dist/src/core/canonical-json.d.ts +59 -0
  38. package/dist/src/core/canonical-json.d.ts.map +1 -0
  39. package/dist/src/core/canonical-json.js +250 -0
  40. package/dist/src/core/canonical-json.js.map +1 -0
  41. package/dist/src/core/core-ir-v2.generated.d.ts +807 -0
  42. package/dist/src/core/core-ir-v2.generated.d.ts.map +1 -0
  43. package/dist/src/core/core-ir-v2.generated.js +6 -0
  44. package/dist/src/core/core-ir-v2.generated.js.map +1 -0
  45. package/dist/src/core/core-ir-v2.schema.generated.d.ts +6 -0
  46. package/dist/src/core/core-ir-v2.schema.generated.d.ts.map +1 -0
  47. package/dist/src/core/core-ir-v2.schema.generated.js +2636 -0
  48. package/dist/src/core/core-ir-v2.schema.generated.js.map +1 -0
  49. package/dist/src/core/core_ir.d.ts +27 -11
  50. package/dist/src/core/core_ir.d.ts.map +1 -1
  51. package/dist/src/core/core_ir.js +118 -63
  52. package/dist/src/core/core_ir.js.map +1 -1
  53. package/dist/src/core/index.d.ts +4 -3
  54. package/dist/src/core/index.d.ts.map +1 -1
  55. package/dist/src/core/index.js +3 -2
  56. package/dist/src/core/index.js.map +1 -1
  57. package/dist/src/core/inferred_fields.d.ts +9 -11
  58. package/dist/src/core/inferred_fields.d.ts.map +1 -1
  59. package/dist/src/core/inferred_fields.js +7 -28
  60. package/dist/src/core/inferred_fields.js.map +1 -1
  61. package/dist/src/core/interpreter.js +16 -35
  62. package/dist/src/core/interpreter.js.map +1 -1
  63. package/dist/src/core/pretty_core.d.ts.map +1 -1
  64. package/dist/src/core/pretty_core.js +6 -10
  65. package/dist/src/core/pretty_core.js.map +1 -1
  66. package/dist/src/core/read-core-ir.d.ts +15 -0
  67. package/dist/src/core/read-core-ir.d.ts.map +1 -0
  68. package/dist/src/core/read-core-ir.js +69 -0
  69. package/dist/src/core/read-core-ir.js.map +1 -0
  70. package/dist/src/core/resolution-mark.d.ts +3 -4
  71. package/dist/src/core/resolution-mark.d.ts.map +1 -1
  72. package/dist/src/core/resolution-mark.js +2 -3
  73. package/dist/src/core/resolution-mark.js.map +1 -1
  74. package/dist/src/core/resolve-typed-references.d.ts.map +1 -1
  75. package/dist/src/core/resolve-typed-references.js +11 -27
  76. package/dist/src/core/resolve-typed-references.js.map +1 -1
  77. package/dist/src/core/serialize-core-ir.d.ts +13 -0
  78. package/dist/src/core/serialize-core-ir.d.ts.map +1 -0
  79. package/dist/src/core/serialize-core-ir.js +125 -0
  80. package/dist/src/core/serialize-core-ir.js.map +1 -0
  81. package/dist/src/core/visitor.d.ts.map +1 -1
  82. package/dist/src/core/visitor.js +4 -1
  83. package/dist/src/core/visitor.js.map +1 -1
  84. package/dist/src/diagnostics/error_codes.d.ts +2 -0
  85. package/dist/src/diagnostics/error_codes.d.ts.map +1 -1
  86. package/dist/src/diagnostics/error_codes.js +16 -0
  87. package/dist/src/diagnostics/error_codes.js.map +1 -1
  88. package/dist/src/effects/declared-effects.d.ts +17 -0
  89. package/dist/src/effects/declared-effects.d.ts.map +1 -0
  90. package/dist/src/effects/declared-effects.js +27 -0
  91. package/dist/src/effects/declared-effects.js.map +1 -0
  92. package/dist/src/effects/effect_inference.d.ts.map +1 -1
  93. package/dist/src/effects/effect_inference.js +14 -10
  94. package/dist/src/effects/effect_inference.js.map +1 -1
  95. package/dist/src/effects/effect_inference_browser.d.ts.map +1 -1
  96. package/dist/src/effects/effect_inference_browser.js +14 -9
  97. package/dist/src/effects/effect_inference_browser.js.map +1 -1
  98. package/dist/src/frontend/keyword-translator.d.ts.map +1 -1
  99. package/dist/src/frontend/keyword-translator.js +3 -0
  100. package/dist/src/frontend/keyword-translator.js.map +1 -1
  101. package/dist/src/frontend/lexer.d.ts.map +1 -1
  102. package/dist/src/frontend/lexer.js +7 -3
  103. package/dist/src/frontend/lexer.js.map +1 -1
  104. package/dist/src/frontend/resolve-declarations.d.ts.map +1 -1
  105. package/dist/src/frontend/resolve-declarations.js +3 -23
  106. package/dist/src/frontend/resolve-declarations.js.map +1 -1
  107. package/dist/src/governance/input-refs.js +5 -8
  108. package/dist/src/governance/input-refs.js.map +1 -1
  109. package/dist/src/index.d.ts +5 -0
  110. package/dist/src/index.d.ts.map +1 -1
  111. package/dist/src/index.js +4 -0
  112. package/dist/src/index.js.map +1 -1
  113. package/dist/src/jvm/emitter.d.ts.map +1 -1
  114. package/dist/src/jvm/emitter.js +20 -29
  115. package/dist/src/jvm/emitter.js.map +1 -1
  116. package/dist/src/lower_to_core.d.ts +2 -1
  117. package/dist/src/lower_to_core.d.ts.map +1 -1
  118. package/dist/src/lower_to_core.js +150 -300
  119. package/dist/src/lower_to_core.js.map +1 -1
  120. package/dist/src/lsp/pii_diagnostics.d.ts.map +1 -1
  121. package/dist/src/lsp/pii_diagnostics.js +3 -8
  122. package/dist/src/lsp/pii_diagnostics.js.map +1 -1
  123. package/dist/src/mapping/mapping-ir.d.ts +3 -3
  124. package/dist/src/mapping/mapping-ir.js +3 -3
  125. package/dist/src/nodeid/node-id-map.d.ts +6 -15
  126. package/dist/src/nodeid/node-id-map.d.ts.map +1 -1
  127. package/dist/src/nodeid/node-id-map.js +6 -15
  128. package/dist/src/nodeid/node-id-map.js.map +1 -1
  129. package/dist/src/parser/constraint-parser.js +25 -6
  130. package/dist/src/parser/constraint-parser.js.map +1 -1
  131. package/dist/src/parser/decl-parser.d.ts.map +1 -1
  132. package/dist/src/parser/decl-parser.js +30 -59
  133. package/dist/src/parser/decl-parser.js.map +1 -1
  134. package/dist/src/parser/expr-stmt-parser.d.ts.map +1 -1
  135. package/dist/src/parser/expr-stmt-parser.js +3 -2
  136. package/dist/src/parser/expr-stmt-parser.js.map +1 -1
  137. package/dist/src/parser/field-variant-parser.d.ts.map +1 -1
  138. package/dist/src/parser/field-variant-parser.js +6 -0
  139. package/dist/src/parser/field-variant-parser.js.map +1 -1
  140. package/dist/src/parser/parse-issue.d.ts +2 -0
  141. package/dist/src/parser/parse-issue.d.ts.map +1 -1
  142. package/dist/src/parser/parse-issue.js +2 -0
  143. package/dist/src/parser/parse-issue.js.map +1 -1
  144. package/dist/src/parser/type-parser.d.ts +1 -1
  145. package/dist/src/parser/type-parser.d.ts.map +1 -1
  146. package/dist/src/parser/type-parser.js +19 -2
  147. package/dist/src/parser/type-parser.js.map +1 -1
  148. package/dist/src/stability/stability_gate.d.ts +1 -1
  149. package/dist/src/stability/stability_gate.d.ts.map +1 -1
  150. package/dist/src/stability/stability_gate.js +2 -26
  151. package/dist/src/stability/stability_gate.js.map +1 -1
  152. package/dist/src/typecheck/async.d.ts.map +1 -1
  153. package/dist/src/typecheck/async.js +4 -1
  154. package/dist/src/typecheck/async.js.map +1 -1
  155. package/dist/src/typecheck/browser.d.ts.map +1 -1
  156. package/dist/src/typecheck/browser.js +4 -3
  157. package/dist/src/typecheck/browser.js.map +1 -1
  158. package/dist/src/typecheck/capabilities.d.ts.map +1 -1
  159. package/dist/src/typecheck/capabilities.js +3 -2
  160. package/dist/src/typecheck/capabilities.js.map +1 -1
  161. package/dist/src/typecheck/context.d.ts +5 -5
  162. package/dist/src/typecheck/context.d.ts.map +1 -1
  163. package/dist/src/typecheck/context.js.map +1 -1
  164. package/dist/src/typecheck/diagnostics.d.ts +2 -2
  165. package/dist/src/typecheck/diagnostics.d.ts.map +1 -1
  166. package/dist/src/typecheck/diagnostics.js.map +1 -1
  167. package/dist/src/typecheck/effects.js +7 -7
  168. package/dist/src/typecheck/effects.js.map +1 -1
  169. package/dist/src/typecheck/expression.d.ts +4 -4
  170. package/dist/src/typecheck/expression.d.ts.map +1 -1
  171. package/dist/src/typecheck/expression.js +1 -1
  172. package/dist/src/typecheck/expression.js.map +1 -1
  173. package/dist/src/typecheck/generics.d.ts +2 -2
  174. package/dist/src/typecheck/generics.d.ts.map +1 -1
  175. package/dist/src/typecheck/generics.js +23 -12
  176. package/dist/src/typecheck/generics.js.map +1 -1
  177. package/dist/src/typecheck/governance.d.ts +1 -1
  178. package/dist/src/typecheck/governance.d.ts.map +1 -1
  179. package/dist/src/typecheck/governance.js +1 -1
  180. package/dist/src/typecheck/governance.js.map +1 -1
  181. package/dist/src/typecheck/module.d.ts.map +1 -1
  182. package/dist/src/typecheck/module.js +7 -6
  183. package/dist/src/typecheck/module.js.map +1 -1
  184. package/dist/src/typecheck/pattern.d.ts +2 -2
  185. package/dist/src/typecheck/pattern.d.ts.map +1 -1
  186. package/dist/src/typecheck/pattern.js +12 -46
  187. package/dist/src/typecheck/pattern.js.map +1 -1
  188. package/dist/src/typecheck/pure.d.ts +19 -19
  189. package/dist/src/typecheck/pure.d.ts.map +1 -1
  190. package/dist/src/typecheck/pure.js.map +1 -1
  191. package/dist/src/typecheck/statement.d.ts +6 -6
  192. package/dist/src/typecheck/statement.d.ts.map +1 -1
  193. package/dist/src/typecheck/statement.js +17 -20
  194. package/dist/src/typecheck/statement.js.map +1 -1
  195. package/dist/src/typecheck/symbol_table.d.ts +2 -2
  196. package/dist/src/typecheck/symbol_table.d.ts.map +1 -1
  197. package/dist/src/typecheck/symbol_table.js.map +1 -1
  198. package/dist/src/typecheck/type_system.d.ts +4 -4
  199. package/dist/src/typecheck/type_system.d.ts.map +1 -1
  200. package/dist/src/typecheck/type_system.js +1 -1
  201. package/dist/src/typecheck/type_system.js.map +1 -1
  202. package/dist/src/typecheck/workflow.d.ts +3 -3
  203. package/dist/src/typecheck/workflow.d.ts.map +1 -1
  204. package/dist/src/typecheck/workflow.js.map +1 -1
  205. package/dist/src/typecheck-pii.d.ts.map +1 -1
  206. package/dist/src/typecheck-pii.js +2 -13
  207. package/dist/src/typecheck-pii.js.map +1 -1
  208. package/dist/src/types.d.ts +160 -172
  209. package/dist/src/types.d.ts.map +1 -1
  210. package/dist/src/types.js.map +1 -1
  211. package/dist/src/version.d.ts +3 -3
  212. package/dist/src/version.js +3 -3
  213. package/dist/test/helpers/core-ir-v2.d.ts +5 -0
  214. package/dist/test/helpers/core-ir-v2.d.ts.map +1 -0
  215. package/dist/test/helpers/core-ir-v2.js +123 -0
  216. package/dist/test/helpers/core-ir-v2.js.map +1 -0
  217. package/dist/test/helpers/locales-core-ir.d.ts +7 -0
  218. package/dist/test/helpers/locales-core-ir.d.ts.map +1 -0
  219. package/dist/test/helpers/locales-core-ir.js +15 -0
  220. package/dist/test/helpers/locales-core-ir.js.map +1 -0
  221. package/dist/test/helpers/test-factories.d.ts +5 -5
  222. package/dist/test/helpers/test-factories.d.ts.map +1 -1
  223. package/dist/test/helpers/test-factories.js +9 -8
  224. package/dist/test/helpers/test-factories.js.map +1 -1
  225. package/dist/test/integration/pipeline/pipeline.test.js +1 -1
  226. package/dist/test/integration/pipeline/pipeline.test.js.map +1 -1
  227. package/dist/test/integration/vocabulary-resolution.test.js +1 -1
  228. package/dist/test/integration/vocabulary-resolution.test.js.map +1 -1
  229. package/dist/test/regression/type-checker-golden.test.js +1 -1
  230. package/dist/test/regression/type-checker-golden.test.js.map +1 -1
  231. package/dist/test/type-checker/pii-propagation.test.js +7 -6
  232. package/dist/test/type-checker/pii-propagation.test.js.map +1 -1
  233. package/dist/test/types/core-ir-v2.test-d.d.ts +28 -0
  234. package/dist/test/types/core-ir-v2.test-d.d.ts.map +1 -0
  235. package/dist/test/types/core-ir-v2.test-d.js +5 -0
  236. package/dist/test/types/core-ir-v2.test-d.js.map +1 -0
  237. package/dist/test/unit/browser/typecheck-browser-pii-failure.test.js +4 -3
  238. package/dist/test/unit/browser/typecheck-browser-pii-failure.test.js.map +1 -1
  239. package/dist/test/unit/canonicalizer/article-declaration-names.test.js +1 -1
  240. package/dist/test/unit/canonicalizer/article-declaration-names.test.js.map +1 -1
  241. package/dist/test/unit/canonicalizer/chinese-function-syntax.test.js +2 -1
  242. package/dist/test/unit/canonicalizer/chinese-function-syntax.test.js.map +1 -1
  243. package/dist/test/unit/core/canonical-json.test.d.ts +2 -0
  244. package/dist/test/unit/core/canonical-json.test.d.ts.map +1 -0
  245. package/dist/test/unit/core/canonical-json.test.js +38 -0
  246. package/dist/test/unit/core/canonical-json.test.js.map +1 -0
  247. package/dist/test/unit/core/caseless-pattern-name.test.js +6 -8
  248. package/dist/test/unit/core/caseless-pattern-name.test.js.map +1 -1
  249. package/dist/test/unit/core/core-ir-conformance.test.d.ts +2 -0
  250. package/dist/test/unit/core/core-ir-conformance.test.d.ts.map +1 -0
  251. package/dist/test/unit/core/core-ir-conformance.test.js +39 -0
  252. package/dist/test/unit/core/core-ir-conformance.test.js.map +1 -0
  253. package/dist/test/unit/core/core-ir-schema-parity.test.d.ts +2 -0
  254. package/dist/test/unit/core/core-ir-schema-parity.test.d.ts.map +1 -0
  255. package/dist/test/unit/core/core-ir-schema-parity.test.js +25 -0
  256. package/dist/test/unit/core/core-ir-schema-parity.test.js.map +1 -0
  257. package/dist/test/unit/core/core-ir-v2-outputs.test.d.ts +2 -0
  258. package/dist/test/unit/core/core-ir-v2-outputs.test.d.ts.map +1 -0
  259. package/dist/test/unit/core/core-ir-v2-outputs.test.js +128 -0
  260. package/dist/test/unit/core/core-ir-v2-outputs.test.js.map +1 -0
  261. package/dist/test/unit/core/read-core-ir.test.d.ts +2 -0
  262. package/dist/test/unit/core/read-core-ir.test.d.ts.map +1 -0
  263. package/dist/test/unit/core/read-core-ir.test.js +129 -0
  264. package/dist/test/unit/core/read-core-ir.test.js.map +1 -0
  265. package/dist/test/unit/core/resolve-typed-references.test.js +19 -16
  266. package/dist/test/unit/core/resolve-typed-references.test.js.map +1 -1
  267. package/dist/test/unit/diagnostics/lowering-diagnostics-parity.test.js +5 -5
  268. package/dist/test/unit/diagnostics/lowering-diagnostics-parity.test.js.map +1 -1
  269. package/dist/test/unit/diagnostics/parse-diagnostics-parity.test.js +3 -2
  270. package/dist/test/unit/diagnostics/parse-diagnostics-parity.test.js.map +1 -1
  271. package/dist/test/unit/effect/effect-inference.test.js +17 -13
  272. package/dist/test/unit/effect/effect-inference.test.js.map +1 -1
  273. package/dist/test/unit/emitter/emitter.test.js +47 -46
  274. package/dist/test/unit/emitter/emitter.test.js.map +1 -1
  275. package/dist/test/unit/formatter-corpus-roundtrip.test.js +5 -1
  276. package/dist/test/unit/formatter-corpus-roundtrip.test.js.map +1 -1
  277. package/dist/test/unit/formatter-roundtrip.test.js +5 -4
  278. package/dist/test/unit/formatter-roundtrip.test.js.map +1 -1
  279. package/dist/test/unit/frontend/resolve-declarations.test.js +13 -14
  280. package/dist/test/unit/frontend/resolve-declarations.test.js.map +1 -1
  281. package/dist/test/unit/governance/governance-check.test.js +1 -1
  282. package/dist/test/unit/governance/governance-check.test.js.map +1 -1
  283. package/dist/test/unit/governance/input-refs-parity.test.js +1 -1
  284. package/dist/test/unit/governance/input-refs-parity.test.js.map +1 -1
  285. package/dist/test/unit/governance/input-refs.test.js +2 -2
  286. package/dist/test/unit/governance/input-refs.test.js.map +1 -1
  287. package/dist/test/unit/governance/no-profile-ir-unchanged.test.js +6 -6
  288. package/dist/test/unit/governance/no-profile-ir-unchanged.test.js.map +1 -1
  289. package/dist/test/unit/interpreter/interpreter.test.js +23 -21
  290. package/dist/test/unit/interpreter/interpreter.test.js.map +1 -1
  291. package/dist/test/unit/interpreter/scope-writeback.test.js +28 -27
  292. package/dist/test/unit/interpreter/scope-writeback.test.js.map +1 -1
  293. package/dist/test/unit/keyword-aliases.test.js +1 -1
  294. package/dist/test/unit/lowering/core-ir-v2.test.d.ts +2 -0
  295. package/dist/test/unit/lowering/core-ir-v2.test.d.ts.map +1 -0
  296. package/dist/test/unit/lowering/core-ir-v2.test.js +253 -0
  297. package/dist/test/unit/lowering/core-ir-v2.test.js.map +1 -0
  298. package/dist/test/unit/lowering/lowering.test.js +19 -14
  299. package/dist/test/unit/lowering/lowering.test.js.map +1 -1
  300. package/dist/test/unit/lsp/pii-diagnostics.test.js +33 -30
  301. package/dist/test/unit/lsp/pii-diagnostics.test.js.map +1 -1
  302. package/dist/test/unit/lsp/utils.test.js +5 -4
  303. package/dist/test/unit/lsp/utils.test.js.map +1 -1
  304. package/dist/test/unit/parser/effect-unknown-name.test.js +7 -7
  305. package/dist/test/unit/parser/effect-unknown-name.test.js.map +1 -1
  306. package/dist/test/unit/parser/entry-annotations.test.js +2 -1
  307. package/dist/test/unit/parser/entry-annotations.test.js.map +1 -1
  308. package/dist/test/unit/parser/func-type.test.js +3 -3
  309. package/dist/test/unit/parser/func-type.test.js.map +1 -1
  310. package/dist/test/unit/parser/governance-sugar.test.js +4 -4
  311. package/dist/test/unit/parser/governance-sugar.test.js.map +1 -1
  312. package/dist/test/unit/parser/parser.test.js +5 -4
  313. package/dist/test/unit/parser/parser.test.js.map +1 -1
  314. package/dist/test/unit/rule-call-checks.test.js +2 -1
  315. package/dist/test/unit/rule-call-checks.test.js.map +1 -1
  316. package/dist/test/unit/typecheck/async-discipline-extended.test.js +11 -10
  317. package/dist/test/unit/typecheck/async-discipline-extended.test.js.map +1 -1
  318. package/dist/test/unit/typecheck/effect-prefix-injection.test.js +3 -2
  319. package/dist/test/unit/typecheck/effect-prefix-injection.test.js.map +1 -1
  320. package/dist/test/unit/typecheck/function-return-inference.test.js +33 -32
  321. package/dist/test/unit/typecheck/function-return-inference.test.js.map +1 -1
  322. package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.js +5 -4
  323. package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.js.map +1 -1
  324. package/dist/test/unit/typecheck/regression-fixes.test.js +110 -112
  325. package/dist/test/unit/typecheck/regression-fixes.test.js.map +1 -1
  326. package/dist/test/unit/typecheck/symbol-table.test.js +3 -2
  327. package/dist/test/unit/typecheck/symbol-table.test.js.map +1 -1
  328. package/dist/test/unit/typecheck/type-system-extended.test.js +6 -5
  329. package/dist/test/unit/typecheck/type-system-extended.test.js.map +1 -1
  330. package/dist/test/unit/typecheck/type-system.test.js +20 -19
  331. package/dist/test/unit/typecheck/type-system.test.js.map +1 -1
  332. package/dist/test/unit/typecheck/typecheck-advanced.test.js +19 -18
  333. package/dist/test/unit/typecheck/typecheck-advanced.test.js.map +1 -1
  334. package/dist/test/unit/typecheck/untyped-field-dynamic.test.js +6 -4
  335. package/dist/test/unit/typecheck/untyped-field-dynamic.test.js.map +1 -1
  336. package/dist/test/unit/version.test.js +3 -3
  337. package/package.json +4 -3
  338. package/dist/src/core/core_ir_json.d.ts +0 -62
  339. package/dist/src/core/core_ir_json.d.ts.map +0 -1
  340. package/dist/src/core/core_ir_json.js +0 -81
  341. package/dist/src/core/core_ir_json.js.map +0 -1
  342. package/dist/test/unit/core_ir_json/core_ir_json.test.d.ts +0 -2
  343. package/dist/test/unit/core_ir_json/core_ir_json.test.d.ts.map +0 -1
  344. package/dist/test/unit/core_ir_json/core_ir_json.test.js +0 -218
  345. package/dist/test/unit/core_ir_json/core_ir_json.test.js.map +0 -1
@@ -0,0 +1,2636 @@
1
+ /**
2
+ * 本文件由 scripts/generate-core-ir-types.ts 从 shared/core-ir.v2.schema.json 生成,请勿手改。
3
+ * Core IR v2 JSON Schema(ADR 0055 §3)的内置副本,与 shared/ 中的副本深度相等。
4
+ */
5
+ export const CORE_IR_V2_SCHEMA = {
6
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
7
+ "$id": "https://aster-lang.cloud/schema/core-ir/v2",
8
+ "title": "Aster Core IR v2",
9
+ "description": "Core IR v2 的唯一真相源(ADR 0055)。core 与 aster-lang-ts 各持一份逐字节副本,由 sibling parity 测试守护。schema 表达不了的约束见 README「不变式」。",
10
+ "$ref": "#/$defs/Module",
11
+ "$defs": {
12
+ "Int32": {
13
+ "description": "所有 JSON 整数的承载类型(ADR 0055 §3):与 Java int / Integer 一致,落在 CanonicalJson 的 safe integer 范围内。",
14
+ "type": "integer",
15
+ "minimum": -2147483648,
16
+ "maximum": 2147483647
17
+ },
18
+ "SafeInt": {
19
+ "description": "只用于 Timeout.milliseconds(Java long):safe integer 范围,仍以 JSON number 承载。",
20
+ "type": "integer",
21
+ "minimum": -9007199254740991,
22
+ "maximum": 9007199254740991
23
+ },
24
+ "CanonicalDecimal": {
25
+ "description": "规范十进制串(ADR 0055 §5):无指数、无前导零、无尾随零,小数部分全零时省略小数点;不存在 \"-0\"。由 lowering 从源码字面量经任意精度十进制求出。",
26
+ "type": "string",
27
+ "pattern": "^(0|-?[1-9][0-9]*(\\.[0-9]*[1-9])?|-?0\\.[0-9]*[1-9])$"
28
+ },
29
+ "BuiltinEffect": {
30
+ "description": "授权型具体效应名(小写)。pure、async 与未知名都不授权任何效应,lowering 不把它们写入 effects。",
31
+ "enum": [
32
+ "io",
33
+ "cpu"
34
+ ]
35
+ },
36
+ "ReservedEffectName": {
37
+ "description": "保留的效应名:内建效应 io、cpu,以及不授权的 pure、async(core EffectChecker 中 async 是 pure 的废弃别名)。效应参数名按 ASCII 大小写不敏感比较不得落入此集合,由 validateCoreIrInvariants 检查(effect-param-shadows-builtin);EffectVarName 的 pattern 与此集合同步。",
38
+ "enum": [
39
+ "io",
40
+ "cpu",
41
+ "pure",
42
+ "async"
43
+ ]
44
+ },
45
+ "EffectVarName": {
46
+ "description": "Func.effects 中的效应变量名:任意大小写下都不是保留效应名。它是否已在 effectParams 中声明由不变式检查(undeclared-effect-var)。",
47
+ "type": "string",
48
+ "pattern": "^(?!(?:[Ii][Oo]|[Cc][Pp][Uu]|[Pp][Uu][Rr][Ee]|[Aa][Ss][Yy][Nn][Cc])$).+$"
49
+ },
50
+ "Position": {
51
+ "description": "源码位置,行列号均从 1 开始(值域只按 Int32 约束)。",
52
+ "type": "object",
53
+ "properties": {
54
+ "line": {
55
+ "$ref": "#/$defs/Int32"
56
+ },
57
+ "col": {
58
+ "$ref": "#/$defs/Int32"
59
+ }
60
+ },
61
+ "required": [
62
+ "line",
63
+ "col"
64
+ ],
65
+ "additionalProperties": false
66
+ },
67
+ "Origin": {
68
+ "description": "源码范围(ADR 0055 #17):每个带 kind 的节点都必带且非 null(含约束元素)。written / role 是 ADR 0051 的原写法与解析角色,未改写时为 null。",
69
+ "type": "object",
70
+ "properties": {
71
+ "file": {
72
+ "type": [
73
+ "string",
74
+ "null"
75
+ ]
76
+ },
77
+ "start": {
78
+ "$ref": "#/$defs/Position"
79
+ },
80
+ "end": {
81
+ "$ref": "#/$defs/Position"
82
+ },
83
+ "written": {
84
+ "type": [
85
+ "string",
86
+ "null"
87
+ ]
88
+ },
89
+ "role": {
90
+ "enum": [
91
+ "TYPE_DECL",
92
+ "FIELD_DECL",
93
+ "MEMBER_DECL",
94
+ "FUNC_DECL",
95
+ "TYPE",
96
+ "FIELD_REF",
97
+ "MEMBER_REF",
98
+ "FUNC_REF",
99
+ "VALUE_REF",
100
+ "LOCAL",
101
+ null
102
+ ]
103
+ }
104
+ },
105
+ "required": [
106
+ "file",
107
+ "start",
108
+ "end",
109
+ "written",
110
+ "role"
111
+ ],
112
+ "additionalProperties": false
113
+ },
114
+ "Module": {
115
+ "description": "编译单元(根节点)。schemaVersion 是整数 2(ADR 0055 #1、§5);name 在源码没有模块头时为 null;profile 是 ADR 0046 治理档案 id,未声明为 null。",
116
+ "type": "object",
117
+ "properties": {
118
+ "kind": {
119
+ "const": "Module"
120
+ },
121
+ "schemaVersion": {
122
+ "const": 2
123
+ },
124
+ "name": {
125
+ "type": [
126
+ "string",
127
+ "null"
128
+ ]
129
+ },
130
+ "profile": {
131
+ "type": [
132
+ "string",
133
+ "null"
134
+ ]
135
+ },
136
+ "decls": {
137
+ "type": "array",
138
+ "items": {
139
+ "$ref": "#/$defs/Decl"
140
+ }
141
+ },
142
+ "origin": {
143
+ "$ref": "#/$defs/Origin"
144
+ }
145
+ },
146
+ "required": [
147
+ "kind",
148
+ "schemaVersion",
149
+ "name",
150
+ "profile",
151
+ "decls",
152
+ "origin"
153
+ ],
154
+ "additionalProperties": false
155
+ },
156
+ "Decl": {
157
+ "description": "顶层声明。",
158
+ "type": "object",
159
+ "required": [
160
+ "kind"
161
+ ],
162
+ "properties": {
163
+ "kind": {
164
+ "enum": [
165
+ "Import",
166
+ "Data",
167
+ "Enum",
168
+ "Func"
169
+ ]
170
+ }
171
+ },
172
+ "allOf": [
173
+ {
174
+ "if": {
175
+ "required": [
176
+ "kind"
177
+ ],
178
+ "properties": {
179
+ "kind": {
180
+ "const": "Import"
181
+ }
182
+ }
183
+ },
184
+ "then": {
185
+ "$ref": "#/$defs/Import"
186
+ }
187
+ },
188
+ {
189
+ "if": {
190
+ "required": [
191
+ "kind"
192
+ ],
193
+ "properties": {
194
+ "kind": {
195
+ "const": "Data"
196
+ }
197
+ }
198
+ },
199
+ "then": {
200
+ "$ref": "#/$defs/Data"
201
+ }
202
+ },
203
+ {
204
+ "if": {
205
+ "required": [
206
+ "kind"
207
+ ],
208
+ "properties": {
209
+ "kind": {
210
+ "const": "Enum"
211
+ }
212
+ }
213
+ },
214
+ "then": {
215
+ "$ref": "#/$defs/Enum"
216
+ }
217
+ },
218
+ {
219
+ "if": {
220
+ "required": [
221
+ "kind"
222
+ ],
223
+ "properties": {
224
+ "kind": {
225
+ "const": "Func"
226
+ }
227
+ }
228
+ },
229
+ "then": {
230
+ "$ref": "#/$defs/Func"
231
+ }
232
+ }
233
+ ]
234
+ },
235
+ "Import": {
236
+ "description": "导入(ADR 0055 #2):path 为点分模块路径,alias 为绑定名(未写别名为 null),version 为钉住的模块版本(未钉住为 null)。",
237
+ "type": "object",
238
+ "properties": {
239
+ "kind": {
240
+ "const": "Import"
241
+ },
242
+ "path": {
243
+ "type": "string"
244
+ },
245
+ "alias": {
246
+ "type": [
247
+ "string",
248
+ "null"
249
+ ]
250
+ },
251
+ "version": {
252
+ "oneOf": [
253
+ {
254
+ "$ref": "#/$defs/Int32"
255
+ },
256
+ {
257
+ "type": "null"
258
+ }
259
+ ]
260
+ },
261
+ "origin": {
262
+ "$ref": "#/$defs/Origin"
263
+ }
264
+ },
265
+ "required": [
266
+ "kind",
267
+ "path",
268
+ "alias",
269
+ "version",
270
+ "origin"
271
+ ],
272
+ "additionalProperties": false
273
+ },
274
+ "Data": {
275
+ "description": "数据类型声明。",
276
+ "type": "object",
277
+ "properties": {
278
+ "kind": {
279
+ "const": "Data"
280
+ },
281
+ "name": {
282
+ "type": "string"
283
+ },
284
+ "fields": {
285
+ "type": "array",
286
+ "items": {
287
+ "$ref": "#/$defs/Field"
288
+ }
289
+ },
290
+ "origin": {
291
+ "$ref": "#/$defs/Origin"
292
+ }
293
+ },
294
+ "required": [
295
+ "kind",
296
+ "name",
297
+ "fields",
298
+ "origin"
299
+ ],
300
+ "additionalProperties": false
301
+ },
302
+ "Field": {
303
+ "description": "Data 字段。constraints 是源码约束(ADR 0055 #4);typeInferred 为 true 表示 type 只是推断出的占位(#9)。",
304
+ "type": "object",
305
+ "properties": {
306
+ "name": {
307
+ "type": "string"
308
+ },
309
+ "type": {
310
+ "$ref": "#/$defs/Type"
311
+ },
312
+ "annotations": {
313
+ "type": "array",
314
+ "items": {
315
+ "$ref": "#/$defs/Annotation"
316
+ }
317
+ },
318
+ "constraints": {
319
+ "type": "array",
320
+ "items": {
321
+ "$ref": "#/$defs/Constraint"
322
+ }
323
+ },
324
+ "typeInferred": {
325
+ "type": "boolean"
326
+ }
327
+ },
328
+ "required": [
329
+ "name",
330
+ "type",
331
+ "annotations",
332
+ "constraints",
333
+ "typeInferred"
334
+ ],
335
+ "additionalProperties": false
336
+ },
337
+ "Enum": {
338
+ "description": "枚举声明。",
339
+ "type": "object",
340
+ "properties": {
341
+ "kind": {
342
+ "const": "Enum"
343
+ },
344
+ "name": {
345
+ "type": "string"
346
+ },
347
+ "variants": {
348
+ "type": "array",
349
+ "items": {
350
+ "type": "string"
351
+ }
352
+ },
353
+ "origin": {
354
+ "$ref": "#/$defs/Origin"
355
+ }
356
+ },
357
+ "required": [
358
+ "kind",
359
+ "name",
360
+ "variants",
361
+ "origin"
362
+ ],
363
+ "additionalProperties": false
364
+ },
365
+ "Func": {
366
+ "description": "函数 / 规则。typeParams 只列源码声明的类型参数(#10);effects 只含授权型具体效应 io / cpu(小写)与已声明的效应变量,按首次声明顺序、不重复;pure、async 与未知名不写入(#5、#6);inputRefs 是 v2 唯一可空的列表,null 表示未计算、[] 表示已计算且不读任何输入,合法状态由不变式检查(#12)。没有 piiLevel / piiCategories(#8)。",
367
+ "type": "object",
368
+ "properties": {
369
+ "kind": {
370
+ "const": "Func"
371
+ },
372
+ "name": {
373
+ "type": "string"
374
+ },
375
+ "typeParams": {
376
+ "type": "array",
377
+ "items": {
378
+ "type": "string"
379
+ }
380
+ },
381
+ "params": {
382
+ "type": "array",
383
+ "items": {
384
+ "$ref": "#/$defs/Param"
385
+ }
386
+ },
387
+ "ret": {
388
+ "$ref": "#/$defs/Type"
389
+ },
390
+ "retTypeInferred": {
391
+ "type": "boolean"
392
+ },
393
+ "annotations": {
394
+ "type": "array",
395
+ "items": {
396
+ "$ref": "#/$defs/Annotation"
397
+ }
398
+ },
399
+ "retAnnotations": {
400
+ "type": "array",
401
+ "items": {
402
+ "$ref": "#/$defs/Annotation"
403
+ }
404
+ },
405
+ "effects": {
406
+ "type": "array",
407
+ "items": {
408
+ "anyOf": [
409
+ {
410
+ "$ref": "#/$defs/BuiltinEffect"
411
+ },
412
+ {
413
+ "$ref": "#/$defs/EffectVarName"
414
+ }
415
+ ]
416
+ }
417
+ },
418
+ "effectParams": {
419
+ "type": "array",
420
+ "items": {
421
+ "type": "string"
422
+ }
423
+ },
424
+ "effectCaps": {
425
+ "type": "array",
426
+ "items": {
427
+ "type": "string"
428
+ }
429
+ },
430
+ "effectCapsExplicit": {
431
+ "type": "boolean"
432
+ },
433
+ "inputRefs": {
434
+ "oneOf": [
435
+ {
436
+ "type": "array",
437
+ "items": {
438
+ "type": "string"
439
+ }
440
+ },
441
+ {
442
+ "type": "null"
443
+ }
444
+ ]
445
+ },
446
+ "body": {
447
+ "$ref": "#/$defs/Block"
448
+ },
449
+ "origin": {
450
+ "$ref": "#/$defs/Origin"
451
+ }
452
+ },
453
+ "required": [
454
+ "kind",
455
+ "name",
456
+ "typeParams",
457
+ "params",
458
+ "ret",
459
+ "retTypeInferred",
460
+ "annotations",
461
+ "retAnnotations",
462
+ "effects",
463
+ "effectParams",
464
+ "effectCaps",
465
+ "effectCapsExplicit",
466
+ "inputRefs",
467
+ "body",
468
+ "origin"
469
+ ],
470
+ "additionalProperties": false
471
+ },
472
+ "Param": {
473
+ "description": "函数与 Lambda 的形参,字段与 Field 相同。",
474
+ "type": "object",
475
+ "properties": {
476
+ "name": {
477
+ "type": "string"
478
+ },
479
+ "type": {
480
+ "$ref": "#/$defs/Type"
481
+ },
482
+ "annotations": {
483
+ "type": "array",
484
+ "items": {
485
+ "$ref": "#/$defs/Annotation"
486
+ }
487
+ },
488
+ "constraints": {
489
+ "type": "array",
490
+ "items": {
491
+ "$ref": "#/$defs/Constraint"
492
+ }
493
+ },
494
+ "typeInferred": {
495
+ "type": "boolean"
496
+ }
497
+ },
498
+ "required": [
499
+ "name",
500
+ "type",
501
+ "annotations",
502
+ "constraints",
503
+ "typeInferred"
504
+ ],
505
+ "additionalProperties": false
506
+ },
507
+ "Annotation": {
508
+ "description": "注解(ADR 0055 #3):args 是有序数组,保持源码顺序,无参为 []。同一注解内参数名唯一由不变式检查。",
509
+ "type": "object",
510
+ "properties": {
511
+ "name": {
512
+ "type": "string"
513
+ },
514
+ "args": {
515
+ "type": "array",
516
+ "items": {
517
+ "$ref": "#/$defs/AnnotationArg"
518
+ }
519
+ }
520
+ },
521
+ "required": [
522
+ "name",
523
+ "args"
524
+ ],
525
+ "additionalProperties": false
526
+ },
527
+ "AnnotationArg": {
528
+ "description": "注解参数。位置参数按出现顺序命名为 $0、$1…(序号只在位置参数之间计数),具名参数用其名字;value 只能是 string / Int32 / boolean。",
529
+ "type": "object",
530
+ "properties": {
531
+ "name": {
532
+ "type": "string",
533
+ "pattern": "^(\\$(0|[1-9][0-9]*)|[^$].*)$"
534
+ },
535
+ "value": {
536
+ "oneOf": [
537
+ {
538
+ "type": "string"
539
+ },
540
+ {
541
+ "type": "boolean"
542
+ },
543
+ {
544
+ "$ref": "#/$defs/Int32"
545
+ }
546
+ ]
547
+ }
548
+ },
549
+ "required": [
550
+ "name",
551
+ "value"
552
+ ],
553
+ "additionalProperties": false
554
+ },
555
+ "Constraint": {
556
+ "description": "字段 / 形参约束(ADR 0055 #4)。与其它带 kind 的节点一样必带 origin(#17)。",
557
+ "type": "object",
558
+ "required": [
559
+ "kind"
560
+ ],
561
+ "properties": {
562
+ "kind": {
563
+ "enum": [
564
+ "Required",
565
+ "Range",
566
+ "Pattern"
567
+ ]
568
+ }
569
+ },
570
+ "allOf": [
571
+ {
572
+ "if": {
573
+ "required": [
574
+ "kind"
575
+ ],
576
+ "properties": {
577
+ "kind": {
578
+ "const": "Required"
579
+ }
580
+ }
581
+ },
582
+ "then": {
583
+ "$ref": "#/$defs/Required"
584
+ }
585
+ },
586
+ {
587
+ "if": {
588
+ "required": [
589
+ "kind"
590
+ ],
591
+ "properties": {
592
+ "kind": {
593
+ "const": "Range"
594
+ }
595
+ }
596
+ },
597
+ "then": {
598
+ "$ref": "#/$defs/Range"
599
+ }
600
+ },
601
+ {
602
+ "if": {
603
+ "required": [
604
+ "kind"
605
+ ],
606
+ "properties": {
607
+ "kind": {
608
+ "const": "Pattern"
609
+ }
610
+ }
611
+ },
612
+ "then": {
613
+ "$ref": "#/$defs/Pattern"
614
+ }
615
+ }
616
+ ]
617
+ },
618
+ "Required": {
619
+ "description": "必填约束。",
620
+ "type": "object",
621
+ "properties": {
622
+ "kind": {
623
+ "const": "Required"
624
+ },
625
+ "origin": {
626
+ "$ref": "#/$defs/Origin"
627
+ }
628
+ },
629
+ "required": [
630
+ "kind",
631
+ "origin"
632
+ ],
633
+ "additionalProperties": false
634
+ },
635
+ "Range": {
636
+ "description": "范围约束:min / max 是规范十进制串,至少一个非 null。",
637
+ "type": "object",
638
+ "properties": {
639
+ "kind": {
640
+ "const": "Range"
641
+ },
642
+ "min": {
643
+ "oneOf": [
644
+ {
645
+ "$ref": "#/$defs/CanonicalDecimal"
646
+ },
647
+ {
648
+ "type": "null"
649
+ }
650
+ ]
651
+ },
652
+ "max": {
653
+ "oneOf": [
654
+ {
655
+ "$ref": "#/$defs/CanonicalDecimal"
656
+ },
657
+ {
658
+ "type": "null"
659
+ }
660
+ ]
661
+ },
662
+ "origin": {
663
+ "$ref": "#/$defs/Origin"
664
+ }
665
+ },
666
+ "required": [
667
+ "kind",
668
+ "min",
669
+ "max",
670
+ "origin"
671
+ ],
672
+ "additionalProperties": false,
673
+ "not": {
674
+ "properties": {
675
+ "min": {
676
+ "type": "null"
677
+ },
678
+ "max": {
679
+ "type": "null"
680
+ }
681
+ }
682
+ }
683
+ },
684
+ "Pattern": {
685
+ "description": "正则约束(源码 matching \"…\")。",
686
+ "type": "object",
687
+ "properties": {
688
+ "kind": {
689
+ "const": "Pattern"
690
+ },
691
+ "regexp": {
692
+ "type": "string"
693
+ },
694
+ "origin": {
695
+ "$ref": "#/$defs/Origin"
696
+ }
697
+ },
698
+ "required": [
699
+ "kind",
700
+ "regexp",
701
+ "origin"
702
+ ],
703
+ "additionalProperties": false
704
+ },
705
+ "Type": {
706
+ "description": "类型表达式。所有类型节点都带 origin(ADR 0055 #17)。",
707
+ "type": "object",
708
+ "required": [
709
+ "kind"
710
+ ],
711
+ "properties": {
712
+ "kind": {
713
+ "enum": [
714
+ "TypeName",
715
+ "TypeVar",
716
+ "TypeApp",
717
+ "Result",
718
+ "Maybe",
719
+ "Option",
720
+ "List",
721
+ "Map",
722
+ "FuncType",
723
+ "PiiType"
724
+ ]
725
+ }
726
+ },
727
+ "allOf": [
728
+ {
729
+ "if": {
730
+ "required": [
731
+ "kind"
732
+ ],
733
+ "properties": {
734
+ "kind": {
735
+ "const": "TypeName"
736
+ }
737
+ }
738
+ },
739
+ "then": {
740
+ "$ref": "#/$defs/TypeName"
741
+ }
742
+ },
743
+ {
744
+ "if": {
745
+ "required": [
746
+ "kind"
747
+ ],
748
+ "properties": {
749
+ "kind": {
750
+ "const": "TypeVar"
751
+ }
752
+ }
753
+ },
754
+ "then": {
755
+ "$ref": "#/$defs/TypeVar"
756
+ }
757
+ },
758
+ {
759
+ "if": {
760
+ "required": [
761
+ "kind"
762
+ ],
763
+ "properties": {
764
+ "kind": {
765
+ "const": "TypeApp"
766
+ }
767
+ }
768
+ },
769
+ "then": {
770
+ "$ref": "#/$defs/TypeApp"
771
+ }
772
+ },
773
+ {
774
+ "if": {
775
+ "required": [
776
+ "kind"
777
+ ],
778
+ "properties": {
779
+ "kind": {
780
+ "const": "Result"
781
+ }
782
+ }
783
+ },
784
+ "then": {
785
+ "$ref": "#/$defs/Result"
786
+ }
787
+ },
788
+ {
789
+ "if": {
790
+ "required": [
791
+ "kind"
792
+ ],
793
+ "properties": {
794
+ "kind": {
795
+ "const": "Maybe"
796
+ }
797
+ }
798
+ },
799
+ "then": {
800
+ "$ref": "#/$defs/Maybe"
801
+ }
802
+ },
803
+ {
804
+ "if": {
805
+ "required": [
806
+ "kind"
807
+ ],
808
+ "properties": {
809
+ "kind": {
810
+ "const": "Option"
811
+ }
812
+ }
813
+ },
814
+ "then": {
815
+ "$ref": "#/$defs/Option"
816
+ }
817
+ },
818
+ {
819
+ "if": {
820
+ "required": [
821
+ "kind"
822
+ ],
823
+ "properties": {
824
+ "kind": {
825
+ "const": "List"
826
+ }
827
+ }
828
+ },
829
+ "then": {
830
+ "$ref": "#/$defs/List"
831
+ }
832
+ },
833
+ {
834
+ "if": {
835
+ "required": [
836
+ "kind"
837
+ ],
838
+ "properties": {
839
+ "kind": {
840
+ "const": "Map"
841
+ }
842
+ }
843
+ },
844
+ "then": {
845
+ "$ref": "#/$defs/Map"
846
+ }
847
+ },
848
+ {
849
+ "if": {
850
+ "required": [
851
+ "kind"
852
+ ],
853
+ "properties": {
854
+ "kind": {
855
+ "const": "FuncType"
856
+ }
857
+ }
858
+ },
859
+ "then": {
860
+ "$ref": "#/$defs/FuncType"
861
+ }
862
+ },
863
+ {
864
+ "if": {
865
+ "required": [
866
+ "kind"
867
+ ],
868
+ "properties": {
869
+ "kind": {
870
+ "const": "PiiType"
871
+ }
872
+ }
873
+ },
874
+ "then": {
875
+ "$ref": "#/$defs/PiiType"
876
+ }
877
+ }
878
+ ]
879
+ },
880
+ "TypeName": {
881
+ "description": "具名类型。",
882
+ "type": "object",
883
+ "properties": {
884
+ "kind": {
885
+ "const": "TypeName"
886
+ },
887
+ "name": {
888
+ "type": "string"
889
+ },
890
+ "origin": {
891
+ "$ref": "#/$defs/Origin"
892
+ }
893
+ },
894
+ "required": [
895
+ "kind",
896
+ "name",
897
+ "origin"
898
+ ],
899
+ "additionalProperties": false
900
+ },
901
+ "TypeVar": {
902
+ "description": "类型变量。",
903
+ "type": "object",
904
+ "properties": {
905
+ "kind": {
906
+ "const": "TypeVar"
907
+ },
908
+ "name": {
909
+ "type": "string"
910
+ },
911
+ "origin": {
912
+ "$ref": "#/$defs/Origin"
913
+ }
914
+ },
915
+ "required": [
916
+ "kind",
917
+ "name",
918
+ "origin"
919
+ ],
920
+ "additionalProperties": false
921
+ },
922
+ "TypeApp": {
923
+ "description": "类型应用。",
924
+ "type": "object",
925
+ "properties": {
926
+ "kind": {
927
+ "const": "TypeApp"
928
+ },
929
+ "base": {
930
+ "type": "string"
931
+ },
932
+ "args": {
933
+ "type": "array",
934
+ "items": {
935
+ "$ref": "#/$defs/Type"
936
+ }
937
+ },
938
+ "origin": {
939
+ "$ref": "#/$defs/Origin"
940
+ }
941
+ },
942
+ "required": [
943
+ "kind",
944
+ "base",
945
+ "args",
946
+ "origin"
947
+ ],
948
+ "additionalProperties": false
949
+ },
950
+ "Result": {
951
+ "description": "结果类型。",
952
+ "type": "object",
953
+ "properties": {
954
+ "kind": {
955
+ "const": "Result"
956
+ },
957
+ "ok": {
958
+ "$ref": "#/$defs/Type"
959
+ },
960
+ "err": {
961
+ "$ref": "#/$defs/Type"
962
+ },
963
+ "origin": {
964
+ "$ref": "#/$defs/Origin"
965
+ }
966
+ },
967
+ "required": [
968
+ "kind",
969
+ "ok",
970
+ "err",
971
+ "origin"
972
+ ],
973
+ "additionalProperties": false
974
+ },
975
+ "Maybe": {
976
+ "description": "可空类型。",
977
+ "type": "object",
978
+ "properties": {
979
+ "kind": {
980
+ "const": "Maybe"
981
+ },
982
+ "type": {
983
+ "$ref": "#/$defs/Type"
984
+ },
985
+ "origin": {
986
+ "$ref": "#/$defs/Origin"
987
+ }
988
+ },
989
+ "required": [
990
+ "kind",
991
+ "type",
992
+ "origin"
993
+ ],
994
+ "additionalProperties": false
995
+ },
996
+ "Option": {
997
+ "description": "选项类型。",
998
+ "type": "object",
999
+ "properties": {
1000
+ "kind": {
1001
+ "const": "Option"
1002
+ },
1003
+ "type": {
1004
+ "$ref": "#/$defs/Type"
1005
+ },
1006
+ "origin": {
1007
+ "$ref": "#/$defs/Origin"
1008
+ }
1009
+ },
1010
+ "required": [
1011
+ "kind",
1012
+ "type",
1013
+ "origin"
1014
+ ],
1015
+ "additionalProperties": false
1016
+ },
1017
+ "List": {
1018
+ "description": "列表类型。",
1019
+ "type": "object",
1020
+ "properties": {
1021
+ "kind": {
1022
+ "const": "List"
1023
+ },
1024
+ "type": {
1025
+ "$ref": "#/$defs/Type"
1026
+ },
1027
+ "origin": {
1028
+ "$ref": "#/$defs/Origin"
1029
+ }
1030
+ },
1031
+ "required": [
1032
+ "kind",
1033
+ "type",
1034
+ "origin"
1035
+ ],
1036
+ "additionalProperties": false
1037
+ },
1038
+ "Map": {
1039
+ "description": "映射类型。",
1040
+ "type": "object",
1041
+ "properties": {
1042
+ "kind": {
1043
+ "const": "Map"
1044
+ },
1045
+ "key": {
1046
+ "$ref": "#/$defs/Type"
1047
+ },
1048
+ "val": {
1049
+ "$ref": "#/$defs/Type"
1050
+ },
1051
+ "origin": {
1052
+ "$ref": "#/$defs/Origin"
1053
+ }
1054
+ },
1055
+ "required": [
1056
+ "kind",
1057
+ "key",
1058
+ "val",
1059
+ "origin"
1060
+ ],
1061
+ "additionalProperties": false
1062
+ },
1063
+ "FuncType": {
1064
+ "description": "函数类型。",
1065
+ "type": "object",
1066
+ "properties": {
1067
+ "kind": {
1068
+ "const": "FuncType"
1069
+ },
1070
+ "params": {
1071
+ "type": "array",
1072
+ "items": {
1073
+ "$ref": "#/$defs/Type"
1074
+ }
1075
+ },
1076
+ "ret": {
1077
+ "$ref": "#/$defs/Type"
1078
+ },
1079
+ "origin": {
1080
+ "$ref": "#/$defs/Origin"
1081
+ }
1082
+ },
1083
+ "required": [
1084
+ "kind",
1085
+ "params",
1086
+ "ret",
1087
+ "origin"
1088
+ ],
1089
+ "additionalProperties": false
1090
+ },
1091
+ "PiiType": {
1092
+ "description": "PII 类型包装。",
1093
+ "type": "object",
1094
+ "properties": {
1095
+ "kind": {
1096
+ "const": "PiiType"
1097
+ },
1098
+ "baseType": {
1099
+ "$ref": "#/$defs/Type"
1100
+ },
1101
+ "sensitivity": {
1102
+ "type": "string"
1103
+ },
1104
+ "category": {
1105
+ "type": "string"
1106
+ },
1107
+ "origin": {
1108
+ "$ref": "#/$defs/Origin"
1109
+ }
1110
+ },
1111
+ "required": [
1112
+ "kind",
1113
+ "baseType",
1114
+ "sensitivity",
1115
+ "category",
1116
+ "origin"
1117
+ ],
1118
+ "additionalProperties": false
1119
+ },
1120
+ "Stmt": {
1121
+ "description": "语句。",
1122
+ "type": "object",
1123
+ "required": [
1124
+ "kind"
1125
+ ],
1126
+ "properties": {
1127
+ "kind": {
1128
+ "enum": [
1129
+ "Let",
1130
+ "Set",
1131
+ "Return",
1132
+ "If",
1133
+ "Match",
1134
+ "Scope",
1135
+ "Block",
1136
+ "Start",
1137
+ "Wait",
1138
+ "workflow"
1139
+ ]
1140
+ }
1141
+ },
1142
+ "allOf": [
1143
+ {
1144
+ "if": {
1145
+ "required": [
1146
+ "kind"
1147
+ ],
1148
+ "properties": {
1149
+ "kind": {
1150
+ "const": "Let"
1151
+ }
1152
+ }
1153
+ },
1154
+ "then": {
1155
+ "$ref": "#/$defs/Let"
1156
+ }
1157
+ },
1158
+ {
1159
+ "if": {
1160
+ "required": [
1161
+ "kind"
1162
+ ],
1163
+ "properties": {
1164
+ "kind": {
1165
+ "const": "Set"
1166
+ }
1167
+ }
1168
+ },
1169
+ "then": {
1170
+ "$ref": "#/$defs/Set"
1171
+ }
1172
+ },
1173
+ {
1174
+ "if": {
1175
+ "required": [
1176
+ "kind"
1177
+ ],
1178
+ "properties": {
1179
+ "kind": {
1180
+ "const": "Return"
1181
+ }
1182
+ }
1183
+ },
1184
+ "then": {
1185
+ "$ref": "#/$defs/Return"
1186
+ }
1187
+ },
1188
+ {
1189
+ "if": {
1190
+ "required": [
1191
+ "kind"
1192
+ ],
1193
+ "properties": {
1194
+ "kind": {
1195
+ "const": "If"
1196
+ }
1197
+ }
1198
+ },
1199
+ "then": {
1200
+ "$ref": "#/$defs/If"
1201
+ }
1202
+ },
1203
+ {
1204
+ "if": {
1205
+ "required": [
1206
+ "kind"
1207
+ ],
1208
+ "properties": {
1209
+ "kind": {
1210
+ "const": "Match"
1211
+ }
1212
+ }
1213
+ },
1214
+ "then": {
1215
+ "$ref": "#/$defs/Match"
1216
+ }
1217
+ },
1218
+ {
1219
+ "if": {
1220
+ "required": [
1221
+ "kind"
1222
+ ],
1223
+ "properties": {
1224
+ "kind": {
1225
+ "const": "Scope"
1226
+ }
1227
+ }
1228
+ },
1229
+ "then": {
1230
+ "$ref": "#/$defs/Scope"
1231
+ }
1232
+ },
1233
+ {
1234
+ "if": {
1235
+ "required": [
1236
+ "kind"
1237
+ ],
1238
+ "properties": {
1239
+ "kind": {
1240
+ "const": "Block"
1241
+ }
1242
+ }
1243
+ },
1244
+ "then": {
1245
+ "$ref": "#/$defs/Block"
1246
+ }
1247
+ },
1248
+ {
1249
+ "if": {
1250
+ "required": [
1251
+ "kind"
1252
+ ],
1253
+ "properties": {
1254
+ "kind": {
1255
+ "const": "Start"
1256
+ }
1257
+ }
1258
+ },
1259
+ "then": {
1260
+ "$ref": "#/$defs/Start"
1261
+ }
1262
+ },
1263
+ {
1264
+ "if": {
1265
+ "required": [
1266
+ "kind"
1267
+ ],
1268
+ "properties": {
1269
+ "kind": {
1270
+ "const": "Wait"
1271
+ }
1272
+ }
1273
+ },
1274
+ "then": {
1275
+ "$ref": "#/$defs/Wait"
1276
+ }
1277
+ },
1278
+ {
1279
+ "if": {
1280
+ "required": [
1281
+ "kind"
1282
+ ],
1283
+ "properties": {
1284
+ "kind": {
1285
+ "const": "workflow"
1286
+ }
1287
+ }
1288
+ },
1289
+ "then": {
1290
+ "$ref": "#/$defs/Workflow"
1291
+ }
1292
+ }
1293
+ ]
1294
+ },
1295
+ "Let": {
1296
+ "description": "变量绑定。",
1297
+ "type": "object",
1298
+ "properties": {
1299
+ "kind": {
1300
+ "const": "Let"
1301
+ },
1302
+ "name": {
1303
+ "type": "string"
1304
+ },
1305
+ "expr": {
1306
+ "$ref": "#/$defs/Expr"
1307
+ },
1308
+ "origin": {
1309
+ "$ref": "#/$defs/Origin"
1310
+ }
1311
+ },
1312
+ "required": [
1313
+ "kind",
1314
+ "name",
1315
+ "expr",
1316
+ "origin"
1317
+ ],
1318
+ "additionalProperties": false
1319
+ },
1320
+ "Set": {
1321
+ "description": "赋值。",
1322
+ "type": "object",
1323
+ "properties": {
1324
+ "kind": {
1325
+ "const": "Set"
1326
+ },
1327
+ "name": {
1328
+ "type": "string"
1329
+ },
1330
+ "expr": {
1331
+ "$ref": "#/$defs/Expr"
1332
+ },
1333
+ "origin": {
1334
+ "$ref": "#/$defs/Origin"
1335
+ }
1336
+ },
1337
+ "required": [
1338
+ "kind",
1339
+ "name",
1340
+ "expr",
1341
+ "origin"
1342
+ ],
1343
+ "additionalProperties": false
1344
+ },
1345
+ "Return": {
1346
+ "description": "返回。",
1347
+ "type": "object",
1348
+ "properties": {
1349
+ "kind": {
1350
+ "const": "Return"
1351
+ },
1352
+ "expr": {
1353
+ "$ref": "#/$defs/Expr"
1354
+ },
1355
+ "origin": {
1356
+ "$ref": "#/$defs/Origin"
1357
+ }
1358
+ },
1359
+ "required": [
1360
+ "kind",
1361
+ "expr",
1362
+ "origin"
1363
+ ],
1364
+ "additionalProperties": false
1365
+ },
1366
+ "If": {
1367
+ "description": "条件语句:没有 else 分支时 elseBlock 为 null。",
1368
+ "type": "object",
1369
+ "properties": {
1370
+ "kind": {
1371
+ "const": "If"
1372
+ },
1373
+ "cond": {
1374
+ "$ref": "#/$defs/Expr"
1375
+ },
1376
+ "thenBlock": {
1377
+ "$ref": "#/$defs/Block"
1378
+ },
1379
+ "elseBlock": {
1380
+ "oneOf": [
1381
+ {
1382
+ "$ref": "#/$defs/Block"
1383
+ },
1384
+ {
1385
+ "type": "null"
1386
+ }
1387
+ ]
1388
+ },
1389
+ "origin": {
1390
+ "$ref": "#/$defs/Origin"
1391
+ }
1392
+ },
1393
+ "required": [
1394
+ "kind",
1395
+ "cond",
1396
+ "thenBlock",
1397
+ "elseBlock",
1398
+ "origin"
1399
+ ],
1400
+ "additionalProperties": false
1401
+ },
1402
+ "Match": {
1403
+ "description": "模式匹配。",
1404
+ "type": "object",
1405
+ "properties": {
1406
+ "kind": {
1407
+ "const": "Match"
1408
+ },
1409
+ "expr": {
1410
+ "$ref": "#/$defs/Expr"
1411
+ },
1412
+ "cases": {
1413
+ "type": "array",
1414
+ "items": {
1415
+ "$ref": "#/$defs/Case"
1416
+ }
1417
+ },
1418
+ "origin": {
1419
+ "$ref": "#/$defs/Origin"
1420
+ }
1421
+ },
1422
+ "required": [
1423
+ "kind",
1424
+ "expr",
1425
+ "cases",
1426
+ "origin"
1427
+ ],
1428
+ "additionalProperties": false
1429
+ },
1430
+ "Case": {
1431
+ "description": "匹配分支。",
1432
+ "type": "object",
1433
+ "properties": {
1434
+ "kind": {
1435
+ "const": "Case"
1436
+ },
1437
+ "pattern": {
1438
+ "$ref": "#/$defs/Pat"
1439
+ },
1440
+ "body": {
1441
+ "$ref": "#/$defs/CaseBody"
1442
+ },
1443
+ "origin": {
1444
+ "$ref": "#/$defs/Origin"
1445
+ }
1446
+ },
1447
+ "required": [
1448
+ "kind",
1449
+ "pattern",
1450
+ "body",
1451
+ "origin"
1452
+ ],
1453
+ "additionalProperties": false
1454
+ },
1455
+ "CaseBody": {
1456
+ "description": "匹配分支体:Return 或 Block。",
1457
+ "type": "object",
1458
+ "required": [
1459
+ "kind"
1460
+ ],
1461
+ "properties": {
1462
+ "kind": {
1463
+ "enum": [
1464
+ "Return",
1465
+ "Block"
1466
+ ]
1467
+ }
1468
+ },
1469
+ "allOf": [
1470
+ {
1471
+ "if": {
1472
+ "required": [
1473
+ "kind"
1474
+ ],
1475
+ "properties": {
1476
+ "kind": {
1477
+ "const": "Return"
1478
+ }
1479
+ }
1480
+ },
1481
+ "then": {
1482
+ "$ref": "#/$defs/Return"
1483
+ }
1484
+ },
1485
+ {
1486
+ "if": {
1487
+ "required": [
1488
+ "kind"
1489
+ ],
1490
+ "properties": {
1491
+ "kind": {
1492
+ "const": "Block"
1493
+ }
1494
+ }
1495
+ },
1496
+ "then": {
1497
+ "$ref": "#/$defs/Block"
1498
+ }
1499
+ }
1500
+ ]
1501
+ },
1502
+ "Scope": {
1503
+ "description": "作用域。",
1504
+ "type": "object",
1505
+ "properties": {
1506
+ "kind": {
1507
+ "const": "Scope"
1508
+ },
1509
+ "statements": {
1510
+ "type": "array",
1511
+ "items": {
1512
+ "$ref": "#/$defs/Stmt"
1513
+ }
1514
+ },
1515
+ "origin": {
1516
+ "$ref": "#/$defs/Origin"
1517
+ }
1518
+ },
1519
+ "required": [
1520
+ "kind",
1521
+ "statements",
1522
+ "origin"
1523
+ ],
1524
+ "additionalProperties": false
1525
+ },
1526
+ "Block": {
1527
+ "description": "代码块。",
1528
+ "type": "object",
1529
+ "properties": {
1530
+ "kind": {
1531
+ "const": "Block"
1532
+ },
1533
+ "statements": {
1534
+ "type": "array",
1535
+ "items": {
1536
+ "$ref": "#/$defs/Stmt"
1537
+ }
1538
+ },
1539
+ "origin": {
1540
+ "$ref": "#/$defs/Origin"
1541
+ }
1542
+ },
1543
+ "required": [
1544
+ "kind",
1545
+ "statements",
1546
+ "origin"
1547
+ ],
1548
+ "additionalProperties": false
1549
+ },
1550
+ "Start": {
1551
+ "description": "启动异步任务。",
1552
+ "type": "object",
1553
+ "properties": {
1554
+ "kind": {
1555
+ "const": "Start"
1556
+ },
1557
+ "name": {
1558
+ "type": "string"
1559
+ },
1560
+ "expr": {
1561
+ "$ref": "#/$defs/Expr"
1562
+ },
1563
+ "origin": {
1564
+ "$ref": "#/$defs/Origin"
1565
+ }
1566
+ },
1567
+ "required": [
1568
+ "kind",
1569
+ "name",
1570
+ "expr",
1571
+ "origin"
1572
+ ],
1573
+ "additionalProperties": false
1574
+ },
1575
+ "Wait": {
1576
+ "description": "等待异步任务。",
1577
+ "type": "object",
1578
+ "properties": {
1579
+ "kind": {
1580
+ "const": "Wait"
1581
+ },
1582
+ "names": {
1583
+ "type": "array",
1584
+ "items": {
1585
+ "type": "string"
1586
+ }
1587
+ },
1588
+ "origin": {
1589
+ "$ref": "#/$defs/Origin"
1590
+ }
1591
+ },
1592
+ "required": [
1593
+ "kind",
1594
+ "names",
1595
+ "origin"
1596
+ ],
1597
+ "additionalProperties": false
1598
+ },
1599
+ "Workflow": {
1600
+ "description": "工作流(kind 为小写 workflow):未声明重试 / 超时时 retry / timeout 为 null。",
1601
+ "type": "object",
1602
+ "properties": {
1603
+ "kind": {
1604
+ "const": "workflow"
1605
+ },
1606
+ "steps": {
1607
+ "type": "array",
1608
+ "items": {
1609
+ "$ref": "#/$defs/Step"
1610
+ }
1611
+ },
1612
+ "effectCaps": {
1613
+ "type": "array",
1614
+ "items": {
1615
+ "type": "string"
1616
+ }
1617
+ },
1618
+ "retry": {
1619
+ "oneOf": [
1620
+ {
1621
+ "$ref": "#/$defs/RetryPolicy"
1622
+ },
1623
+ {
1624
+ "type": "null"
1625
+ }
1626
+ ]
1627
+ },
1628
+ "timeout": {
1629
+ "oneOf": [
1630
+ {
1631
+ "$ref": "#/$defs/Timeout"
1632
+ },
1633
+ {
1634
+ "type": "null"
1635
+ }
1636
+ ]
1637
+ },
1638
+ "origin": {
1639
+ "$ref": "#/$defs/Origin"
1640
+ }
1641
+ },
1642
+ "required": [
1643
+ "kind",
1644
+ "steps",
1645
+ "effectCaps",
1646
+ "retry",
1647
+ "timeout",
1648
+ "origin"
1649
+ ],
1650
+ "additionalProperties": false
1651
+ },
1652
+ "Step": {
1653
+ "description": "工作流步骤(kind 为小写 step):没有补偿块时 compensate 为 null。",
1654
+ "type": "object",
1655
+ "properties": {
1656
+ "kind": {
1657
+ "const": "step"
1658
+ },
1659
+ "name": {
1660
+ "type": "string"
1661
+ },
1662
+ "body": {
1663
+ "$ref": "#/$defs/Block"
1664
+ },
1665
+ "compensate": {
1666
+ "oneOf": [
1667
+ {
1668
+ "$ref": "#/$defs/Block"
1669
+ },
1670
+ {
1671
+ "type": "null"
1672
+ }
1673
+ ]
1674
+ },
1675
+ "dependencies": {
1676
+ "type": "array",
1677
+ "items": {
1678
+ "type": "string"
1679
+ }
1680
+ },
1681
+ "effectCaps": {
1682
+ "type": "array",
1683
+ "items": {
1684
+ "type": "string"
1685
+ }
1686
+ },
1687
+ "origin": {
1688
+ "$ref": "#/$defs/Origin"
1689
+ }
1690
+ },
1691
+ "required": [
1692
+ "kind",
1693
+ "name",
1694
+ "body",
1695
+ "compensate",
1696
+ "dependencies",
1697
+ "effectCaps",
1698
+ "origin"
1699
+ ],
1700
+ "additionalProperties": false
1701
+ },
1702
+ "RetryPolicy": {
1703
+ "description": "重试策略。",
1704
+ "type": "object",
1705
+ "properties": {
1706
+ "maxAttempts": {
1707
+ "$ref": "#/$defs/Int32"
1708
+ },
1709
+ "backoff": {
1710
+ "enum": [
1711
+ "exponential",
1712
+ "linear"
1713
+ ]
1714
+ }
1715
+ },
1716
+ "required": [
1717
+ "maxAttempts",
1718
+ "backoff"
1719
+ ],
1720
+ "additionalProperties": false
1721
+ },
1722
+ "Timeout": {
1723
+ "description": "超时(毫秒)。",
1724
+ "type": "object",
1725
+ "properties": {
1726
+ "milliseconds": {
1727
+ "$ref": "#/$defs/SafeInt"
1728
+ }
1729
+ },
1730
+ "required": [
1731
+ "milliseconds"
1732
+ ],
1733
+ "additionalProperties": false
1734
+ },
1735
+ "Pat": {
1736
+ "description": "匹配模式。",
1737
+ "type": "object",
1738
+ "required": [
1739
+ "kind"
1740
+ ],
1741
+ "properties": {
1742
+ "kind": {
1743
+ "enum": [
1744
+ "PatNull",
1745
+ "PatCtor",
1746
+ "PatName",
1747
+ "PatInt"
1748
+ ]
1749
+ }
1750
+ },
1751
+ "allOf": [
1752
+ {
1753
+ "if": {
1754
+ "required": [
1755
+ "kind"
1756
+ ],
1757
+ "properties": {
1758
+ "kind": {
1759
+ "const": "PatNull"
1760
+ }
1761
+ }
1762
+ },
1763
+ "then": {
1764
+ "$ref": "#/$defs/PatNull"
1765
+ }
1766
+ },
1767
+ {
1768
+ "if": {
1769
+ "required": [
1770
+ "kind"
1771
+ ],
1772
+ "properties": {
1773
+ "kind": {
1774
+ "const": "PatCtor"
1775
+ }
1776
+ }
1777
+ },
1778
+ "then": {
1779
+ "$ref": "#/$defs/PatCtor"
1780
+ }
1781
+ },
1782
+ {
1783
+ "if": {
1784
+ "required": [
1785
+ "kind"
1786
+ ],
1787
+ "properties": {
1788
+ "kind": {
1789
+ "const": "PatName"
1790
+ }
1791
+ }
1792
+ },
1793
+ "then": {
1794
+ "$ref": "#/$defs/PatName"
1795
+ }
1796
+ },
1797
+ {
1798
+ "if": {
1799
+ "required": [
1800
+ "kind"
1801
+ ],
1802
+ "properties": {
1803
+ "kind": {
1804
+ "const": "PatInt"
1805
+ }
1806
+ }
1807
+ },
1808
+ "then": {
1809
+ "$ref": "#/$defs/PatInt"
1810
+ }
1811
+ }
1812
+ ]
1813
+ },
1814
+ "PatNull": {
1815
+ "description": "null 模式。",
1816
+ "type": "object",
1817
+ "properties": {
1818
+ "kind": {
1819
+ "const": "PatNull"
1820
+ },
1821
+ "origin": {
1822
+ "$ref": "#/$defs/Origin"
1823
+ }
1824
+ },
1825
+ "required": [
1826
+ "kind",
1827
+ "origin"
1828
+ ],
1829
+ "additionalProperties": false
1830
+ },
1831
+ "PatCtor": {
1832
+ "description": "构造器 / 枚举变体模式(ADR 0055 #15、#16):0 参变体为 args:[];没有 names。",
1833
+ "type": "object",
1834
+ "properties": {
1835
+ "kind": {
1836
+ "const": "PatCtor"
1837
+ },
1838
+ "typeName": {
1839
+ "type": "string"
1840
+ },
1841
+ "args": {
1842
+ "type": "array",
1843
+ "items": {
1844
+ "$ref": "#/$defs/Pat"
1845
+ }
1846
+ },
1847
+ "origin": {
1848
+ "$ref": "#/$defs/Origin"
1849
+ }
1850
+ },
1851
+ "required": [
1852
+ "kind",
1853
+ "typeName",
1854
+ "args",
1855
+ "origin"
1856
+ ],
1857
+ "additionalProperties": false
1858
+ },
1859
+ "PatName": {
1860
+ "description": "绑定模式,只用于绑定(#16)。",
1861
+ "type": "object",
1862
+ "properties": {
1863
+ "kind": {
1864
+ "const": "PatName"
1865
+ },
1866
+ "name": {
1867
+ "type": "string"
1868
+ },
1869
+ "origin": {
1870
+ "$ref": "#/$defs/Origin"
1871
+ }
1872
+ },
1873
+ "required": [
1874
+ "kind",
1875
+ "name",
1876
+ "origin"
1877
+ ],
1878
+ "additionalProperties": false
1879
+ },
1880
+ "PatInt": {
1881
+ "description": "整数模式。",
1882
+ "type": "object",
1883
+ "properties": {
1884
+ "kind": {
1885
+ "const": "PatInt"
1886
+ },
1887
+ "value": {
1888
+ "$ref": "#/$defs/Int32"
1889
+ },
1890
+ "origin": {
1891
+ "$ref": "#/$defs/Origin"
1892
+ }
1893
+ },
1894
+ "required": [
1895
+ "kind",
1896
+ "value",
1897
+ "origin"
1898
+ ],
1899
+ "additionalProperties": false
1900
+ },
1901
+ "Expr": {
1902
+ "description": "表达式。",
1903
+ "type": "object",
1904
+ "required": [
1905
+ "kind"
1906
+ ],
1907
+ "properties": {
1908
+ "kind": {
1909
+ "enum": [
1910
+ "Name",
1911
+ "Bool",
1912
+ "Int",
1913
+ "Long",
1914
+ "Double",
1915
+ "Decimal",
1916
+ "String",
1917
+ "Null",
1918
+ "Ok",
1919
+ "Err",
1920
+ "Some",
1921
+ "None",
1922
+ "Construct",
1923
+ "Call",
1924
+ "Lambda",
1925
+ "Await",
1926
+ "IfExpr",
1927
+ "ListLit"
1928
+ ]
1929
+ }
1930
+ },
1931
+ "allOf": [
1932
+ {
1933
+ "if": {
1934
+ "required": [
1935
+ "kind"
1936
+ ],
1937
+ "properties": {
1938
+ "kind": {
1939
+ "const": "Name"
1940
+ }
1941
+ }
1942
+ },
1943
+ "then": {
1944
+ "$ref": "#/$defs/Name"
1945
+ }
1946
+ },
1947
+ {
1948
+ "if": {
1949
+ "required": [
1950
+ "kind"
1951
+ ],
1952
+ "properties": {
1953
+ "kind": {
1954
+ "const": "Bool"
1955
+ }
1956
+ }
1957
+ },
1958
+ "then": {
1959
+ "$ref": "#/$defs/Bool"
1960
+ }
1961
+ },
1962
+ {
1963
+ "if": {
1964
+ "required": [
1965
+ "kind"
1966
+ ],
1967
+ "properties": {
1968
+ "kind": {
1969
+ "const": "Int"
1970
+ }
1971
+ }
1972
+ },
1973
+ "then": {
1974
+ "$ref": "#/$defs/Int"
1975
+ }
1976
+ },
1977
+ {
1978
+ "if": {
1979
+ "required": [
1980
+ "kind"
1981
+ ],
1982
+ "properties": {
1983
+ "kind": {
1984
+ "const": "Long"
1985
+ }
1986
+ }
1987
+ },
1988
+ "then": {
1989
+ "$ref": "#/$defs/Long"
1990
+ }
1991
+ },
1992
+ {
1993
+ "if": {
1994
+ "required": [
1995
+ "kind"
1996
+ ],
1997
+ "properties": {
1998
+ "kind": {
1999
+ "const": "Double"
2000
+ }
2001
+ }
2002
+ },
2003
+ "then": {
2004
+ "$ref": "#/$defs/Double"
2005
+ }
2006
+ },
2007
+ {
2008
+ "if": {
2009
+ "required": [
2010
+ "kind"
2011
+ ],
2012
+ "properties": {
2013
+ "kind": {
2014
+ "const": "Decimal"
2015
+ }
2016
+ }
2017
+ },
2018
+ "then": {
2019
+ "$ref": "#/$defs/Decimal"
2020
+ }
2021
+ },
2022
+ {
2023
+ "if": {
2024
+ "required": [
2025
+ "kind"
2026
+ ],
2027
+ "properties": {
2028
+ "kind": {
2029
+ "const": "String"
2030
+ }
2031
+ }
2032
+ },
2033
+ "then": {
2034
+ "$ref": "#/$defs/String"
2035
+ }
2036
+ },
2037
+ {
2038
+ "if": {
2039
+ "required": [
2040
+ "kind"
2041
+ ],
2042
+ "properties": {
2043
+ "kind": {
2044
+ "const": "Null"
2045
+ }
2046
+ }
2047
+ },
2048
+ "then": {
2049
+ "$ref": "#/$defs/Null"
2050
+ }
2051
+ },
2052
+ {
2053
+ "if": {
2054
+ "required": [
2055
+ "kind"
2056
+ ],
2057
+ "properties": {
2058
+ "kind": {
2059
+ "const": "Ok"
2060
+ }
2061
+ }
2062
+ },
2063
+ "then": {
2064
+ "$ref": "#/$defs/Ok"
2065
+ }
2066
+ },
2067
+ {
2068
+ "if": {
2069
+ "required": [
2070
+ "kind"
2071
+ ],
2072
+ "properties": {
2073
+ "kind": {
2074
+ "const": "Err"
2075
+ }
2076
+ }
2077
+ },
2078
+ "then": {
2079
+ "$ref": "#/$defs/Err"
2080
+ }
2081
+ },
2082
+ {
2083
+ "if": {
2084
+ "required": [
2085
+ "kind"
2086
+ ],
2087
+ "properties": {
2088
+ "kind": {
2089
+ "const": "Some"
2090
+ }
2091
+ }
2092
+ },
2093
+ "then": {
2094
+ "$ref": "#/$defs/Some"
2095
+ }
2096
+ },
2097
+ {
2098
+ "if": {
2099
+ "required": [
2100
+ "kind"
2101
+ ],
2102
+ "properties": {
2103
+ "kind": {
2104
+ "const": "None"
2105
+ }
2106
+ }
2107
+ },
2108
+ "then": {
2109
+ "$ref": "#/$defs/None"
2110
+ }
2111
+ },
2112
+ {
2113
+ "if": {
2114
+ "required": [
2115
+ "kind"
2116
+ ],
2117
+ "properties": {
2118
+ "kind": {
2119
+ "const": "Construct"
2120
+ }
2121
+ }
2122
+ },
2123
+ "then": {
2124
+ "$ref": "#/$defs/Construct"
2125
+ }
2126
+ },
2127
+ {
2128
+ "if": {
2129
+ "required": [
2130
+ "kind"
2131
+ ],
2132
+ "properties": {
2133
+ "kind": {
2134
+ "const": "Call"
2135
+ }
2136
+ }
2137
+ },
2138
+ "then": {
2139
+ "$ref": "#/$defs/Call"
2140
+ }
2141
+ },
2142
+ {
2143
+ "if": {
2144
+ "required": [
2145
+ "kind"
2146
+ ],
2147
+ "properties": {
2148
+ "kind": {
2149
+ "const": "Lambda"
2150
+ }
2151
+ }
2152
+ },
2153
+ "then": {
2154
+ "$ref": "#/$defs/Lambda"
2155
+ }
2156
+ },
2157
+ {
2158
+ "if": {
2159
+ "required": [
2160
+ "kind"
2161
+ ],
2162
+ "properties": {
2163
+ "kind": {
2164
+ "const": "Await"
2165
+ }
2166
+ }
2167
+ },
2168
+ "then": {
2169
+ "$ref": "#/$defs/Await"
2170
+ }
2171
+ },
2172
+ {
2173
+ "if": {
2174
+ "required": [
2175
+ "kind"
2176
+ ],
2177
+ "properties": {
2178
+ "kind": {
2179
+ "const": "IfExpr"
2180
+ }
2181
+ }
2182
+ },
2183
+ "then": {
2184
+ "$ref": "#/$defs/IfExpr"
2185
+ }
2186
+ },
2187
+ {
2188
+ "if": {
2189
+ "required": [
2190
+ "kind"
2191
+ ],
2192
+ "properties": {
2193
+ "kind": {
2194
+ "const": "ListLit"
2195
+ }
2196
+ }
2197
+ },
2198
+ "then": {
2199
+ "$ref": "#/$defs/ListLit"
2200
+ }
2201
+ }
2202
+ ]
2203
+ },
2204
+ "Name": {
2205
+ "description": "名称引用。",
2206
+ "type": "object",
2207
+ "properties": {
2208
+ "kind": {
2209
+ "const": "Name"
2210
+ },
2211
+ "name": {
2212
+ "type": "string"
2213
+ },
2214
+ "origin": {
2215
+ "$ref": "#/$defs/Origin"
2216
+ }
2217
+ },
2218
+ "required": [
2219
+ "kind",
2220
+ "name",
2221
+ "origin"
2222
+ ],
2223
+ "additionalProperties": false
2224
+ },
2225
+ "Bool": {
2226
+ "description": "布尔字面量。",
2227
+ "type": "object",
2228
+ "properties": {
2229
+ "kind": {
2230
+ "const": "Bool"
2231
+ },
2232
+ "value": {
2233
+ "type": "boolean"
2234
+ },
2235
+ "origin": {
2236
+ "$ref": "#/$defs/Origin"
2237
+ }
2238
+ },
2239
+ "required": [
2240
+ "kind",
2241
+ "value",
2242
+ "origin"
2243
+ ],
2244
+ "additionalProperties": false
2245
+ },
2246
+ "Int": {
2247
+ "description": "32 位整数字面量。",
2248
+ "type": "object",
2249
+ "properties": {
2250
+ "kind": {
2251
+ "const": "Int"
2252
+ },
2253
+ "value": {
2254
+ "$ref": "#/$defs/Int32"
2255
+ },
2256
+ "origin": {
2257
+ "$ref": "#/$defs/Origin"
2258
+ }
2259
+ },
2260
+ "required": [
2261
+ "kind",
2262
+ "value",
2263
+ "origin"
2264
+ ],
2265
+ "additionalProperties": false
2266
+ },
2267
+ "Long": {
2268
+ "description": "64 位整数字面量,以十进制字符串承载。",
2269
+ "type": "object",
2270
+ "properties": {
2271
+ "kind": {
2272
+ "const": "Long"
2273
+ },
2274
+ "value": {
2275
+ "type": "string"
2276
+ },
2277
+ "origin": {
2278
+ "$ref": "#/$defs/Origin"
2279
+ }
2280
+ },
2281
+ "required": [
2282
+ "kind",
2283
+ "value",
2284
+ "origin"
2285
+ ],
2286
+ "additionalProperties": false
2287
+ },
2288
+ "Double": {
2289
+ "description": "浮点字面量(ADR 0055 #18):规范十进制串,不经二进制浮点。",
2290
+ "type": "object",
2291
+ "properties": {
2292
+ "kind": {
2293
+ "const": "Double"
2294
+ },
2295
+ "value": {
2296
+ "$ref": "#/$defs/CanonicalDecimal"
2297
+ },
2298
+ "origin": {
2299
+ "$ref": "#/$defs/Origin"
2300
+ }
2301
+ },
2302
+ "required": [
2303
+ "kind",
2304
+ "value",
2305
+ "origin"
2306
+ ],
2307
+ "additionalProperties": false
2308
+ },
2309
+ "Decimal": {
2310
+ "description": "Decimal 字面量(ADR 0025):canonical 十进制字符串。",
2311
+ "type": "object",
2312
+ "properties": {
2313
+ "kind": {
2314
+ "const": "Decimal"
2315
+ },
2316
+ "value": {
2317
+ "type": "string"
2318
+ },
2319
+ "origin": {
2320
+ "$ref": "#/$defs/Origin"
2321
+ }
2322
+ },
2323
+ "required": [
2324
+ "kind",
2325
+ "value",
2326
+ "origin"
2327
+ ],
2328
+ "additionalProperties": false
2329
+ },
2330
+ "String": {
2331
+ "description": "字符串字面量。",
2332
+ "type": "object",
2333
+ "properties": {
2334
+ "kind": {
2335
+ "const": "String"
2336
+ },
2337
+ "value": {
2338
+ "type": "string"
2339
+ },
2340
+ "origin": {
2341
+ "$ref": "#/$defs/Origin"
2342
+ }
2343
+ },
2344
+ "required": [
2345
+ "kind",
2346
+ "value",
2347
+ "origin"
2348
+ ],
2349
+ "additionalProperties": false
2350
+ },
2351
+ "Null": {
2352
+ "description": "null 字面量。",
2353
+ "type": "object",
2354
+ "properties": {
2355
+ "kind": {
2356
+ "const": "Null"
2357
+ },
2358
+ "origin": {
2359
+ "$ref": "#/$defs/Origin"
2360
+ }
2361
+ },
2362
+ "required": [
2363
+ "kind",
2364
+ "origin"
2365
+ ],
2366
+ "additionalProperties": false
2367
+ },
2368
+ "Ok": {
2369
+ "description": "Result 成功分支。",
2370
+ "type": "object",
2371
+ "properties": {
2372
+ "kind": {
2373
+ "const": "Ok"
2374
+ },
2375
+ "expr": {
2376
+ "$ref": "#/$defs/Expr"
2377
+ },
2378
+ "origin": {
2379
+ "$ref": "#/$defs/Origin"
2380
+ }
2381
+ },
2382
+ "required": [
2383
+ "kind",
2384
+ "expr",
2385
+ "origin"
2386
+ ],
2387
+ "additionalProperties": false
2388
+ },
2389
+ "Err": {
2390
+ "description": "Result 错误分支。",
2391
+ "type": "object",
2392
+ "properties": {
2393
+ "kind": {
2394
+ "const": "Err"
2395
+ },
2396
+ "expr": {
2397
+ "$ref": "#/$defs/Expr"
2398
+ },
2399
+ "origin": {
2400
+ "$ref": "#/$defs/Origin"
2401
+ }
2402
+ },
2403
+ "required": [
2404
+ "kind",
2405
+ "expr",
2406
+ "origin"
2407
+ ],
2408
+ "additionalProperties": false
2409
+ },
2410
+ "Some": {
2411
+ "description": "Option 有值分支。",
2412
+ "type": "object",
2413
+ "properties": {
2414
+ "kind": {
2415
+ "const": "Some"
2416
+ },
2417
+ "expr": {
2418
+ "$ref": "#/$defs/Expr"
2419
+ },
2420
+ "origin": {
2421
+ "$ref": "#/$defs/Origin"
2422
+ }
2423
+ },
2424
+ "required": [
2425
+ "kind",
2426
+ "expr",
2427
+ "origin"
2428
+ ],
2429
+ "additionalProperties": false
2430
+ },
2431
+ "None": {
2432
+ "description": "Option 无值。",
2433
+ "type": "object",
2434
+ "properties": {
2435
+ "kind": {
2436
+ "const": "None"
2437
+ },
2438
+ "origin": {
2439
+ "$ref": "#/$defs/Origin"
2440
+ }
2441
+ },
2442
+ "required": [
2443
+ "kind",
2444
+ "origin"
2445
+ ],
2446
+ "additionalProperties": false
2447
+ },
2448
+ "Construct": {
2449
+ "description": "构造表达式。",
2450
+ "type": "object",
2451
+ "properties": {
2452
+ "kind": {
2453
+ "const": "Construct"
2454
+ },
2455
+ "typeName": {
2456
+ "type": "string"
2457
+ },
2458
+ "fields": {
2459
+ "type": "array",
2460
+ "items": {
2461
+ "$ref": "#/$defs/FieldInit"
2462
+ }
2463
+ },
2464
+ "origin": {
2465
+ "$ref": "#/$defs/Origin"
2466
+ }
2467
+ },
2468
+ "required": [
2469
+ "kind",
2470
+ "typeName",
2471
+ "fields",
2472
+ "origin"
2473
+ ],
2474
+ "additionalProperties": false
2475
+ },
2476
+ "FieldInit": {
2477
+ "description": "Construct 的字段初始化。",
2478
+ "type": "object",
2479
+ "properties": {
2480
+ "name": {
2481
+ "type": "string"
2482
+ },
2483
+ "expr": {
2484
+ "$ref": "#/$defs/Expr"
2485
+ }
2486
+ },
2487
+ "required": [
2488
+ "name",
2489
+ "expr"
2490
+ ],
2491
+ "additionalProperties": false
2492
+ },
2493
+ "Call": {
2494
+ "description": "调用。",
2495
+ "type": "object",
2496
+ "properties": {
2497
+ "kind": {
2498
+ "const": "Call"
2499
+ },
2500
+ "target": {
2501
+ "$ref": "#/$defs/Expr"
2502
+ },
2503
+ "args": {
2504
+ "type": "array",
2505
+ "items": {
2506
+ "$ref": "#/$defs/Expr"
2507
+ }
2508
+ },
2509
+ "origin": {
2510
+ "$ref": "#/$defs/Origin"
2511
+ }
2512
+ },
2513
+ "required": [
2514
+ "kind",
2515
+ "target",
2516
+ "args",
2517
+ "origin"
2518
+ ],
2519
+ "additionalProperties": false
2520
+ },
2521
+ "Lambda": {
2522
+ "description": "Lambda(ADR 0055 #13、#14):返回类型字段名为 ret;captures 恒输出。",
2523
+ "type": "object",
2524
+ "properties": {
2525
+ "kind": {
2526
+ "const": "Lambda"
2527
+ },
2528
+ "params": {
2529
+ "type": "array",
2530
+ "items": {
2531
+ "$ref": "#/$defs/Param"
2532
+ }
2533
+ },
2534
+ "ret": {
2535
+ "$ref": "#/$defs/Type"
2536
+ },
2537
+ "body": {
2538
+ "$ref": "#/$defs/Block"
2539
+ },
2540
+ "captures": {
2541
+ "type": "array",
2542
+ "items": {
2543
+ "type": "string"
2544
+ }
2545
+ },
2546
+ "origin": {
2547
+ "$ref": "#/$defs/Origin"
2548
+ }
2549
+ },
2550
+ "required": [
2551
+ "kind",
2552
+ "params",
2553
+ "ret",
2554
+ "body",
2555
+ "captures",
2556
+ "origin"
2557
+ ],
2558
+ "additionalProperties": false
2559
+ },
2560
+ "Await": {
2561
+ "description": "等待异步结果。",
2562
+ "type": "object",
2563
+ "properties": {
2564
+ "kind": {
2565
+ "const": "Await"
2566
+ },
2567
+ "expr": {
2568
+ "$ref": "#/$defs/Expr"
2569
+ },
2570
+ "origin": {
2571
+ "$ref": "#/$defs/Origin"
2572
+ }
2573
+ },
2574
+ "required": [
2575
+ "kind",
2576
+ "expr",
2577
+ "origin"
2578
+ ],
2579
+ "additionalProperties": false
2580
+ },
2581
+ "IfExpr": {
2582
+ "description": "表达式级条件(ADR 0019 G2b)。",
2583
+ "type": "object",
2584
+ "properties": {
2585
+ "kind": {
2586
+ "const": "IfExpr"
2587
+ },
2588
+ "cond": {
2589
+ "$ref": "#/$defs/Expr"
2590
+ },
2591
+ "thenE": {
2592
+ "$ref": "#/$defs/Expr"
2593
+ },
2594
+ "elseE": {
2595
+ "$ref": "#/$defs/Expr"
2596
+ },
2597
+ "origin": {
2598
+ "$ref": "#/$defs/Origin"
2599
+ }
2600
+ },
2601
+ "required": [
2602
+ "kind",
2603
+ "cond",
2604
+ "thenE",
2605
+ "elseE",
2606
+ "origin"
2607
+ ],
2608
+ "additionalProperties": false
2609
+ },
2610
+ "ListLit": {
2611
+ "description": "列表字面量。",
2612
+ "type": "object",
2613
+ "properties": {
2614
+ "kind": {
2615
+ "const": "ListLit"
2616
+ },
2617
+ "elements": {
2618
+ "type": "array",
2619
+ "items": {
2620
+ "$ref": "#/$defs/Expr"
2621
+ }
2622
+ },
2623
+ "origin": {
2624
+ "$ref": "#/$defs/Origin"
2625
+ }
2626
+ },
2627
+ "required": [
2628
+ "kind",
2629
+ "elements",
2630
+ "origin"
2631
+ ],
2632
+ "additionalProperties": false
2633
+ }
2634
+ }
2635
+ };
2636
+ //# sourceMappingURL=core-ir-v2.schema.generated.js.map