@aster-cloud/aster-lang-ts 1.0.13 → 1.0.17

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 (166) hide show
  1. package/dist/scripts/core-ir-json.js +16 -6
  2. package/dist/scripts/core-ir-json.js.map +1 -1
  3. package/dist/scripts/generate_error_code_docs.js +19 -9
  4. package/dist/scripts/generate_error_code_docs.js.map +1 -1
  5. package/dist/scripts/generate_error_codes.js +84 -5
  6. package/dist/scripts/generate_error_codes.js.map +1 -1
  7. package/dist/scripts/verify-lexicon-sync.js +51 -0
  8. package/dist/scripts/verify-lexicon-sync.js.map +1 -1
  9. package/dist/src/cli/commands/search.js +17 -1
  10. package/dist/src/cli/commands/search.js.map +1 -1
  11. package/dist/src/config/effect_config.d.ts.map +1 -1
  12. package/dist/src/config/effect_config.js +6 -4
  13. package/dist/src/config/effect_config.js.map +1 -1
  14. package/dist/src/config/lexicons/de-DE.d.ts.map +1 -1
  15. package/dist/src/config/lexicons/de-DE.js +1 -0
  16. package/dist/src/config/lexicons/de-DE.js.map +1 -1
  17. package/dist/src/config/lexicons/diagnostic-messages.d.ts +2 -0
  18. package/dist/src/config/lexicons/diagnostic-messages.d.ts.map +1 -1
  19. package/dist/src/config/lexicons/diagnostic-messages.js +9 -3
  20. package/dist/src/config/lexicons/diagnostic-messages.js.map +1 -1
  21. package/dist/src/config/lexicons/en-US.d.ts.map +1 -1
  22. package/dist/src/config/lexicons/en-US.js +1 -0
  23. package/dist/src/config/lexicons/en-US.js.map +1 -1
  24. package/dist/src/config/lexicons/hi-IN.d.ts.map +1 -1
  25. package/dist/src/config/lexicons/hi-IN.js +1 -0
  26. package/dist/src/config/lexicons/hi-IN.js.map +1 -1
  27. package/dist/src/config/lexicons/identifiers/types.d.ts.map +1 -1
  28. package/dist/src/config/lexicons/identifiers/types.js +5 -3
  29. package/dist/src/config/lexicons/identifiers/types.js.map +1 -1
  30. package/dist/src/config/lexicons/template.d.ts.map +1 -1
  31. package/dist/src/config/lexicons/template.js +2 -0
  32. package/dist/src/config/lexicons/template.js.map +1 -1
  33. package/dist/src/config/lexicons/type-inference-rules.d.ts.map +1 -1
  34. package/dist/src/config/lexicons/type-inference-rules.js +8 -1
  35. package/dist/src/config/lexicons/type-inference-rules.js.map +1 -1
  36. package/dist/src/config/lexicons/types.d.ts +15 -0
  37. package/dist/src/config/lexicons/types.d.ts.map +1 -1
  38. package/dist/src/config/lexicons/types.js.map +1 -1
  39. package/dist/src/config/lexicons/zh-CN.d.ts.map +1 -1
  40. package/dist/src/config/lexicons/zh-CN.js +1 -0
  41. package/dist/src/config/lexicons/zh-CN.js.map +1 -1
  42. package/dist/src/config/semantic.d.ts +13 -0
  43. package/dist/src/config/semantic.d.ts.map +1 -1
  44. package/dist/src/config/semantic.js +22 -0
  45. package/dist/src/config/semantic.js.map +1 -1
  46. package/dist/src/config/token-kind.d.ts +2 -0
  47. package/dist/src/config/token-kind.d.ts.map +1 -1
  48. package/dist/src/config/token-kind.js +4 -1
  49. package/dist/src/config/token-kind.js.map +1 -1
  50. package/dist/src/core/interpreter.js +135 -19
  51. package/dist/src/core/interpreter.js.map +1 -1
  52. package/dist/src/diagnostics/diagnostics.d.ts +6 -0
  53. package/dist/src/diagnostics/diagnostics.d.ts.map +1 -1
  54. package/dist/src/diagnostics/diagnostics.js +20 -0
  55. package/dist/src/diagnostics/diagnostics.js.map +1 -1
  56. package/dist/src/diagnostics/error_codes.d.ts +4 -2
  57. package/dist/src/diagnostics/error_codes.d.ts.map +1 -1
  58. package/dist/src/diagnostics/error_codes.js +8 -4
  59. package/dist/src/diagnostics/error_codes.js.map +1 -1
  60. package/dist/src/effects/effect_inference.d.ts.map +1 -1
  61. package/dist/src/effects/effect_inference.js +62 -4
  62. package/dist/src/effects/effect_inference.js.map +1 -1
  63. package/dist/src/frontend/canonicalizer.d.ts.map +1 -1
  64. package/dist/src/frontend/canonicalizer.js +116 -59
  65. package/dist/src/frontend/canonicalizer.js.map +1 -1
  66. package/dist/src/frontend/lexer.d.ts.map +1 -1
  67. package/dist/src/frontend/lexer.js +51 -5
  68. package/dist/src/frontend/lexer.js.map +1 -1
  69. package/dist/src/manifest.d.ts +4 -1
  70. package/dist/src/manifest.d.ts.map +1 -1
  71. package/dist/src/manifest.js.map +1 -1
  72. package/dist/src/package/manifest-parser.d.ts.map +1 -1
  73. package/dist/src/package/manifest-parser.js +3 -2
  74. package/dist/src/package/manifest-parser.js.map +1 -1
  75. package/dist/src/package/package-installer.d.ts.map +1 -1
  76. package/dist/src/package/package-installer.js +24 -1
  77. package/dist/src/package/package-installer.js.map +1 -1
  78. package/dist/src/parser/decl-parser.d.ts.map +1 -1
  79. package/dist/src/parser/decl-parser.js +25 -19
  80. package/dist/src/parser/decl-parser.js.map +1 -1
  81. package/dist/src/parser/expr-stmt-parser.d.ts +9 -0
  82. package/dist/src/parser/expr-stmt-parser.d.ts.map +1 -1
  83. package/dist/src/parser/expr-stmt-parser.js +26 -0
  84. package/dist/src/parser/expr-stmt-parser.js.map +1 -1
  85. package/dist/src/parser/type-inference.d.ts.map +1 -1
  86. package/dist/src/parser/type-inference.js +15 -3
  87. package/dist/src/parser/type-inference.js.map +1 -1
  88. package/dist/src/stability/stability_gate.d.ts +68 -0
  89. package/dist/src/stability/stability_gate.d.ts.map +1 -0
  90. package/dist/src/stability/stability_gate.js +242 -0
  91. package/dist/src/stability/stability_gate.js.map +1 -0
  92. package/dist/src/typecheck/context.d.ts +19 -0
  93. package/dist/src/typecheck/context.d.ts.map +1 -1
  94. package/dist/src/typecheck/context.js +1 -1
  95. package/dist/src/typecheck/context.js.map +1 -1
  96. package/dist/src/typecheck/effects.d.ts.map +1 -1
  97. package/dist/src/typecheck/effects.js +13 -15
  98. package/dist/src/typecheck/effects.js.map +1 -1
  99. package/dist/src/typecheck/module.d.ts.map +1 -1
  100. package/dist/src/typecheck/module.js +6 -1
  101. package/dist/src/typecheck/module.js.map +1 -1
  102. package/dist/src/typecheck/pure.d.ts.map +1 -1
  103. package/dist/src/typecheck/pure.js +11 -7
  104. package/dist/src/typecheck/pure.js.map +1 -1
  105. package/dist/src/typecheck/workflow.js +4 -4
  106. package/dist/src/typecheck/workflow.js.map +1 -1
  107. package/dist/src/types.d.ts +1 -0
  108. package/dist/src/types.d.ts.map +1 -1
  109. package/dist/src/types.js +3 -0
  110. package/dist/src/types.js.map +1 -1
  111. package/dist/test/cli/commands/search.test.js +33 -0
  112. package/dist/test/cli/commands/search.test.js.map +1 -1
  113. package/dist/test/unit/audit-57-regression.test.d.ts +2 -0
  114. package/dist/test/unit/audit-57-regression.test.d.ts.map +1 -0
  115. package/dist/test/unit/audit-57-regression.test.js +92 -0
  116. package/dist/test/unit/audit-57-regression.test.js.map +1 -0
  117. package/dist/test/unit/browser/typecheck-browser-unsupported.test.js +19 -44
  118. package/dist/test/unit/browser/typecheck-browser-unsupported.test.js.map +1 -1
  119. package/dist/test/unit/canonicalizer/cjk-punctuation.test.js +25 -0
  120. package/dist/test/unit/canonicalizer/cjk-punctuation.test.js.map +1 -1
  121. package/dist/test/unit/config/capability-parity.test.d.ts +19 -0
  122. package/dist/test/unit/config/capability-parity.test.d.ts.map +1 -0
  123. package/dist/test/unit/config/capability-parity.test.js +117 -0
  124. package/dist/test/unit/config/capability-parity.test.js.map +1 -0
  125. package/dist/test/unit/config/config-service.test.js +7 -3
  126. package/dist/test/unit/config/config-service.test.js.map +1 -1
  127. package/dist/test/unit/diagnostics/error-codes-parity.test.d.ts +15 -0
  128. package/dist/test/unit/diagnostics/error-codes-parity.test.d.ts.map +1 -0
  129. package/dist/test/unit/diagnostics/error-codes-parity.test.js +149 -0
  130. package/dist/test/unit/diagnostics/error-codes-parity.test.js.map +1 -0
  131. package/dist/test/unit/effect/effect-inference.test.js +43 -0
  132. package/dist/test/unit/effect/effect-inference.test.js.map +1 -1
  133. package/dist/test/unit/interpreter/interpreter.test.js +30 -0
  134. package/dist/test/unit/interpreter/interpreter.test.js.map +1 -1
  135. package/dist/test/unit/lexer/lexer.test.js +30 -0
  136. package/dist/test/unit/lexer/lexer.test.js.map +1 -1
  137. package/dist/test/unit/manifest-parser.test.js +4 -2
  138. package/dist/test/unit/manifest-parser.test.js.map +1 -1
  139. package/dist/test/unit/parser/entry-annotations.test.js +2 -2
  140. package/dist/test/unit/parser/entry-annotations.test.js.map +1 -1
  141. package/dist/test/unit/parser/explicit-block.test.d.ts +2 -0
  142. package/dist/test/unit/parser/explicit-block.test.d.ts.map +1 -0
  143. package/dist/test/unit/parser/explicit-block.test.js +43 -0
  144. package/dist/test/unit/parser/explicit-block.test.js.map +1 -0
  145. package/dist/test/unit/parser/then-localization.test.d.ts +2 -0
  146. package/dist/test/unit/parser/then-localization.test.d.ts.map +1 -0
  147. package/dist/test/unit/parser/then-localization.test.js +147 -0
  148. package/dist/test/unit/parser/then-localization.test.js.map +1 -0
  149. package/dist/test/unit/parser/type-inference.test.js +61 -0
  150. package/dist/test/unit/parser/type-inference.test.js.map +1 -1
  151. package/dist/test/unit/stability/stability-gate.parity.test.d.ts +2 -0
  152. package/dist/test/unit/stability/stability-gate.parity.test.d.ts.map +1 -0
  153. package/dist/test/unit/stability/stability-gate.parity.test.js +34 -0
  154. package/dist/test/unit/stability/stability-gate.parity.test.js.map +1 -0
  155. package/dist/test/unit/stability/stability-gate.test.d.ts +2 -0
  156. package/dist/test/unit/stability/stability-gate.test.d.ts.map +1 -0
  157. package/dist/test/unit/stability/stability-gate.test.js +210 -0
  158. package/dist/test/unit/stability/stability-gate.test.js.map +1 -0
  159. package/dist/test/unit/typecheck/effect-prefix-injection.test.d.ts +2 -0
  160. package/dist/test/unit/typecheck/effect-prefix-injection.test.d.ts.map +1 -0
  161. package/dist/test/unit/typecheck/effect-prefix-injection.test.js +71 -0
  162. package/dist/test/unit/typecheck/effect-prefix-injection.test.js.map +1 -0
  163. package/dist/test/unit/typecheck/effects-and-capabilities.test.js +21 -0
  164. package/dist/test/unit/typecheck/effects-and-capabilities.test.js.map +1 -1
  165. package/dist/test/unit/typecheck/regression-fixes.test.js +2 -2
  166. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"type-inference.test.js","sourceRoot":"","sources":["../../../../test/unit/parser/type-inference.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-inference.test.js","sourceRoot":"","sources":["../../../../test/unit/parser/type-inference.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAGhG,6BAA6B;AAC7B,MAAM,IAAI,GAAY,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAEtD,mBAAmB;AACnB,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAEnF,kBAAkB;AAClB,SAAS,WAAW,CAAC,IAAU;IAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAED,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAC1B,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC;YACnD,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC;YACjD,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAmB,CAAC;YACvC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC;YAC/C,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;gBAC5B,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACvE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAClE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;gBAC5B,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAClE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;gBACpC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;gBACxC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACvE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAClE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;gBACjC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACvE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;gBAC3C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACtE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACzE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;gBAClD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC3E,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC1E,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;gBAC3C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACzE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;gBAC3C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACpE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACtE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;gBAC1C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC9D,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACtE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;gBAC1B,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACrE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACxE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACtE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;gBAC5C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACnE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACtE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;YACxC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;gBAC5B,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC9E,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAChF,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAClF,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;gBAC7B,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACnF,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACjF,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;gBAC5C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC7E,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAClF,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACnF,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;gBAC/C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC/E,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACpF,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACrF,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;gBAC9B,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACpE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;YAC1C,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;gBACxC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACnF,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACnF,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YACtF,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;gBAC3C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACnF,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACnF,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YAC1F,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;gBACxD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACrF,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACrF,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YACxF,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;gBAClC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACrE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;gBAC1B,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAChE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC/D,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAChE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;gBAC9C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC1E,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACjF,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACjF,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;gBAC1B,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACrE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACvE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC/C,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,WAAW,GAAiB;gBAChC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;aACvD,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,WAAW,GAAiB;gBAChC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;aACzD,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,WAAW,GAAiB;gBAChC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;aAC9C,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,WAAW,GAAiB;gBAChC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;aACjD,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,WAAW,GAAiB;gBAChC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;aAC3D,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,WAAW,GAAiB;gBAChC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;aACxC,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;YACrB,MAAM,WAAW,GAAiB;gBAChC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;gBACvC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;aACvD,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,WAAW,GAAiB;gBAChC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM;gBAC9D,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ;aACzD,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU;YACpD,MAAM,WAAW,GAAiB;gBAChC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;aACvD,CAAC;YACF,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC1D,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,WAAW,GAAiB;gBAChC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;aACzD,CAAC;YACF,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC1D,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM;YACnD,MAAM,WAAW,GAAiB;gBAChC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;aAC1D,CAAC;YACF,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACzD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;YACrB,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM;YACnD,MAAM,WAAW,GAAiB;gBAChC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;aACvD,CAAC;YACF,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACzD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;YACrB,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACjD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,WAAW,GAAiB;gBAChC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;aACxC,CAAC;YACF,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC1D,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;YACnB,qBAAqB;YACrB,wBAAwB;YACxB,MAAM,WAAW,GAAiB;gBAChC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;aACvD,CAAC;YACF,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACjD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YACpB,MAAM,IAAI,GAAG,cAAc,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,MAAM,KAAK,GAA6C;YACtD,oCAAoC;YACpC,CAAC,OAAO,EAAE,MAAM,CAAC;YACjB,CAAC,UAAU,EAAE,MAAM,CAAC;YACpB,CAAC,SAAS,EAAE,MAAM,CAAC;YACnB,CAAC,SAAS,EAAE,MAAM,CAAC;YACnB,CAAC,SAAS,EAAE,MAAM,CAAC;YACnB,CAAC,SAAS,EAAE,MAAM,CAAC;YACnB,CAAC,UAAU,EAAE,MAAM,CAAC;YACpB,kDAAkD;YAClD,CAAC,cAAc,EAAE,MAAM,CAAC;YACxB,CAAC,SAAS,EAAE,MAAM,CAAC;YACnB,CAAC,QAAQ,EAAE,MAAM,CAAC;YAClB,iCAAiC;YACjC,CAAC,KAAK,EAAE,KAAK,CAAC;YACd,CAAC,SAAS,EAAE,KAAK,CAAC;YAClB,CAAC,WAAW,EAAE,KAAK,CAAC;YACpB,4BAA4B;YAC5B,CAAC,YAAY,EAAE,UAAU,CAAC;YAC1B,CAAC,aAAa,EAAE,UAAU,CAAC;YAC3B,CAAC,aAAa,EAAE,OAAO,CAAC;YACxB,CAAC,UAAU,EAAE,MAAM,CAAC;YACpB,gBAAgB;YAChB,CAAC,SAAS,EAAE,MAAM,CAAC;YACnB,CAAC,WAAW,EAAE,MAAM,CAAC;YACrB,CAAC,WAAW,EAAE,MAAM,CAAC;YACrB,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,iCAAiC;YACjC,CAAC,eAAe,EAAE,MAAM,CAAC;YACzB,CAAC,YAAY,EAAE,MAAM,CAAC;YACtB,CAAC,gBAAgB,EAAE,MAAM,CAAC;YAC1B,0DAA0D;YAC1D,CAAC,eAAe,EAAE,MAAM,CAAC;YACzB,CAAC,cAAc,EAAE,MAAM,CAAC;YACxB,0BAA0B;YAC1B,CAAC,QAAQ,EAAE,MAAM,CAAC;YAClB,CAAC,iBAAiB,EAAE,MAAM,CAAC;YAC3B,sEAAsE;YACtE,0CAA0C;YAC1C,CAAC,kBAAkB,EAAE,MAAM,CAAC;YAC5B,CAAC,WAAW,EAAE,MAAM,CAAC;YACrB,CAAC,aAAa,EAAE,MAAM,CAAC;YACvB,CAAC,cAAc,EAAE,UAAU,CAAC;YAC5B,eAAe;YACf,CAAC,eAAe,EAAE,KAAK,CAAC;YACxB,CAAC,YAAY,EAAE,KAAK,CAAC;YACrB,CAAC,MAAM,EAAE,KAAK,CAAC;SAChB,CAAC;QAEF,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC;YAC1C,EAAE,CAAC,GAAG,SAAS,MAAM,QAAQ,EAAE,EAAE,GAAG,EAAE;gBACpC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACjF,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stability-gate.parity.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stability-gate.parity.test.d.ts","sourceRoot":"","sources":["../../../../test/unit/stability/stability-gate.parity.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ import { describe, it } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { readFileSync } from 'node:fs';
4
+ import { dirname, join } from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+ import { canonicalize } from '../../../src/frontend/canonicalizer.js';
7
+ import { lex } from '../../../src/frontend/lexer.js';
8
+ import { parse } from '../../../src/parser.js';
9
+ import { lowerModule } from '../../../src/lower_to_core.js';
10
+ import { StabilityGate } from '../../../src/stability/stability_gate.js';
11
+ // 编译后测试从 dist/test/unit/stability/ 运行;fixture 是 test/fixtures 下的源文件(tsc
12
+ // 不复制 json)。从 dist 目录上溯到 dist 根,再到仓库根(dist 的父),进 test/fixtures。
13
+ const here = dirname(fileURLToPath(import.meta.url));
14
+ // here = <repo>/dist/test/unit/stability → 上溯 4 级到 <repo>。
15
+ const repoRoot = join(here, '..', '..', '..', '..');
16
+ const fixtures = JSON.parse(readFileSync(join(repoRoot, 'test', 'fixtures', 'stability', 'stability-gate-fixtures.json'), 'utf8'));
17
+ function lower(src) {
18
+ return lowerModule(parse(lex(canonicalize(src))).ast);
19
+ }
20
+ describe('StabilityGate parity — TS 产出 == 共享 fixture', () => {
21
+ it('fixture 非空(防 corpus 删除后假通过)', () => {
22
+ assert.ok(fixtures.cases.length >= 8);
23
+ });
24
+ for (const f of fixtures.cases) {
25
+ it(`${f.name}: featureId + nodeKind 集匹配 fixture`, () => {
26
+ const diags = StabilityGate.scan(lower(f.src), { strict: false });
27
+ const features = diags.map((d) => d.data.featureId).sort();
28
+ const nodeKinds = diags.map((d) => d.data.nodeKind ?? '').sort();
29
+ assert.deepEqual(features, [...f.features].sort());
30
+ assert.deepEqual(nodeKinds, [...f.nodeKinds].sort());
31
+ });
32
+ }
33
+ });
34
+ //# sourceMappingURL=stability-gate.parity.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stability-gate.parity.test.js","sourceRoot":"","sources":["../../../../test/unit/stability/stability-gate.parity.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAuBzE,wEAAwE;AACxE,gEAAgE;AAChE,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,2DAA2D;AAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACpD,MAAM,QAAQ,GAAgB,IAAI,CAAC,KAAK,CACtC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,8BAA8B,CAAC,EAAE,MAAM,CAAC,CACtG,CAAC;AAEF,SAAS,KAAK,CAAC,GAAW;IACxB,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;IAC1D,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC/B,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,oCAAoC,EAAE,GAAG,EAAE;YACrD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACjE,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stability-gate.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stability-gate.test.d.ts","sourceRoot":"","sources":["../../../../test/unit/stability/stability-gate.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,210 @@
1
+ import { describe, it } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { canonicalize } from '../../../src/frontend/canonicalizer.js';
4
+ import { lex } from '../../../src/frontend/lexer.js';
5
+ import { parse } from '../../../src/parser.js';
6
+ import { lowerModule } from '../../../src/lower_to_core.js';
7
+ import { StabilityGate, STABILITY_EXPERIMENTAL_CODE, } from '../../../src/stability/stability_gate.js';
8
+ function lower(src) {
9
+ return lowerModule(parse(lex(canonicalize(src))).ast);
10
+ }
11
+ function scanSource(src, strict = false) {
12
+ return StabilityGate.scan(lower(src), { strict });
13
+ }
14
+ function featureIds(src, strict = false) {
15
+ return scanSource(src, strict)
16
+ .map((d) => d.data.featureId)
17
+ .sort();
18
+ }
19
+ describe('StabilityGate — 5 类 Experimental 检测(positive)', () => {
20
+ it('workflow: Start/Wait 语句触发', () => {
21
+ const ids = featureIds(`
22
+ Module test.wf.
23
+
24
+ Rule process, produce Text:
25
+ Start task as async fetch().
26
+ Wait for task.
27
+ Return "done".
28
+ `);
29
+ assert.ok(ids.includes('workflow'), 'Start/Wait 应触发 workflow');
30
+ });
31
+ it('version-import: Use ... version N 触发', () => {
32
+ const ids = featureIds(`
33
+ Module test.vi.
34
+
35
+ Use risk.Scoring version 2 as Score.
36
+ Use Http as H.
37
+
38
+ Rule greet, produce Text:
39
+ Return "hi".
40
+ `);
41
+ assert.ok(ids.includes('version-import'), 'version import 应触发');
42
+ });
43
+ it('effect-capabilities: @io [Http] 显式 caps 触发', () => {
44
+ const ids = featureIds(`
45
+ Module test.eff.
46
+
47
+ Rule fetch, produce Text. It performs io [Http]:
48
+ Return Http.get("/x").
49
+ `);
50
+ assert.ok(ids.includes('effect-capabilities'), '显式 caps 应触发');
51
+ });
52
+ it('pii: @pii 参数触发', () => {
53
+ const ids = featureIds(`
54
+ Module test.pii.
55
+
56
+ Rule secure given field as @pii(L2, email) Text, produce Text:
57
+ Return field.
58
+ `);
59
+ assert.ok(ids.includes('pii'), '@pii 应触发');
60
+ });
61
+ it('deprecated-annotation: @deprecated 触发', () => {
62
+ const ids = featureIds(`
63
+ Module test.anno.
64
+
65
+ @deprecated
66
+ Rule oldRule, produce Text:
67
+ Return "x".
68
+ `);
69
+ assert.ok(ids.includes('deprecated-annotation'), '@deprecated 应触发');
70
+ });
71
+ it('deprecated-annotation: @Example 大小写不敏感触发', () => {
72
+ const ids = featureIds(`
73
+ Module test.anno2.
74
+
75
+ @example
76
+ Rule demo, produce Text:
77
+ Return "x".
78
+ `);
79
+ assert.ok(ids.includes('deprecated-annotation'), '@example 应触发');
80
+ });
81
+ });
82
+ describe('StabilityGate — Stable 特性不触发(false-positive 对照)', () => {
83
+ it('裸 @io(无显式 caps)不触发 effect-capabilities(★关键 parity 陷阱)', () => {
84
+ const ids = featureIds(`
85
+ Module test.stable_io.
86
+
87
+ Rule fetch, produce Text. It performs io:
88
+ Return Http.get("/x").
89
+ `);
90
+ assert.ok(!ids.includes('effect-capabilities'), '裸 @io 是 Stable,不该触发');
91
+ });
92
+ it('@entry 不触发 deprecated-annotation', () => {
93
+ const ids = featureIds(`
94
+ Module test.stable_entry.
95
+
96
+ @entry
97
+ Rule main, produce Text:
98
+ Return "x".
99
+ `);
100
+ assert.ok(!ids.includes('deprecated-annotation'), '@entry 是 Stable,不该触发');
101
+ });
102
+ it('无 version 的 import 不触发', () => {
103
+ const ids = featureIds(`
104
+ Module test.stable_import.
105
+
106
+ Use Http as H.
107
+
108
+ Rule greet, produce Text:
109
+ Return "hi".
110
+ `);
111
+ assert.ok(!ids.includes('version-import'), '无 version import 不该触发');
112
+ });
113
+ it('纯 Stable 模块诊断为空', () => {
114
+ const diags = scanSource(`
115
+ Module test.pure_stable.
116
+
117
+ Rule greet given name as Text, produce Text. It performs io:
118
+ Return name.
119
+ `);
120
+ assert.equal(diags.length, 0, '纯 Stable 模块不该有诊断');
121
+ });
122
+ });
123
+ describe('StabilityGate — 嵌套检测', () => {
124
+ it('if 块内的 Workflow 语句被检出', () => {
125
+ const ids = featureIds(`
126
+ Module test.nested_wf.
127
+
128
+ Rule process given flag as Bool, produce Text:
129
+ If flag:
130
+ Start task as async fetch().
131
+ Return "async".
132
+ Otherwise:
133
+ Return "sync".
134
+ `);
135
+ assert.ok(ids.includes('workflow'), '嵌套 if 内 Start 应被检出');
136
+ });
137
+ it('嵌套 List of @pii 类型被检出(★类型树递归,Codex P1)', () => {
138
+ // @pii 包在 List 里——须递归类型树才能命中。
139
+ const ids = featureIds(`
140
+ Module test.nested_pii.
141
+
142
+ Rule collect given items as List of @pii(L2, email) Text, produce Text:
143
+ Return "ok".
144
+ `);
145
+ assert.ok(ids.includes('pii'), 'List 里嵌套的 @pii 应被检出');
146
+ });
147
+ it('返回类型上的 @pii 被检出', () => {
148
+ const ids = featureIds(`
149
+ Module test.ret_pii.
150
+
151
+ Rule getEmail, produce @pii(L2, email) Text:
152
+ Return "user@example.com".
153
+ `);
154
+ assert.ok(ids.includes('pii'), '返回类型 @pii 应被检出');
155
+ });
156
+ });
157
+ describe('StabilityGate — strict 语义(severity 恒 warning,strict 走 blocking)', () => {
158
+ const src = `
159
+ Module test.strict.
160
+
161
+ @deprecated
162
+ Rule oldRule, produce Text:
163
+ Return "x".
164
+ `;
165
+ it('severity 恒为 warning,strict 不改 severity', () => {
166
+ const warn = scanSource(src, false);
167
+ const strict = scanSource(src, true);
168
+ assert.ok(warn.every((d) => d.severity === 'warning'));
169
+ assert.ok(strict.every((d) => d.severity === 'warning'), 'strict 也是 warning severity');
170
+ });
171
+ it('strict=true 时 data.blocking=true', () => {
172
+ const strict = scanSource(src, true);
173
+ assert.ok(strict.length > 0);
174
+ assert.ok(strict.every((d) => d.data.blocking === true), 'strict 时 blocking=true');
175
+ const warn = scanSource(src, false);
176
+ assert.ok(warn.every((d) => d.data.blocking === false), 'warn 时 blocking=false');
177
+ });
178
+ it('shouldRejectForStability: strict + 有 W600 → 拒', () => {
179
+ const strict = scanSource(src, true);
180
+ assert.equal(StabilityGate.shouldRejectForStability(strict, true), true);
181
+ assert.equal(StabilityGate.shouldRejectForStability(strict, false), false);
182
+ assert.equal(StabilityGate.shouldRejectForStability([], true), false);
183
+ });
184
+ it('code 恒为 W600,含 featureId + moduleName + span', () => {
185
+ const diags = scanSource(src, false);
186
+ assert.ok(diags.length > 0);
187
+ for (const d of diags) {
188
+ assert.equal(d.code, STABILITY_EXPERIMENTAL_CODE);
189
+ assert.ok(d.data.featureId);
190
+ assert.equal(d.data.moduleName, 'test.strict');
191
+ // span 存在且合理(不逐字节比,ADR §7)。
192
+ if (d.span) {
193
+ assert.ok(d.span.start.line >= 1);
194
+ }
195
+ }
196
+ });
197
+ });
198
+ describe('StabilityGate — allowExperimental 放行', () => {
199
+ it('allowExperimental=true 返回空(显式放行)', () => {
200
+ const diags = StabilityGate.scan(lower(`
201
+ Module test.allow.
202
+
203
+ @deprecated
204
+ Rule oldRule, produce Text:
205
+ Return "x".
206
+ `), { strict: true, allowExperimental: true });
207
+ assert.equal(diags.length, 0, 'allowExperimental 应返回空');
208
+ });
209
+ });
210
+ //# sourceMappingURL=stability-gate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stability-gate.test.js","sourceRoot":"","sources":["../../../../test/unit/stability/stability-gate.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=effect-prefix-injection.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-prefix-injection.test.d.ts","sourceRoot":"","sources":["../../../../test/unit/typecheck/effect-prefix-injection.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * `collectEffects` 的前缀注入(issue #88)。
3
+ *
4
+ * **缺陷**:`typecheck/effects.ts` 读的是 `pure.ts` 的**硬编码常量**,而
5
+ * `effects/effect_inference.ts` 早已走 `getIOPrefixes()` 读配置——同一份用户自定义
6
+ * effect 配置在两条路径上结果不一致,配置对 typecheck 侧完全不生效。
7
+ *
8
+ * **为什么用注入而不是直接 import 配置**:`browser.ts:134` 直接
9
+ * `import { checkEffects } from './effects.js'`,而读配置的 `typecheck/utils.ts`
10
+ * 静态引用了 `node:module` / `node:path`。effects.ts 一旦 import 它,Node 内置模块
11
+ * 就会被拉进浏览器 bundle 闭包——`pure.ts` 头注释(R15)明确记载:打包器会看到该引用,
12
+ * **即使它被包在 try/catch 里**。`verify-browser-entry` 守卫会因此红灯。
13
+ *
14
+ * 所以前缀由调用方注入:Node 入口(`module.ts`)传配置值,浏览器入口不传、
15
+ * 回落 `pure.ts` 内置默认值。本测试直接验证这个契约。
16
+ */
17
+ import { describe, it } from 'node:test';
18
+ import assert from 'node:assert/strict';
19
+ import { collectEffects } from '../../../src/typecheck/effects.js';
20
+ function baseContext() {
21
+ return {
22
+ datas: new Map(),
23
+ enums: new Map(),
24
+ imports: new Map(),
25
+ funcSignatures: new Map(),
26
+ importedEffects: new Map(),
27
+ moduleSearchPaths: [],
28
+ };
29
+ }
30
+ function blockCalling(name) {
31
+ const call = {
32
+ kind: 'Call',
33
+ target: { kind: 'Name', name },
34
+ args: [],
35
+ };
36
+ return { kind: 'Block', statements: [{ kind: 'Return', expr: call }] };
37
+ }
38
+ describe('collectEffects 前缀注入(issue #88)', () => {
39
+ it('注入自定义 IO 前缀后,该调用被识别为 io', () => {
40
+ const block = blockCalling('MyCustomIo.fetch');
41
+ // 不注入:自定义前缀不在 pure.ts 内置默认里 → 识别不出效果
42
+ assert.deepEqual([...collectEffects(baseContext(), block)], [], '未注入时不应识别自定义前缀(这正是修复前的行为)');
43
+ // 注入:配置驱动的前缀生效
44
+ const ctx = {
45
+ ...baseContext(),
46
+ effectPrefixes: { io: ['MyCustomIo.'], cpu: [] },
47
+ };
48
+ assert.deepEqual([...collectEffects(ctx, block)], ['io'], '注入自定义 IO 前缀后必须识别为 io');
49
+ });
50
+ it('注入自定义 CPU 前缀同样生效', () => {
51
+ const ctx = {
52
+ ...baseContext(),
53
+ effectPrefixes: { io: [], cpu: ['MyCpu.'] },
54
+ };
55
+ assert.deepEqual([...collectEffects(ctx, blockCalling('MyCpu.crunch'))], ['cpu']);
56
+ });
57
+ it('反向守卫:不注入时回落内置默认值,Http. 仍被识别为 io', () => {
58
+ // 浏览器路径就是这条——effects.ts 保持 browser-safe,仍有可用的默认行为
59
+ assert.deepEqual([...collectEffects(baseContext(), blockCalling('Http.get'))], ['io'], '未注入时必须回落 pure.ts 内置默认前缀,而不是什么都识别不出');
60
+ });
61
+ it('反向守卫:注入的前缀是**替换**而非追加内置默认', () => {
62
+ // 契约明确:注入什么就用什么。调用方(module.ts)负责传入完整集合,
63
+ // 避免"注入了却仍受内置默认影响"这种难以推理的半生效状态。
64
+ const ctx = {
65
+ ...baseContext(),
66
+ effectPrefixes: { io: ['OnlyThis.'], cpu: [] },
67
+ };
68
+ assert.deepEqual([...collectEffects(ctx, blockCalling('Http.get'))], [], '显式注入后不应再叠加内置默认前缀');
69
+ });
70
+ });
71
+ //# sourceMappingURL=effect-prefix-injection.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-prefix-injection.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/effect-prefix-injection.test.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,27 @@ Rule fetchUser, produce Text. It performs io:
48
48
  `);
49
49
  assert.equal(diagnostics.some(d => d.code === "E200" /* ErrorCode.EFF_MISSING_IO */), false, '声明 IO 后不应报告缺失');
50
50
  });
51
+ // A3: Crypto 是 cpu-class(本地密码学 CPU 密集),缺声明报 MISSING_CPU 非 MISSING_IO(与 Java 对齐)。
52
+ // 能力推断走调用前缀(Hash./Crypto./Kms. 等),故用直接前缀调用(非别名)。
53
+ it('Crypto(Hash)无 effect 声明应报 CAPABILITY_INFER_MISSING_CPU 而非 IO', () => {
54
+ const diagnostics = runTypecheck(`
55
+ Module test.typecheck.crypto_missing_cpu.
56
+
57
+ Rule digest, produce Text:
58
+ Return Hash.sha256("data").
59
+ `);
60
+ assert.equal(diagnostics.some(d => d.code === "E304" /* ErrorCode.CAPABILITY_INFER_MISSING_CPU */), true, 'Crypto 缺声明应报 MISSING_CPU');
61
+ assert.equal(diagnostics.some(d => d.code === "E303" /* ErrorCode.CAPABILITY_INFER_MISSING_IO */), false, 'Crypto 不应报 MISSING_IO(cpu-class)');
62
+ });
63
+ it('Crypto 声明 cpu 后不应报告缺失', () => {
64
+ const diagnostics = runTypecheck(`
65
+ Module test.typecheck.crypto_with_cpu.
66
+
67
+ Rule digest, produce Text. It performs cpu:
68
+ Return Hash.sha256("data").
69
+ `);
70
+ assert.equal(diagnostics.some(d => d.code === "E304" /* ErrorCode.CAPABILITY_INFER_MISSING_CPU */), false, 'Crypto + @cpu 不应报缺失(cpu-class 需 @cpu 或 @io)');
71
+ });
51
72
  it('未使用任何 IO 调用却声明 io 应该触发冗余警告', () => {
52
73
  const diagnostics = runTypecheck(`
53
74
  Module test.typecheck.superfluous_io.
@@ -1 +1 @@
1
- {"version":3,"file":"effects-and-capabilities.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/effects-and-capabilities.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"effects-and-capabilities.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/effects-and-capabilities.test.ts"],"names":[],"mappings":"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"}
@@ -53,7 +53,7 @@ describe('回归测试:重复符号检测', () => {
53
53
  defineSymbol(context, 'myVar', typeName('Text'), 'var', span);
54
54
  const diagnostics = context.diagnostics.getDiagnostics();
55
55
  assert.strictEqual(diagnostics.length, 1, '应产生一个诊断');
56
- assert.strictEqual(diagnostics[0]?.code, "E102" /* ErrorCode.DUPLICATE_SYMBOL */, '应为 DUPLICATE_SYMBOL 错误');
56
+ assert.strictEqual(diagnostics[0]?.code, "E104" /* ErrorCode.DUPLICATE_SYMBOL */, '应为 DUPLICATE_SYMBOL 错误');
57
57
  assert.strictEqual(diagnostics[0]?.severity, 'error');
58
58
  });
59
59
  it('不同作用域定义同名符号不应报错(遮蔽场景)', () => {
@@ -99,7 +99,7 @@ describe('回归测试:重复符号检测', () => {
99
99
  decls: [func],
100
100
  };
101
101
  const diagnostics = typecheckModule(mod);
102
- assert.ok(diagnostics.some(d => d.code === "E102" /* ErrorCode.DUPLICATE_SYMBOL */), '重复参数名应触发 DUPLICATE_SYMBOL 错误');
102
+ assert.ok(diagnostics.some(d => d.code === "E104" /* ErrorCode.DUPLICATE_SYMBOL */), '重复参数名应触发 DUPLICATE_SYMBOL 错误');
103
103
  });
104
104
  });
105
105
  describe('回归测试:补偿效应推断', () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aster-cloud/aster-lang-ts",
3
- "version": "1.0.13",
3
+ "version": "1.0.17",
4
4
  "description": "Aster CNL (Controlled Natural Language) TypeScript Compiler - Lexer, Parser, AST, Core IR, Type Checker",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",