xbintsc 0.5.23 → 0.5.31

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 (347) hide show
  1. package/AGENTS.md +11 -2
  2. package/README.md +31 -6
  3. package/README.zh-CN.md +21 -2
  4. package/dist/scripts/support-matrix.d.ts +18 -0
  5. package/dist/scripts/support-matrix.js +141 -0
  6. package/dist/scripts/support-matrix.js.map +1 -0
  7. package/dist/src/ast/common.d.ts +2 -2
  8. package/dist/src/ast/declarations.d.ts +7 -1
  9. package/dist/src/ast/expressions.d.ts +5 -0
  10. package/dist/src/ast/kinds.d.ts +2 -0
  11. package/dist/src/ast/kinds.js +2 -0
  12. package/dist/src/ast/kinds.js.map +1 -1
  13. package/dist/src/binder/binder.d.ts +2 -1
  14. package/dist/src/binder/binder.js +2 -0
  15. package/dist/src/binder/binder.js.map +1 -1
  16. package/dist/src/binder/declarations.d.ts +9 -0
  17. package/dist/src/binder/declarations.js +64 -0
  18. package/dist/src/binder/declarations.js.map +1 -1
  19. package/dist/src/binder/references.js +85 -3
  20. package/dist/src/binder/references.js.map +1 -1
  21. package/dist/src/binder/types.d.ts +32 -0
  22. package/dist/src/binder/types.js.map +1 -1
  23. package/dist/src/canonical.d.ts +29 -0
  24. package/dist/src/canonical.js +35 -0
  25. package/dist/src/canonical.js.map +1 -0
  26. package/dist/src/checker/assignability.d.ts +13 -0
  27. package/dist/src/checker/assignability.js +146 -0
  28. package/dist/src/checker/assignability.js.map +1 -0
  29. package/dist/src/checker/calls.d.ts +13 -0
  30. package/dist/src/checker/calls.js +127 -0
  31. package/dist/src/checker/calls.js.map +1 -0
  32. package/dist/src/checker/checker.d.ts +26 -0
  33. package/dist/src/checker/checker.js +31 -0
  34. package/dist/src/checker/checker.js.map +1 -0
  35. package/dist/src/checker/declarations.d.ts +9 -0
  36. package/dist/src/checker/declarations.js +15 -0
  37. package/dist/src/checker/declarations.js.map +1 -0
  38. package/dist/src/checker/flow.d.ts +21 -0
  39. package/dist/src/checker/flow.js +241 -0
  40. package/dist/src/checker/flow.js.map +1 -0
  41. package/dist/src/checker/globals.d.ts +9 -0
  42. package/dist/src/checker/globals.js +29 -0
  43. package/dist/src/checker/globals.js.map +1 -0
  44. package/dist/src/checker/source.d.ts +38 -0
  45. package/dist/src/checker/source.js +48 -0
  46. package/dist/src/checker/source.js.map +1 -0
  47. package/dist/src/checker/type-infer.d.ts +18 -0
  48. package/dist/src/checker/type-infer.js +173 -0
  49. package/dist/src/checker/type-infer.js.map +1 -0
  50. package/dist/src/checker/type-model.d.ts +73 -0
  51. package/dist/src/checker/type-model.js +151 -0
  52. package/dist/src/checker/type-model.js.map +1 -0
  53. package/dist/src/checker/type-system.d.ts +58 -0
  54. package/dist/src/checker/type-system.js +569 -0
  55. package/dist/src/checker/type-system.js.map +1 -0
  56. package/dist/src/checker/typecheck-types.d.ts +22 -0
  57. package/dist/src/checker/typecheck-types.js +109 -0
  58. package/dist/src/checker/typecheck-types.js.map +1 -0
  59. package/dist/src/checker/typecheck.d.ts +62 -0
  60. package/dist/src/checker/typecheck.js +574 -0
  61. package/dist/src/checker/typecheck.js.map +1 -0
  62. package/dist/src/checker/undefined.d.ts +14 -0
  63. package/dist/src/checker/undefined.js +32 -0
  64. package/dist/src/checker/undefined.js.map +1 -0
  65. package/dist/src/checker/walk.d.ts +10 -0
  66. package/dist/src/checker/walk.js +15 -0
  67. package/dist/src/checker/walk.js.map +1 -0
  68. package/dist/src/cli/help.d.ts +7 -0
  69. package/dist/src/cli/help.js +64 -0
  70. package/dist/src/cli/help.js.map +1 -0
  71. package/dist/src/cli/hints.js +2 -1
  72. package/dist/src/cli/hints.js.map +1 -1
  73. package/dist/src/cli/main.js +12 -48
  74. package/dist/src/cli/main.js.map +1 -1
  75. package/dist/src/codegen/generator/calls/access.js +8 -8
  76. package/dist/src/codegen/generator/calls/access.js.map +1 -1
  77. package/dist/src/codegen/generator/calls/invocation.js +9 -4
  78. package/dist/src/codegen/generator/calls/invocation.js.map +1 -1
  79. package/dist/src/codegen/generator/calls/super.d.ts +9 -1
  80. package/dist/src/codegen/generator/calls/super.js +56 -5
  81. package/dist/src/codegen/generator/calls/super.js.map +1 -1
  82. package/dist/src/codegen/generator/context.d.ts +13 -2
  83. package/dist/src/codegen/generator/context.js +25 -19
  84. package/dist/src/codegen/generator/context.js.map +1 -1
  85. package/dist/src/codegen/generator/debug.js +2 -1
  86. package/dist/src/codegen/generator/debug.js.map +1 -1
  87. package/dist/src/codegen/generator/expressions/primary.d.ts +4 -1
  88. package/dist/src/codegen/generator/expressions/primary.js +68 -8
  89. package/dist/src/codegen/generator/expressions/primary.js.map +1 -1
  90. package/dist/src/codegen/generator/generator.js +11 -1
  91. package/dist/src/codegen/generator/generator.js.map +1 -1
  92. package/dist/src/codegen/generator/module.d.ts +2 -0
  93. package/dist/src/codegen/generator/module.js +62 -26
  94. package/dist/src/codegen/generator/module.js.map +1 -1
  95. package/dist/src/codegen/generator/state.d.ts +11 -1
  96. package/dist/src/codegen/generator/state.js.map +1 -1
  97. package/dist/src/codegen/generator/statements/variables.js +20 -3
  98. package/dist/src/codegen/generator/statements/variables.js.map +1 -1
  99. package/dist/src/codegen/generator/tables.d.ts +2 -0
  100. package/dist/src/codegen/generator/tables.js +4 -0
  101. package/dist/src/codegen/generator/tables.js.map +1 -1
  102. package/dist/src/driver/build-key.d.ts +2 -0
  103. package/dist/src/driver/build-key.js +1 -0
  104. package/dist/src/driver/build-key.js.map +1 -1
  105. package/dist/src/driver/bundler/graph.js +5 -1
  106. package/dist/src/driver/bundler/graph.js.map +1 -1
  107. package/dist/src/driver/bundler/merge.js +16 -1
  108. package/dist/src/driver/bundler/merge.js.map +1 -1
  109. package/dist/src/driver/bundler/types.d.ts +12 -0
  110. package/dist/src/driver/compiler.d.ts +1 -1
  111. package/dist/src/driver/compiler.js +3 -0
  112. package/dist/src/driver/compiler.js.map +1 -1
  113. package/dist/src/driver/fingerprint.js +2 -1
  114. package/dist/src/driver/fingerprint.js.map +1 -1
  115. package/dist/src/driver/frontend.d.ts +8 -6
  116. package/dist/src/driver/frontend.js +4 -0
  117. package/dist/src/driver/frontend.js.map +1 -1
  118. package/dist/src/driver/options.d.ts +6 -0
  119. package/dist/src/driver/version.d.ts +1 -1
  120. package/dist/src/driver/version.js +1 -1
  121. package/dist/src/extensions/gui/html.js +20 -6
  122. package/dist/src/extensions/gui/html.js.map +1 -1
  123. package/dist/src/extensions/gui/index.js +63 -0
  124. package/dist/src/extensions/gui/index.js.map +1 -1
  125. package/dist/src/extensions/registry.d.ts +38 -0
  126. package/dist/src/extensions/registry.js +10 -0
  127. package/dist/src/extensions/registry.js.map +1 -1
  128. package/dist/src/index.d.ts +1 -0
  129. package/dist/src/index.js +1 -0
  130. package/dist/src/index.js.map +1 -1
  131. package/dist/src/parser/declarations/classes.js +7 -0
  132. package/dist/src/parser/declarations/classes.js.map +1 -1
  133. package/dist/src/parser/expressions.js +14 -1
  134. package/dist/src/parser/expressions.js.map +1 -1
  135. package/dist/src/parser/literals.js +6 -2
  136. package/dist/src/parser/literals.js.map +1 -1
  137. package/dist/tests/binder/binder.test.js +29 -0
  138. package/dist/tests/binder/binder.test.js.map +1 -1
  139. package/dist/tests/canonical.test.d.ts +1 -0
  140. package/dist/tests/canonical.test.js +19 -0
  141. package/dist/tests/canonical.test.js.map +1 -0
  142. package/dist/tests/checker/checker.test.d.ts +1 -0
  143. package/dist/tests/checker/checker.test.js +245 -0
  144. package/dist/tests/checker/checker.test.js.map +1 -0
  145. package/dist/tests/cli/check.test.js +20 -0
  146. package/dist/tests/cli/check.test.js.map +1 -1
  147. package/dist/tests/conformance/matrix.test.d.ts +6 -0
  148. package/dist/tests/conformance/matrix.test.js +23 -0
  149. package/dist/tests/conformance/matrix.test.js.map +1 -0
  150. package/dist/tests/conformance/test262/manifest.d.ts +115 -0
  151. package/dist/tests/conformance/test262/manifest.js +257 -0
  152. package/dist/tests/conformance/test262/manifest.js.map +1 -0
  153. package/dist/tests/conformance/test262.test.d.ts +11 -0
  154. package/dist/tests/conformance/test262.test.js +74 -0
  155. package/dist/tests/conformance/test262.test.js.map +1 -0
  156. package/dist/tests/docs/structure.test.js +9 -11
  157. package/dist/tests/docs/structure.test.js.map +1 -1
  158. package/dist/tests/e2e/child-process.test.js +3 -2
  159. package/dist/tests/e2e/child-process.test.js.map +1 -1
  160. package/dist/tests/e2e/compile-builtins.test.js +21 -0
  161. package/dist/tests/e2e/compile-builtins.test.js.map +1 -1
  162. package/dist/tests/e2e/compile-objects-classes.test.js +54 -0
  163. package/dist/tests/e2e/compile-objects-classes.test.js.map +1 -1
  164. package/dist/tests/e2e/differential-syntax.test.d.ts +5 -0
  165. package/dist/tests/e2e/differential-syntax.test.js +95 -0
  166. package/dist/tests/e2e/differential-syntax.test.js.map +1 -0
  167. package/dist/tests/e2e/differential-values.test.js +15 -0
  168. package/dist/tests/e2e/differential-values.test.js.map +1 -1
  169. package/dist/tests/e2e/gui-browser.test.d.ts +13 -0
  170. package/dist/tests/e2e/gui-browser.test.js +163 -0
  171. package/dist/tests/e2e/gui-browser.test.js.map +1 -0
  172. package/dist/tests/e2e/gui-example-browser.test.js +2 -2
  173. package/dist/tests/e2e/gui-example-browser.test.js.map +1 -1
  174. package/dist/tests/e2e/gui-example-canvas.test.js +5 -4
  175. package/dist/tests/e2e/gui-example-canvas.test.js.map +1 -1
  176. package/dist/tests/e2e/gui-example-svg.test.js +4 -3
  177. package/dist/tests/e2e/gui-example-svg.test.js.map +1 -1
  178. package/dist/tests/e2e/gui-example.test.js +4 -3
  179. package/dist/tests/e2e/gui-example.test.js.map +1 -1
  180. package/dist/tests/e2e/gui-helpers.js +4 -3
  181. package/dist/tests/e2e/gui-helpers.js.map +1 -1
  182. package/dist/tests/e2e/gui-media.test.js +5 -4
  183. package/dist/tests/e2e/gui-media.test.js.map +1 -1
  184. package/dist/tests/e2e/harness.d.ts +9 -0
  185. package/dist/tests/e2e/harness.js +14 -2
  186. package/dist/tests/e2e/harness.js.map +1 -1
  187. package/dist/tests/e2e/native-extensions.test.js +2 -1
  188. package/dist/tests/e2e/native-extensions.test.js.map +1 -1
  189. package/dist/tests/e2e/property-descriptors.test.js +20 -0
  190. package/dist/tests/e2e/property-descriptors.test.js.map +1 -1
  191. package/dist/tests/e2e/unicode-output.test.js +5 -3
  192. package/dist/tests/e2e/unicode-output.test.js.map +1 -1
  193. package/dist/tests/e2e/weak-collections.test.js +16 -2
  194. package/dist/tests/e2e/weak-collections.test.js.map +1 -1
  195. package/dist/tests/helpers.d.ts +1 -0
  196. package/dist/tests/helpers.js +1 -0
  197. package/dist/tests/helpers.js.map +1 -1
  198. package/dist/tests/parser/declarations.test.js +20 -0
  199. package/dist/tests/parser/declarations.test.js.map +1 -1
  200. package/dist/tests/parser/expressions.test.js +36 -0
  201. package/dist/tests/parser/expressions.test.js.map +1 -1
  202. package/dist/tests/platform.d.ts +32 -0
  203. package/dist/tests/platform.js +40 -0
  204. package/dist/tests/platform.js.map +1 -0
  205. package/dist/tests/platform.test.d.ts +12 -0
  206. package/dist/tests/platform.test.js +51 -0
  207. package/dist/tests/platform.test.js.map +1 -0
  208. package/dist/tests/version.test.js +4 -4
  209. package/dist/tests/version.test.js.map +1 -1
  210. package/doc/ai/README.md +10 -4
  211. package/doc/ai/build-recipe.md +1 -0
  212. package/doc/ai/cli.md +17 -5
  213. package/doc/ai/contributing.md +59 -2
  214. package/doc/ai/extensions.md +11 -0
  215. package/doc/ai/language-support.md +25 -16
  216. package/doc/ai/zh-CN/README.md +9 -4
  217. package/doc/ai/zh-CN/build-recipe.md +1 -0
  218. package/doc/ai/zh-CN/cli.md +13 -3
  219. package/doc/ai/zh-CN/contributing.md +49 -3
  220. package/doc/ai/zh-CN/extensions.md +9 -0
  221. package/doc/ai/zh-CN/language-support.md +23 -14
  222. package/doc/gui/api.md +45 -0
  223. package/doc/gui/known-issues.md +10 -0
  224. package/doc/gui/runtime.md +18 -0
  225. package/doc/gui-scripts.md +7 -0
  226. package/doc/implemented/binder.md +2 -0
  227. package/doc/implemented/checker.md +117 -0
  228. package/doc/implemented/cli.md +13 -1
  229. package/doc/implemented/codegen.md +3 -2
  230. package/doc/implemented/driver.md +2 -2
  231. package/doc/implemented/operators.md +2 -1
  232. package/doc/implemented/parser.md +3 -2
  233. package/doc/implemented/pipeline.md +8 -1
  234. package/doc/implemented/stdlib.md +2 -1
  235. package/doc/implemented/tests.md +3 -1
  236. package/doc/implemented.md +2 -0
  237. package/doc/npm-package.md +417 -0
  238. package/doc/requirements.md +4 -1
  239. package/doc/support-matrix.md +83 -0
  240. package/doc/unimplemented/classes.md +3 -0
  241. package/doc/unimplemented/deviations.md +3 -2
  242. package/doc/unimplemented/toolchain.md +1 -1
  243. package/doc/unimplemented/types.md +24 -8
  244. package/doc/unimplemented.md +1 -1
  245. package/doc/zh-CN/gui/api.md +41 -0
  246. package/doc/zh-CN/gui/known-issues.md +7 -0
  247. package/doc/zh-CN/gui/runtime.md +16 -0
  248. package/doc/zh-CN/gui-scripts.md +5 -0
  249. package/doc/zh-CN/implemented/binder.md +2 -0
  250. package/doc/zh-CN/implemented/checker.md +99 -0
  251. package/doc/zh-CN/implemented/cli.md +12 -1
  252. package/doc/zh-CN/implemented/codegen.md +3 -2
  253. package/doc/zh-CN/implemented/driver.md +2 -2
  254. package/doc/zh-CN/implemented/operators.md +1 -1
  255. package/doc/zh-CN/implemented/parser.md +3 -2
  256. package/doc/zh-CN/implemented/pipeline.md +3 -1
  257. package/doc/zh-CN/implemented/stdlib.md +2 -1
  258. package/doc/zh-CN/implemented/tests.md +3 -1
  259. package/doc/zh-CN/implemented.md +2 -0
  260. package/doc/zh-CN/npm-package.md +391 -0
  261. package/doc/zh-CN/post/announce.md +47 -47
  262. package/doc/zh-CN/requirements.md +4 -1
  263. package/doc/zh-CN/support-matrix.md +82 -0
  264. package/doc/zh-CN/unimplemented/classes.md +3 -0
  265. package/doc/zh-CN/unimplemented/deviations.md +3 -2
  266. package/doc/zh-CN/unimplemented/toolchain.md +1 -1
  267. package/doc/zh-CN/unimplemented/types.md +16 -6
  268. package/doc/zh-CN/unimplemented.md +1 -1
  269. package/llms.txt +4 -1
  270. package/package.json +2 -1
  271. package/runtime/ext_gui/audio.cpp +316 -0
  272. package/runtime/ext_gui/browser.cpp +547 -0
  273. package/runtime/ext_gui/browser_escape.cpp +85 -0
  274. package/runtime/ext_gui/browser_loop.cpp +83 -0
  275. package/runtime/ext_gui/canvas.cpp +9 -3
  276. package/runtime/ext_gui/canvas_raster.cpp +19 -1
  277. package/runtime/ext_gui/dom_api.cpp +36 -0
  278. package/runtime/ext_gui/dom_api_document.cpp +96 -5
  279. package/runtime/ext_gui/dom_api_events.cpp +20 -0
  280. package/runtime/ext_gui/dom_api_internal.h +19 -0
  281. package/runtime/ext_gui/dom_api_proto.cpp +6 -0
  282. package/runtime/ext_gui/gui.cpp +90 -23
  283. package/runtime/ext_gui/gui_engine.h +44 -0
  284. package/runtime/ext_gui/window.cpp +9 -0
  285. package/runtime/ext_node/path/path.c +7 -7
  286. package/runtime/ext_node/url/url.c +4 -2
  287. package/runtime/rt.h +15 -0
  288. package/runtime/xt_constructors.c +2 -1
  289. package/runtime/xt_containers/objects.inc +22 -2
  290. package/runtime/xt_io/exception.inc +4 -2
  291. package/runtime/xt_stdlib/math.inc +62 -0
  292. package/runtime/xt_stdlib2/date.inc +7 -1
  293. package/runtime/xt_stdlib2/objects.inc +14 -0
  294. package/scripts/support-matrix.ts +167 -0
  295. package/src/ast/common.ts +2 -0
  296. package/src/ast/declarations.ts +12 -1
  297. package/src/ast/expressions.ts +6 -0
  298. package/src/ast/kinds.ts +2 -0
  299. package/src/binder/binder.ts +3 -0
  300. package/src/binder/declarations.ts +70 -0
  301. package/src/binder/references.ts +84 -3
  302. package/src/binder/types.ts +30 -0
  303. package/src/canonical.ts +37 -0
  304. package/src/checker/assignability.ts +134 -0
  305. package/src/checker/calls.ts +135 -0
  306. package/src/checker/checker.ts +47 -0
  307. package/src/checker/declarations.ts +26 -0
  308. package/src/checker/flow.ts +236 -0
  309. package/src/checker/globals.ts +40 -0
  310. package/src/checker/source.ts +53 -0
  311. package/src/checker/type-infer.ts +185 -0
  312. package/src/checker/type-model.ts +212 -0
  313. package/src/checker/type-system.ts +578 -0
  314. package/src/checker/typecheck-types.ts +112 -0
  315. package/src/checker/typecheck.ts +586 -0
  316. package/src/checker/undefined.ts +43 -0
  317. package/src/checker/walk.ts +16 -0
  318. package/src/cli/help.ts +65 -0
  319. package/src/cli/hints.ts +2 -1
  320. package/src/cli/main.ts +12 -49
  321. package/src/codegen/generator/calls/access.ts +8 -8
  322. package/src/codegen/generator/calls/invocation.ts +8 -5
  323. package/src/codegen/generator/calls/super.ts +67 -5
  324. package/src/codegen/generator/context.ts +31 -19
  325. package/src/codegen/generator/debug.ts +2 -1
  326. package/src/codegen/generator/expressions/primary.ts +84 -13
  327. package/src/codegen/generator/generator.ts +11 -1
  328. package/src/codegen/generator/module.ts +65 -24
  329. package/src/codegen/generator/state.ts +11 -1
  330. package/src/codegen/generator/statements/variables.ts +20 -3
  331. package/src/codegen/generator/tables.ts +5 -0
  332. package/src/driver/build-key.ts +3 -0
  333. package/src/driver/bundler/graph.ts +6 -2
  334. package/src/driver/bundler/merge.ts +14 -1
  335. package/src/driver/bundler/types.ts +13 -0
  336. package/src/driver/compiler.ts +4 -1
  337. package/src/driver/fingerprint.ts +2 -1
  338. package/src/driver/frontend.ts +13 -2
  339. package/src/driver/options.ts +6 -0
  340. package/src/driver/version.ts +1 -1
  341. package/src/extensions/gui/html.ts +23 -10
  342. package/src/extensions/gui/index.ts +65 -0
  343. package/src/extensions/registry.ts +48 -0
  344. package/src/index.ts +1 -0
  345. package/src/parser/declarations/classes.ts +7 -0
  346. package/src/parser/expressions.ts +13 -1
  347. package/src/parser/literals.ts +6 -2
package/AGENTS.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # AGENTS.md — working in the xbintsc repository
2
2
 
3
+ > **Using the installed npm package in another project?** This file is for
4
+ > working *in* this repository. Read the project guide instead:
5
+ > [doc/npm-package.md](./doc/npm-package.md) — the installed copy is at
6
+ > `node_modules/xbintsc/doc/npm-package.md`.
7
+
3
8
  **xbintsc is a compiler: it turns a subset of TypeScript into standalone native
4
9
  binaries.** It lexes and parses TypeScript itself, binds names, lowers the
5
10
  program to **LLVM IR text**, and hands that text to **clang**, which produces an
@@ -49,8 +54,11 @@ in [doc/ai/language-support.md](./doc/ai/language-support.md).
49
54
 
50
55
  - **It is a subset.** Syntax outside the subset fails with `UnsupportedFeature`
51
56
  or a parse error. Never assume "TypeScript" means "what Node accepts".
52
- - **Types are erased, never checked.** Annotations, interfaces, generics and
53
- `as` do nothing at runtime — a type error in the source is not caught for you.
57
+ - **Types are erased, but structurally checked first.** The default checker
58
+ resolves annotations, interfaces, classes and simple generics, and rejects
59
+ definite mismatches (`const x: number = "hello"`), missing properties on known
60
+ shapes and obviously wrong calls. Anything it cannot model is `any`; there is
61
+ no full inference or strict-null mode. `--no-check` disables it.
54
62
  - **Node built-ins need `--ext node`; npm packages are bundled at build time.**
55
63
  A bare import is resolved from `node_modules` and its sources (ESM or
56
64
  CommonJS) are merged into the binary. There is no runtime package lookup, and
@@ -77,6 +85,7 @@ in [doc/ai/language-support.md](./doc/ai/language-support.md).
77
85
  ```
78
86
  src/lexer, src/parser, src/ast source text -> tokens -> AST
79
87
  src/binder scopes, symbols, closures
88
+ src/checker opt-out names, redeclarations, arity, structural types
80
89
  src/codegen AST -> LLVM IR text (values.ts defines the value model)
81
90
  src/driver build orchestration, clang invocation, incremental cache
82
91
  src/extensions optional compile modules (node/, gui/, media/, native C++/Rust)
package/README.md CHANGED
@@ -159,6 +159,24 @@ console.log("Hello from xbintsc!");
159
159
 
160
160
  Tip: add `xbintsc-win32-x64\bin` to `PATH` to call `xbintsc` instead of the full path.
161
161
 
162
+ ### From npm
163
+
164
+ The compiler is also published as the `xbintsc` npm package. This is the
165
+ shortest path for a Node project: install it as a dev dependency, then run it
166
+ through `npx` or an npm script.
167
+
168
+ ```bash
169
+ npm install --save-dev --save-exact xbintsc
170
+ npx xbintsc doctor
171
+ npx xbintsc build src/main.ts --out build
172
+ ```
173
+
174
+ It needs Node.js 22+ and a clang 16+ toolchain. The npm package compiles the C
175
+ runtime from source on the first build (later builds reuse `.xbintsc/`), and it
176
+ does not include the GUI/media archives. See
177
+ [Using xbintsc from npm](./doc/npm-package.md) for a complete guide, CI setup
178
+ and caveats.
179
+
162
180
  ### As a developer (from source)
163
181
 
164
182
  In a source checkout, run the TypeScript sources directly through `tsx` (or use
@@ -204,6 +222,8 @@ CLI options:
204
222
  --verbose Print progress information
205
223
  --time Print per-phase build timings
206
224
  --debug Emit debug info (DWARF/CodeView) and keep frame pointers
225
+ --check Run the semantic checker (default)
226
+ --no-check Skip the semantic checker; only erase type syntax
207
227
  ```
208
228
 
209
229
  ### Project config & application icon
@@ -419,7 +439,8 @@ skips with a warning when they are missing.
419
439
 
420
440
  See [Requirements](./doc/requirements.md) for the full, per-platform list.
421
441
 
422
- - Node.js 22+ — only to run/build from source; released binaries are standalone
442
+ - Node.js 22+ — to run the compiler from npm or from source; released binaries
443
+ are standalone
423
444
  - macOS: the Xcode Command Line Tools (`xcode-select --install`)
424
445
  - Windows: LLVM + the Visual Studio C++ build tools (MSVC ABI)
425
446
  - Linux: `clang` and `lld` from your distribution
@@ -432,15 +453,19 @@ Check your environment with `xbintsc doctor`.
432
453
 
433
454
  - [Implemented features](./doc/implemented.md)
434
455
  - [Unimplemented features](./doc/unimplemented.md)
456
+ - [Support matrix](./doc/support-matrix.md) — generated from the executable
457
+ test262 corpus (unmodified test262 cases, compiled and run)
435
458
  - [Application icons & project config](./doc/icon.md)
436
459
 
437
460
  ## Using xbintsc with an AI agent
438
461
 
439
- The compiler is strict about its language subset — types are erased rather than
440
- checked, Node built-ins need `--ext node`, packages from `node_modules` are
441
- bundled at build time, strings follow UTF-16 length/indexing over UTF-8 storage,
442
- and `await` only
443
- suspends on a pending promise. An agent that assumes "TypeScript" means "what
462
+ The compiler is strict about its language subset — types are structurally
463
+ checked by a default checker and then erased (definite mismatches, missing
464
+ properties and non-callable calls are rejected, but there is no full inference
465
+ or strict-null mode), Node built-ins need `--ext node`, packages from
466
+ `node_modules` are bundled at build time, strings follow UTF-16
467
+ length/indexing over UTF-8 storage, and `await` only suspends on a pending
468
+ promise. An agent that assumes "TypeScript" means "what
444
469
  Node accepts" will write code that does not compile, so the documentation is
445
470
  layered for exactly that reader:
446
471
 
package/README.zh-CN.md CHANGED
@@ -142,6 +142,21 @@ console.log("Hello from xbintsc!");
142
142
 
143
143
  提示:把 `xbintsc-win32-x64\bin` 加入 `PATH`,即可直接用 `xbintsc` 命令。
144
144
 
145
+ ### 通过 npm 使用
146
+
147
+ 编译器也发布为 npm 包 `xbintsc`。对 Node 项目来说这是最短的路径:装成开发依赖,
148
+ 然后通过 `npx` 或 npm 脚本调用。
149
+
150
+ ```bash
151
+ npm install --save-dev --save-exact xbintsc
152
+ npx xbintsc doctor
153
+ npx xbintsc build src/main.ts --out build
154
+ ```
155
+
156
+ 它需要 Node.js 22+ 与 clang 16+ 工具链。npm 包在首次构建时会从源码编译 C 运行时
157
+ (后续构建复用 `.xbintsc/`),并且不包含 GUI/media 归档。完整指南、CI 配置与注意
158
+ 事项见[通过 npm 包使用 xbintsc](./doc/zh-CN/npm-package.md)。
159
+
145
160
  ### 作为开发者(从源码)
146
161
 
147
162
  在源码检出中,通过 `tsx` 直接运行 TypeScript 源码(或使用 `npm run xbintsc`)。
@@ -180,6 +195,8 @@ CLI 选项:
180
195
  --verbose 打印进度信息
181
196
  --time 打印各构建阶段耗时
182
197
  --debug 生成调试信息(DWARF/CodeView)并保留帧指针
198
+ --check 运行语义检查(默认)
199
+ --no-check 跳过语义检查,只擦除类型语法
183
200
  ```
184
201
 
185
202
  ### 编程接口
@@ -356,7 +373,7 @@ V8 只能看到编译器自身的源码,因此 `npm run coverage:runtime` 改
356
373
  独立二进制,见
357
374
  [使用前置要求](./doc/zh-CN/requirements.md)。
358
375
 
359
- - Node.js 22+ —— 仅从源码运行/构建时需要;发布版二进制是独立的
376
+ - Node.js 22+ —— 从 npm 或源码运行编译器时需要;发布版二进制是独立的
360
377
  - macOS:Xcode Command Line Tools(`xcode-select --install`)
361
378
  - Windows:LLVM + Visual Studio C++ 生成工具(MSVC ABI)
362
379
  - Linux:发行版提供的 `clang` 与 `lld`
@@ -368,10 +385,12 @@ V8 只能看到编译器自身的源码,因此 `npm run coverage:runtime` 改
368
385
 
369
386
  - [已实现特性](./doc/zh-CN/implemented.md)
370
387
  - [未实现特性](./doc/zh-CN/unimplemented.md)
388
+ - [支持矩阵](./doc/zh-CN/support-matrix.md)(由可执行语料生成)
371
389
 
372
390
  ## 让 AI 使用 xbintsc
373
391
 
374
- 这个编译器对语言子集很严格——类型只被擦除而从不检查、Node 内置模块需要
392
+ 这个编译器对语言子集很严格——类型会先被默认检查器做结构化检查,然后擦除
393
+ (确定不匹配、缺失属性和不可调用会被拒绝,但没有完整推断与 strict-null)、Node 内置模块需要
375
394
  `--ext node`、`node_modules` 里的 npm 包在构建期打包进二进制、字符串在 UTF-8 存储上按 UTF-16 语义计数、`await`
376
395
  只在 Promise 未 settle 时才真正挂起。如果 AI 把"TypeScript"当成"Node 能跑的 TypeScript",写出来的
377
396
  代码就编译不过,因此文档正是按这类读者分层组织的:
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Render `doc/support-matrix.md` and its Chinese mirror from the vendored
4
+ * test262 catalogue.
5
+ *
6
+ * The catalogue is executable evidence: `tests/conformance/test262.test.ts`
7
+ * compiles and runs every supported case (unmodified test262 files) and
8
+ * requires every unsupported case to fail with the listed diagnostic code.
9
+ * This script turns the same catalogue into the human-readable table, so the
10
+ * document cannot claim a feature the compiler does not exercise.
11
+ *
12
+ * Usage: npm run docs:matrix
13
+ */
14
+ type Language = "en" | "zh";
15
+ export declare const MATRIX_FILES: Readonly<Record<Language, string>>;
16
+ export declare const TEST262_COMMIT = "d53ebc8b1931d9f1541e43d59650776e4b766248";
17
+ export declare function renderSupportMatrix(language: Language): string;
18
+ export {};
@@ -0,0 +1,141 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Render `doc/support-matrix.md` and its Chinese mirror from the vendored
4
+ * test262 catalogue.
5
+ *
6
+ * The catalogue is executable evidence: `tests/conformance/test262.test.ts`
7
+ * compiles and runs every supported case (unmodified test262 files) and
8
+ * requires every unsupported case to fail with the listed diagnostic code.
9
+ * This script turns the same catalogue into the human-readable table, so the
10
+ * document cannot claim a feature the compiler does not exercise.
11
+ *
12
+ * Usage: npm run docs:matrix
13
+ */
14
+ import { writeFileSync } from "node:fs";
15
+ import { dirname, resolve } from "node:path";
16
+ import { fileURLToPath, pathToFileURL } from "node:url";
17
+ import { SUPPORT_AREAS, SUPPORTED_CASES, UNSUPPORTED_CASES, } from "../tests/conformance/test262/manifest.js";
18
+ const root = resolve(dirname(fileURLToPath(import.meta.url)), "..");
19
+ export const MATRIX_FILES = {
20
+ en: "doc/support-matrix.md",
21
+ zh: "doc/zh-CN/support-matrix.md",
22
+ };
23
+ export const TEST262_COMMIT = "d53ebc8b1931d9f1541e43d59650776e4b766248";
24
+ function docLink(area, language) {
25
+ const relative = area.doc.startsWith("doc/") ? area.doc.slice("doc/".length) : area.doc;
26
+ return language === "en" ? relative : `../${relative}`;
27
+ }
28
+ function areaTitle(area, language) {
29
+ return language === "en" ? area.title : area.titleZh;
30
+ }
31
+ function count(area, cases) {
32
+ return cases.filter((testCase) => testCase.area === area.id).length;
33
+ }
34
+ function rowsFor(language) {
35
+ return SUPPORT_AREAS.map((area) => {
36
+ const supported = count(area, SUPPORTED_CASES);
37
+ const unsupported = count(area, UNSUPPORTED_CASES);
38
+ return `| ${areaTitle(area, language)} | ${supported} | ${unsupported} | [${language === "en" ? "reference" : "参考"}](${docLink(area, language)}) |`;
39
+ }).join("\n");
40
+ }
41
+ function supportedTable(language) {
42
+ const header = language === "en"
43
+ ? "| test262 case | Area | What it pins down |\n| --- | --- | --- |"
44
+ : "| test262 用例 | 领域 | 固化的行为 |\n| --- | --- | --- |";
45
+ const rows = SUPPORTED_CASES.map((testCase) => {
46
+ const area = SUPPORT_AREAS.find((candidate) => candidate.id === testCase.area);
47
+ const claim = language === "en" ? testCase.claim : testCase.claimZh;
48
+ return `| \`${testCase.path}\` | ${areaTitle(area, language)} | ${claim} |`;
49
+ });
50
+ return [header, ...rows].join("\n");
51
+ }
52
+ function unsupportedTable(language) {
53
+ const header = language === "en"
54
+ ? "| test262 case | Area | Diagnostic | Why |\n| --- | --- | ---: | --- |"
55
+ : "| test262 用例 | 领域 | 诊断码 | 原因 |\n| --- | --- | ---: | --- |";
56
+ const rows = UNSUPPORTED_CASES.map((testCase) => {
57
+ const area = SUPPORT_AREAS.find((candidate) => candidate.id === testCase.area);
58
+ const claim = language === "en" ? testCase.claim : testCase.claimZh;
59
+ return `| \`${testCase.path}\` | ${areaTitle(area, language)} | TS${testCase.code} | ${claim} |`;
60
+ });
61
+ return [header, ...rows].join("\n");
62
+ }
63
+ export function renderSupportMatrix(language) {
64
+ const corpusLink = language === "en" ? "../tests/conformance/test262/manifest.ts" : "../../tests/conformance/test262/manifest.ts";
65
+ const testLink = language === "en" ? "../tests/conformance/test262.test.ts" : "../../tests/conformance/test262.test.ts";
66
+ const sourceLink = language === "en" ? "../tests/conformance/test262/SOURCE.md" : "../../tests/conformance/test262/SOURCE.md";
67
+ if (language === "en") {
68
+ return `# Support matrix
69
+
70
+ > Language: **English** | [简体中文](./zh-CN/support-matrix.md)
71
+
72
+ > **Generated** by \`npm run docs:matrix\` from the executable catalogue in
73
+ > [\`tests/conformance/test262/manifest.ts\`](${corpusLink}). Do not edit this
74
+ > file by hand: change a case and regenerate.
75
+
76
+ Every supported case is an unmodified [test262](https://github.com/tc39/test262)
77
+ file (pinned at \`${TEST262_COMMIT}\`) that xbintsc compiles **and runs**; the
78
+ [test262 suite](${testLink}) fails if one stops passing. The corpus is a
79
+ representative subset, not a full test262 run. Every unsupported case
80
+ is valid JavaScript that xbintsc currently rejects, pinned with the diagnostic
81
+ code it produces. See [\`SOURCE.md\`](${sourceLink}) for the harness adaptation.
82
+ Because the suite runs on every CI platform, this table cannot claim more than
83
+ the compiler does.
84
+
85
+ ## Coverage by area
86
+
87
+ | Area | Supported | Unsupported | Reference |
88
+ | --- | ---: | ---: | --- |
89
+ ${rowsFor(language)}
90
+
91
+ ## Supported cases (test262, compiled and executed)
92
+
93
+ ${supportedTable(language)}
94
+
95
+ ## Unsupported cases (valid JavaScript, expected diagnostics)
96
+
97
+ ${unsupportedTable(language)}
98
+ `;
99
+ }
100
+ return `# 支持矩阵
101
+
102
+ > 语言:[English](../support-matrix.md) | **简体中文**
103
+
104
+ > 本文件由 \`npm run docs:matrix\` 根据可执行语料
105
+ > [\`tests/conformance/test262/manifest.ts\`](${corpusLink}) 生成,请勿手工编辑:
106
+ > 修改用例后重新生成。
107
+
108
+ 每个“支持”用例都是 [test262](https://github.com/tc39/test262) 的原始文件
109
+ (固定版本 \`${TEST262_COMMIT}\`),由 xbintsc 编译**并执行**;
110
+ [test262 测试套件](${testLink}) 会在用例回归时失败。该语料是代表性
111
+ 子集,不是完整的 test262 全量运行。每个“不支持”用例都是
112
+ xbintsc 目前会拒绝的合法 JavaScript,并以实际产生的诊断码固定下来。
113
+ harness 的适配说明见 [\`SOURCE.md\`](${sourceLink})。该套件在 CI 的每个平台
114
+ 运行,因此本表不会声称编译器做不到的能力。
115
+
116
+ ## 各领域覆盖
117
+
118
+ | 领域 | 支持 | 不支持 | 参考 |
119
+ | --- | ---: | ---: | --- |
120
+ ${rowsFor(language)}
121
+
122
+ ## 支持的用例(test262,编译并执行)
123
+
124
+ ${supportedTable(language)}
125
+
126
+ ## 不支持的用例(合法 JavaScript,预期诊断)
127
+
128
+ ${unsupportedTable(language)}
129
+ `;
130
+ }
131
+ function main() {
132
+ for (const language of ["en", "zh"]) {
133
+ const path = resolve(root, MATRIX_FILES[language]);
134
+ writeFileSync(path, renderSupportMatrix(language));
135
+ process.stdout.write(`xbintsc: wrote ${MATRIX_FILES[language]}\n`);
136
+ }
137
+ }
138
+ if (process.argv[1] !== undefined && pathToFileURL(resolve(process.argv[1])).href === import.meta.url) {
139
+ main();
140
+ }
141
+ //# sourceMappingURL=support-matrix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"support-matrix.js","sourceRoot":"","sources":["../../scripts/support-matrix.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,GAElB,MAAM,0CAA0C,CAAC;AAElD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAIpE,MAAM,CAAC,MAAM,YAAY,GAAuC;IAC9D,EAAE,EAAE,uBAAuB;IAC3B,EAAE,EAAE,6BAA6B;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,0CAA0C,CAAC;AAEzE,SAAS,OAAO,CAAC,IAAiB,EAAE,QAAkB;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACxF,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,SAAS,CAAC,IAAiB,EAAE,QAAkB;IACtD,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;AACvD,CAAC;AAED,SAAS,KAAK,CAAC,IAAiB,EAAE,KAA2C;IAC3E,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AACtE,CAAC;AAED,SAAS,OAAO,CAAC,QAAkB;IACjC,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAChC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACnD,OAAO,KAAK,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,SAAS,MAAM,WAAW,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC;IACtJ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,QAAkB;IACxC,MAAM,MAAM,GACV,QAAQ,KAAK,IAAI;QACf,CAAC,CAAC,kEAAkE;QACpE,CAAC,CAAC,kDAAkD,CAAC;IACzD,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC5C,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAE,CAAC;QAChF,MAAM,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACpE,OAAO,OAAO,QAAQ,CAAC,IAAI,QAAQ,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAkB;IAC1C,MAAM,MAAM,GACV,QAAQ,KAAK,IAAI;QACf,CAAC,CAAC,wEAAwE;QAC1E,CAAC,CAAC,4DAA4D,CAAC;IACnE,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC9C,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAE,CAAC;QAChF,MAAM,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACpE,OAAO,OAAO,QAAQ,CAAC,IAAI,QAAQ,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,QAAQ,CAAC,IAAI,MAAM,KAAK,IAAI,CAAC;IACnG,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAkB;IACpD,MAAM,UAAU,GACd,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,6CAA6C,CAAC;IACjH,MAAM,QAAQ,GACZ,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,yCAAyC,CAAC;IACzG,MAAM,UAAU,GACd,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,2CAA2C,CAAC;IAE7G,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO;;;;;gDAKqC,UAAU;;;;oBAItC,cAAc;kBAChB,QAAQ;;;wCAGc,UAAU;;;;;;;;EAQhD,OAAO,CAAC,QAAQ,CAAC;;;;EAIjB,cAAc,CAAC,QAAQ,CAAC;;;;EAIxB,gBAAgB,CAAC,QAAQ,CAAC;CAC3B,CAAC;IACA,CAAC;IAED,OAAO;;;;;gDAKuC,UAAU;;;;UAIhD,cAAc;iBACP,QAAQ;;;iCAGQ,UAAU;;;;;;;EAOzC,OAAO,CAAC,QAAQ,CAAC;;;;EAIjB,cAAc,CAAC,QAAQ,CAAC;;;;EAIxB,gBAAgB,CAAC,QAAQ,CAAC;CAC3B,CAAC;AACF,CAAC;AAED,SAAS,IAAI;IACX,KAAK,MAAM,QAAQ,IAAI,CAAC,IAAI,EAAE,IAAI,CAAU,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnD,aAAa,CAAC,IAAI,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACtG,IAAI,EAAE,CAAC;AACT,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * `TypeNode` discriminated unions.
5
5
  */
6
6
  import { SyntaxKind, type ModifierKind } from "./kinds.js";
7
- import type { ArrayLiteralExpression, ArrowFunction, AsExpression, AwaitExpression, BigIntLiteral, BinaryExpression, BooleanLiteral, CallExpression, ClassExpression, ConditionalExpression, DeleteExpression, ElementAccessExpression, FunctionExpression, Identifier, NewExpression, NoSubstitutionTemplateLiteral, NonNullExpression, NullLiteral, NumericLiteral, ObjectLiteralExpression, ParenthesizedExpression, PostfixUnaryExpression, PrefixUnaryExpression, PrivateIdentifier, PropertyAccessExpression, RegularExpressionLiteral, SatisfiesExpression, SpreadElement, StringLiteral, TaggedTemplateExpression, TemplateLiteral, ThisExpression, TypeOfExpression, UndefinedLiteral, VoidExpression, YieldExpression } from "./expressions.js";
7
+ import type { ArrayLiteralExpression, ArrowFunction, AsExpression, AwaitExpression, BigIntLiteral, BinaryExpression, BooleanLiteral, CallExpression, ClassExpression, ConditionalExpression, DeleteExpression, ElementAccessExpression, FunctionExpression, Identifier, NewExpression, NoSubstitutionTemplateLiteral, NonNullExpression, NullLiteral, NumericLiteral, ObjectLiteralExpression, ParenthesizedExpression, PostfixUnaryExpression, PrefixUnaryExpression, PrivateIdentifier, PropertyAccessExpression, RegularExpressionLiteral, SatisfiesExpression, SequenceExpression, SpreadElement, StringLiteral, TaggedTemplateExpression, TemplateLiteral, ThisExpression, TypeOfExpression, UndefinedLiteral, VoidExpression, YieldExpression } from "./expressions.js";
8
8
  import type { Block, BreakStatement, ContinueStatement, DebuggerStatement, DoStatement, EmptyStatement, ExpressionStatement, ForInStatement, ForOfStatement, ForStatement, IfStatement, LabeledStatement, ReturnStatement, SwitchStatement, ThrowStatement, TryStatement, VariableStatement, WhileStatement } from "./statements.js";
9
9
  import type { ClassDeclaration, EnumDeclaration, FunctionDeclaration, InterfaceDeclaration, ModuleDeclaration, TypeAliasDeclaration } from "./declarations.js";
10
10
  import type { ExportAssignment, ExportDeclaration, ImportDeclaration } from "./modules.js";
@@ -22,7 +22,7 @@ export interface Modifier extends Node {
22
22
  readonly kind: SyntaxKind.Unknown;
23
23
  readonly modifierKind: ModifierKind;
24
24
  }
25
- export type Expression = Identifier | PrivateIdentifier | NumericLiteral | BigIntLiteral | StringLiteral | NoSubstitutionTemplateLiteral | TemplateLiteral | RegularExpressionLiteral | BooleanLiteral | NullLiteral | UndefinedLiteral | ThisExpression | ArrayLiteralExpression | ObjectLiteralExpression | FunctionExpression | ArrowFunction | ClassExpression | CallExpression | NewExpression | PropertyAccessExpression | ElementAccessExpression | ParenthesizedExpression | PrefixUnaryExpression | PostfixUnaryExpression | BinaryExpression | ConditionalExpression | AsExpression | SatisfiesExpression | NonNullExpression | TypeOfExpression | VoidExpression | DeleteExpression | AwaitExpression | YieldExpression | TaggedTemplateExpression | SpreadElement;
25
+ export type Expression = Identifier | PrivateIdentifier | NumericLiteral | BigIntLiteral | StringLiteral | NoSubstitutionTemplateLiteral | TemplateLiteral | RegularExpressionLiteral | BooleanLiteral | NullLiteral | UndefinedLiteral | ThisExpression | ArrayLiteralExpression | ObjectLiteralExpression | FunctionExpression | ArrowFunction | ClassExpression | CallExpression | NewExpression | PropertyAccessExpression | ElementAccessExpression | ParenthesizedExpression | PrefixUnaryExpression | PostfixUnaryExpression | BinaryExpression | ConditionalExpression | AsExpression | SatisfiesExpression | SequenceExpression | NonNullExpression | TypeOfExpression | VoidExpression | DeleteExpression | AwaitExpression | YieldExpression | TaggedTemplateExpression | SpreadElement;
26
26
  export type Statement = ExpressionStatement | Block | EmptyStatement | DebuggerStatement | VariableStatement | IfStatement | WhileStatement | DoStatement | ForStatement | ForOfStatement | ForInStatement | ReturnStatement | BreakStatement | ContinueStatement | ThrowStatement | TryStatement | SwitchStatement | LabeledStatement | FunctionDeclaration | ClassDeclaration | InterfaceDeclaration | TypeAliasDeclaration | EnumDeclaration | ModuleDeclaration | ImportDeclaration | ExportDeclaration | ExportAssignment;
27
27
  export type TypeNode = TypeReference | TypePredicate | KeywordTypeNode | LiteralTypeNode | ArrayTypeNode | TupleTypeNode | UnionTypeNode | IntersectionTypeNode | FunctionTypeNode | TypeLiteralNode | ParenthesizedTypeNode | TypeQueryNode | IndexedAccessTypeNode | TypeOperatorNode | MappedTypeNode | ConditionalTypeNode | InferTypeNode | OptionalTypeNode | RestTypeNode;
28
28
  export interface SourceFileNode extends Node {
@@ -58,7 +58,7 @@ export interface ExpressionWithTypeArguments extends Node {
58
58
  readonly expression: Expression;
59
59
  readonly typeArguments: TypeNode[];
60
60
  }
61
- export type ClassElement = PropertyDeclaration | MethodDeclaration | ConstructorDeclaration;
61
+ export type ClassElement = PropertyDeclaration | MethodDeclaration | ConstructorDeclaration | ClassStaticBlockDeclaration;
62
62
  export interface PropertyDeclaration extends Node {
63
63
  readonly kind: SyntaxKind.PropertyDeclaration;
64
64
  readonly name: PropertyName;
@@ -87,6 +87,12 @@ export interface ConstructorDeclaration extends Node {
87
87
  readonly parameters: Parameter[];
88
88
  readonly body?: Block;
89
89
  }
90
+ /** `static { ... }`: runs once, while the class is being defined. */
91
+ export interface ClassStaticBlockDeclaration extends Node {
92
+ readonly kind: SyntaxKind.ClassStaticBlockDeclaration;
93
+ readonly modifiers: Modifier[];
94
+ readonly body: Block;
95
+ }
90
96
  export interface ClassDeclaration extends Node {
91
97
  readonly kind: SyntaxKind.ClassDeclaration;
92
98
  readonly name?: Identifier;
@@ -162,6 +162,11 @@ export interface ParenthesizedExpression extends Node {
162
162
  readonly kind: SyntaxKind.ParenthesizedExpression;
163
163
  readonly expression: Expression;
164
164
  }
165
+ /** `a, b, c`: evaluates every operand left to right, yields the last value. */
166
+ export interface SequenceExpression extends Node {
167
+ readonly kind: SyntaxKind.SequenceExpression;
168
+ readonly expressions: Expression[];
169
+ }
165
170
  export interface PrefixUnaryExpression extends Node {
166
171
  readonly kind: SyntaxKind.PrefixUnaryExpression;
167
172
  readonly operator: PrefixUnaryOperator;
@@ -55,6 +55,7 @@ export declare const enum SyntaxKind {
55
55
  ObjectBindingPattern = 47,
56
56
  BindingElement = 48,
57
57
  ComputedPropertyName = 49,
58
+ SequenceExpression = 50,
58
59
  ExpressionStatement = 60,
59
60
  Block = 61,
60
61
  EmptyStatement = 62,
@@ -100,6 +101,7 @@ export declare const enum SyntaxKind {
100
101
  ExportAssignment = 119,
101
102
  NamedExports = 120,
102
103
  ExportSpecifier = 121,
104
+ ClassStaticBlockDeclaration = 122,
103
105
  TypeReference = 200,
104
106
  TypePredicate = 201,
105
107
  AnyKeywordType = 202,
@@ -60,6 +60,7 @@ export var SyntaxKind;
60
60
  SyntaxKind[SyntaxKind["ObjectBindingPattern"] = 47] = "ObjectBindingPattern";
61
61
  SyntaxKind[SyntaxKind["BindingElement"] = 48] = "BindingElement";
62
62
  SyntaxKind[SyntaxKind["ComputedPropertyName"] = 49] = "ComputedPropertyName";
63
+ SyntaxKind[SyntaxKind["SequenceExpression"] = 50] = "SequenceExpression";
63
64
  // Statements
64
65
  SyntaxKind[SyntaxKind["ExpressionStatement"] = 60] = "ExpressionStatement";
65
66
  SyntaxKind[SyntaxKind["Block"] = 61] = "Block";
@@ -107,6 +108,7 @@ export var SyntaxKind;
107
108
  SyntaxKind[SyntaxKind["ExportAssignment"] = 119] = "ExportAssignment";
108
109
  SyntaxKind[SyntaxKind["NamedExports"] = 120] = "NamedExports";
109
110
  SyntaxKind[SyntaxKind["ExportSpecifier"] = 121] = "ExportSpecifier";
111
+ SyntaxKind[SyntaxKind["ClassStaticBlockDeclaration"] = 122] = "ClassStaticBlockDeclaration";
110
112
  // Types
111
113
  SyntaxKind[SyntaxKind["TypeReference"] = 200] = "TypeReference";
112
114
  SyntaxKind[SyntaxKind["TypePredicate"] = 201] = "TypePredicate";
@@ -1 +1 @@
1
- {"version":3,"file":"kinds.js","sourceRoot":"","sources":["../../../src/ast/kinds.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kinds.js","sourceRoot":"","sources":["../../../src/ast/kinds.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@
15
15
  * - `helpers` — small AST utilities
16
16
  */
17
17
  import type { Identifier, Node, SourceFileNode } from "../ast/nodes.js";
18
- import { ScopeKind, type ClassInfo, type FunctionInfo, type MutableFunction, type Scope, type SymbolInfo, type BindResult, type FunctionNode } from "./types.js";
18
+ import { ScopeKind, type ClassInfo, type DeclarationConflict, type FunctionInfo, type MutableFunction, type Scope, type SymbolInfo, type BindResult, type FunctionNode } from "./types.js";
19
19
  import { type DeclarationMethods } from "./declarations.js";
20
20
  import { type ReferenceMethods } from "./references.js";
21
21
  export * from "./types.js";
@@ -29,6 +29,7 @@ export declare class Binder {
29
29
  readonly symbolOfIdentifier: Map<Identifier, SymbolInfo>;
30
30
  readonly scopes: Map<Node, Scope>;
31
31
  readonly unresolved: Identifier[];
32
+ readonly conflicts: DeclarationConflict[];
32
33
  nextSymbolId: number;
33
34
  nextFunctionId: number;
34
35
  nextClassId: number;
@@ -32,6 +32,7 @@ export class Binder {
32
32
  symbolOfIdentifier = new Map();
33
33
  scopes = new Map();
34
34
  unresolved = [];
35
+ conflicts = [];
35
36
  nextSymbolId = 1;
36
37
  nextFunctionId = 1;
37
38
  nextClassId = 1;
@@ -68,6 +69,7 @@ export class Binder {
68
69
  symbolOfIdentifier: this.symbolOfIdentifier,
69
70
  scopes: this.scopes,
70
71
  unresolved: this.unresolved,
72
+ conflicts: this.conflicts,
71
73
  };
72
74
  }
73
75
  // -- construction helpers ------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"binder.js","sourceRoot":"","sources":["../../../src/binder/binder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binder.js","sourceRoot":"","sources":["../../../src/binder/binder.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,15 @@
5
5
  import { type BindingName, type ImportDeclaration, type Node, type Statement, type VariableDeclarationList } from "../ast/nodes.js";
6
6
  import { SymbolKind, type MutableFunction, type Scope, type SymbolInfo } from "./types.js";
7
7
  import type { Binder } from "./binder.js";
8
+ /**
9
+ * Whether a declaration of `next` may legally share a scope with `existing`.
10
+ *
11
+ * This is JavaScript's redeclaration rules plus TypeScript's declaration
12
+ * merging, kept deliberately explicit: a wrong `true` would hide a real bug, a
13
+ * wrong `false` would make valid code fail to compile. Only the cases this
14
+ * compiler can actually see are covered; anything unknown is treated as legal.
15
+ */
16
+ export declare function declarationsCanMerge(existing: SymbolKind, next: SymbolKind): boolean;
8
17
  export interface DeclarationMethods {
9
18
  declareBinding(this: Binder, name: BindingName, kind: SymbolKind, declaration: Node, scope: Scope, mutable: boolean): SymbolInfo | undefined;
10
19
  declare(this: Binder, name: string, kind: SymbolKind, node: Node, scope: Scope, mutable: boolean): SymbolInfo;
@@ -5,6 +5,65 @@
5
5
  import { SyntaxKind, } from "../ast/nodes.js";
6
6
  import { SymbolKind } from "./types.js";
7
7
  import { childNodes } from "./helpers.js";
8
+ /** Kinds that only introduce a type name, never a runtime binding. */
9
+ const TYPE_ONLY_KINDS = new Set([
10
+ SymbolKind.Interface,
11
+ SymbolKind.TypeAlias,
12
+ ]);
13
+ function isVarLike(kind) {
14
+ return kind === SymbolKind.Var || kind === SymbolKind.Function;
15
+ }
16
+ /**
17
+ * Whether a declaration of `next` may legally share a scope with `existing`.
18
+ *
19
+ * This is JavaScript's redeclaration rules plus TypeScript's declaration
20
+ * merging, kept deliberately explicit: a wrong `true` would hide a real bug, a
21
+ * wrong `false` would make valid code fail to compile. Only the cases this
22
+ * compiler can actually see are covered; anything unknown is treated as legal.
23
+ */
24
+ export function declarationsCanMerge(existing, next) {
25
+ if (existing === next) {
26
+ /* Repeated `var` / `function` / `interface` / `enum` declarations merge.
27
+ * Two imports may also share a name: bundling merges every module into one
28
+ * scope, and separate modules routinely import the same builtin
29
+ * (`readFileSync` from `node:fs`, `dirname` from `node:path`). The import
30
+ * map is keyed by symbol id, so keeping the first declaration is enough.
31
+ * `let`, `const`, `class` and parameters do not merge. */
32
+ return (existing === SymbolKind.Var ||
33
+ existing === SymbolKind.Function ||
34
+ existing === SymbolKind.Interface ||
35
+ existing === SymbolKind.Namespace ||
36
+ existing === SymbolKind.Enum ||
37
+ existing === SymbolKind.Import);
38
+ }
39
+ // `var` and `function` are both function-scoped and may coexist in any order.
40
+ if (isVarLike(existing) && isVarLike(next))
41
+ return true;
42
+ // `var` may redeclare a parameter; `let`/`const` may not.
43
+ if ((existing === SymbolKind.Parameter && next === SymbolKind.Var) ||
44
+ (existing === SymbolKind.Var && next === SymbolKind.Parameter)) {
45
+ return true;
46
+ }
47
+ // Namespaces merge with classes, functions, enums and each other.
48
+ if (existing === SymbolKind.Namespace || next === SymbolKind.Namespace)
49
+ return true;
50
+ // A class and an interface merge their instance shape.
51
+ if ((existing === SymbolKind.Class && next === SymbolKind.Interface) ||
52
+ (existing === SymbolKind.Interface && next === SymbolKind.Class)) {
53
+ return true;
54
+ }
55
+ // An import binds both a value and a type name, so it conflicts with any
56
+ // same-name local declaration.
57
+ if (existing === SymbolKind.Import || next === SymbolKind.Import)
58
+ return false;
59
+ // Value and type names live in separate declaration spaces, except classes
60
+ // and enums, which declare a type as well as a value.
61
+ if (TYPE_ONLY_KINDS.has(existing) !== TYPE_ONLY_KINDS.has(next)) {
62
+ const valueKind = TYPE_ONLY_KINDS.has(existing) ? next : existing;
63
+ return valueKind !== SymbolKind.Class && valueKind !== SymbolKind.Enum;
64
+ }
65
+ return false;
66
+ }
8
67
  export const declarationMethods = {
9
68
  /** Declare every identifier introduced by a (possibly destructured) binding. */
10
69
  declareBinding(name, kind, declaration, scope, mutable) {
@@ -25,6 +84,11 @@ export const declarationMethods = {
25
84
  declare(name, kind, node, scope, mutable) {
26
85
  const existing = scope.symbols.get(name);
27
86
  if (existing) {
87
+ // `(anonymous)` is the binder's placeholder for `export default
88
+ // function () {}`; those have no user-visible name to collide.
89
+ if (name !== "(anonymous)" && !declarationsCanMerge(existing.kind, kind)) {
90
+ this.conflicts.push({ name, existing, kind, node });
91
+ }
28
92
  // `var` redeclarations and duplicate functions merge into one symbol.
29
93
  if ((kind === SymbolKind.Var && existing.kind === SymbolKind.Var) ||
30
94
  (kind === SymbolKind.Function && existing.kind === SymbolKind.Function)) {
@@ -1 +1 @@
1
- {"version":3,"file":"declarations.js","sourceRoot":"","sources":["../../../src/binder/declarations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"declarations.js","sourceRoot":"","sources":["../../../src/binder/declarations.ts"],"names":[],"mappings":"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"}