@aster-cloud/aster-lang-ts 1.0.36 → 1.1.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 (341) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +13 -7
  3. package/dist/scripts/aster.js +10 -5
  4. package/dist/scripts/aster.js.map +1 -1
  5. package/dist/scripts/core-ir-json.js +8 -3
  6. package/dist/scripts/core-ir-json.js.map +1 -1
  7. package/dist/scripts/emit-classfiles.js +3 -2
  8. package/dist/scripts/emit-classfiles.js.map +1 -1
  9. package/dist/scripts/emit-core.js +8 -5
  10. package/dist/scripts/emit-core.js.map +1 -1
  11. package/dist/scripts/generate-casefold.d.ts +2 -0
  12. package/dist/scripts/generate-casefold.d.ts.map +1 -0
  13. package/dist/scripts/generate-casefold.js +34 -0
  14. package/dist/scripts/generate-casefold.js.map +1 -0
  15. package/dist/scripts/generate-lexicons.js +17 -1
  16. package/dist/scripts/generate-lexicons.js.map +1 -1
  17. package/dist/scripts/golden.js +16 -16
  18. package/dist/scripts/golden.js.map +1 -1
  19. package/dist/scripts/perf-benchmark.js +1 -0
  20. package/dist/scripts/perf-benchmark.js.map +1 -1
  21. package/dist/scripts/profile-medium-project.js +1 -1
  22. package/dist/scripts/profile-medium-project.js.map +1 -1
  23. package/dist/scripts/repl.js +3 -8
  24. package/dist/scripts/repl.js.map +1 -1
  25. package/dist/scripts/typecheck-cli.js +10 -9
  26. package/dist/scripts/typecheck-cli.js.map +1 -1
  27. package/dist/scripts/update-eff-violation-expected.js +6 -6
  28. package/dist/scripts/update-eff-violation-expected.js.map +1 -1
  29. package/dist/scripts/verify-capabilities.js +3 -6
  30. package/dist/scripts/verify-capabilities.js.map +1 -1
  31. package/dist/scripts/verify-lexicon-sync.js +10 -0
  32. package/dist/scripts/verify-lexicon-sync.js.map +1 -1
  33. package/dist/src/ai/validator.d.ts +1 -1
  34. package/dist/src/ai/validator.d.ts.map +1 -1
  35. package/dist/src/ai/validator.js +12 -12
  36. package/dist/src/ai/validator.js.map +1 -1
  37. package/dist/src/ast/ast.d.ts +1 -0
  38. package/dist/src/ast/ast.d.ts.map +1 -1
  39. package/dist/src/ast/ast.js.map +1 -1
  40. package/dist/src/browser.d.ts +27 -10
  41. package/dist/src/browser.d.ts.map +1 -1
  42. package/dist/src/browser.js +42 -54
  43. package/dist/src/browser.js.map +1 -1
  44. package/dist/src/cli/policy-converter.js +5 -9
  45. package/dist/src/cli/policy-converter.js.map +1 -1
  46. package/dist/src/compile-pipeline.d.ts +48 -0
  47. package/dist/src/compile-pipeline.d.ts.map +1 -0
  48. package/dist/src/compile-pipeline.js +89 -0
  49. package/dist/src/compile-pipeline.js.map +1 -0
  50. package/dist/src/config/lexicons/diagnostic-messages.d.ts.map +1 -1
  51. package/dist/src/config/lexicons/diagnostic-messages.js +20 -0
  52. package/dist/src/config/lexicons/diagnostic-messages.js.map +1 -1
  53. package/dist/src/config/lexicons/identifiers/casefold-table.generated.d.ts +9 -0
  54. package/dist/src/config/lexicons/identifiers/casefold-table.generated.d.ts.map +1 -0
  55. package/dist/src/config/lexicons/identifiers/casefold-table.generated.js +1467 -0
  56. package/dist/src/config/lexicons/identifiers/casefold-table.generated.js.map +1 -0
  57. package/dist/src/config/lexicons/identifiers/casefold.d.ts +7 -0
  58. package/dist/src/config/lexicons/identifiers/casefold.d.ts.map +1 -0
  59. package/dist/src/config/lexicons/identifiers/casefold.js +37 -0
  60. package/dist/src/config/lexicons/identifiers/casefold.js.map +1 -0
  61. package/dist/src/config/lexicons/identifiers/domains/finance.loan.de-DE.d.ts.map +1 -1
  62. package/dist/src/config/lexicons/identifiers/domains/finance.loan.de-DE.js +8 -0
  63. package/dist/src/config/lexicons/identifiers/domains/finance.loan.de-DE.js.map +1 -1
  64. package/dist/src/config/lexicons/identifiers/domains/finance.loan.en-US.d.ts.map +1 -1
  65. package/dist/src/config/lexicons/identifiers/domains/finance.loan.en-US.js +8 -0
  66. package/dist/src/config/lexicons/identifiers/domains/finance.loan.en-US.js.map +1 -1
  67. package/dist/src/config/lexicons/identifiers/domains/finance.loan.zh-CN.d.ts.map +1 -1
  68. package/dist/src/config/lexicons/identifiers/domains/finance.loan.zh-CN.js +8 -0
  69. package/dist/src/config/lexicons/identifiers/domains/finance.loan.zh-CN.js.map +1 -1
  70. package/dist/src/config/lexicons/identifiers/domains/insurance.auto.de-DE.d.ts.map +1 -1
  71. package/dist/src/config/lexicons/identifiers/domains/insurance.auto.de-DE.js +6 -0
  72. package/dist/src/config/lexicons/identifiers/domains/insurance.auto.de-DE.js.map +1 -1
  73. package/dist/src/config/lexicons/identifiers/domains/insurance.auto.en-US.d.ts.map +1 -1
  74. package/dist/src/config/lexicons/identifiers/domains/insurance.auto.en-US.js +6 -0
  75. package/dist/src/config/lexicons/identifiers/domains/insurance.auto.en-US.js.map +1 -1
  76. package/dist/src/config/lexicons/identifiers/domains/insurance.auto.zh-CN.d.ts.map +1 -1
  77. package/dist/src/config/lexicons/identifiers/domains/insurance.auto.zh-CN.js +6 -0
  78. package/dist/src/config/lexicons/identifiers/domains/insurance.auto.zh-CN.js.map +1 -1
  79. package/dist/src/config/lexicons/identifiers/index.d.ts +7 -9
  80. package/dist/src/config/lexicons/identifiers/index.d.ts.map +1 -1
  81. package/dist/src/config/lexicons/identifiers/index.js +8 -9
  82. package/dist/src/config/lexicons/identifiers/index.js.map +1 -1
  83. package/dist/src/config/lexicons/identifiers/registry.d.ts +11 -5
  84. package/dist/src/config/lexicons/identifiers/registry.d.ts.map +1 -1
  85. package/dist/src/config/lexicons/identifiers/registry.js +20 -14
  86. package/dist/src/config/lexicons/identifiers/registry.js.map +1 -1
  87. package/dist/src/config/lexicons/identifiers/scopes.d.ts +52 -0
  88. package/dist/src/config/lexicons/identifiers/scopes.d.ts.map +1 -0
  89. package/dist/src/config/lexicons/identifiers/scopes.js +166 -0
  90. package/dist/src/config/lexicons/identifiers/scopes.js.map +1 -0
  91. package/dist/src/config/lexicons/identifiers/types.d.ts +15 -29
  92. package/dist/src/config/lexicons/identifiers/types.d.ts.map +1 -1
  93. package/dist/src/config/lexicons/identifiers/types.js +91 -101
  94. package/dist/src/config/lexicons/identifiers/types.js.map +1 -1
  95. package/dist/src/config/lexicons/lsp-ui-texts.d.ts +7 -0
  96. package/dist/src/config/lexicons/lsp-ui-texts.d.ts.map +1 -1
  97. package/dist/src/config/lexicons/lsp-ui-texts.js +12 -0
  98. package/dist/src/config/lexicons/lsp-ui-texts.js.map +1 -1
  99. package/dist/src/config/lexicons/zh-CN.d.ts.map +1 -1
  100. package/dist/src/config/lexicons/zh-CN.js +1 -0
  101. package/dist/src/config/lexicons/zh-CN.js.map +1 -1
  102. package/dist/src/config/semantic.d.ts +5 -0
  103. package/dist/src/config/semantic.d.ts.map +1 -1
  104. package/dist/src/config/semantic.js +12 -0
  105. package/dist/src/config/semantic.js.map +1 -1
  106. package/dist/src/core/inferred_fields.d.ts +10 -0
  107. package/dist/src/core/inferred_fields.d.ts.map +1 -1
  108. package/dist/src/core/inferred_fields.js +9 -0
  109. package/dist/src/core/inferred_fields.js.map +1 -1
  110. package/dist/src/core/interpreter.d.ts.map +1 -1
  111. package/dist/src/core/interpreter.js +37 -16
  112. package/dist/src/core/interpreter.js.map +1 -1
  113. package/dist/src/core/resolution-mark.d.ts +28 -0
  114. package/dist/src/core/resolution-mark.d.ts.map +1 -0
  115. package/dist/src/core/resolution-mark.js +19 -0
  116. package/dist/src/core/resolution-mark.js.map +1 -0
  117. package/dist/src/core/resolve-typed-references.d.ts +36 -0
  118. package/dist/src/core/resolve-typed-references.d.ts.map +1 -0
  119. package/dist/src/core/resolve-typed-references.js +703 -0
  120. package/dist/src/core/resolve-typed-references.js.map +1 -0
  121. package/dist/src/diagnostics/error_codes.d.ts +11 -1
  122. package/dist/src/diagnostics/error_codes.d.ts.map +1 -1
  123. package/dist/src/diagnostics/error_codes.js +80 -0
  124. package/dist/src/diagnostics/error_codes.js.map +1 -1
  125. package/dist/src/frontend/canonicalizer.d.ts +8 -13
  126. package/dist/src/frontend/canonicalizer.d.ts.map +1 -1
  127. package/dist/src/frontend/canonicalizer.js +21 -50
  128. package/dist/src/frontend/canonicalizer.js.map +1 -1
  129. package/dist/src/frontend/resolution-choice.d.ts +34 -0
  130. package/dist/src/frontend/resolution-choice.d.ts.map +1 -0
  131. package/dist/src/frontend/resolution-choice.js +69 -0
  132. package/dist/src/frontend/resolution-choice.js.map +1 -0
  133. package/dist/src/frontend/resolution-context.d.ts +28 -0
  134. package/dist/src/frontend/resolution-context.d.ts.map +1 -0
  135. package/dist/src/frontend/resolution-context.js +7 -0
  136. package/dist/src/frontend/resolution-context.js.map +1 -0
  137. package/dist/src/frontend/resolve-declarations.d.ts +13 -0
  138. package/dist/src/frontend/resolve-declarations.d.ts.map +1 -0
  139. package/dist/src/frontend/resolve-declarations.js +611 -0
  140. package/dist/src/frontend/resolve-declarations.js.map +1 -0
  141. package/dist/src/frontend/resolve-policy-types.d.ts +54 -0
  142. package/dist/src/frontend/resolve-policy-types.d.ts.map +1 -0
  143. package/dist/src/frontend/resolve-policy-types.js +71 -0
  144. package/dist/src/frontend/resolve-policy-types.js.map +1 -0
  145. package/dist/src/frontend/transformers.d.ts +11 -2
  146. package/dist/src/frontend/transformers.d.ts.map +1 -1
  147. package/dist/src/frontend/transformers.js +153 -10
  148. package/dist/src/frontend/transformers.js.map +1 -1
  149. package/dist/src/index.d.ts +14 -7
  150. package/dist/src/index.d.ts.map +1 -1
  151. package/dist/src/index.js +14 -7
  152. package/dist/src/index.js.map +1 -1
  153. package/dist/src/lower_to_core.d.ts +2 -16
  154. package/dist/src/lower_to_core.d.ts.map +1 -1
  155. package/dist/src/lower_to_core.js +101 -44
  156. package/dist/src/lower_to_core.js.map +1 -1
  157. package/dist/src/lsp/canonicalize-options.d.ts +8 -11
  158. package/dist/src/lsp/canonicalize-options.d.ts.map +1 -1
  159. package/dist/src/lsp/canonicalize-options.js +8 -8
  160. package/dist/src/lsp/canonicalize-options.js.map +1 -1
  161. package/dist/src/lsp/completion.d.ts +32 -5
  162. package/dist/src/lsp/completion.d.ts.map +1 -1
  163. package/dist/src/lsp/completion.js +59 -0
  164. package/dist/src/lsp/completion.js.map +1 -1
  165. package/dist/src/lsp/diagnostics.d.ts +2 -0
  166. package/dist/src/lsp/diagnostics.d.ts.map +1 -1
  167. package/dist/src/lsp/diagnostics.js +77 -73
  168. package/dist/src/lsp/diagnostics.js.map +1 -1
  169. package/dist/src/lsp/navigation/hover.d.ts +12 -5
  170. package/dist/src/lsp/navigation/hover.d.ts.map +1 -1
  171. package/dist/src/lsp/navigation/hover.js +136 -90
  172. package/dist/src/lsp/navigation/hover.js.map +1 -1
  173. package/dist/src/lsp/parse-document.d.ts +3 -0
  174. package/dist/src/lsp/parse-document.d.ts.map +1 -1
  175. package/dist/src/lsp/parse-document.js +5 -17
  176. package/dist/src/lsp/parse-document.js.map +1 -1
  177. package/dist/src/lsp/resolution.d.ts +40 -0
  178. package/dist/src/lsp/resolution.d.ts.map +1 -0
  179. package/dist/src/lsp/resolution.js +179 -0
  180. package/dist/src/lsp/resolution.js.map +1 -0
  181. package/dist/src/lsp/server.js +3 -1
  182. package/dist/src/lsp/server.js.map +1 -1
  183. package/dist/src/lsp/source-positions.d.ts +3 -9
  184. package/dist/src/lsp/source-positions.d.ts.map +1 -1
  185. package/dist/src/lsp/source-positions.js +25 -19
  186. package/dist/src/lsp/source-positions.js.map +1 -1
  187. package/dist/src/mapping/candidate-generator.d.ts +19 -9
  188. package/dist/src/mapping/candidate-generator.d.ts.map +1 -1
  189. package/dist/src/mapping/candidate-generator.js +79 -40
  190. package/dist/src/mapping/candidate-generator.js.map +1 -1
  191. package/dist/src/mapping/pipeline.d.ts +6 -0
  192. package/dist/src/mapping/pipeline.d.ts.map +1 -1
  193. package/dist/src/mapping/pipeline.js +69 -75
  194. package/dist/src/mapping/pipeline.js.map +1 -1
  195. package/dist/src/mapping/review-queue.d.ts.map +1 -1
  196. package/dist/src/mapping/review-queue.js +3 -2
  197. package/dist/src/mapping/review-queue.js.map +1 -1
  198. package/dist/src/nodeid/node-id-map.d.ts +7 -0
  199. package/dist/src/nodeid/node-id-map.d.ts.map +1 -1
  200. package/dist/src/nodeid/node-id-map.js +23 -13
  201. package/dist/src/nodeid/node-id-map.js.map +1 -1
  202. package/dist/src/parser/context.d.ts +2 -0
  203. package/dist/src/parser/context.d.ts.map +1 -1
  204. package/dist/src/parser/context.js +1 -0
  205. package/dist/src/parser/context.js.map +1 -1
  206. package/dist/src/parser/decl-parser.d.ts.map +1 -1
  207. package/dist/src/parser/decl-parser.js +1 -0
  208. package/dist/src/parser/decl-parser.js.map +1 -1
  209. package/dist/src/parser/expr-stmt-parser.d.ts.map +1 -1
  210. package/dist/src/parser/expr-stmt-parser.js +2 -16
  211. package/dist/src/parser/expr-stmt-parser.js.map +1 -1
  212. package/dist/src/parser.d.ts.map +1 -1
  213. package/dist/src/parser.js +3 -1
  214. package/dist/src/parser.js.map +1 -1
  215. package/dist/src/typecheck/expression.d.ts.map +1 -1
  216. package/dist/src/typecheck/expression.js +35 -1
  217. package/dist/src/typecheck/expression.js.map +1 -1
  218. package/dist/src/typecheck/generics.d.ts +5 -0
  219. package/dist/src/typecheck/generics.d.ts.map +1 -1
  220. package/dist/src/typecheck/generics.js +15 -8
  221. package/dist/src/typecheck/generics.js.map +1 -1
  222. package/dist/src/typecheck/statement.d.ts +10 -0
  223. package/dist/src/typecheck/statement.d.ts.map +1 -1
  224. package/dist/src/typecheck/statement.js +19 -5
  225. package/dist/src/typecheck/statement.js.map +1 -1
  226. package/dist/src/types.d.ts +45 -13
  227. package/dist/src/types.d.ts.map +1 -1
  228. package/dist/src/types.js.map +1 -1
  229. package/dist/src/version.d.ts +17 -0
  230. package/dist/src/version.d.ts.map +1 -0
  231. package/dist/src/version.js +17 -0
  232. package/dist/src/version.js.map +1 -0
  233. package/dist/test/integration/builtin-enum-vocabulary.test.d.ts +2 -0
  234. package/dist/test/integration/builtin-enum-vocabulary.test.d.ts.map +1 -0
  235. package/dist/test/integration/builtin-enum-vocabulary.test.js +51 -0
  236. package/dist/test/integration/builtin-enum-vocabulary.test.js.map +1 -0
  237. package/dist/test/integration/compliance/compliance-smoke.test.js +16 -9
  238. package/dist/test/integration/compliance/compliance-smoke.test.js.map +1 -1
  239. package/dist/test/integration/lsp/lsp-rename-safety.test.js +0 -13
  240. package/dist/test/integration/lsp/lsp-rename-safety.test.js.map +1 -1
  241. package/dist/test/integration/name-resolution-entrypoints.test.d.ts +2 -0
  242. package/dist/test/integration/name-resolution-entrypoints.test.d.ts.map +1 -0
  243. package/dist/test/integration/name-resolution-entrypoints.test.js +109 -0
  244. package/dist/test/integration/name-resolution-entrypoints.test.js.map +1 -0
  245. package/dist/test/integration/vocabulary-resolution.test.d.ts +2 -0
  246. package/dist/test/integration/vocabulary-resolution.test.d.ts.map +1 -0
  247. package/dist/test/integration/vocabulary-resolution.test.js +291 -0
  248. package/dist/test/integration/vocabulary-resolution.test.js.map +1 -0
  249. package/dist/test/property/property.test.js +2 -1
  250. package/dist/test/property/property.test.js.map +1 -1
  251. package/dist/test/unit/allocation-budget.test.js +41 -0
  252. package/dist/test/unit/allocation-budget.test.js.map +1 -1
  253. package/dist/test/unit/canonicalizer/canonicalizer.test.js +7 -79
  254. package/dist/test/unit/canonicalizer/canonicalizer.test.js.map +1 -1
  255. package/dist/test/unit/canonicalizer/chinese-function-syntax.test.d.ts +2 -0
  256. package/dist/test/unit/canonicalizer/chinese-function-syntax.test.d.ts.map +1 -0
  257. package/dist/test/unit/canonicalizer/chinese-function-syntax.test.js +86 -0
  258. package/dist/test/unit/canonicalizer/chinese-function-syntax.test.js.map +1 -0
  259. package/dist/test/unit/canonicalizer/transformers.test.d.ts +2 -0
  260. package/dist/test/unit/canonicalizer/transformers.test.d.ts.map +1 -0
  261. package/dist/test/unit/canonicalizer/transformers.test.js +25 -0
  262. package/dist/test/unit/canonicalizer/transformers.test.js.map +1 -0
  263. package/dist/test/unit/config/lexicons/identifiers/identifier-mapping.test.js +134 -31
  264. package/dist/test/unit/config/lexicons/identifiers/identifier-mapping.test.js.map +1 -1
  265. package/dist/test/unit/config/lexicons/identifiers/literal-macro.test.js +16 -18
  266. package/dist/test/unit/config/lexicons/identifiers/literal-macro.test.js.map +1 -1
  267. package/dist/test/unit/core/resolve-typed-references.test.d.ts +2 -0
  268. package/dist/test/unit/core/resolve-typed-references.test.d.ts.map +1 -0
  269. package/dist/test/unit/core/resolve-typed-references.test.js +600 -0
  270. package/dist/test/unit/core/resolve-typed-references.test.js.map +1 -0
  271. package/dist/test/unit/diagnostics/resolution-codes.test.d.ts +6 -0
  272. package/dist/test/unit/diagnostics/resolution-codes.test.d.ts.map +1 -0
  273. package/dist/test/unit/diagnostics/resolution-codes.test.js +83 -0
  274. package/dist/test/unit/diagnostics/resolution-codes.test.js.map +1 -0
  275. package/dist/test/unit/formatter-corpus-roundtrip.test.js +9 -0
  276. package/dist/test/unit/formatter-corpus-roundtrip.test.js.map +1 -1
  277. package/dist/test/unit/frontend/resolve-declarations.test.d.ts +2 -0
  278. package/dist/test/unit/frontend/resolve-declarations.test.d.ts.map +1 -0
  279. package/dist/test/unit/frontend/resolve-declarations.test.js +400 -0
  280. package/dist/test/unit/frontend/resolve-declarations.test.js.map +1 -0
  281. package/dist/test/unit/identifiers/casefold.test.d.ts +2 -0
  282. package/dist/test/unit/identifiers/casefold.test.d.ts.map +1 -0
  283. package/dist/test/unit/identifiers/casefold.test.js +77 -0
  284. package/dist/test/unit/identifiers/casefold.test.js.map +1 -0
  285. package/dist/test/unit/identifiers/scopes.test.d.ts +2 -0
  286. package/dist/test/unit/identifiers/scopes.test.d.ts.map +1 -0
  287. package/dist/test/unit/identifiers/scopes.test.js +109 -0
  288. package/dist/test/unit/identifiers/scopes.test.js.map +1 -0
  289. package/dist/test/unit/lambda-capture-parity.test.js +12 -5
  290. package/dist/test/unit/lambda-capture-parity.test.js.map +1 -1
  291. package/dist/test/unit/lsp/lsp-locale-fixes.test.js +10 -11
  292. package/dist/test/unit/lsp/lsp-locale-fixes.test.js.map +1 -1
  293. package/dist/test/unit/lsp/parse-document.test.js +39 -0
  294. package/dist/test/unit/lsp/parse-document.test.js.map +1 -1
  295. package/dist/test/unit/lsp/resolution-completion.test.d.ts +2 -0
  296. package/dist/test/unit/lsp/resolution-completion.test.d.ts.map +1 -0
  297. package/dist/test/unit/lsp/resolution-completion.test.js +79 -0
  298. package/dist/test/unit/lsp/resolution-completion.test.js.map +1 -0
  299. package/dist/test/unit/lsp/resolution-diagnostics.test.d.ts +2 -0
  300. package/dist/test/unit/lsp/resolution-diagnostics.test.d.ts.map +1 -0
  301. package/dist/test/unit/lsp/resolution-diagnostics.test.js +88 -0
  302. package/dist/test/unit/lsp/resolution-diagnostics.test.js.map +1 -0
  303. package/dist/test/unit/lsp/resolution-fixture.d.ts +32 -0
  304. package/dist/test/unit/lsp/resolution-fixture.d.ts.map +1 -0
  305. package/dist/test/unit/lsp/resolution-fixture.js +69 -0
  306. package/dist/test/unit/lsp/resolution-fixture.js.map +1 -0
  307. package/dist/test/unit/lsp/resolution-hover.test.d.ts +2 -0
  308. package/dist/test/unit/lsp/resolution-hover.test.d.ts.map +1 -0
  309. package/dist/test/unit/lsp/resolution-hover.test.js +107 -0
  310. package/dist/test/unit/lsp/resolution-hover.test.js.map +1 -0
  311. package/dist/test/unit/lsp/tenant-vocabulary.test.js +21 -47
  312. package/dist/test/unit/lsp/tenant-vocabulary.test.js.map +1 -1
  313. package/dist/test/unit/mapping/candidate-generator.test.js +54 -1
  314. package/dist/test/unit/mapping/candidate-generator.test.js.map +1 -1
  315. package/dist/test/unit/mapping/pipeline.test.js +22 -1
  316. package/dist/test/unit/mapping/pipeline.test.js.map +1 -1
  317. package/dist/test/unit/parser/parser.test.js +22 -0
  318. package/dist/test/unit/parser/parser.test.js.map +1 -1
  319. package/dist/test/unit/public-api-checked-entries.test.d.ts +2 -0
  320. package/dist/test/unit/public-api-checked-entries.test.d.ts.map +1 -0
  321. package/dist/test/unit/public-api-checked-entries.test.js +28 -0
  322. package/dist/test/unit/public-api-checked-entries.test.js.map +1 -0
  323. package/dist/test/unit/typecheck/e104-block-scope-parity.test.d.ts +2 -0
  324. package/dist/test/unit/typecheck/e104-block-scope-parity.test.d.ts.map +1 -0
  325. package/dist/test/unit/typecheck/e104-block-scope-parity.test.js +82 -0
  326. package/dist/test/unit/typecheck/e104-block-scope-parity.test.js.map +1 -0
  327. package/dist/test/unit/typecheck/qualified-enum-member.test.d.ts +2 -0
  328. package/dist/test/unit/typecheck/qualified-enum-member.test.d.ts.map +1 -0
  329. package/dist/test/unit/typecheck/qualified-enum-member.test.js +73 -0
  330. package/dist/test/unit/typecheck/qualified-enum-member.test.js.map +1 -0
  331. package/dist/test/unit/typecheck/type-inference.test.js +22 -0
  332. package/dist/test/unit/typecheck/type-inference.test.js.map +1 -1
  333. package/dist/test/unit/version.test.d.ts +9 -0
  334. package/dist/test/unit/version.test.d.ts.map +1 -0
  335. package/dist/test/unit/version.test.js +34 -0
  336. package/dist/test/unit/version.test.js.map +1 -0
  337. package/package.json +1 -1
  338. package/dist/src/config/lexicons/identifiers/examples/canonicalizer-integration.d.ts +0 -47
  339. package/dist/src/config/lexicons/identifiers/examples/canonicalizer-integration.d.ts.map +0 -1
  340. package/dist/src/config/lexicons/identifiers/examples/canonicalizer-integration.js +0 -142
  341. package/dist/src/config/lexicons/identifiers/examples/canonicalizer-integration.js.map +0 -1
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * **设计原则**:
7
7
  * - 领域分离:每个业务领域(金融、保险、医疗等)有独立的映射
8
- * - 双向映射:支持本地化→规范化 和 规范化→本地化 双向转换
8
+ * - 本地化→规范化按源码位置解析(VocabularyScopes,ADR 0051);本索引只提供规范化→本地化
9
9
  * - 可扩展:租户可添加自定义映射
10
10
  * - 类型安全:通过 TypeScript 类型系统保证映射完整性
11
11
  */
@@ -23,8 +23,8 @@ export declare enum IdentifierKind {
23
23
  ENUM_VALUE = "enum_value",
24
24
  /**
25
25
  * 字面量宏(token → 字符串字面量)。与其它 kind 不同:canonical **不是** ASCII
26
- * 标识符,而是要替换出去的**字符串内容**(不含引号)。canonicalize 时把 localized
27
- * token 逐字替换成 `<open>content<close>`(用当前 lexicon 的 stringQuotes 包裹,
26
+ * 标识符,而是要替换出去的**字符串内容**(不含引号)。canonicalize 时把触发词
27
+ * token(按折叠键匹配)替换成 `<open>content<close>`(用当前 lexicon 的 stringQuotes 包裹,
28
28
  * 从而被 segmentString 正确保护,避免插入 ASCII 引号在标点归一化后不被隔离)。
29
29
  *
30
30
  * <p>用途:把一个领域术语固定展开成一段标准文案(合规场景常见),例如
@@ -88,22 +88,16 @@ export interface DomainVocabulary {
88
88
  };
89
89
  }
90
90
  /**
91
- * 标识符映射索引 - 用于快速查找。
91
+ * 标识符映射索引 - 用于展示与按类型查找(规范名 → 本地化写法等)。
92
+ * 源码中的名字按位置解析见 VocabularyScopes(ADR 0051),本索引不参与编译。
92
93
  */
93
94
  export interface IdentifierIndex {
94
- /** 本地化名称 → 规范化名称 */
95
- readonly toCanonical: ReadonlyMap<string, string>;
96
- /** 规范化名称 → 本地化名称 */
95
+ /** 规范化名称(小写) → 本地化名称 */
97
96
  readonly toLocalized: ReadonlyMap<string, string>;
98
- /** 按类型分类的映射 */
97
+ /** 按类型分类的映射(键为本地化名称小写) */
99
98
  readonly byKind: ReadonlyMap<IdentifierKind, ReadonlyMap<string, IdentifierMapping>>;
100
99
  /** 字段映射(按父结构体索引) */
101
100
  readonly fieldsByParent: ReadonlyMap<string, ReadonlyMap<string, IdentifierMapping>>;
102
- /**
103
- * 字面量宏的 localized key(已 toLowerCase)。canonicalize 替换时据此判定:
104
- * 命中则把 `toCanonical` 里存的**内容**用 lexicon 引号包裹后插入,而非当作标识符原样插入。
105
- */
106
- readonly literals: ReadonlySet<string>;
107
101
  }
108
102
  /**
109
103
  * 构建标识符索引。
@@ -112,14 +106,6 @@ export interface IdentifierIndex {
112
106
  * @returns 标识符索引
113
107
  */
114
108
  export declare function buildIdentifierIndex(vocabulary: DomainVocabulary): IdentifierIndex;
115
- /**
116
- * 将本地化标识符转换为规范化名称。
117
- *
118
- * @param index - 标识符索引
119
- * @param localized - 本地化名称
120
- * @returns 规范化名称,如果不存在映射则返回原始名称
121
- */
122
- export declare function canonicalizeIdentifier(index: IdentifierIndex, localized: string): string;
123
109
  /**
124
110
  * 将规范化名称转换为本地化标识符。
125
111
  *
@@ -129,15 +115,15 @@ export declare function canonicalizeIdentifier(index: IdentifierIndex, localized
129
115
  */
130
116
  export declare function localizeIdentifier(index: IdentifierIndex, canonical: string): string;
131
117
  /**
132
- * 检查是否存在标识符映射。
118
+ * 验证领域词汇表(ADR 0051:名称按位置解析)。
133
119
  *
134
- * @param index - 标识符索引
135
- * @param name - 标识符名称(本地化或规范化)
136
- * @returns 如果存在映射返回 true
137
- */
138
- export declare function hasIdentifierMapping(index: IdentifierIndex, name: string): boolean;
139
- /**
140
- * 验证领域词汇表。
120
+ * - 规范名必须是 ASCII 标识符;字面量宏内容做注入防护。
121
+ * - 字段与枚举成员必须有 parent(按父类型分作用域;不支持全局字段)。
122
+ * - 冲突只在同一角色、同一作用域内判定:NFC 后写法(本地化名或同义词)完全相同却对应不同规范名
123
+ * → error。同规范名的多个写法(同义词)、仅大小写不同的写法、不同父类型下的同名字段都合法,
124
+ * 使用点由解析器按位置精确优先、折叠唯一再判定。
125
+ * - 字面量宏触发词须全局唯一:canonicalize 在解析前做上下文无关替换,触发词若与任何其它映射同名,
126
+ * 一个词展开成字符串还是标识符就不可预测。
141
127
  *
142
128
  * @param vocabulary - 领域词汇表
143
129
  * @returns 验证结果
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/config/lexicons/identifiers/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/config/lexicons/identifiers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH;;GAEG;AACH,oBAAY,cAAc;IACxB,eAAe;IACf,MAAM,WAAW;IACjB,WAAW;IACX,KAAK,UAAU;IACf,WAAW;IACX,QAAQ,aAAa;IACrB,UAAU;IACV,UAAU,eAAe;IACzB;;;;;;;;;OASG;IACH,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4BAA4B;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,mBAAmB;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,YAAY;IACZ,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAE9B,uBAAuB;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,eAAe;IACf,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,2BAA2B;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uDAAuD;IACvD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,gBAAgB;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,oCAAoC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,UAAU;IACV,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,YAAY;IACZ,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAE/C,mBAAmB;IACnB,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAE9C,WAAW;IACX,QAAQ,CAAC,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAEjD,YAAY;IACZ,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAEnD;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAEjD,UAAU;IACV,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAClB,YAAY;QACZ,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,WAAW;QACX,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,aAAa;QACb,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,SAAS;QACT,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElD,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAErF,oBAAoB;IACpB,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;CACtF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,gBAAgB,GAAG,eAAe,CAyClF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpF;AAkDD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,gBAAgB,GAAG;IAChE,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAqDA"}
@@ -5,10 +5,11 @@
5
5
  *
6
6
  * **设计原则**:
7
7
  * - 领域分离:每个业务领域(金融、保险、医疗等)有独立的映射
8
- * - 双向映射:支持本地化→规范化 和 规范化→本地化 双向转换
8
+ * - 本地化→规范化按源码位置解析(VocabularyScopes,ADR 0051);本索引只提供规范化→本地化
9
9
  * - 可扩展:租户可添加自定义映射
10
10
  * - 类型安全:通过 TypeScript 类型系统保证映射完整性
11
11
  */
12
+ import { nfc } from './casefold.js';
12
13
  /**
13
14
  * 标识符类型枚举。
14
15
  */
@@ -24,8 +25,8 @@ export var IdentifierKind;
24
25
  IdentifierKind["ENUM_VALUE"] = "enum_value";
25
26
  /**
26
27
  * 字面量宏(token → 字符串字面量)。与其它 kind 不同:canonical **不是** ASCII
27
- * 标识符,而是要替换出去的**字符串内容**(不含引号)。canonicalize 时把 localized
28
- * token 逐字替换成 `<open>content<close>`(用当前 lexicon 的 stringQuotes 包裹,
28
+ * 标识符,而是要替换出去的**字符串内容**(不含引号)。canonicalize 时把触发词
29
+ * token(按折叠键匹配)替换成 `<open>content<close>`(用当前 lexicon 的 stringQuotes 包裹,
29
30
  * 从而被 segmentString 正确保护,避免插入 ASCII 引号在标点归一化后不被隔离)。
30
31
  *
31
32
  * <p>用途:把一个领域术语固定展开成一段标准文案(合规场景常见),例如
@@ -41,35 +42,19 @@ export var IdentifierKind;
41
42
  * @returns 标识符索引
42
43
  */
43
44
  export function buildIdentifierIndex(vocabulary) {
44
- const toCanonical = new Map();
45
45
  const toLocalized = new Map();
46
46
  const byKind = new Map();
47
47
  const fieldsByParent = new Map();
48
- const literals = new Set();
49
48
  // 初始化 byKind 分类
50
49
  for (const kind of Object.values(IdentifierKind)) {
51
50
  byKind.set(kind, new Map());
52
51
  }
53
52
  const addMapping = (mapping) => {
54
53
  const localizedKey = mapping.localized.toLowerCase();
55
- // localized → canonical(字面量宏存的是「内容」,替换阶段再包引号)
56
- toCanonical.set(localizedKey, mapping.canonical);
57
54
  // 字面量宏是单向宏展开,不建反向映射(避免 toLocalized 暴露怪异的内容反查)。
58
- if (mapping.kind === IdentifierKind.LITERAL) {
59
- literals.add(localizedKey);
60
- }
61
- else {
55
+ if (mapping.kind !== IdentifierKind.LITERAL) {
62
56
  toLocalized.set(mapping.canonical.toLowerCase(), mapping.localized);
63
57
  }
64
- // 别名也加入映射(字面量宏的别名同样触发宏展开)
65
- if (mapping.aliases) {
66
- for (const alias of mapping.aliases) {
67
- const aliasKey = alias.toLowerCase();
68
- toCanonical.set(aliasKey, mapping.canonical);
69
- if (mapping.kind === IdentifierKind.LITERAL)
70
- literals.add(aliasKey);
71
- }
72
- }
73
58
  // 按类型分类
74
59
  byKind.get(mapping.kind).set(localizedKey, mapping);
75
60
  // 字段按父结构体索引
@@ -87,23 +72,11 @@ export function buildIdentifierIndex(vocabulary) {
87
72
  vocabulary.enumValues?.forEach(addMapping);
88
73
  vocabulary.literals?.forEach(addMapping);
89
74
  return {
90
- toCanonical,
91
75
  toLocalized,
92
76
  byKind: byKind,
93
77
  fieldsByParent: fieldsByParent,
94
- literals,
95
78
  };
96
79
  }
97
- /**
98
- * 将本地化标识符转换为规范化名称。
99
- *
100
- * @param index - 标识符索引
101
- * @param localized - 本地化名称
102
- * @returns 规范化名称,如果不存在映射则返回原始名称
103
- */
104
- export function canonicalizeIdentifier(index, localized) {
105
- return index.toCanonical.get(localized.toLowerCase()) ?? localized;
106
- }
107
80
  /**
108
81
  * 将规范化名称转换为本地化标识符。
109
82
  *
@@ -114,19 +87,64 @@ export function canonicalizeIdentifier(index, localized) {
114
87
  export function localizeIdentifier(index, canonical) {
115
88
  return index.toLocalized.get(canonical.toLowerCase()) ?? canonical;
116
89
  }
117
- /**
118
- * 检查是否存在标识符映射。
119
- *
120
- * @param index - 标识符索引
121
- * @param name - 标识符名称(本地化或规范化)
122
- * @returns 如果存在映射返回 true
123
- */
124
- export function hasIdentifierMapping(index, name) {
125
- const lower = name.toLowerCase();
126
- return index.toCanonical.has(lower) || index.toLocalized.has(lower);
90
+ /** 映射所属的解析作用域(ADR 0051 §7):字段 / 枚举成员按规范父名分作用域;字面量宏不在其中。 */
91
+ function scopeOf(mapping) {
92
+ switch (mapping.kind) {
93
+ case IdentifierKind.STRUCT:
94
+ return 'types';
95
+ case IdentifierKind.FUNCTION:
96
+ return 'functions';
97
+ case IdentifierKind.FIELD:
98
+ return mapping.parent === undefined ? undefined : `fields[${mapping.parent}]`;
99
+ case IdentifierKind.ENUM_VALUE:
100
+ return mapping.parent === undefined ? undefined : `enumMembers[${mapping.parent}]`;
101
+ default:
102
+ return undefined;
103
+ }
104
+ }
105
+ /** 缺 parent 时的诊断(字段与枚举成员措辞不同,下游按文案识别原因)。 */
106
+ function missingParentMessage(mapping, context) {
107
+ if (mapping.parent)
108
+ return undefined;
109
+ if (mapping.kind === IdentifierKind.FIELD)
110
+ return `${context}: 字段 "${mapping.localized}" 没有指定父结构体`;
111
+ if (mapping.kind === IdentifierKind.ENUM_VALUE)
112
+ return `${context}: 枚举成员 "${mapping.localized}" 没有指定父枚举`;
113
+ return undefined;
114
+ }
115
+ /** 字面量宏内容的注入防护校验;普通标识符校验规范名是 ASCII 标识符。 */
116
+ function checkCanonical(mapping, context, errors) {
117
+ if (mapping.kind !== IdentifierKind.LITERAL) {
118
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(mapping.canonical)) {
119
+ errors.push(`${context}: 规范化名称 "${mapping.canonical}" 必须是有效的 ASCII 标识符`);
120
+ }
121
+ return;
122
+ }
123
+ // 字面量宏:canonical 是要展开的**字符串内容**(不含引号),严格校验以防编译期注入:
124
+ // 单行、无控制字符、无任何字符串定界符与反斜杠(内容会被包进 lexicon 引号里,含引号可提前
125
+ // 闭合字符串、逃逸出 token 注入源码;智能引号会被 canonicalize 归一化,放行则展开非幂等)。
126
+ const content = mapping.canonical ?? '';
127
+ if (content.length === 0) {
128
+ errors.push(`${context}: 字面量宏内容不得为空`);
129
+ }
130
+ // eslint-disable-next-line no-control-regex
131
+ if (/[\u0000-\u001F\u007F]/.test(content)) {
132
+ errors.push(`${context}: 字面量宏内容含控制字符/换行,禁止(防注入)`);
133
+ }
134
+ if (/["\\「」『』«»“”‘’]/.test(content)) {
135
+ errors.push(`${context}: 字面量宏内容不得含引号定界符(" 「 」 『 』 « » “ ” ‘ ’)或反斜杠 "${content}"(防逃逸/注入)`);
136
+ }
127
137
  }
128
138
  /**
129
- * 验证领域词汇表。
139
+ * 验证领域词汇表(ADR 0051:名称按位置解析)。
140
+ *
141
+ * - 规范名必须是 ASCII 标识符;字面量宏内容做注入防护。
142
+ * - 字段与枚举成员必须有 parent(按父类型分作用域;不支持全局字段)。
143
+ * - 冲突只在同一角色、同一作用域内判定:NFC 后写法(本地化名或同义词)完全相同却对应不同规范名
144
+ * → error。同规范名的多个写法(同义词)、仅大小写不同的写法、不同父类型下的同名字段都合法,
145
+ * 使用点由解析器按位置精确优先、折叠唯一再判定。
146
+ * - 字面量宏触发词须全局唯一:canonicalize 在解析前做上下文无关替换,触发词若与任何其它映射同名,
147
+ * 一个词展开成字符串还是标识符就不可预测。
130
148
  *
131
149
  * @param vocabulary - 领域词汇表
132
150
  * @returns 验证结果
@@ -134,68 +152,40 @@ export function hasIdentifierMapping(index, name) {
134
152
  export function validateVocabulary(vocabulary) {
135
153
  const errors = [];
136
154
  const warnings = [];
137
- const seenCanonical = new Set();
138
- const seenLocalized = new Set();
139
- const seenTrigger = new Map(); // 触发词(localized+aliases) → 是否字面量宏;字面量宏须全局唯一
140
- const checkMapping = (mapping, context) => {
141
- if (mapping.kind === IdentifierKind.LITERAL) {
142
- // 字面量宏:canonical 是要展开的**字符串内容**(不含引号),严格校验以防编译期注入:
143
- // 单行、无控制字符、无裸双引号(")或反斜杠(\)。允许中文/标点/空格等普通可见字符。
144
- const content = mapping.canonical ?? '';
145
- if (content.length === 0) {
146
- errors.push(`${context}: 字面量宏内容不得为空`);
147
- }
148
- // 禁控制字符(0x00-0x1F 与 0x7F,含 \r \n \t \0)——单行、防注入
149
- // eslint-disable-next-line no-control-regex
150
- if (/[\u0000-\u001F\u007F]/.test(content)) {
151
- errors.push(`${context}: 字面量宏内容含控制字符/换行,禁止(防注入)`);
152
- }
153
- // 禁任何字符串定界符与反斜杠——内容会被包进 lexicon 引号里,若含该 lexicon(或任何
154
- // 已知 lexicon)的引号字符可提前闭合字符串、逃逸出 token 注入源码(Codex 复审 P0)。
155
- // 禁:ASCII 双引号 "、反斜杠 \、CJK 直角引号「」『』、书名号/法式引号 « »、
156
- // 以及智能/弯引号 “ ” ‘ ’(canonicalize 会先做智能引号归一化,若放行则展开非幂等,
157
- // 重编译 canonical 输出会因 unterminated-string 失败)。
158
- if (/["\\「」『』«»“”‘’]/.test(content)) {
159
- errors.push(`${context}: 字面量宏内容不得含引号定界符(" 「 」 『 』 « » “ ” ‘ ’)或反斜杠 "${content}"(防逃逸/注入)`);
160
- }
161
- }
162
- else {
163
- // 普通标识符:canonical 必须是有效 ASCII 标识符(不变)
164
- if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(mapping.canonical)) {
165
- errors.push(`${context}: 规范化名称 "${mapping.canonical}" 必须是有效的 ASCII 标识符`);
166
- }
167
- }
168
- // 检查重复
169
- const canonicalKey = `${mapping.kind}:${mapping.canonical.toLowerCase()}`;
170
- if (seenCanonical.has(canonicalKey)) {
171
- errors.push(`${context}: 规范化名称 "${mapping.canonical}" 重复`);
155
+ // 作用域内写法(NFC)→ 首个映射的规范名与位置,用于判定同写法不同规范名
156
+ const seenWritten = new Map();
157
+ const seenTrigger = new Map(); // 触发词(localized+aliases) → 是否字面量宏
158
+ const checkScopeConflict = (mapping, context, written) => {
159
+ const scope = scopeOf(mapping);
160
+ if (scope === undefined)
161
+ return;
162
+ const key = `${scope}\u0000${written}`;
163
+ const prev = seenWritten.get(key);
164
+ if (prev === undefined) {
165
+ seenWritten.set(key, { canonical: mapping.canonical, context });
172
166
  }
173
- seenCanonical.add(canonicalKey);
174
- const localizedKey = `${mapping.kind}:${mapping.localized.toLowerCase()}`;
175
- if (seenLocalized.has(localizedKey)) {
176
- warnings.push(`${context}: 本地化名称 "${mapping.localized}" 重复,可能导致歧义`);
167
+ else if (prev.canonical !== mapping.canonical) {
168
+ errors.push(`${context}: 写法 "${written}" 在 ${scope} 中对应多个规范名(${prev.canonical}、${mapping.canonical},另见 ${prev.context})`);
177
169
  }
178
- seenLocalized.add(localizedKey);
179
- // 字面量宏触发词隔离(Codex 复审 P0):canonicalizer 上下文无关替换——**字面量宏**
180
- // 展开成字符串、普通标识符展开成标识符,二者语义天差地别。故要求:字面量宏的触发词
181
- // (localized + aliases)不得与**任何其它映射**(含普通标识符、其它字面量宏)的触发词
182
- // 冲突,否则一个词到底展开成字符串还是标识符不可预测。普通标识符之间同名(不同 kind,
183
- // 靠上下文消歧,如 struct/field 同名)仍是既有的 warning 行为,不动。
170
+ };
171
+ const checkTrigger = (mapping, context, trigger) => {
184
172
  const isLit = mapping.kind === IdentifierKind.LITERAL;
185
- const triggers = [mapping.localized, ...(mapping.aliases ?? [])];
186
- for (const t of triggers) {
187
- const key = t.toLowerCase();
188
- const prev = seenTrigger.get(key);
189
- if (prev !== undefined && (prev || isLit)) {
190
- // prev 是字面量宏、或当前是字面量宏 → 字面量宏与他人触发词冲突,error。
191
- errors.push(`${context}: 触发词 "${t}" 与另一条映射冲突(字面量宏触发词须全局唯一,防"字符串 vs 标识符"替换歧义)`);
192
- }
193
- // 记录:值=是否字面量宏(一旦记为 true 不回退,保证后续普通标识符命中同名也报错)
194
- seenTrigger.set(key, (prev ?? false) || isLit);
173
+ const key = trigger.toLowerCase();
174
+ const prev = seenTrigger.get(key);
175
+ if (prev !== undefined && (prev || isLit)) {
176
+ errors.push(`${context}: 触发词 "${trigger}" 与另一条映射冲突(字面量宏触发词须全局唯一,防"字符串 vs 标识符"替换歧义)`);
195
177
  }
196
- // 检查字段映射是否有父结构体
197
- if (mapping.kind === IdentifierKind.FIELD && !mapping.parent) {
198
- warnings.push(`${context}: 字段 "${mapping.localized}" 没有指定父结构体`);
178
+ // 一旦记为字面量宏不回退,保证后续普通标识符命中同名也报错
179
+ seenTrigger.set(key, (prev ?? false) || isLit);
180
+ };
181
+ const checkMapping = (mapping, context) => {
182
+ checkCanonical(mapping, context, errors);
183
+ const missingParent = missingParentMessage(mapping, context);
184
+ if (missingParent)
185
+ errors.push(missingParent);
186
+ for (const trigger of [mapping.localized, ...(mapping.aliases ?? [])]) {
187
+ checkScopeConflict(mapping, context, nfc(trigger));
188
+ checkTrigger(mapping, context, trigger);
199
189
  }
200
190
  };
201
191
  vocabulary.structs.forEach((m, i) => checkMapping(m, `structs[${i}]`));
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/config/lexicons/identifiers/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/config/lexicons/identifiers/types.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,13 @@ export interface LspUiTexts {
32
32
  readonly hintPrefix: string;
33
33
  readonly fixPrefix: string;
34
34
  readonly missingModuleHeader: string;
35
+ /** 名称解析悬停(ADR 0051):`写法 → 规范名(角色 · 父名)` 的角色名与括号 */
36
+ readonly resolutionRoleType: string;
37
+ readonly resolutionRoleField: string;
38
+ readonly resolutionRoleMember: string;
39
+ readonly resolutionRoleFunction: string;
40
+ readonly resolutionOpen: string;
41
+ readonly resolutionClose: string;
35
42
  }
36
43
  /**
37
44
  * 从 JSON overlay 数据注册 LSP UI 文本(覆盖内联 fallback)。
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-ui-texts.d.ts","sourceRoot":"","sources":["../../../../src/config/lexicons/lsp-ui-texts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,iBAAiB;AACjB,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAEvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IAErC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAiED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAElH;AAED,iCAAiC;AACjC,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,CAGrE"}
1
+ {"version":3,"file":"lsp-ui-texts.d.ts","sourceRoot":"","sources":["../../../../src/config/lexicons/lsp-ui-texts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,iBAAiB;AACjB,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAEvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IAErC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IAErC,mDAAmD;IACnD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AA+ED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAElH;AAED,iCAAiC;AACjC,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,CAGrE"}
@@ -31,6 +31,12 @@ const EN_US_UI = {
31
31
  hintPrefix: 'Hint:',
32
32
  fixPrefix: 'Fix:',
33
33
  missingModuleHeader: 'Missing module header. Add "Module <name>."',
34
+ resolutionRoleType: 'type',
35
+ resolutionRoleField: 'field',
36
+ resolutionRoleMember: 'enum member',
37
+ resolutionRoleFunction: 'function',
38
+ resolutionOpen: ' (',
39
+ resolutionClose: ')',
34
40
  };
35
41
  /** 内联 fallback:中文 UI 文本 */
36
42
  const ZH_CN_UI = {
@@ -55,6 +61,12 @@ const ZH_CN_UI = {
55
61
  hintPrefix: '提示:',
56
62
  fixPrefix: '修复:',
57
63
  missingModuleHeader: '缺少模块头。请添加 "模块 <名称>。"',
64
+ resolutionRoleType: '类型',
65
+ resolutionRoleField: '字段',
66
+ resolutionRoleMember: '枚举成员',
67
+ resolutionRoleFunction: '函数',
68
+ resolutionOpen: '(',
69
+ resolutionClose: ')',
58
70
  };
59
71
  const UI_BY_LEXICON = {
60
72
  'en-US': EN_US_UI,
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-ui-texts.js","sourceRoot":"","sources":["../../../../src/config/lexicons/lsp-ui-texts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA+BrD,2BAA2B;AAC3B,MAAM,QAAQ,GAAyB;IACrC,YAAY,EAAE,UAAU;IACxB,iBAAiB,EAAE,oBAAoB;IACvC,oBAAoB,EAAE,wCAAwC;IAC9D,cAAc,EAAE,iBAAiB;IACjC,iBAAiB,EAAE,gCAAgC;IACnD,kBAAkB,EAAE,qBAAqB;IACzC,qBAAqB,EAAE,uBAAuB;IAE9C,aAAa,EAAE,UAAU;IACzB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,OAAO;IACnB,cAAc,EAAE,WAAW;IAC3B,mBAAmB,EAAE,iBAAiB;IAEtC,gBAAgB,EAAE,UAAU;IAC5B,SAAS,EAAE,2HAA2H;IACtI,SAAS,EAAE,iHAAiH;IAC5H,SAAS,EAAE,0EAA0E;IACrF,aAAa,EAAE,6DAA6D;IAE5E,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,MAAM;IAEjB,mBAAmB,EAAE,6CAA6C;CACnE,CAAC;AAEF,2BAA2B;AAC3B,MAAM,QAAQ,GAAyB;IACrC,YAAY,EAAE,KAAK;IACnB,iBAAiB,EAAE,MAAM;IACzB,oBAAoB,EAAE,YAAY;IAClC,cAAc,EAAE,MAAM;IACtB,iBAAiB,EAAE,WAAW;IAC9B,kBAAkB,EAAE,MAAM;IAC1B,qBAAqB,EAAE,MAAM;IAE7B,aAAa,EAAE,IAAI;IACnB,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,MAAM;IAClB,cAAc,EAAE,IAAI;IACpB,mBAAmB,EAAE,MAAM;IAE3B,gBAAgB,EAAE,QAAQ;IAC1B,SAAS,EAAE,gEAAgE;IAC3E,SAAS,EAAE,kDAAkD;IAC7D,SAAS,EAAE,8BAA8B;IACzC,aAAa,EAAE,oCAAoC;IAEnD,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,KAAK;IAEhB,mBAAmB,EAAE,sBAAsB;CAC5C,CAAC;AAEF,MAAM,aAAa,GAAyC;IAC1D,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAiB,EAAE,OAA+C;IAC1G,aAAa,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;AACrD,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,aAAa,CAAC,OAAiB;IAC7C,IAAI,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"lsp-ui-texts.js","sourceRoot":"","sources":["../../../../src/config/lexicons/lsp-ui-texts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAuCrD,2BAA2B;AAC3B,MAAM,QAAQ,GAAyB;IACrC,YAAY,EAAE,UAAU;IACxB,iBAAiB,EAAE,oBAAoB;IACvC,oBAAoB,EAAE,wCAAwC;IAC9D,cAAc,EAAE,iBAAiB;IACjC,iBAAiB,EAAE,gCAAgC;IACnD,kBAAkB,EAAE,qBAAqB;IACzC,qBAAqB,EAAE,uBAAuB;IAE9C,aAAa,EAAE,UAAU;IACzB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,OAAO;IACnB,cAAc,EAAE,WAAW;IAC3B,mBAAmB,EAAE,iBAAiB;IAEtC,gBAAgB,EAAE,UAAU;IAC5B,SAAS,EAAE,2HAA2H;IACtI,SAAS,EAAE,iHAAiH;IAC5H,SAAS,EAAE,0EAA0E;IACrF,aAAa,EAAE,6DAA6D;IAE5E,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,MAAM;IAEjB,mBAAmB,EAAE,6CAA6C;IAElE,kBAAkB,EAAE,MAAM;IAC1B,mBAAmB,EAAE,OAAO;IAC5B,oBAAoB,EAAE,aAAa;IACnC,sBAAsB,EAAE,UAAU;IAClC,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,GAAG;CACrB,CAAC;AAEF,2BAA2B;AAC3B,MAAM,QAAQ,GAAyB;IACrC,YAAY,EAAE,KAAK;IACnB,iBAAiB,EAAE,MAAM;IACzB,oBAAoB,EAAE,YAAY;IAClC,cAAc,EAAE,MAAM;IACtB,iBAAiB,EAAE,WAAW;IAC9B,kBAAkB,EAAE,MAAM;IAC1B,qBAAqB,EAAE,MAAM;IAE7B,aAAa,EAAE,IAAI;IACnB,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,MAAM;IAClB,cAAc,EAAE,IAAI;IACpB,mBAAmB,EAAE,MAAM;IAE3B,gBAAgB,EAAE,QAAQ;IAC1B,SAAS,EAAE,gEAAgE;IAC3E,SAAS,EAAE,kDAAkD;IAC7D,SAAS,EAAE,8BAA8B;IACzC,aAAa,EAAE,oCAAoC;IAEnD,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,KAAK;IAEhB,mBAAmB,EAAE,sBAAsB;IAE3C,kBAAkB,EAAE,IAAI;IACxB,mBAAmB,EAAE,IAAI;IACzB,oBAAoB,EAAE,MAAM;IAC5B,sBAAsB,EAAE,IAAI;IAC5B,cAAc,EAAE,GAAG;IACnB,eAAe,EAAE,GAAG;CACrB,CAAC;AAEF,MAAM,aAAa,GAAyC;IAC1D,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAiB,EAAE,OAA+C;IAC1G,aAAa,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;AACrD,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,aAAa,CAAC,OAAiB;IAC7C,IAAI,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC;AAC/C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"zh-CN.d.ts","sourceRoot":"","sources":["../../../../src/config/lexicons/zh-CN.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,KAAK,EAAE,OA8InB,CAAC"}
1
+ {"version":3,"file":"zh-CN.d.ts","sourceRoot":"","sources":["../../../../src/config/lexicons/zh-CN.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,KAAK,EAAE,OA+InB,CAAC"}
@@ -129,6 +129,7 @@ export const ZH_CN = {
129
129
  closer: 'NEWLINE',
130
130
  },
131
131
  ],
132
+ preTranslationTransformers: ['chinese-function-syntax'],
132
133
  },
133
134
  messages: {
134
135
  unexpectedToken: '意外的符号:{token}',
@@ -1 +1 @@
1
- {"version":3,"file":"zh-CN.js","sourceRoot":"","sources":["../../../../src/config/lexicons/zh-CN.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,CAAC,MAAM,KAAK,GAAY;IAC5B,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,KAAK;IAEhB,QAAQ,EAAE;QACR,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,IAAI;QACrC,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI;QAChC,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,IAAI;QACtC,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,IAAI;QACxC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,IAAI;QAClC,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,IAAI;QACnC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,IAAI;QAClC,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,OAAO;QACxC,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI;QACjC,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,IAAI;QACpC,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,IAAI;QACtC,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,IAAI;QACvC,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,IAAI;QAC5B,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,IAAI;QACnC,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI;QAC9B,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK;QAChC,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG;QAC7B,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI;QAChC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,IAAI;QAC/B,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,KAAK;QACpC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,KAAK;QACnC,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,IAAI;QAC5B,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI;QACjC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,IAAI;QAC/B,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI;QAC9B,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,IAAI;QAClC,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,EAAE,MAAM;QAC/C,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI;QACjC,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,GAAG;QAC5B,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,KAAK;QAC7B,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,GAAG;QAC5B,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI;QACjC,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,IAAI;QAC5B,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,IAAI;QAC7B,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,IAAI;QAC7B,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI;QAC9B,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,IAAI;QACpC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,IAAI;QAC/B,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,IAAI;QACpC,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,IAAI;QAC5C,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI;QAChC,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,IAAI;QACnC,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,IAAI;QACtC,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,IAAI;QACnC,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,IAAI;QAC5B,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,IAAI;QAC/B,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI;QAC9B,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,IAAI;QACnC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,IAAI;QAC/B,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,IAAI;QACnC,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,IAAI;QACnC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK;QAChC,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,KAAK;QACjC,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI;QACjC,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI;QAC9B,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI;QAC9B,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,IAAI;QAC/B,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI;QAC9B,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI;QAC9B,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,IAAI;QAClC,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,IAAI;QACpC,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,IAAI;QACnC,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,MAAM;QAC9B,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,IAAI;QAC7B,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,IAAI;QAClC,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI;QAC9B,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI;QACjC,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,IAAI;QAC5B,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,IAAI;QACpC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,IAAI;QAC/B,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI;QACjC,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,MAAM;QACxC,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI;QACjC,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI;QAChC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,GAAG;QAC9B,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,IAAI;QAC/B,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,IAAI;QAC/B,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,IAAI;QAC/B,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,IAAI;QAClC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,IAAI;QAClC,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI;QACjC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,IAAI;QAClC,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI;QACjC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,IAAI;QAClC,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI;KAClC;IAED,WAAW,EAAE;QACX,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,GAAG;QAClB,aAAa,EAAE,GAAG;QAClB,UAAU,EAAE,GAAG;QACf,YAAY,EAAE;YACZ,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,GAAG;SACX;KACF;IAED,gBAAgB,EAAE;QAChB,eAAe,EAAE,IAAI;QACrB,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,KAAK;QACrB,iBAAiB,EAAE;YACjB,CAAC,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,CAAC,QAAQ,CAAC;YACzD,CAAC,iBAAiB,CAAC,EAAE,EAAE,iBAAiB,CAAC,SAAS,CAAC;YACnD,CAAC,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,CAAC,KAAK,CAAC;YACtD,CAAC,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,CAAC,YAAY,CAAC;SACtF;QACD,gBAAgB,EAAE;YAChB;gBACE,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,iBAAiB,CAAC,KAAK;gBAC/B,kBAAkB,EAAE;oBAClB,iBAAiB,CAAC,IAAI;iBACvB;gBACD,MAAM,EAAE,QAAQ;aACjB;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,iBAAiB,CAAC,GAAG;gBAC7B,kBAAkB,EAAE;oBAClB,iBAAiB,CAAC,EAAE;iBACrB;gBACD,MAAM,EAAE,SAAS;aAClB;SACF;KACF;IAED,QAAQ,EAAE;QACR,eAAe,EAAE,eAAe;QAChC,eAAe,EAAE,iBAAiB;QAClC,iBAAiB,EAAE,eAAe;QAClC,YAAY,EAAE,iCAAiC;QAC/C,kBAAkB,EAAE,YAAY;QAChC,kBAAkB,EAAE,oBAAoB;KACzC;CACF,CAAC"}
1
+ {"version":3,"file":"zh-CN.js","sourceRoot":"","sources":["../../../../src/config/lexicons/zh-CN.ts"],"names":[],"mappings":"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"}
@@ -261,6 +261,11 @@ export declare function isKeyword(word: string, lexicon?: Lexicon): boolean;
261
261
  * Core IR 中使用 `Call(Name('await'))` 表示异步操作。
262
262
  */
263
263
  export declare const BUILTIN_AWAIT = "await";
264
+ /**
265
+ * 内置运算符集合:解析器降为 `Call(Name(op))` 的运算符名。解释器按此分派,
266
+ * 名称解析(R2)据此把它们排除在待解析名字之外。
267
+ */
268
+ export declare const BUILTIN_OPS: ReadonlySet<string>;
264
269
  /**
265
270
  * 验证是否为内置异步函数。
266
271
  *
@@ -1 +1 @@
1
- {"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../../src/config/semantic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH;;;;;;;GAOG;AACH,oBAAY,MAAM;IAChB,EAAE,OAAO;IACT,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAED;;;;;GAKG;AACH,QAAA,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAItC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,MAAM,OAAO,UAAU,CAE/E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAQxC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAEzC,CAAC;AAMF;;;;GAIG;AACH,oBAAY,cAAc;IACxB,IAAI,SAAS;IACb,6CAA6C;IAC7C,OAAO,YAAY;IACnB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,iCAAiC;IACjC,MAAM,WAAW;IACjB,yCAAyC;IACzC,OAAO,YAAY;IACnB,QAAQ,YAAY;IACpB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,SAAS,cAAc;CACxB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAYjE,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAO3E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAEnD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,GAAG,KAAK,CAAC;AAEjD,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,cAAc,EAAE,qBAAqB,CAajF,CAAC;AAEF,sDAAsD;AACtD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAEjE;AAED,0CAA0C;AAC1C,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAEhE;AAMD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0FL,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAMlE;AAMD;;;;GAIG;AACH,eAAO,MAAM,aAAa,UAAU,CAAC;AAErC;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD"}
1
+ {"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../../src/config/semantic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH;;;;;;;GAOG;AACH,oBAAY,MAAM;IAChB,EAAE,OAAO;IACT,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAED;;;;;GAKG;AACH,QAAA,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAItC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,MAAM,OAAO,UAAU,CAE/E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAQxC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAEzC,CAAC;AAMF;;;;GAIG;AACH,oBAAY,cAAc;IACxB,IAAI,SAAS;IACb,6CAA6C;IAC7C,OAAO,YAAY;IACnB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,iCAAiC;IACjC,MAAM,WAAW;IACjB,yCAAyC;IACzC,OAAO,YAAY;IACnB,QAAQ,YAAY;IACpB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,SAAS,cAAc;CACxB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAYjE,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAO3E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAEnD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,GAAG,KAAK,CAAC;AAEjD,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,cAAc,EAAE,qBAAqB,CAajF,CAAC;AAEF,sDAAsD;AACtD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAEjE;AAED,0CAA0C;AAC1C,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAEhE;AAMD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0FL,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAMlE;AAMD;;;;GAIG;AACH,eAAO,MAAM,aAAa,UAAU,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,MAAM,CAO1C,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD"}
@@ -334,6 +334,18 @@ export function isKeyword(word, lexicon) {
334
334
  * Core IR 中使用 `Call(Name('await'))` 表示异步操作。
335
335
  */
336
336
  export const BUILTIN_AWAIT = 'await';
337
+ /**
338
+ * 内置运算符集合:解析器降为 `Call(Name(op))` 的运算符名。解释器按此分派,
339
+ * 名称解析(R2)据此把它们排除在待解析名字之外。
340
+ */
341
+ export const BUILTIN_OPS = new Set([
342
+ '+', '-', '*', '/', '//', '%',
343
+ // 比较运算符必须与 evalBinaryOp 的 switch 分支一一对应。遗漏 '!='
344
+ // 会让 `not equal to`(降低为 Call(Name('!='), …))越过内置分发、
345
+ // 落入用户函数查找,从而抛出 "Undefined function '!='"。
346
+ '>', '<', '>=', '<=', '==', '!=',
347
+ 'and', 'or', 'not',
348
+ ]);
337
349
  /**
338
350
  * 验证是否为内置异步函数。
339
351
  *
@@ -1 +1 @@
1
- {"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../src/config/semantic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../src/config/semantic.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,14 @@ import type { Core } from '../types.js';
3
3
  export declare function markFieldTypeInferred(field: Core.Field): void;
4
4
  /** 字段是否在源码中未声明类型。 */
5
5
  export declare function isFieldTypeInferred(field: Core.Field): boolean;
6
+ /**
7
+ * 「未声明类型的 lambda 参数」旁路表:Core lambda 参数不携带 typeInferred(加入会改变 IR),
8
+ * 同理以对象身份登记。名称解析 R2(ADR 0051 §4、裁决 R31)只把声明类型当作类型来源,据此视其类型未知。
9
+ */
10
+ type LambdaParam = Core.Lambda['params'][number];
11
+ /** 登记一个未声明类型的 lambda 参数(仅供降级阶段调用)。 */
12
+ export declare function markLambdaParamTypeInferred(param: LambdaParam): void;
13
+ /** lambda 参数是否在源码中未声明类型。 */
14
+ export declare function isLambdaParamTypeInferred(param: LambdaParam): boolean;
15
+ export {};
6
16
  //# sourceMappingURL=inferred_fields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inferred_fields.d.ts","sourceRoot":"","sources":["../../../src/core/inferred_fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAuBxC,8BAA8B;AAC9B,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAE7D;AAED,qBAAqB;AACrB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAE9D"}
1
+ {"version":3,"file":"inferred_fields.d.ts","sourceRoot":"","sources":["../../../src/core/inferred_fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAuBxC,8BAA8B;AAC9B,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAE7D;AAED,qBAAqB;AACrB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAE9D;AAED;;;GAGG;AACH,KAAK,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAGjD,sCAAsC;AACtC,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAEpE;AAED,4BAA4B;AAC5B,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAErE"}
@@ -26,4 +26,13 @@ export function markFieldTypeInferred(field) {
26
26
  export function isFieldTypeInferred(field) {
27
27
  return inferredFields.has(field);
28
28
  }
29
+ const inferredLambdaParams = new WeakSet();
30
+ /** 登记一个未声明类型的 lambda 参数(仅供降级阶段调用)。 */
31
+ export function markLambdaParamTypeInferred(param) {
32
+ inferredLambdaParams.add(param);
33
+ }
34
+ /** lambda 参数是否在源码中未声明类型。 */
35
+ export function isLambdaParamTypeInferred(param) {
36
+ return inferredLambdaParams.has(param);
37
+ }
29
38
  //# sourceMappingURL=inferred_fields.js.map