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.
- package/AGENTS.md +11 -2
- package/README.md +31 -6
- package/README.zh-CN.md +21 -2
- package/dist/scripts/support-matrix.d.ts +18 -0
- package/dist/scripts/support-matrix.js +141 -0
- package/dist/scripts/support-matrix.js.map +1 -0
- package/dist/src/ast/common.d.ts +2 -2
- package/dist/src/ast/declarations.d.ts +7 -1
- package/dist/src/ast/expressions.d.ts +5 -0
- package/dist/src/ast/kinds.d.ts +2 -0
- package/dist/src/ast/kinds.js +2 -0
- package/dist/src/ast/kinds.js.map +1 -1
- package/dist/src/binder/binder.d.ts +2 -1
- package/dist/src/binder/binder.js +2 -0
- package/dist/src/binder/binder.js.map +1 -1
- package/dist/src/binder/declarations.d.ts +9 -0
- package/dist/src/binder/declarations.js +64 -0
- package/dist/src/binder/declarations.js.map +1 -1
- package/dist/src/binder/references.js +85 -3
- package/dist/src/binder/references.js.map +1 -1
- package/dist/src/binder/types.d.ts +32 -0
- package/dist/src/binder/types.js.map +1 -1
- package/dist/src/canonical.d.ts +29 -0
- package/dist/src/canonical.js +35 -0
- package/dist/src/canonical.js.map +1 -0
- package/dist/src/checker/assignability.d.ts +13 -0
- package/dist/src/checker/assignability.js +146 -0
- package/dist/src/checker/assignability.js.map +1 -0
- package/dist/src/checker/calls.d.ts +13 -0
- package/dist/src/checker/calls.js +127 -0
- package/dist/src/checker/calls.js.map +1 -0
- package/dist/src/checker/checker.d.ts +26 -0
- package/dist/src/checker/checker.js +31 -0
- package/dist/src/checker/checker.js.map +1 -0
- package/dist/src/checker/declarations.d.ts +9 -0
- package/dist/src/checker/declarations.js +15 -0
- package/dist/src/checker/declarations.js.map +1 -0
- package/dist/src/checker/flow.d.ts +21 -0
- package/dist/src/checker/flow.js +241 -0
- package/dist/src/checker/flow.js.map +1 -0
- package/dist/src/checker/globals.d.ts +9 -0
- package/dist/src/checker/globals.js +29 -0
- package/dist/src/checker/globals.js.map +1 -0
- package/dist/src/checker/source.d.ts +38 -0
- package/dist/src/checker/source.js +48 -0
- package/dist/src/checker/source.js.map +1 -0
- package/dist/src/checker/type-infer.d.ts +18 -0
- package/dist/src/checker/type-infer.js +173 -0
- package/dist/src/checker/type-infer.js.map +1 -0
- package/dist/src/checker/type-model.d.ts +73 -0
- package/dist/src/checker/type-model.js +151 -0
- package/dist/src/checker/type-model.js.map +1 -0
- package/dist/src/checker/type-system.d.ts +58 -0
- package/dist/src/checker/type-system.js +569 -0
- package/dist/src/checker/type-system.js.map +1 -0
- package/dist/src/checker/typecheck-types.d.ts +22 -0
- package/dist/src/checker/typecheck-types.js +109 -0
- package/dist/src/checker/typecheck-types.js.map +1 -0
- package/dist/src/checker/typecheck.d.ts +62 -0
- package/dist/src/checker/typecheck.js +574 -0
- package/dist/src/checker/typecheck.js.map +1 -0
- package/dist/src/checker/undefined.d.ts +14 -0
- package/dist/src/checker/undefined.js +32 -0
- package/dist/src/checker/undefined.js.map +1 -0
- package/dist/src/checker/walk.d.ts +10 -0
- package/dist/src/checker/walk.js +15 -0
- package/dist/src/checker/walk.js.map +1 -0
- package/dist/src/cli/help.d.ts +7 -0
- package/dist/src/cli/help.js +64 -0
- package/dist/src/cli/help.js.map +1 -0
- package/dist/src/cli/hints.js +2 -1
- package/dist/src/cli/hints.js.map +1 -1
- package/dist/src/cli/main.js +12 -48
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/codegen/generator/calls/access.js +8 -8
- package/dist/src/codegen/generator/calls/access.js.map +1 -1
- package/dist/src/codegen/generator/calls/invocation.js +9 -4
- package/dist/src/codegen/generator/calls/invocation.js.map +1 -1
- package/dist/src/codegen/generator/calls/super.d.ts +9 -1
- package/dist/src/codegen/generator/calls/super.js +56 -5
- package/dist/src/codegen/generator/calls/super.js.map +1 -1
- package/dist/src/codegen/generator/context.d.ts +13 -2
- package/dist/src/codegen/generator/context.js +25 -19
- package/dist/src/codegen/generator/context.js.map +1 -1
- package/dist/src/codegen/generator/debug.js +2 -1
- package/dist/src/codegen/generator/debug.js.map +1 -1
- package/dist/src/codegen/generator/expressions/primary.d.ts +4 -1
- package/dist/src/codegen/generator/expressions/primary.js +68 -8
- package/dist/src/codegen/generator/expressions/primary.js.map +1 -1
- package/dist/src/codegen/generator/generator.js +11 -1
- package/dist/src/codegen/generator/generator.js.map +1 -1
- package/dist/src/codegen/generator/module.d.ts +2 -0
- package/dist/src/codegen/generator/module.js +62 -26
- package/dist/src/codegen/generator/module.js.map +1 -1
- package/dist/src/codegen/generator/state.d.ts +11 -1
- package/dist/src/codegen/generator/state.js.map +1 -1
- package/dist/src/codegen/generator/statements/variables.js +20 -3
- package/dist/src/codegen/generator/statements/variables.js.map +1 -1
- package/dist/src/codegen/generator/tables.d.ts +2 -0
- package/dist/src/codegen/generator/tables.js +4 -0
- package/dist/src/codegen/generator/tables.js.map +1 -1
- package/dist/src/driver/build-key.d.ts +2 -0
- package/dist/src/driver/build-key.js +1 -0
- package/dist/src/driver/build-key.js.map +1 -1
- package/dist/src/driver/bundler/graph.js +5 -1
- package/dist/src/driver/bundler/graph.js.map +1 -1
- package/dist/src/driver/bundler/merge.js +16 -1
- package/dist/src/driver/bundler/merge.js.map +1 -1
- package/dist/src/driver/bundler/types.d.ts +12 -0
- package/dist/src/driver/compiler.d.ts +1 -1
- package/dist/src/driver/compiler.js +3 -0
- package/dist/src/driver/compiler.js.map +1 -1
- package/dist/src/driver/fingerprint.js +2 -1
- package/dist/src/driver/fingerprint.js.map +1 -1
- package/dist/src/driver/frontend.d.ts +8 -6
- package/dist/src/driver/frontend.js +4 -0
- package/dist/src/driver/frontend.js.map +1 -1
- package/dist/src/driver/options.d.ts +6 -0
- package/dist/src/driver/version.d.ts +1 -1
- package/dist/src/driver/version.js +1 -1
- package/dist/src/extensions/gui/html.js +20 -6
- package/dist/src/extensions/gui/html.js.map +1 -1
- package/dist/src/extensions/gui/index.js +63 -0
- package/dist/src/extensions/gui/index.js.map +1 -1
- package/dist/src/extensions/registry.d.ts +38 -0
- package/dist/src/extensions/registry.js +10 -0
- package/dist/src/extensions/registry.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/declarations/classes.js +7 -0
- package/dist/src/parser/declarations/classes.js.map +1 -1
- package/dist/src/parser/expressions.js +14 -1
- package/dist/src/parser/expressions.js.map +1 -1
- package/dist/src/parser/literals.js +6 -2
- package/dist/src/parser/literals.js.map +1 -1
- package/dist/tests/binder/binder.test.js +29 -0
- package/dist/tests/binder/binder.test.js.map +1 -1
- package/dist/tests/canonical.test.d.ts +1 -0
- package/dist/tests/canonical.test.js +19 -0
- package/dist/tests/canonical.test.js.map +1 -0
- package/dist/tests/checker/checker.test.d.ts +1 -0
- package/dist/tests/checker/checker.test.js +245 -0
- package/dist/tests/checker/checker.test.js.map +1 -0
- package/dist/tests/cli/check.test.js +20 -0
- package/dist/tests/cli/check.test.js.map +1 -1
- package/dist/tests/conformance/matrix.test.d.ts +6 -0
- package/dist/tests/conformance/matrix.test.js +23 -0
- package/dist/tests/conformance/matrix.test.js.map +1 -0
- package/dist/tests/conformance/test262/manifest.d.ts +115 -0
- package/dist/tests/conformance/test262/manifest.js +257 -0
- package/dist/tests/conformance/test262/manifest.js.map +1 -0
- package/dist/tests/conformance/test262.test.d.ts +11 -0
- package/dist/tests/conformance/test262.test.js +74 -0
- package/dist/tests/conformance/test262.test.js.map +1 -0
- package/dist/tests/docs/structure.test.js +9 -11
- package/dist/tests/docs/structure.test.js.map +1 -1
- package/dist/tests/e2e/child-process.test.js +3 -2
- package/dist/tests/e2e/child-process.test.js.map +1 -1
- package/dist/tests/e2e/compile-builtins.test.js +21 -0
- package/dist/tests/e2e/compile-builtins.test.js.map +1 -1
- package/dist/tests/e2e/compile-objects-classes.test.js +54 -0
- package/dist/tests/e2e/compile-objects-classes.test.js.map +1 -1
- package/dist/tests/e2e/differential-syntax.test.d.ts +5 -0
- package/dist/tests/e2e/differential-syntax.test.js +95 -0
- package/dist/tests/e2e/differential-syntax.test.js.map +1 -0
- package/dist/tests/e2e/differential-values.test.js +15 -0
- package/dist/tests/e2e/differential-values.test.js.map +1 -1
- package/dist/tests/e2e/gui-browser.test.d.ts +13 -0
- package/dist/tests/e2e/gui-browser.test.js +163 -0
- package/dist/tests/e2e/gui-browser.test.js.map +1 -0
- package/dist/tests/e2e/gui-example-browser.test.js +2 -2
- package/dist/tests/e2e/gui-example-browser.test.js.map +1 -1
- package/dist/tests/e2e/gui-example-canvas.test.js +5 -4
- package/dist/tests/e2e/gui-example-canvas.test.js.map +1 -1
- package/dist/tests/e2e/gui-example-svg.test.js +4 -3
- package/dist/tests/e2e/gui-example-svg.test.js.map +1 -1
- package/dist/tests/e2e/gui-example.test.js +4 -3
- package/dist/tests/e2e/gui-example.test.js.map +1 -1
- package/dist/tests/e2e/gui-helpers.js +4 -3
- package/dist/tests/e2e/gui-helpers.js.map +1 -1
- package/dist/tests/e2e/gui-media.test.js +5 -4
- package/dist/tests/e2e/gui-media.test.js.map +1 -1
- package/dist/tests/e2e/harness.d.ts +9 -0
- package/dist/tests/e2e/harness.js +14 -2
- package/dist/tests/e2e/harness.js.map +1 -1
- package/dist/tests/e2e/native-extensions.test.js +2 -1
- package/dist/tests/e2e/native-extensions.test.js.map +1 -1
- package/dist/tests/e2e/property-descriptors.test.js +20 -0
- package/dist/tests/e2e/property-descriptors.test.js.map +1 -1
- package/dist/tests/e2e/unicode-output.test.js +5 -3
- package/dist/tests/e2e/unicode-output.test.js.map +1 -1
- package/dist/tests/e2e/weak-collections.test.js +16 -2
- package/dist/tests/e2e/weak-collections.test.js.map +1 -1
- package/dist/tests/helpers.d.ts +1 -0
- package/dist/tests/helpers.js +1 -0
- package/dist/tests/helpers.js.map +1 -1
- package/dist/tests/parser/declarations.test.js +20 -0
- package/dist/tests/parser/declarations.test.js.map +1 -1
- package/dist/tests/parser/expressions.test.js +36 -0
- package/dist/tests/parser/expressions.test.js.map +1 -1
- package/dist/tests/platform.d.ts +32 -0
- package/dist/tests/platform.js +40 -0
- package/dist/tests/platform.js.map +1 -0
- package/dist/tests/platform.test.d.ts +12 -0
- package/dist/tests/platform.test.js +51 -0
- package/dist/tests/platform.test.js.map +1 -0
- package/dist/tests/version.test.js +4 -4
- package/dist/tests/version.test.js.map +1 -1
- package/doc/ai/README.md +10 -4
- package/doc/ai/build-recipe.md +1 -0
- package/doc/ai/cli.md +17 -5
- package/doc/ai/contributing.md +59 -2
- package/doc/ai/extensions.md +11 -0
- package/doc/ai/language-support.md +25 -16
- package/doc/ai/zh-CN/README.md +9 -4
- package/doc/ai/zh-CN/build-recipe.md +1 -0
- package/doc/ai/zh-CN/cli.md +13 -3
- package/doc/ai/zh-CN/contributing.md +49 -3
- package/doc/ai/zh-CN/extensions.md +9 -0
- package/doc/ai/zh-CN/language-support.md +23 -14
- package/doc/gui/api.md +45 -0
- package/doc/gui/known-issues.md +10 -0
- package/doc/gui/runtime.md +18 -0
- package/doc/gui-scripts.md +7 -0
- package/doc/implemented/binder.md +2 -0
- package/doc/implemented/checker.md +117 -0
- package/doc/implemented/cli.md +13 -1
- package/doc/implemented/codegen.md +3 -2
- package/doc/implemented/driver.md +2 -2
- package/doc/implemented/operators.md +2 -1
- package/doc/implemented/parser.md +3 -2
- package/doc/implemented/pipeline.md +8 -1
- package/doc/implemented/stdlib.md +2 -1
- package/doc/implemented/tests.md +3 -1
- package/doc/implemented.md +2 -0
- package/doc/npm-package.md +417 -0
- package/doc/requirements.md +4 -1
- package/doc/support-matrix.md +83 -0
- package/doc/unimplemented/classes.md +3 -0
- package/doc/unimplemented/deviations.md +3 -2
- package/doc/unimplemented/toolchain.md +1 -1
- package/doc/unimplemented/types.md +24 -8
- package/doc/unimplemented.md +1 -1
- package/doc/zh-CN/gui/api.md +41 -0
- package/doc/zh-CN/gui/known-issues.md +7 -0
- package/doc/zh-CN/gui/runtime.md +16 -0
- package/doc/zh-CN/gui-scripts.md +5 -0
- package/doc/zh-CN/implemented/binder.md +2 -0
- package/doc/zh-CN/implemented/checker.md +99 -0
- package/doc/zh-CN/implemented/cli.md +12 -1
- package/doc/zh-CN/implemented/codegen.md +3 -2
- package/doc/zh-CN/implemented/driver.md +2 -2
- package/doc/zh-CN/implemented/operators.md +1 -1
- package/doc/zh-CN/implemented/parser.md +3 -2
- package/doc/zh-CN/implemented/pipeline.md +3 -1
- package/doc/zh-CN/implemented/stdlib.md +2 -1
- package/doc/zh-CN/implemented/tests.md +3 -1
- package/doc/zh-CN/implemented.md +2 -0
- package/doc/zh-CN/npm-package.md +391 -0
- package/doc/zh-CN/post/announce.md +47 -47
- package/doc/zh-CN/requirements.md +4 -1
- package/doc/zh-CN/support-matrix.md +82 -0
- package/doc/zh-CN/unimplemented/classes.md +3 -0
- package/doc/zh-CN/unimplemented/deviations.md +3 -2
- package/doc/zh-CN/unimplemented/toolchain.md +1 -1
- package/doc/zh-CN/unimplemented/types.md +16 -6
- package/doc/zh-CN/unimplemented.md +1 -1
- package/llms.txt +4 -1
- package/package.json +2 -1
- package/runtime/ext_gui/audio.cpp +316 -0
- package/runtime/ext_gui/browser.cpp +547 -0
- package/runtime/ext_gui/browser_escape.cpp +85 -0
- package/runtime/ext_gui/browser_loop.cpp +83 -0
- package/runtime/ext_gui/canvas.cpp +9 -3
- package/runtime/ext_gui/canvas_raster.cpp +19 -1
- package/runtime/ext_gui/dom_api.cpp +36 -0
- package/runtime/ext_gui/dom_api_document.cpp +96 -5
- package/runtime/ext_gui/dom_api_events.cpp +20 -0
- package/runtime/ext_gui/dom_api_internal.h +19 -0
- package/runtime/ext_gui/dom_api_proto.cpp +6 -0
- package/runtime/ext_gui/gui.cpp +90 -23
- package/runtime/ext_gui/gui_engine.h +44 -0
- package/runtime/ext_gui/window.cpp +9 -0
- package/runtime/ext_node/path/path.c +7 -7
- package/runtime/ext_node/url/url.c +4 -2
- package/runtime/rt.h +15 -0
- package/runtime/xt_constructors.c +2 -1
- package/runtime/xt_containers/objects.inc +22 -2
- package/runtime/xt_io/exception.inc +4 -2
- package/runtime/xt_stdlib/math.inc +62 -0
- package/runtime/xt_stdlib2/date.inc +7 -1
- package/runtime/xt_stdlib2/objects.inc +14 -0
- package/scripts/support-matrix.ts +167 -0
- package/src/ast/common.ts +2 -0
- package/src/ast/declarations.ts +12 -1
- package/src/ast/expressions.ts +6 -0
- package/src/ast/kinds.ts +2 -0
- package/src/binder/binder.ts +3 -0
- package/src/binder/declarations.ts +70 -0
- package/src/binder/references.ts +84 -3
- package/src/binder/types.ts +30 -0
- package/src/canonical.ts +37 -0
- package/src/checker/assignability.ts +134 -0
- package/src/checker/calls.ts +135 -0
- package/src/checker/checker.ts +47 -0
- package/src/checker/declarations.ts +26 -0
- package/src/checker/flow.ts +236 -0
- package/src/checker/globals.ts +40 -0
- package/src/checker/source.ts +53 -0
- package/src/checker/type-infer.ts +185 -0
- package/src/checker/type-model.ts +212 -0
- package/src/checker/type-system.ts +578 -0
- package/src/checker/typecheck-types.ts +112 -0
- package/src/checker/typecheck.ts +586 -0
- package/src/checker/undefined.ts +43 -0
- package/src/checker/walk.ts +16 -0
- package/src/cli/help.ts +65 -0
- package/src/cli/hints.ts +2 -1
- package/src/cli/main.ts +12 -49
- package/src/codegen/generator/calls/access.ts +8 -8
- package/src/codegen/generator/calls/invocation.ts +8 -5
- package/src/codegen/generator/calls/super.ts +67 -5
- package/src/codegen/generator/context.ts +31 -19
- package/src/codegen/generator/debug.ts +2 -1
- package/src/codegen/generator/expressions/primary.ts +84 -13
- package/src/codegen/generator/generator.ts +11 -1
- package/src/codegen/generator/module.ts +65 -24
- package/src/codegen/generator/state.ts +11 -1
- package/src/codegen/generator/statements/variables.ts +20 -3
- package/src/codegen/generator/tables.ts +5 -0
- package/src/driver/build-key.ts +3 -0
- package/src/driver/bundler/graph.ts +6 -2
- package/src/driver/bundler/merge.ts +14 -1
- package/src/driver/bundler/types.ts +13 -0
- package/src/driver/compiler.ts +4 -1
- package/src/driver/fingerprint.ts +2 -1
- package/src/driver/frontend.ts +13 -2
- package/src/driver/options.ts +6 -0
- package/src/driver/version.ts +1 -1
- package/src/extensions/gui/html.ts +23 -10
- package/src/extensions/gui/index.ts +65 -0
- package/src/extensions/registry.ts +48 -0
- package/src/index.ts +1 -0
- package/src/parser/declarations/classes.ts +7 -0
- package/src/parser/expressions.ts +13 -1
- package/src/parser/literals.ts +6 -2
|
@@ -81,6 +81,21 @@ export const referenceMethods = {
|
|
|
81
81
|
case SyntaxKind.LabeledStatement:
|
|
82
82
|
this.bindNode(node.statement, scope);
|
|
83
83
|
return;
|
|
84
|
+
case SyntaxKind.SwitchStatement: {
|
|
85
|
+
const statement = node;
|
|
86
|
+
this.bindNode(statement.expression, scope);
|
|
87
|
+
/* Every `case` body shares the switch's block scope, so the
|
|
88
|
+
* declarations they contain have to be pre-declared before any clause
|
|
89
|
+
* is bound. Without this a `const` declared directly in a `case`
|
|
90
|
+
* clause had no symbol and later phases crashed on it. */
|
|
91
|
+
for (const clause of statement.clauses) {
|
|
92
|
+
this.bindNode(clause.expression, scope);
|
|
93
|
+
this.predeclareStatements(clause.statements, scope);
|
|
94
|
+
}
|
|
95
|
+
for (const clause of statement.clauses)
|
|
96
|
+
this.bindStatements(clause.statements, scope);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
84
99
|
case SyntaxKind.BreakStatement:
|
|
85
100
|
case SyntaxKind.ContinueStatement:
|
|
86
101
|
return;
|
|
@@ -95,6 +110,16 @@ export const referenceMethods = {
|
|
|
95
110
|
case SyntaxKind.TypeAliasDeclaration:
|
|
96
111
|
// Type-only: skip the body entirely.
|
|
97
112
|
return;
|
|
113
|
+
case SyntaxKind.EnumDeclaration: {
|
|
114
|
+
/* Member names are keys of the generated object, not bindings; only an
|
|
115
|
+
* initializer (`A = foo()`) contains runtime references. */
|
|
116
|
+
const members = node.members;
|
|
117
|
+
for (const member of members) {
|
|
118
|
+
if (member.initializer)
|
|
119
|
+
this.bindNode(member.initializer, scope);
|
|
120
|
+
}
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
98
123
|
case SyntaxKind.ImportDeclaration:
|
|
99
124
|
return;
|
|
100
125
|
case SyntaxKind.ExportDeclaration: {
|
|
@@ -153,6 +178,23 @@ export const referenceMethods = {
|
|
|
153
178
|
this.bindBlock(clause.block, catchScope);
|
|
154
179
|
return;
|
|
155
180
|
}
|
|
181
|
+
/* Type positions are erased, so their identifiers are not runtime
|
|
182
|
+
* references. Walking them would put `Foo` from `x as Foo` or the type
|
|
183
|
+
* arguments of `f<Foo>()` into `unresolved`, and the checker would then
|
|
184
|
+
* report a value that never exists. */
|
|
185
|
+
case SyntaxKind.AsExpression:
|
|
186
|
+
case SyntaxKind.SatisfiesExpression:
|
|
187
|
+
case SyntaxKind.NonNullExpression:
|
|
188
|
+
this.bindNode(node.expression, scope);
|
|
189
|
+
return;
|
|
190
|
+
case SyntaxKind.CallExpression:
|
|
191
|
+
case SyntaxKind.NewExpression: {
|
|
192
|
+
const call = node;
|
|
193
|
+
this.bindNode(call.expression, scope);
|
|
194
|
+
for (const argument of call.arguments)
|
|
195
|
+
this.bindNode(argument, scope);
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
156
198
|
default:
|
|
157
199
|
break;
|
|
158
200
|
}
|
|
@@ -160,10 +202,23 @@ export const referenceMethods = {
|
|
|
160
202
|
this.bindNode(child, scope);
|
|
161
203
|
},
|
|
162
204
|
bindVariableList(list, scope) {
|
|
205
|
+
const declarationKind = list.declarationKind === "const"
|
|
206
|
+
? SymbolKind.Const
|
|
207
|
+
: list.declarationKind === "var"
|
|
208
|
+
? SymbolKind.Var
|
|
209
|
+
: SymbolKind.Let;
|
|
163
210
|
for (const declaration of list.declarations) {
|
|
164
|
-
const symbol = this.symbolOfDeclaration.get(declaration);
|
|
165
211
|
if (declaration.name.kind === SyntaxKind.Identifier) {
|
|
166
|
-
|
|
212
|
+
/* Normally the declaration was pre-declared; if it was not (a code
|
|
213
|
+
* path that binds statements without pre-declaring them), declare it
|
|
214
|
+
* here rather than storing an empty entry that later phases would
|
|
215
|
+
* dereference. */
|
|
216
|
+
const name = declaration.name;
|
|
217
|
+
const symbol = this.symbolOfDeclaration.get(declaration) ??
|
|
218
|
+
this.symbolOfDeclaration.get(name) ??
|
|
219
|
+
this.declareBinding(name, declarationKind, declaration, scope, declarationKind !== SymbolKind.Const);
|
|
220
|
+
if (symbol)
|
|
221
|
+
this.symbolOfDeclaration.set(name, symbol);
|
|
167
222
|
}
|
|
168
223
|
else {
|
|
169
224
|
this.bindBindingPattern(declaration.name, scope);
|
|
@@ -265,12 +320,17 @@ export const referenceMethods = {
|
|
|
265
320
|
fields: [],
|
|
266
321
|
methods: [],
|
|
267
322
|
statics: [],
|
|
323
|
+
staticBlocks: [],
|
|
324
|
+
staticInit: [],
|
|
268
325
|
};
|
|
269
326
|
this.classes.push(info);
|
|
270
327
|
this.classOfNode.set(node, info);
|
|
271
328
|
const classScope = this.createScope(ScopeKind.Block, node, scope);
|
|
272
329
|
this.scopes.set(node, classScope);
|
|
273
330
|
let constructor;
|
|
331
|
+
/* `static { ... }` functions, so the field pass below can interleave them
|
|
332
|
+
* with static fields in declaration order. */
|
|
333
|
+
const staticBlockFns = new Map();
|
|
274
334
|
for (const member of node.members) {
|
|
275
335
|
if (member.kind === SyntaxKind.ConstructorDeclaration) {
|
|
276
336
|
const ctor = member;
|
|
@@ -292,6 +352,15 @@ export const referenceMethods = {
|
|
|
292
352
|
else
|
|
293
353
|
info.methods.push(fn);
|
|
294
354
|
}
|
|
355
|
+
else if (member.kind === SyntaxKind.ClassStaticBlockDeclaration) {
|
|
356
|
+
/* A static block is a function-like body: it runs once with `this`
|
|
357
|
+
* bound to the class, so it is bound like a static method and called
|
|
358
|
+
* right after the class value is built. */
|
|
359
|
+
const block = member;
|
|
360
|
+
const fn = this.createClassFunction(member, "static", [], block.body, classScope, info, true, false);
|
|
361
|
+
info.staticBlocks.push(fn);
|
|
362
|
+
staticBlockFns.set(member, fn);
|
|
363
|
+
}
|
|
295
364
|
}
|
|
296
365
|
if (!constructor) {
|
|
297
366
|
constructor = this.createClassFunction(node, "constructor", [], undefined, classScope, info, false, true);
|
|
@@ -308,7 +377,20 @@ export const referenceMethods = {
|
|
|
308
377
|
if (property.initializer)
|
|
309
378
|
this.bindNode(property.initializer, classScope);
|
|
310
379
|
this.current = owner;
|
|
311
|
-
|
|
380
|
+
const field = {
|
|
381
|
+
name: classMemberName(property.name),
|
|
382
|
+
initializer: property.initializer,
|
|
383
|
+
fn: constructor,
|
|
384
|
+
isStatic,
|
|
385
|
+
};
|
|
386
|
+
info.fields.push(field);
|
|
387
|
+
if (isStatic)
|
|
388
|
+
info.staticInit.push({ kind: "field", field });
|
|
389
|
+
}
|
|
390
|
+
else if (member.kind === SyntaxKind.ClassStaticBlockDeclaration) {
|
|
391
|
+
const fn = staticBlockFns.get(member);
|
|
392
|
+
if (fn)
|
|
393
|
+
info.staticInit.push({ kind: "block", fn });
|
|
312
394
|
}
|
|
313
395
|
}
|
|
314
396
|
this.current = parentFn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"references.js","sourceRoot":"","sources":["../../../src/binder/references.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"references.js","sourceRoot":"","sources":["../../../src/binder/references.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,23 @@ export interface SymbolInfo {
|
|
|
31
31
|
/** Assigned after construction once we know it is captured. */
|
|
32
32
|
boxed: boolean;
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* A same-scope declaration that cannot legally merge with the symbol already
|
|
36
|
+
* bound to that name (`let x` twice, `function f` then `const f`, ...).
|
|
37
|
+
*
|
|
38
|
+
* The binder records the conflict instead of reporting it: whether it is an
|
|
39
|
+
* error is checker policy (`--no-check` keeps the old, permissive behaviour),
|
|
40
|
+
* while the fact itself is cheap to capture during the one declaration pass.
|
|
41
|
+
*/
|
|
42
|
+
export interface DeclarationConflict {
|
|
43
|
+
readonly name: string;
|
|
44
|
+
/** The symbol the name was already bound to. */
|
|
45
|
+
readonly existing: SymbolInfo;
|
|
46
|
+
/** The kind of the offending declaration. */
|
|
47
|
+
readonly kind: SymbolKind;
|
|
48
|
+
/** The offending declaration node (the second one to use the name). */
|
|
49
|
+
readonly node: Node;
|
|
50
|
+
}
|
|
34
51
|
export type FunctionNode = SourceFileNode | FunctionDeclaration | FunctionExpression | ArrowFunction;
|
|
35
52
|
export interface FunctionInfo {
|
|
36
53
|
readonly id: number;
|
|
@@ -74,8 +91,21 @@ export interface ClassInfo {
|
|
|
74
91
|
readonly fields: ClassFieldInfo[];
|
|
75
92
|
readonly methods: FunctionInfo[];
|
|
76
93
|
readonly statics: FunctionInfo[];
|
|
94
|
+
/** `static { ... }` blocks, in declaration order. */
|
|
95
|
+
readonly staticBlocks: FunctionInfo[];
|
|
96
|
+
/** Static fields and static blocks, interleaved in declaration order: they
|
|
97
|
+
* run in source order, while static methods are installed before both. */
|
|
98
|
+
readonly staticInit: ClassStaticInit[];
|
|
77
99
|
ctor?: FunctionInfo;
|
|
78
100
|
}
|
|
101
|
+
/** One static element evaluated at class-definition time, in source order. */
|
|
102
|
+
export type ClassStaticInit = {
|
|
103
|
+
readonly kind: "field";
|
|
104
|
+
readonly field: ClassFieldInfo;
|
|
105
|
+
} | {
|
|
106
|
+
readonly kind: "block";
|
|
107
|
+
readonly fn: FunctionInfo;
|
|
108
|
+
};
|
|
79
109
|
export interface ClassFieldInfo {
|
|
80
110
|
readonly name: string;
|
|
81
111
|
readonly initializer: Expression | undefined;
|
|
@@ -110,6 +140,8 @@ export interface BindResult {
|
|
|
110
140
|
readonly scopes: Map<Node, Scope>;
|
|
111
141
|
/** Identifier references that could not be resolved in user code. */
|
|
112
142
|
readonly unresolved: Identifier[];
|
|
143
|
+
/** Same-scope declarations that cannot merge (see {@link DeclarationConflict}). */
|
|
144
|
+
readonly conflicts: readonly DeclarationConflict[];
|
|
113
145
|
}
|
|
114
146
|
export interface MutableFunction extends FunctionInfo {
|
|
115
147
|
locals: SymbolInfo[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/binder/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,MAAM,CAAN,IAAY,UAYX;AAZD,WAAY,UAAU;IACpB,yBAAW,CAAA;IACX,yBAAW,CAAA;IACX,6BAAe,CAAA;IACf,mCAAqB,CAAA;IACrB,qCAAuB,CAAA;IACvB,6BAAe,CAAA;IACf,qCAAuB,CAAA;IACvB,gCAAkB,CAAA;IAClB,2BAAa,CAAA;IACb,+BAAiB,CAAA;IACjB,qCAAuB,CAAA;AACzB,CAAC,EAZW,UAAU,KAAV,UAAU,QAYrB;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/binder/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,MAAM,CAAN,IAAY,UAYX;AAZD,WAAY,UAAU;IACpB,yBAAW,CAAA;IACX,yBAAW,CAAA;IACX,6BAAe,CAAA;IACf,mCAAqB,CAAA;IACrB,qCAAuB,CAAA;IACvB,6BAAe,CAAA;IACf,qCAAuB,CAAA;IACvB,gCAAkB,CAAA;IAClB,2BAAa,CAAA;IACb,+BAAiB,CAAA;IACjB,qCAAuB,CAAA;AACzB,CAAC,EAZW,UAAU,KAAV,UAAU,QAYrB;AAsGD,MAAM,CAAN,IAAY,SAMX;AAND,WAAY,SAAS;IACnB,8BAAiB,CAAA;IACjB,kCAAqB,CAAA;IACrB,4BAAe,CAAA;IACf,wBAAW,CAAA;IACX,4BAAe,CAAA;AACjB,CAAC,EANW,SAAS,KAAT,SAAS,QAMpB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical bytes for compiler-emitted artifacts.
|
|
3
|
+
*
|
|
4
|
+
* The compiler runs on Windows, macOS and Linux, and can be compiled by
|
|
5
|
+
* itself. Anything it writes into a byte-compared artifact — LLVM IR, debug
|
|
6
|
+
* metadata, the compiler fingerprint, the bundled module text and the `path`
|
|
7
|
+
* module's results — has to use the same representation on every host. These
|
|
8
|
+
* constants are that representation: do not spell `"/"` or `"\n"` in code that
|
|
9
|
+
* emits an artifact.
|
|
10
|
+
*
|
|
11
|
+
* Native paths are deliberately different. Diagnostics, `import.meta.filename`
|
|
12
|
+
* and `process.cwd()` keep the host separator, exactly like Node. Convert a
|
|
13
|
+
* native path with {@link artifactPath} only when it enters an artifact.
|
|
14
|
+
*/
|
|
15
|
+
/** Separator between path segments in a compiler artifact. Deliberately not
|
|
16
|
+
* selected by `process.platform`: every host writes `/`, so the same source
|
|
17
|
+
* produces the same bytes (and Windows accepts `/` in every API). */
|
|
18
|
+
export declare const ARTIFACT_PATH_SEPARATOR = "/";
|
|
19
|
+
/** Line ending between records in a compiler artifact. Deliberately not
|
|
20
|
+
* `os.EOL`/`"\r\n"` on Windows: the runtime opens stdout/stderr in binary
|
|
21
|
+
* mode, and CRLF would make IR, fingerprints and documentation differ per
|
|
22
|
+
* host. */
|
|
23
|
+
export declare const ARTIFACT_LINE_ENDING = "\n";
|
|
24
|
+
/**
|
|
25
|
+
* Rewrite a native path for an artifact: `C:\dir\file.ts` becomes
|
|
26
|
+
* `C:/dir/file.ts`. A backslash is always a separator here, matching how the
|
|
27
|
+
* runtime and Node treat Windows paths.
|
|
28
|
+
*/
|
|
29
|
+
export declare function artifactPath(path: string): string;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical bytes for compiler-emitted artifacts.
|
|
3
|
+
*
|
|
4
|
+
* The compiler runs on Windows, macOS and Linux, and can be compiled by
|
|
5
|
+
* itself. Anything it writes into a byte-compared artifact — LLVM IR, debug
|
|
6
|
+
* metadata, the compiler fingerprint, the bundled module text and the `path`
|
|
7
|
+
* module's results — has to use the same representation on every host. These
|
|
8
|
+
* constants are that representation: do not spell `"/"` or `"\n"` in code that
|
|
9
|
+
* emits an artifact.
|
|
10
|
+
*
|
|
11
|
+
* Native paths are deliberately different. Diagnostics, `import.meta.filename`
|
|
12
|
+
* and `process.cwd()` keep the host separator, exactly like Node. Convert a
|
|
13
|
+
* native path with {@link artifactPath} only when it enters an artifact.
|
|
14
|
+
*/
|
|
15
|
+
/** Separator between path segments in a compiler artifact. Deliberately not
|
|
16
|
+
* selected by `process.platform`: every host writes `/`, so the same source
|
|
17
|
+
* produces the same bytes (and Windows accepts `/` in every API). */
|
|
18
|
+
export const ARTIFACT_PATH_SEPARATOR = "/";
|
|
19
|
+
/** Line ending between records in a compiler artifact. Deliberately not
|
|
20
|
+
* `os.EOL`/`"\r\n"` on Windows: the runtime opens stdout/stderr in binary
|
|
21
|
+
* mode, and CRLF would make IR, fingerprints and documentation differ per
|
|
22
|
+
* host. */
|
|
23
|
+
export const ARTIFACT_LINE_ENDING = "\n";
|
|
24
|
+
/**
|
|
25
|
+
* Rewrite a native path for an artifact: `C:\dir\file.ts` becomes
|
|
26
|
+
* `C:/dir/file.ts`. A backslash is always a separator here, matching how the
|
|
27
|
+
* runtime and Node treat Windows paths.
|
|
28
|
+
*/
|
|
29
|
+
export function artifactPath(path) {
|
|
30
|
+
// `split`/`join` is measurably faster than a regex or `replaceAll` for the
|
|
31
|
+
// short paths this sees (it runs once per emitted stack frame), and it is the
|
|
32
|
+
// exact transform the compiler used before it was centralised.
|
|
33
|
+
return path.split("\\").join(ARTIFACT_PATH_SEPARATOR);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=canonical.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../src/canonical.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;sEAEsE;AACtE,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAE3C;;;YAGY;AACZ,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAEzC;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,2EAA2E;IAC3E,8EAA8E;IAC9E,+DAA+D;IAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural assignability for the small type model.
|
|
3
|
+
*
|
|
4
|
+
* This is intentionally lenient: every case the model cannot decide returns
|
|
5
|
+
* `true`. A `false` is reserved for a definite mismatch (a string where a
|
|
6
|
+
* number is required, a required property that is absent from a closed shape),
|
|
7
|
+
* because a false negative only hides a bug while a false positive rejects
|
|
8
|
+
* working code.
|
|
9
|
+
*/
|
|
10
|
+
import { type Type } from "./type-model.js";
|
|
11
|
+
export declare function isAssignable(source: Type, target: Type, depth?: number): boolean;
|
|
12
|
+
/** True only when the value is definitely not callable (not merely unknown). */
|
|
13
|
+
export declare function isDefinitelyNotCallable(type: Type): boolean;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural assignability for the small type model.
|
|
3
|
+
*
|
|
4
|
+
* This is intentionally lenient: every case the model cannot decide returns
|
|
5
|
+
* `true`. A `false` is reserved for a definite mismatch (a string where a
|
|
6
|
+
* number is required, a required property that is absent from a closed shape),
|
|
7
|
+
* because a false negative only hides a bug while a false positive rejects
|
|
8
|
+
* working code.
|
|
9
|
+
*/
|
|
10
|
+
import { isAny, unionMembers } from "./type-model.js";
|
|
11
|
+
const MAX_DEPTH = 8;
|
|
12
|
+
export function isAssignable(source, target, depth = 0) {
|
|
13
|
+
if (depth > MAX_DEPTH)
|
|
14
|
+
return true;
|
|
15
|
+
if (isAny(source) || isAny(target))
|
|
16
|
+
return true;
|
|
17
|
+
// Every member of a source union must fit; a target union accepts if any
|
|
18
|
+
// member fits. Source first, so `("a" | "b")` fits `("a" | "b")`.
|
|
19
|
+
if (source.kind === "union") {
|
|
20
|
+
return source.members.every((member) => isAssignable(member, target, depth + 1));
|
|
21
|
+
}
|
|
22
|
+
if (target.kind === "union") {
|
|
23
|
+
return target.members.some((member) => isAssignable(source, member, depth + 1));
|
|
24
|
+
}
|
|
25
|
+
if (target.kind === "literal") {
|
|
26
|
+
if (source.kind === "literal")
|
|
27
|
+
return source.value === target.value;
|
|
28
|
+
if (source.kind === "primitive")
|
|
29
|
+
return source.name === target.primitive;
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
if (target.kind === "primitive") {
|
|
33
|
+
return assignableToPrimitive(source, target.name);
|
|
34
|
+
}
|
|
35
|
+
if (source.kind === "literal") {
|
|
36
|
+
if (target.kind === "object")
|
|
37
|
+
return false;
|
|
38
|
+
if (target.kind === "array" || target.kind === "tuple" || target.kind === "function")
|
|
39
|
+
return false;
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
if (source.kind === "primitive") {
|
|
43
|
+
// `null` / `undefined` are accepted everywhere: the compiler does not
|
|
44
|
+
// enable strict-null checking, so rejecting them would break working code.
|
|
45
|
+
if (source.name === "null" || source.name === "undefined" || source.name === "void")
|
|
46
|
+
return true;
|
|
47
|
+
if (target.kind === "object")
|
|
48
|
+
return false;
|
|
49
|
+
if (target.kind === "array" || target.kind === "tuple" || target.kind === "function")
|
|
50
|
+
return false;
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
if (target.kind === "array") {
|
|
54
|
+
if (source.kind === "array")
|
|
55
|
+
return isAssignable(source.element, target.element, depth + 1);
|
|
56
|
+
if (source.kind === "tuple")
|
|
57
|
+
return source.elements.every((element) => isAssignable(element, target.element, depth + 1));
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
if (target.kind === "tuple") {
|
|
61
|
+
if (source.kind === "tuple") {
|
|
62
|
+
if (source.elements.length !== target.elements.length)
|
|
63
|
+
return false;
|
|
64
|
+
return source.elements.every((element, index) => isAssignable(element, target.elements[index], depth + 1));
|
|
65
|
+
}
|
|
66
|
+
// Array-to-tuple is not generally safe, but the model cannot prove it is
|
|
67
|
+
// wrong, so stay silent.
|
|
68
|
+
return source.kind === "array";
|
|
69
|
+
}
|
|
70
|
+
if (target.kind === "object") {
|
|
71
|
+
if (source.kind === "array" || source.kind === "tuple") {
|
|
72
|
+
// Arrays have prototype members this model does not enumerate; only a
|
|
73
|
+
// target with no required properties can be judged.
|
|
74
|
+
return [...target.properties.values()].every((property) => property.optional);
|
|
75
|
+
}
|
|
76
|
+
if (source.kind !== "object")
|
|
77
|
+
return false;
|
|
78
|
+
for (const [name, targetProperty] of target.properties) {
|
|
79
|
+
const sourceProperty = source.properties.get(name);
|
|
80
|
+
if (!sourceProperty) {
|
|
81
|
+
if (targetProperty.optional)
|
|
82
|
+
continue;
|
|
83
|
+
if (source.index && isAssignable(source.index, targetProperty.type, depth + 1))
|
|
84
|
+
continue;
|
|
85
|
+
if (!target.closed)
|
|
86
|
+
continue;
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
if (!isAssignable(sourceProperty.type, targetProperty.type, depth + 1))
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
if (target.index) {
|
|
93
|
+
if (source.index && !isAssignable(source.index, target.index, depth + 1))
|
|
94
|
+
return false;
|
|
95
|
+
for (const property of source.properties.values()) {
|
|
96
|
+
if (!isAssignable(property.type, target.index, depth + 1))
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
if (target.kind === "function") {
|
|
103
|
+
if (source.kind !== "function") {
|
|
104
|
+
// A function-typed value can also wear object members; do not guess.
|
|
105
|
+
return source.kind === "object";
|
|
106
|
+
}
|
|
107
|
+
const required = target.parameters.filter((parameter) => !parameter.optional && !parameter.rest).length;
|
|
108
|
+
if (source.parameters.length < required)
|
|
109
|
+
return false;
|
|
110
|
+
for (let index = 0; index < target.parameters.length; index++) {
|
|
111
|
+
const sourceParameter = source.parameters[index];
|
|
112
|
+
const targetParameter = target.parameters[index];
|
|
113
|
+
if (!sourceParameter || !targetParameter)
|
|
114
|
+
break;
|
|
115
|
+
if (!isAssignable(targetParameter.type, sourceParameter.type, depth + 1))
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
return isAssignable(source.returnType, target.returnType, depth + 1);
|
|
119
|
+
}
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
function assignableToPrimitive(source, name) {
|
|
123
|
+
if (name === "null" || name === "undefined" || name === "void")
|
|
124
|
+
return true;
|
|
125
|
+
if (source.kind === "literal")
|
|
126
|
+
return source.primitive === name;
|
|
127
|
+
if (source.kind === "primitive") {
|
|
128
|
+
if (source.name === "null" || source.name === "undefined" || source.name === "void")
|
|
129
|
+
return true;
|
|
130
|
+
return source.name === name;
|
|
131
|
+
}
|
|
132
|
+
if (name === "object")
|
|
133
|
+
return source.kind === "object" || source.kind === "array" || source.kind === "tuple" || source.kind === "function";
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
/** True only when the value is definitely not callable (not merely unknown). */
|
|
137
|
+
export function isDefinitelyNotCallable(type) {
|
|
138
|
+
const members = unionMembers(type);
|
|
139
|
+
return members.every((member) => {
|
|
140
|
+
if (member.kind === "primitive") {
|
|
141
|
+
return member.name === "number" || member.name === "string" || member.name === "boolean" || member.name === "bigint" || member.name === "symbol" || member.name === "null" || member.name === "undefined";
|
|
142
|
+
}
|
|
143
|
+
return member.kind === "literal";
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=assignability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assignability.js","sourceRoot":"","sources":["../../../src/checker/assignability.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Call arity: `f(1)` where `f` declares two required parameters.
|
|
3
|
+
*
|
|
4
|
+
* Only calls whose callee the checker can resolve without inference are
|
|
5
|
+
* checked: a direct identifier bound to a function declaration, or to a
|
|
6
|
+
* `const` initialised with a function expression / arrow. Methods, imports,
|
|
7
|
+
* first-class re-exports and reassigned bindings are left alone — guessing
|
|
8
|
+
* there is how a checker produces false positives.
|
|
9
|
+
*/
|
|
10
|
+
import { type SourceFileNode } from "../ast/nodes.js";
|
|
11
|
+
import { type BindResult } from "../binder/binder.js";
|
|
12
|
+
import { type DiagnosticBag } from "../diagnostics/diagnostic.js";
|
|
13
|
+
export declare function checkCallArity(sourceFile: SourceFileNode, binding: BindResult, diagnostics: DiagnosticBag): void;
|