@aster-cloud/aster-lang-ts 1.5.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 (349) hide show
  1. package/CHANGELOG.md +48 -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/controls-registry.data.js +2 -2
  108. package/dist/src/governance/controls-registry.data.js.map +1 -1
  109. package/dist/src/governance/input-refs.js +5 -8
  110. package/dist/src/governance/input-refs.js.map +1 -1
  111. package/dist/src/index.d.ts +5 -0
  112. package/dist/src/index.d.ts.map +1 -1
  113. package/dist/src/index.js +4 -0
  114. package/dist/src/index.js.map +1 -1
  115. package/dist/src/jvm/emitter.d.ts.map +1 -1
  116. package/dist/src/jvm/emitter.js +20 -29
  117. package/dist/src/jvm/emitter.js.map +1 -1
  118. package/dist/src/lower_to_core.d.ts +2 -1
  119. package/dist/src/lower_to_core.d.ts.map +1 -1
  120. package/dist/src/lower_to_core.js +150 -300
  121. package/dist/src/lower_to_core.js.map +1 -1
  122. package/dist/src/lsp/pii_diagnostics.d.ts.map +1 -1
  123. package/dist/src/lsp/pii_diagnostics.js +3 -8
  124. package/dist/src/lsp/pii_diagnostics.js.map +1 -1
  125. package/dist/src/mapping/mapping-ir.d.ts +3 -3
  126. package/dist/src/mapping/mapping-ir.js +3 -3
  127. package/dist/src/nodeid/node-id-map.d.ts +6 -15
  128. package/dist/src/nodeid/node-id-map.d.ts.map +1 -1
  129. package/dist/src/nodeid/node-id-map.js +6 -15
  130. package/dist/src/nodeid/node-id-map.js.map +1 -1
  131. package/dist/src/parser/constraint-parser.js +25 -6
  132. package/dist/src/parser/constraint-parser.js.map +1 -1
  133. package/dist/src/parser/decl-parser.d.ts.map +1 -1
  134. package/dist/src/parser/decl-parser.js +30 -59
  135. package/dist/src/parser/decl-parser.js.map +1 -1
  136. package/dist/src/parser/expr-stmt-parser.d.ts.map +1 -1
  137. package/dist/src/parser/expr-stmt-parser.js +3 -2
  138. package/dist/src/parser/expr-stmt-parser.js.map +1 -1
  139. package/dist/src/parser/field-variant-parser.d.ts.map +1 -1
  140. package/dist/src/parser/field-variant-parser.js +6 -0
  141. package/dist/src/parser/field-variant-parser.js.map +1 -1
  142. package/dist/src/parser/parse-issue.d.ts +2 -0
  143. package/dist/src/parser/parse-issue.d.ts.map +1 -1
  144. package/dist/src/parser/parse-issue.js +2 -0
  145. package/dist/src/parser/parse-issue.js.map +1 -1
  146. package/dist/src/parser/type-parser.d.ts +1 -1
  147. package/dist/src/parser/type-parser.d.ts.map +1 -1
  148. package/dist/src/parser/type-parser.js +19 -2
  149. package/dist/src/parser/type-parser.js.map +1 -1
  150. package/dist/src/stability/stability_gate.d.ts +1 -1
  151. package/dist/src/stability/stability_gate.d.ts.map +1 -1
  152. package/dist/src/stability/stability_gate.js +2 -26
  153. package/dist/src/stability/stability_gate.js.map +1 -1
  154. package/dist/src/typecheck/async.d.ts.map +1 -1
  155. package/dist/src/typecheck/async.js +4 -1
  156. package/dist/src/typecheck/async.js.map +1 -1
  157. package/dist/src/typecheck/browser.d.ts.map +1 -1
  158. package/dist/src/typecheck/browser.js +4 -3
  159. package/dist/src/typecheck/browser.js.map +1 -1
  160. package/dist/src/typecheck/capabilities.d.ts.map +1 -1
  161. package/dist/src/typecheck/capabilities.js +3 -2
  162. package/dist/src/typecheck/capabilities.js.map +1 -1
  163. package/dist/src/typecheck/context.d.ts +5 -5
  164. package/dist/src/typecheck/context.d.ts.map +1 -1
  165. package/dist/src/typecheck/context.js.map +1 -1
  166. package/dist/src/typecheck/diagnostics.d.ts +2 -2
  167. package/dist/src/typecheck/diagnostics.d.ts.map +1 -1
  168. package/dist/src/typecheck/diagnostics.js.map +1 -1
  169. package/dist/src/typecheck/effects.js +7 -7
  170. package/dist/src/typecheck/effects.js.map +1 -1
  171. package/dist/src/typecheck/expression.d.ts +4 -4
  172. package/dist/src/typecheck/expression.d.ts.map +1 -1
  173. package/dist/src/typecheck/expression.js +1 -1
  174. package/dist/src/typecheck/expression.js.map +1 -1
  175. package/dist/src/typecheck/generics.d.ts +2 -2
  176. package/dist/src/typecheck/generics.d.ts.map +1 -1
  177. package/dist/src/typecheck/generics.js +23 -12
  178. package/dist/src/typecheck/generics.js.map +1 -1
  179. package/dist/src/typecheck/governance.d.ts +1 -1
  180. package/dist/src/typecheck/governance.d.ts.map +1 -1
  181. package/dist/src/typecheck/governance.js +1 -1
  182. package/dist/src/typecheck/governance.js.map +1 -1
  183. package/dist/src/typecheck/module.d.ts.map +1 -1
  184. package/dist/src/typecheck/module.js +7 -6
  185. package/dist/src/typecheck/module.js.map +1 -1
  186. package/dist/src/typecheck/pattern.d.ts +2 -2
  187. package/dist/src/typecheck/pattern.d.ts.map +1 -1
  188. package/dist/src/typecheck/pattern.js +12 -46
  189. package/dist/src/typecheck/pattern.js.map +1 -1
  190. package/dist/src/typecheck/pure.d.ts +19 -19
  191. package/dist/src/typecheck/pure.d.ts.map +1 -1
  192. package/dist/src/typecheck/pure.js.map +1 -1
  193. package/dist/src/typecheck/statement.d.ts +6 -6
  194. package/dist/src/typecheck/statement.d.ts.map +1 -1
  195. package/dist/src/typecheck/statement.js +17 -20
  196. package/dist/src/typecheck/statement.js.map +1 -1
  197. package/dist/src/typecheck/symbol_table.d.ts +2 -2
  198. package/dist/src/typecheck/symbol_table.d.ts.map +1 -1
  199. package/dist/src/typecheck/symbol_table.js.map +1 -1
  200. package/dist/src/typecheck/type_system.d.ts +4 -4
  201. package/dist/src/typecheck/type_system.d.ts.map +1 -1
  202. package/dist/src/typecheck/type_system.js +1 -1
  203. package/dist/src/typecheck/type_system.js.map +1 -1
  204. package/dist/src/typecheck/workflow.d.ts +3 -3
  205. package/dist/src/typecheck/workflow.d.ts.map +1 -1
  206. package/dist/src/typecheck/workflow.js.map +1 -1
  207. package/dist/src/typecheck-pii.d.ts.map +1 -1
  208. package/dist/src/typecheck-pii.js +2 -13
  209. package/dist/src/typecheck-pii.js.map +1 -1
  210. package/dist/src/types.d.ts +160 -172
  211. package/dist/src/types.d.ts.map +1 -1
  212. package/dist/src/types.js.map +1 -1
  213. package/dist/src/version.d.ts +3 -3
  214. package/dist/src/version.js +3 -3
  215. package/dist/test/helpers/core-ir-v2.d.ts +5 -0
  216. package/dist/test/helpers/core-ir-v2.d.ts.map +1 -0
  217. package/dist/test/helpers/core-ir-v2.js +123 -0
  218. package/dist/test/helpers/core-ir-v2.js.map +1 -0
  219. package/dist/test/helpers/locales-core-ir.d.ts +7 -0
  220. package/dist/test/helpers/locales-core-ir.d.ts.map +1 -0
  221. package/dist/test/helpers/locales-core-ir.js +15 -0
  222. package/dist/test/helpers/locales-core-ir.js.map +1 -0
  223. package/dist/test/helpers/test-factories.d.ts +5 -5
  224. package/dist/test/helpers/test-factories.d.ts.map +1 -1
  225. package/dist/test/helpers/test-factories.js +9 -8
  226. package/dist/test/helpers/test-factories.js.map +1 -1
  227. package/dist/test/integration/pipeline/pipeline.test.js +1 -1
  228. package/dist/test/integration/pipeline/pipeline.test.js.map +1 -1
  229. package/dist/test/integration/vocabulary-resolution.test.js +1 -1
  230. package/dist/test/integration/vocabulary-resolution.test.js.map +1 -1
  231. package/dist/test/regression/type-checker-golden.test.js +1 -1
  232. package/dist/test/regression/type-checker-golden.test.js.map +1 -1
  233. package/dist/test/type-checker/pii-propagation.test.js +7 -6
  234. package/dist/test/type-checker/pii-propagation.test.js.map +1 -1
  235. package/dist/test/types/core-ir-v2.test-d.d.ts +28 -0
  236. package/dist/test/types/core-ir-v2.test-d.d.ts.map +1 -0
  237. package/dist/test/types/core-ir-v2.test-d.js +5 -0
  238. package/dist/test/types/core-ir-v2.test-d.js.map +1 -0
  239. package/dist/test/unit/browser/typecheck-browser-pii-failure.test.js +4 -3
  240. package/dist/test/unit/browser/typecheck-browser-pii-failure.test.js.map +1 -1
  241. package/dist/test/unit/canonicalizer/article-declaration-names.test.js +1 -1
  242. package/dist/test/unit/canonicalizer/article-declaration-names.test.js.map +1 -1
  243. package/dist/test/unit/canonicalizer/chinese-function-syntax.test.js +2 -1
  244. package/dist/test/unit/canonicalizer/chinese-function-syntax.test.js.map +1 -1
  245. package/dist/test/unit/core/canonical-json.test.d.ts +2 -0
  246. package/dist/test/unit/core/canonical-json.test.d.ts.map +1 -0
  247. package/dist/test/unit/core/canonical-json.test.js +38 -0
  248. package/dist/test/unit/core/canonical-json.test.js.map +1 -0
  249. package/dist/test/unit/core/caseless-pattern-name.test.js +6 -8
  250. package/dist/test/unit/core/caseless-pattern-name.test.js.map +1 -1
  251. package/dist/test/unit/core/core-ir-conformance.test.d.ts +2 -0
  252. package/dist/test/unit/core/core-ir-conformance.test.d.ts.map +1 -0
  253. package/dist/test/unit/core/core-ir-conformance.test.js +39 -0
  254. package/dist/test/unit/core/core-ir-conformance.test.js.map +1 -0
  255. package/dist/test/unit/core/core-ir-schema-parity.test.d.ts +2 -0
  256. package/dist/test/unit/core/core-ir-schema-parity.test.d.ts.map +1 -0
  257. package/dist/test/unit/core/core-ir-schema-parity.test.js +25 -0
  258. package/dist/test/unit/core/core-ir-schema-parity.test.js.map +1 -0
  259. package/dist/test/unit/core/core-ir-v2-outputs.test.d.ts +2 -0
  260. package/dist/test/unit/core/core-ir-v2-outputs.test.d.ts.map +1 -0
  261. package/dist/test/unit/core/core-ir-v2-outputs.test.js +128 -0
  262. package/dist/test/unit/core/core-ir-v2-outputs.test.js.map +1 -0
  263. package/dist/test/unit/core/read-core-ir.test.d.ts +2 -0
  264. package/dist/test/unit/core/read-core-ir.test.d.ts.map +1 -0
  265. package/dist/test/unit/core/read-core-ir.test.js +129 -0
  266. package/dist/test/unit/core/read-core-ir.test.js.map +1 -0
  267. package/dist/test/unit/core/resolve-typed-references.test.js +19 -16
  268. package/dist/test/unit/core/resolve-typed-references.test.js.map +1 -1
  269. package/dist/test/unit/diagnostics/lowering-diagnostics-parity.test.js +5 -5
  270. package/dist/test/unit/diagnostics/lowering-diagnostics-parity.test.js.map +1 -1
  271. package/dist/test/unit/diagnostics/parse-diagnostics-parity.test.js +3 -2
  272. package/dist/test/unit/diagnostics/parse-diagnostics-parity.test.js.map +1 -1
  273. package/dist/test/unit/effect/effect-inference.test.js +17 -13
  274. package/dist/test/unit/effect/effect-inference.test.js.map +1 -1
  275. package/dist/test/unit/emitter/emitter.test.js +47 -46
  276. package/dist/test/unit/emitter/emitter.test.js.map +1 -1
  277. package/dist/test/unit/formatter-corpus-roundtrip.test.js +5 -1
  278. package/dist/test/unit/formatter-corpus-roundtrip.test.js.map +1 -1
  279. package/dist/test/unit/formatter-roundtrip.test.js +5 -4
  280. package/dist/test/unit/formatter-roundtrip.test.js.map +1 -1
  281. package/dist/test/unit/frontend/resolve-declarations.test.js +13 -14
  282. package/dist/test/unit/frontend/resolve-declarations.test.js.map +1 -1
  283. package/dist/test/unit/governance/governance-check.test.js +1 -1
  284. package/dist/test/unit/governance/governance-check.test.js.map +1 -1
  285. package/dist/test/unit/governance/input-refs-parity.test.js +1 -1
  286. package/dist/test/unit/governance/input-refs-parity.test.js.map +1 -1
  287. package/dist/test/unit/governance/input-refs.test.js +2 -2
  288. package/dist/test/unit/governance/input-refs.test.js.map +1 -1
  289. package/dist/test/unit/governance/no-profile-ir-unchanged.test.js +6 -6
  290. package/dist/test/unit/governance/no-profile-ir-unchanged.test.js.map +1 -1
  291. package/dist/test/unit/governance/profile-check.test.js +14 -6
  292. package/dist/test/unit/governance/profile-check.test.js.map +1 -1
  293. package/dist/test/unit/interpreter/interpreter.test.js +23 -21
  294. package/dist/test/unit/interpreter/interpreter.test.js.map +1 -1
  295. package/dist/test/unit/interpreter/scope-writeback.test.js +28 -27
  296. package/dist/test/unit/interpreter/scope-writeback.test.js.map +1 -1
  297. package/dist/test/unit/keyword-aliases.test.js +1 -1
  298. package/dist/test/unit/lowering/core-ir-v2.test.d.ts +2 -0
  299. package/dist/test/unit/lowering/core-ir-v2.test.d.ts.map +1 -0
  300. package/dist/test/unit/lowering/core-ir-v2.test.js +253 -0
  301. package/dist/test/unit/lowering/core-ir-v2.test.js.map +1 -0
  302. package/dist/test/unit/lowering/lowering.test.js +19 -14
  303. package/dist/test/unit/lowering/lowering.test.js.map +1 -1
  304. package/dist/test/unit/lsp/pii-diagnostics.test.js +33 -30
  305. package/dist/test/unit/lsp/pii-diagnostics.test.js.map +1 -1
  306. package/dist/test/unit/lsp/utils.test.js +5 -4
  307. package/dist/test/unit/lsp/utils.test.js.map +1 -1
  308. package/dist/test/unit/parser/effect-unknown-name.test.js +7 -7
  309. package/dist/test/unit/parser/effect-unknown-name.test.js.map +1 -1
  310. package/dist/test/unit/parser/entry-annotations.test.js +2 -1
  311. package/dist/test/unit/parser/entry-annotations.test.js.map +1 -1
  312. package/dist/test/unit/parser/func-type.test.js +3 -3
  313. package/dist/test/unit/parser/func-type.test.js.map +1 -1
  314. package/dist/test/unit/parser/governance-sugar.test.js +4 -4
  315. package/dist/test/unit/parser/governance-sugar.test.js.map +1 -1
  316. package/dist/test/unit/parser/parser.test.js +5 -4
  317. package/dist/test/unit/parser/parser.test.js.map +1 -1
  318. package/dist/test/unit/rule-call-checks.test.js +2 -1
  319. package/dist/test/unit/rule-call-checks.test.js.map +1 -1
  320. package/dist/test/unit/typecheck/async-discipline-extended.test.js +11 -10
  321. package/dist/test/unit/typecheck/async-discipline-extended.test.js.map +1 -1
  322. package/dist/test/unit/typecheck/effect-prefix-injection.test.js +3 -2
  323. package/dist/test/unit/typecheck/effect-prefix-injection.test.js.map +1 -1
  324. package/dist/test/unit/typecheck/function-return-inference.test.js +33 -32
  325. package/dist/test/unit/typecheck/function-return-inference.test.js.map +1 -1
  326. package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.js +5 -4
  327. package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.js.map +1 -1
  328. package/dist/test/unit/typecheck/regression-fixes.test.js +110 -112
  329. package/dist/test/unit/typecheck/regression-fixes.test.js.map +1 -1
  330. package/dist/test/unit/typecheck/symbol-table.test.js +3 -2
  331. package/dist/test/unit/typecheck/symbol-table.test.js.map +1 -1
  332. package/dist/test/unit/typecheck/type-system-extended.test.js +6 -5
  333. package/dist/test/unit/typecheck/type-system-extended.test.js.map +1 -1
  334. package/dist/test/unit/typecheck/type-system.test.js +20 -19
  335. package/dist/test/unit/typecheck/type-system.test.js.map +1 -1
  336. package/dist/test/unit/typecheck/typecheck-advanced.test.js +19 -18
  337. package/dist/test/unit/typecheck/typecheck-advanced.test.js.map +1 -1
  338. package/dist/test/unit/typecheck/untyped-field-dynamic.test.js +6 -4
  339. package/dist/test/unit/typecheck/untyped-field-dynamic.test.js.map +1 -1
  340. package/dist/test/unit/version.test.js +3 -3
  341. package/package.json +4 -3
  342. package/dist/src/core/core_ir_json.d.ts +0 -62
  343. package/dist/src/core/core_ir_json.d.ts.map +0 -1
  344. package/dist/src/core/core_ir_json.js +0 -81
  345. package/dist/src/core/core_ir_json.js.map +0 -1
  346. package/dist/test/unit/core_ir_json/core_ir_json.test.d.ts +0 -2
  347. package/dist/test/unit/core_ir_json/core_ir_json.test.d.ts.map +0 -1
  348. package/dist/test/unit/core_ir_json/core_ir_json.test.js +0 -218
  349. package/dist/test/unit/core_ir_json/core_ir_json.test.js.map +0 -1
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Core IR v2 的读写出口与消费方(ADR 0055 §5;实施计划 Task T3):
3
+ * compile().coreJson、CLI 写出的 IR 文件、解释器与治理检查读 v2 IR。
4
+ */
5
+ import { describe, it } from 'node:test';
6
+ import assert from 'node:assert/strict';
7
+ import { spawnSync } from 'node:child_process';
8
+ import fs from 'node:fs';
9
+ import os from 'node:os';
10
+ import path from 'node:path';
11
+ import { compile, compileAndTypecheck } from '../../../src/browser.js';
12
+ import { prepareTruffleCoreJson } from '../../../src/cli/utils/core-ir-file.js';
13
+ import { Core as CoreIR } from '../../../src/core/core_ir.js';
14
+ import { evaluate } from '../../../src/core/interpreter.js';
15
+ import { CoreIrFormatError, readCoreIr } from '../../../src/core/read-core-ir.js';
16
+ import { serializeCoreIr } from '../../../src/core/serialize-core-ir.js';
17
+ import { ZH_CN } from '../../../src/config/lexicons/zh-CN.js';
18
+ import { checkGovernance, controls, ruleId } from '../../../src/typecheck/governance.js';
19
+ const COLOR = 'Module m.\n\nDefine Color as one of Red, Green.\n\n'
20
+ + 'Rule f given c as Color, produce Int:\n Match c:\n When Red, Return 1.\n When Green, Return 2.\n';
21
+ function core(source) {
22
+ const r = compile(source, {});
23
+ assert.equal(r.success, true, JSON.stringify(r.parseErrors ?? r.resolutionDiagnostics));
24
+ return r.core;
25
+ }
26
+ describe('compile().coreJson', () => {
27
+ it('compile returns coreJson equal to serializeCoreIr(core)', () => {
28
+ const r = compile(COLOR, {});
29
+ assert.equal(r.success, true);
30
+ assert.equal(r.coreJson, serializeCoreIr(r.core));
31
+ assert.deepEqual(readCoreIr(r.coreJson), r.core);
32
+ const t = compileAndTypecheck(COLOR, {});
33
+ assert.equal(t.coreJson, serializeCoreIr(t.core));
34
+ });
35
+ it('编译失败时不产出 coreJson', () => {
36
+ const r = compile('Module m.\n\nRule f given x as Int, produce Int:\n Return y.\n', {});
37
+ assert.equal(r.success, false);
38
+ assert.equal(r.coreJson, undefined);
39
+ });
40
+ });
41
+ describe('解释器读 v2 IR', () => {
42
+ it('interpreter evaluates v2 PatCtor zero-arg variant', () => {
43
+ const m = core(COLOR);
44
+ assert.equal(evaluate(m, 'f', { c: 'Green' }).value, 2);
45
+ // 读回的 JSON IR(无任何旁路表)同样可求值
46
+ const fromJson = readCoreIr(serializeCoreIr(m));
47
+ assert.equal(evaluate(fromJson, 'f', { c: 'Red' }).value, 1);
48
+ });
49
+ it('中文枚举成员(无大小写)经 0 参 PatCtor 正确匹配', () => {
50
+ const src = '模块 探针.样例。\n\n定义 状态 为以下之一 待处理、进行中。\n\n'
51
+ + '规则 描述 给定 s 作为 状态,产出 整数:\n 匹配于 s:\n 当 待处理,返回 1。\n 当 进行中,返回 2。\n';
52
+ const r = compile(src, { lexicon: ZH_CN });
53
+ assert.equal(r.success, true);
54
+ assert.equal(evaluate(readCoreIr(r.coreJson), '描述', { s: '进行中' }).value, 2);
55
+ });
56
+ it('PatName 只绑定:手写 IR 中的大写 PatName 也是绑定,不再当作变体', () => {
57
+ const body = CoreIR.Block([CoreIR.Match(CoreIR.Name('c'), [
58
+ CoreIR.Case(CoreIR.PatName('Red'), CoreIR.Return(CoreIR.Int(1))),
59
+ ])]);
60
+ const fn = CoreIR.Func('f', [], [CoreIR.Param('c', CoreIR.TypeName('Text'))], CoreIR.TypeName('Int'), [], body);
61
+ const m = CoreIR.Module('m', [fn]);
62
+ assert.equal(evaluate(m, 'f', { c: 'anything' }).value, 1);
63
+ });
64
+ it('Double 字面量的规范十进制串在运行时解析为浮点数', () => {
65
+ assert.equal(evaluate(core('Module m.\n\nRule f, produce Double:\n Return 0.25.\n'), 'f', {}).value, 0.25);
66
+ });
67
+ });
68
+ describe('治理检查读 v2 注解', () => {
69
+ it('governance reads $0 from args', () => {
70
+ const m = core('Module m.\n\n@id("R1")\n@control("EU_AI_ACT:ART14")\nRule decide given x as Int, produce Verdict:\n Return Verdict.allow().\n');
71
+ const f = m.decls.find((d) => d.kind === 'Func');
72
+ assert.deepEqual(f.annotations.map((a) => a.args), [[{ name: '$0', value: 'R1' }], [{ name: '$0', value: 'EU_AI_ACT:ART14' }]]);
73
+ assert.equal(ruleId(f), 'R1');
74
+ assert.deepEqual(controls(f), ['EU_AI_ACT:ART14']);
75
+ const codes = checkGovernance(m).map((d) => d.code);
76
+ assert.equal(codes.includes("W700" /* ErrorCode.GOV_VERDICT_RULE_MISSING_ID */), false);
77
+ });
78
+ it('$0 不是字符串时报 E702', () => {
79
+ const m = core('Module m.\n\n@id(42)\nRule decide given x as Int, produce Verdict:\n Return Verdict.allow().\n');
80
+ assert.ok(checkGovernance(m).some((d) => d.code === "E702" /* ErrorCode.GOV_ANNOTATION_ARG_INVALID */));
81
+ });
82
+ });
83
+ describe('与 Java 解析面的对照(T3 审查复核)', () => {
84
+ it('重复的效应名在 IR 中按首次出现去重(与 Java LinkedHashSet 一致),输出能被严格读回', () => {
85
+ const r = compile('Module m.\n\nRule f given x as Int, produce Int. It performs io and io and cpu:\n Return x.\n', {});
86
+ assert.equal(r.success, true);
87
+ assert.deepEqual(r.core.decls[0].effects, ['io', 'cpu']);
88
+ readCoreIr(r.coreJson);
89
+ });
90
+ it('注解参数名与值可以是软关键词(与 Java structKeywordName 一致)', () => {
91
+ const m = core('Module m.\n\n@x(return: "a", to)\nRule f given x as Int, produce Int:\n Return x.\n');
92
+ const f = m.decls[0];
93
+ assert.deepEqual(f.annotations[0].args, [{ name: 'return', value: 'a' }, { name: '$0', value: 'to' }]);
94
+ });
95
+ });
96
+ describe('CLI 的 IR 文件', () => {
97
+ const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'aster-core-ir-v2-'));
98
+ it('cli truffle writes canonical v2', () => {
99
+ const input = path.join(dir, 'color.aster');
100
+ fs.writeFileSync(input, COLOR);
101
+ const out = prepareTruffleCoreJson(input, path.join(dir, 'build'));
102
+ const bytes = fs.readFileSync(out, 'utf8');
103
+ assert.equal(bytes, compile(COLOR, {}).coreJson);
104
+ assert.equal(serializeCoreIr(readCoreIr(bytes)), bytes);
105
+ });
106
+ it('truffle 的 .json 输入先严格读入:v1 形状(无 schemaVersion)被拒收', () => {
107
+ const v1 = path.join(dir, 'old.json');
108
+ fs.writeFileSync(v1, JSON.stringify({ kind: 'Module', name: 'm', decls: [] }));
109
+ assert.throws(() => prepareTruffleCoreJson(v1), (e) => e instanceof CoreIrFormatError && e.code === 'unsupported_schema_version');
110
+ const ok = path.join(dir, 'ok.json');
111
+ fs.writeFileSync(ok, compile(COLOR, {}).coreJson);
112
+ assert.equal(prepareTruffleCoreJson(ok), ok);
113
+ });
114
+ it('aster-convert compile-to-json 输出规范字节,json-to-cnl 拒收 v1 IR', () => {
115
+ const input = path.join(dir, 'conv.aster');
116
+ fs.writeFileSync(input, COLOR);
117
+ const cli = path.join(process.cwd(), 'dist', 'src', 'cli', 'policy-converter.js');
118
+ const compiled = spawnSync(process.execPath, [cli, 'compile-to-json', input], { encoding: 'utf8' });
119
+ assert.equal(compiled.status, 0, compiled.stderr);
120
+ assert.equal(compiled.stdout.trim(), compile(COLOR, {}).coreJson);
121
+ const v1 = path.join(dir, 'conv-old.json');
122
+ fs.writeFileSync(v1, JSON.stringify({ version: '1.0', module: { kind: 'Module', name: 'm', decls: [] } }));
123
+ const back = spawnSync(process.execPath, [cli, 'json-to-cnl', v1], { encoding: 'utf8' });
124
+ assert.notEqual(back.status, 0);
125
+ assert.match(back.stderr, /schemaVersion/);
126
+ });
127
+ });
128
+ //# sourceMappingURL=core-ir-v2-outputs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-ir-v2-outputs.test.js","sourceRoot":"","sources":["../../../../test/unit/core/core-ir-v2-outputs.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=read-core-ir.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-core-ir.test.d.ts","sourceRoot":"","sources":["../../../../test/unit/core/read-core-ir.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,129 @@
1
+ import { describe, test } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { readFileSync, readdirSync } from 'node:fs';
4
+ import { dirname, join } from 'node:path';
5
+ import { canonicalDecimalFromLiteral } from '../../../src/core/canonical-decimal.js';
6
+ import { CoreIrFormatError, readCoreIr } from '../../../src/core/read-core-ir.js';
7
+ import { serializeCoreIr, validateCoreIrInvariants } from '../../../src/core/serialize-core-ir.js';
8
+ import { locateLocalesCoreIr } from '../../helpers/locales-core-ir.js';
9
+ const VERSION_FIXTURES = new Set([
10
+ 'bad-missing-schema-version.json',
11
+ 'bad-schema-version-1.json',
12
+ 'bad-schema-version-string.json',
13
+ ]);
14
+ const expectedPath = locateLocalesCoreIr(join('test-fixtures', 'expected-problems.json'));
15
+ const fixtureDir = expectedPath === undefined ? undefined : dirname(expectedPath);
16
+ const expected = expectedPath === undefined
17
+ ? []
18
+ : JSON.parse(readFileSync(expectedPath, 'utf8'));
19
+ /** 与 validateCoreIrInvariants 相同的排序:先 path、再 code(码元序)。 */
20
+ function byPathThenCode(a, b) {
21
+ if (a.path !== b.path)
22
+ return a.path < b.path ? -1 : 1;
23
+ return a.code === b.code ? 0 : a.code < b.code ? -1 : 1;
24
+ }
25
+ function readError(json) {
26
+ try {
27
+ readCoreIr(json);
28
+ }
29
+ catch (e) {
30
+ if (e instanceof CoreIrFormatError)
31
+ return e;
32
+ throw e;
33
+ }
34
+ assert.fail('readCoreIr 应当拒收');
35
+ }
36
+ describe('readCoreIr rejects every locales bad fixture with expected problems', () => {
37
+ test('夹具目录存在且 expected-problems.json 覆盖目录中的每个夹具', (t) => {
38
+ if (fixtureDir === undefined)
39
+ return t.skip('本地未并列 checkout aster-lang-locales');
40
+ const onDisk = readdirSync(fixtureDir).filter(f => /^(bad|ok)-.*\.json$/.test(f)).sort();
41
+ assert.deepEqual(expected.map(e => e.file).sort(), onDisk);
42
+ assert.ok(onDisk.filter(f => f.startsWith('bad-')).length >= 24, '负例数异常偏少');
43
+ });
44
+ for (const { file, problems } of expected) {
45
+ test(file, () => {
46
+ const json = readFileSync(join(fixtureDir, file), 'utf8');
47
+ if (problems.length === 0) {
48
+ assert.doesNotThrow(() => readCoreIr(json));
49
+ return;
50
+ }
51
+ const err = readError(json);
52
+ if (VERSION_FIXTURES.has(file)) {
53
+ assert.equal(err.code, 'unsupported_schema_version');
54
+ return;
55
+ }
56
+ assert.equal(err.code, 'invalid_request');
57
+ if (problems.every(p => p.code === 'schema')) {
58
+ assert.ok(err.problems.length > 0);
59
+ assert.deepEqual([...new Set(err.problems.map(p => p.code))], ['schema']);
60
+ }
61
+ else {
62
+ // 不变式夹具必须先通过 schema,问题列表只含不变式问题
63
+ assert.deepEqual(err.problems, [...problems].sort(byPathThenCode));
64
+ }
65
+ });
66
+ }
67
+ });
68
+ describe('readCoreIr 版本预检查与解析错误', () => {
69
+ test('非 JSON 报 invalid_request', () => {
70
+ assert.equal(readError('{').code, 'invalid_request');
71
+ });
72
+ test('数组、null 与缺失 schemaVersion 都报 unsupported_schema_version', () => {
73
+ for (const json of ['[]', 'null', '{"kind":"Module"}', '{"schemaVersion":"2"}', '{"schemaVersion":1}']) {
74
+ assert.equal(readError(json).code, 'unsupported_schema_version', json);
75
+ }
76
+ });
77
+ test('版本正确但形状不对报 invalid_request 且问题 code 为 schema', () => {
78
+ const err = readError('{"schemaVersion":2}');
79
+ assert.equal(err.code, 'invalid_request');
80
+ assert.ok(err.problems.length > 0 && err.problems.every(p => p.code === 'schema'));
81
+ });
82
+ });
83
+ describe('double literals match locales fixture', () => {
84
+ test('每条源码字面量的规范十进制串都与夹具一致', (t) => {
85
+ const path = locateLocalesCoreIr(join('test-fixtures', 'double-literals.json'));
86
+ if (path === undefined)
87
+ return t.skip('本地未并列 checkout aster-lang-locales');
88
+ const rows = JSON.parse(readFileSync(path, 'utf8'));
89
+ assert.ok(rows.length >= 8);
90
+ for (const { source, canonical } of rows) {
91
+ assert.equal(canonicalDecimalFromLiteral(source), canonical, source);
92
+ }
93
+ });
94
+ test('不经 double:超出双精度有效位的字面量原样保留', () => {
95
+ assert.equal(canonicalDecimalFromLiteral('123456789012345678901.5'), '123456789012345678901.5');
96
+ assert.equal(canonicalDecimalFromLiteral('-0'), '0');
97
+ assert.equal(canonicalDecimalFromLiteral('-1.50'), '-1.5');
98
+ assert.equal(canonicalDecimalFromLiteral('007.0'), '7');
99
+ });
100
+ test('输出满足 schema 的 CanonicalDecimal pattern', () => {
101
+ const pattern = /^(0|-?[1-9][0-9]*(\.[0-9]*[1-9])?|-?0\.[0-9]*[1-9])$/;
102
+ for (const raw of ['0.1', '1.0', '-0.0', '1E3', '0.000', '-0.25', '100']) {
103
+ assert.match(canonicalDecimalFromLiteral(raw), pattern, raw);
104
+ }
105
+ });
106
+ });
107
+ describe('serializeCoreIr', () => {
108
+ test('ok 夹具读入后规范输出:键按码点升序,null 与空数组显式输出,读回仍通过', (t) => {
109
+ if (fixtureDir === undefined)
110
+ return t.skip('本地未并列 checkout aster-lang-locales');
111
+ for (const file of expected.filter(e => e.problems.length === 0).map(e => e.file)) {
112
+ const module = readCoreIr(readFileSync(join(fixtureDir, file), 'utf8'));
113
+ const bytes = serializeCoreIr(module);
114
+ assert.ok(bytes.startsWith('{"decls":['), file);
115
+ assert.ok(bytes.includes('"written":null'), file);
116
+ assert.deepEqual(readCoreIr(bytes), module, file);
117
+ assert.equal(serializeCoreIr(readCoreIr(bytes)), bytes, `${file} 规范输出应当幂等`);
118
+ }
119
+ });
120
+ test('validateCoreIrInvariants 对 ok 夹具无问题', (t) => {
121
+ if (fixtureDir === undefined)
122
+ return t.skip('本地未并列 checkout aster-lang-locales');
123
+ for (const file of expected.filter(e => e.problems.length === 0).map(e => e.file)) {
124
+ const module = JSON.parse(readFileSync(join(fixtureDir, file), 'utf8'));
125
+ assert.deepEqual(validateCoreIrInvariants(module), [], file);
126
+ }
127
+ });
128
+ });
129
+ //# sourceMappingURL=read-core-ir.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-core-ir.test.js","sourceRoot":"","sources":["../../../../test/unit/core/read-core-ir.test.ts"],"names":[],"mappings":"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"}
@@ -287,8 +287,9 @@ describe('resolveTypedReferences(R2)', () => {
287
287
  'Regel f gegeben s als Stufe, liefert Ganzzahl:\n pruefe s:\n bei Hoch, gib zurueck 1.\n bei andere, gib zurueck 2.\n', LEVEL);
288
288
  assert.deepEqual(codes(r2), []);
289
289
  const cases = stmt(func(module, 'f'), 0, 'Match').cases;
290
+ // ADR 0055 #16:解析为成员的裸名产出 0 参 PatCtor
290
291
  const first = cases[0].pattern;
291
- assert.equal(first.name, 'High');
292
+ assert.deepEqual([first.kind, first.typeName, first.args], ['PatCtor', 'High', []]);
292
293
  assert.equal(first.origin?.written, 'Hoch');
293
294
  assert.equal(first.origin?.role, 'MEMBER_REF');
294
295
  assert.equal(cases[1].pattern.name, 'andere');
@@ -300,7 +301,7 @@ describe('resolveTypedReferences(R2)', () => {
300
301
  assert.deepEqual(codes(r2), []);
301
302
  const pat = stmt(func(module, 'f'), 1, 'Match').cases[0].pattern;
302
303
  assert.equal(pat.typeName, 'Driver');
303
- assert.deepEqual(pat.names, ['a']);
304
+ assert.deepEqual(pat.args.map((a) => a.name), ['a']);
304
305
  });
305
306
  it('主语未知、全部枚举成员与构造器中唯一 → 采用 + W801', () => {
306
307
  const { module, r2 } = run(MODULE + LEVEL_DECL +
@@ -309,7 +310,7 @@ describe('resolveTypedReferences(R2)', () => {
309
310
  assert.deepEqual(codes(r2), ["W801" /* ErrorCode.RESOLVED_WITHOUT_TYPE */, "W801" /* ErrorCode.RESOLVED_WITHOUT_TYPE */]);
310
311
  const cases = stmt(func(module, 'f'), 1, 'Match').cases;
311
312
  assert.equal(cases[0].pattern.typeName, 'High');
312
- assert.equal(cases[1].pattern.name, 'Low');
313
+ assert.equal(cases[1].pattern.typeName, 'Low');
313
314
  });
314
315
  it('主语未知、多个候选 → E806', () => {
315
316
  const { r2 } = run(MODULE + LEVEL_DECL + 'Definiere Rang als eines von Hoch, Mittel.\n\n' +
@@ -398,11 +399,11 @@ describe('resolveTypedReferences(R2)', () => {
398
399
  collect(module, names, origins);
399
400
  assert.deepEqual(names.filter((n) => LOCALIZED.includes(n)), []);
400
401
  for (const o of origins) {
401
- if (o?.written === undefined && o?.role === undefined)
402
+ if (o.written === null && o.role === null)
402
403
  continue;
403
- assert.ok(o.written !== undefined && o.role !== undefined, '两者同时出现');
404
+ assert.ok(o.written !== null && o.role !== null, '两者同时出现');
404
405
  }
405
- const withWritten = origins.filter((o) => o?.written !== undefined).map((o) => o.written);
406
+ const withWritten = origins.filter((o) => o.written !== null).map((o) => o.written);
406
407
  assert.ok(withWritten.includes('fahrer.alter'));
407
408
  assert.ok(withWritten.includes('Hoch'));
408
409
  const f = func(module, 'check');
@@ -410,7 +411,7 @@ describe('resolveTypedReferences(R2)', () => {
410
411
  assert.equal(f.origin?.role, 'FUNC_DECL');
411
412
  // 局部名 fahrer 未改写:其节点 origin 不带 written
412
413
  const let0 = stmt(f, 0, 'Let');
413
- assert.equal(let0.origin?.written, undefined);
414
+ assert.equal(let0.origin.written, null);
414
415
  });
415
416
  it('函数签名的参数 / 返回类型名记录 written/role(与 Java 对齐)', () => {
416
417
  const { module, r1, r2 } = run(SOURCE, VOCAB);
@@ -425,18 +426,20 @@ describe('resolveTypedReferences(R2)', () => {
425
426
  assert.equal(ret.origin?.written, 'Stufe');
426
427
  assert.equal(ret.origin?.role, 'TYPE');
427
428
  });
428
- it('函数签名中未改写的类型名不新增 origin(无词汇 IR 不变)', () => {
429
+ it('函数签名中未改写的类型名:origin 恒输出,written / role 为 null(ADR 0055 #17)', () => {
429
430
  const { module } = run('Module m.\n\nDefine Driver has age as Int.\n\nRule f given d as Driver, produce Int:\n Return d.age.\n', DRIVER, EN_US);
430
431
  const f = func(module, 'f');
431
- assert.equal(f.params[0].type.origin, undefined);
432
- assert.equal(f.ret.origin, undefined);
432
+ for (const t of [f.params[0].type, f.ret]) {
433
+ assert.ok(t.origin.start.line > 0);
434
+ assert.deepEqual([t.origin.written, t.origin.role], [null, null]);
435
+ }
433
436
  });
434
437
  it('规范名直写的源码:origin 不带 written/role', () => {
435
438
  const { module, r2 } = run('Module m.\n\nDefine Driver has age as Int.\n\nRule f given d as Driver, produce Int:\n Return d.age.\n', DRIVER, EN_US);
436
439
  assert.deepEqual(codes(r2), []);
437
440
  const origins = [];
438
441
  collect(module, [], origins);
439
- assert.deepEqual(origins.filter((o) => o?.written !== undefined || o?.role !== undefined), []);
442
+ assert.deepEqual(origins.filter((o) => o.written !== null || o.role !== null), []);
440
443
  });
441
444
  it('任一 E8xx 时 diagnostics 非空(调用方据此不发出 IR)', () => {
442
445
  const { r2 } = run(MODULE + DRIVER_DECL + 'Regel f gegeben x als Fahrer, liefert Ganzzahl:\n gib zurueck x.gewicht.\n', DRIVER);
@@ -463,7 +466,7 @@ describe('resolveTypedReferences(R2)', () => {
463
466
  assert.deepEqual([...codes(r1), ...codes(r2)], []);
464
467
  assert.equal(nameOf(stmt(func(module, 'f'), 1, 'Let').expr).name, 'y.age');
465
468
  const cases = stmt(func(module, 'f'), 2, 'Match').cases;
466
- assert.equal(cases[0].pattern.name, 'Gold');
469
+ assert.equal(cases[0].pattern.typeName, 'Gold');
467
470
  assert.equal(cases[1].pattern.typeName, 'Silver');
468
471
  });
469
472
  it('2. 无期望类型的裸成员规范名 → 原样接受;期望枚举下写法即规范名不改写', () => {
@@ -475,7 +478,7 @@ describe('resolveTypedReferences(R2)', () => {
475
478
  assert.equal(nameOf(returned(func(module, 'g'), 0).args[1]).name, 'Silver');
476
479
  const h = nameOf(returned(func(module, 'h'), 0));
477
480
  assert.equal(h.name, 'Gold');
478
- assert.equal(h.origin?.written, undefined);
481
+ assert.equal(h.origin.written, null);
479
482
  });
480
483
  it('2. 成员规范名属于多个枚举且无期望类型 → E804', () => {
481
484
  const { r2 } = run(TIER + 'Define Medal as one of Gold, Bronze.\n\nRule f given t as Text:\n Return Gold.\n', [], EN_US);
@@ -566,7 +569,7 @@ describe('resolveTypedReferences(R2)', () => {
566
569
  it('未注解主语上的裸成员模式 → 采用 + W801', () => {
567
570
  const { module, r2 } = run(MODULE + LEVEL_DECL + 'Regel f gegeben s, liefert Ganzzahl:\n pruefe s:\n bei Hoch, gib zurueck 1.\n bei andere, gib zurueck 2.\n', LEVEL);
568
571
  assert.deepEqual(codes(r2), ["W801" /* ErrorCode.RESOLVED_WITHOUT_TYPE */]);
569
- assert.equal(stmt(func(module, 'f'), 0, 'Match').cases[0].pattern.name, 'High');
572
+ assert.equal(stmt(func(module, 'f'), 0, 'Match').cases[0].pattern.typeName, 'High');
570
573
  });
571
574
  it('未注解 lambda 参数上的路径 → 全局候选采用 + W801(裁决 R31)', () => {
572
575
  const { module, r2 } = run('Module m.\n\nDefine Fahrer has alter as Int.\n\n' +
@@ -590,8 +593,8 @@ describe('resolveTypedReferences(R2)', () => {
590
593
  const ast = parse(MODULE + DRIVER_DECL + 'Regel f gegeben x als Fahrer, liefert Ganzzahl:\n gib zurueck x.alter.\n');
591
594
  const core = lowerModule(ast);
592
595
  const json = JSON.stringify(core);
593
- assert.ok(!json.includes('"written"'));
594
- assert.ok(!json.includes('"role"'));
596
+ assert.ok(!json.includes('"written":"'));
597
+ assert.ok(!json.includes('"role":"'));
595
598
  assert.equal(nameOf(returned(func(core, 'f'), 0)).name, 'x.alter');
596
599
  assert.equal(core.decls[0].name, 'Fahrer');
597
600
  });
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-typed-references.test.js","sourceRoot":"","sources":["../../../../test/unit/core/resolve-typed-references.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve-typed-references.test.js","sourceRoot":"","sources":["../../../../test/unit/core/resolve-typed-references.test.ts"],"names":[],"mappings":"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"}
@@ -68,16 +68,16 @@ function assertParams(actual, expected, name) {
68
68
  if (v !== '*')
69
69
  assert.equal(actual[k], v, `${name}: params.${k}`);
70
70
  }
71
- // E601(未知效果)两引擎都已没有发出点(#304):core 一直透传未知效果名,ts 现与之对齐,
72
- // 名字原样保留在 IR、检查阶段按 pure 处理。该码仍留在码表中,夹具里的 E601 例只做渲染 parity
73
- // (见下方「模板渲染」用例),ts 侧额外断言 lowering 接受并保留该名字。
71
+ // E601(未知效果)两引擎都已没有发出点(#304):未知效果名检查阶段按 pure 处理,不授权任何效应,
72
+ // Core IR v2 起 lowering 不把它写入 effects(ADR 0055 #5)。该码仍留在码表中,夹具里的 E601 例只做渲染 parity
73
+ // (见下方「模板渲染」用例),ts 侧额外断言 lowering 接受该名字且不写入 IR。
74
74
  const NO_EMISSION_TRIGGERS = new Set(['internal-error', 'unknown-effect']);
75
75
  describe('lowering 诊断码 E600–E606 双引擎 parity 夹具(ts 侧)', () => {
76
76
  for (const c of CASES.filter((x) => x.trigger === 'unknown-effect')) {
77
- it(`${c.name}:lowering 不报错并保留效果名(#304)`, () => {
77
+ it(`${c.name}:lowering 不报错,未知效果名不写入 IR(#304、ADR 0055 #5)`, () => {
78
78
  const core = lowerModule(mutate(parseClean(c), c.trigger, c.value));
79
79
  const fn = core.decls.find((d) => d.kind === 'Func');
80
- assert.ok(fn.effects.includes(c.value), `${c.name}: IR effects 应含 ${c.value}`);
80
+ assert.equal(fn.effects.includes(c.value), false, `${c.name}: IR effects 不应含 ${c.value}`);
81
81
  });
82
82
  }
83
83
  for (const c of CASES.filter((x) => x.only !== 'core' && !NO_EMISSION_TRIGGERS.has(x.trigger))) {