@tsonic/frontend 0.0.1 → 0.0.4
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/dist/.tsbuildinfo +1 -0
- package/{src/dependency-graph.ts → dist/dependency-graph.d.ts} +3 -11
- package/dist/dependency-graph.d.ts.map +1 -0
- package/dist/dependency-graph.js +9 -0
- package/dist/dependency-graph.js.map +1 -0
- package/dist/dotnet-metadata.d.ts +71 -0
- package/dist/dotnet-metadata.d.ts.map +1 -0
- package/dist/dotnet-metadata.js +78 -0
- package/dist/dotnet-metadata.js.map +1 -0
- package/dist/graph/builder.d.ts +10 -0
- package/dist/graph/builder.d.ts.map +1 -0
- package/dist/graph/builder.js +54 -0
- package/dist/graph/builder.js.map +1 -0
- package/dist/graph/circular.d.ts +10 -0
- package/dist/graph/circular.d.ts.map +1 -0
- package/dist/graph/circular.js +40 -0
- package/dist/graph/circular.js.map +1 -0
- package/dist/graph/extraction/exports.d.ts +10 -0
- package/dist/graph/extraction/exports.d.ts.map +1 -0
- package/dist/graph/extraction/exports.js +46 -0
- package/dist/graph/extraction/exports.js.map +1 -0
- package/dist/graph/extraction/imports.d.ts +11 -0
- package/dist/graph/extraction/imports.d.ts.map +1 -0
- package/dist/graph/extraction/imports.js +63 -0
- package/dist/graph/extraction/imports.js.map +1 -0
- package/dist/graph/extraction/index.d.ts +7 -0
- package/dist/graph/extraction/index.d.ts.map +1 -0
- package/{src/graph/extraction/index.ts → dist/graph/extraction/index.js} +1 -1
- package/dist/graph/extraction/index.js.map +1 -0
- package/dist/graph/extraction/orchestrator.d.ts +11 -0
- package/dist/graph/extraction/orchestrator.d.ts.map +1 -0
- package/dist/graph/extraction/orchestrator.js +78 -0
- package/dist/graph/extraction/orchestrator.js.map +1 -0
- package/dist/graph/extraction.d.ts +6 -0
- package/dist/graph/extraction.d.ts.map +1 -0
- package/{src/graph/extraction.ts → dist/graph/extraction.js} +2 -6
- package/dist/graph/extraction.js.map +1 -0
- package/dist/graph/helpers.d.ts +17 -0
- package/dist/graph/helpers.d.ts.map +1 -0
- package/dist/graph/helpers.js +40 -0
- package/dist/graph/helpers.js.map +1 -0
- package/{src/graph/index.ts → dist/graph/index.d.ts} +3 -11
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +8 -0
- package/dist/graph/index.js.map +1 -0
- package/{src/graph/types.ts → dist/graph/types.d.ts} +4 -5
- package/dist/graph/types.d.ts.map +1 -0
- package/dist/graph/types.js +5 -0
- package/dist/graph/types.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/ir/binding-resolution.test.d.ts +5 -0
- package/dist/ir/binding-resolution.test.d.ts.map +1 -0
- package/dist/ir/binding-resolution.test.js +518 -0
- package/dist/ir/binding-resolution.test.js.map +1 -0
- package/dist/ir/builder/exports.d.ts +10 -0
- package/dist/ir/builder/exports.d.ts.map +1 -0
- package/dist/ir/builder/exports.js +75 -0
- package/dist/ir/builder/exports.js.map +1 -0
- package/dist/ir/builder/helpers.d.ts +13 -0
- package/dist/ir/builder/helpers.d.ts.map +1 -0
- package/dist/ir/builder/helpers.js +23 -0
- package/dist/ir/builder/helpers.js.map +1 -0
- package/dist/ir/builder/imports.d.ts +18 -0
- package/dist/ir/builder/imports.d.ts.map +1 -0
- package/dist/ir/builder/imports.js +123 -0
- package/dist/ir/builder/imports.js.map +1 -0
- package/{src/ir/builder/index.ts → dist/ir/builder/index.d.ts} +1 -1
- package/dist/ir/builder/index.d.ts.map +1 -0
- package/dist/ir/builder/index.js +9 -0
- package/dist/ir/builder/index.js.map +1 -0
- package/dist/ir/builder/orchestrator.d.ts +18 -0
- package/dist/ir/builder/orchestrator.d.ts.map +1 -0
- package/dist/ir/builder/orchestrator.js +121 -0
- package/dist/ir/builder/orchestrator.js.map +1 -0
- package/dist/ir/builder/statements.d.ts +14 -0
- package/dist/ir/builder/statements.d.ts.map +1 -0
- package/dist/ir/builder/statements.js +43 -0
- package/dist/ir/builder/statements.js.map +1 -0
- package/dist/ir/builder/types.d.ts +8 -0
- package/dist/ir/builder/types.d.ts.map +1 -0
- package/dist/ir/builder/types.js +5 -0
- package/dist/ir/builder/types.js.map +1 -0
- package/dist/ir/builder/validation.d.ts +10 -0
- package/dist/ir/builder/validation.d.ts.map +1 -0
- package/dist/ir/builder/validation.js +86 -0
- package/dist/ir/builder/validation.js.map +1 -0
- package/{src/ir/builder.ts → dist/ir/builder.d.ts} +2 -5
- package/dist/ir/builder.d.ts.map +1 -0
- package/dist/ir/builder.js +10 -0
- package/dist/ir/builder.js.map +1 -0
- package/dist/ir/builder.test.d.ts +5 -0
- package/dist/ir/builder.test.d.ts.map +1 -0
- package/dist/ir/builder.test.js +498 -0
- package/dist/ir/builder.test.js.map +1 -0
- package/dist/ir/converters/expressions/access.d.ts +10 -0
- package/dist/ir/converters/expressions/access.d.ts.map +1 -0
- package/dist/ir/converters/expressions/access.js +132 -0
- package/dist/ir/converters/expressions/access.js.map +1 -0
- package/dist/ir/converters/expressions/calls.d.ts +14 -0
- package/dist/ir/converters/expressions/calls.d.ts.map +1 -0
- package/dist/ir/converters/expressions/calls.js +104 -0
- package/dist/ir/converters/expressions/calls.js.map +1 -0
- package/dist/ir/converters/expressions/collections.d.ts +14 -0
- package/dist/ir/converters/expressions/collections.d.ts.map +1 -0
- package/dist/ir/converters/expressions/collections.js +70 -0
- package/dist/ir/converters/expressions/collections.js.map +1 -0
- package/dist/ir/converters/expressions/functions.d.ts +14 -0
- package/dist/ir/converters/expressions/functions.d.ts.map +1 -0
- package/dist/ir/converters/expressions/functions.js +42 -0
- package/dist/ir/converters/expressions/functions.js.map +1 -0
- package/dist/ir/converters/expressions/helpers.d.ts +43 -0
- package/dist/ir/converters/expressions/helpers.d.ts.map +1 -0
- package/dist/ir/converters/expressions/helpers.js +217 -0
- package/dist/ir/converters/expressions/helpers.js.map +1 -0
- package/dist/ir/converters/expressions/index.d.ts +12 -0
- package/dist/ir/converters/expressions/index.d.ts.map +1 -0
- package/dist/ir/converters/expressions/index.js +20 -0
- package/dist/ir/converters/expressions/index.js.map +1 -0
- package/dist/ir/converters/expressions/literals.d.ts +10 -0
- package/dist/ir/converters/expressions/literals.d.ts.map +1 -0
- package/dist/ir/converters/expressions/literals.js +17 -0
- package/dist/ir/converters/expressions/literals.js.map +1 -0
- package/dist/ir/converters/expressions/operators.d.ts +18 -0
- package/dist/ir/converters/expressions/operators.d.ts.map +1 -0
- package/dist/ir/converters/expressions/operators.js +111 -0
- package/dist/ir/converters/expressions/operators.js.map +1 -0
- package/dist/ir/converters/expressions/other.d.ts +14 -0
- package/dist/ir/converters/expressions/other.d.ts.map +1 -0
- package/dist/ir/converters/expressions/other.js +44 -0
- package/dist/ir/converters/expressions/other.js.map +1 -0
- package/dist/ir/converters/statements/control/blocks.d.ts +10 -0
- package/dist/ir/converters/statements/control/blocks.d.ts.map +1 -0
- package/dist/ir/converters/statements/control/blocks.js +16 -0
- package/dist/ir/converters/statements/control/blocks.js.map +1 -0
- package/dist/ir/converters/statements/control/conditionals.d.ts +18 -0
- package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -0
- package/dist/ir/converters/statements/control/conditionals.js +46 -0
- package/dist/ir/converters/statements/control/conditionals.js.map +1 -0
- package/dist/ir/converters/statements/control/exceptions.d.ts +14 -0
- package/dist/ir/converters/statements/control/exceptions.d.ts.map +1 -0
- package/dist/ir/converters/statements/control/exceptions.js +33 -0
- package/dist/ir/converters/statements/control/exceptions.js.map +1 -0
- package/dist/ir/converters/statements/control/index.d.ts +8 -0
- package/dist/ir/converters/statements/control/index.d.ts.map +1 -0
- package/dist/ir/converters/statements/control/index.js +8 -0
- package/dist/ir/converters/statements/control/index.js.map +1 -0
- package/dist/ir/converters/statements/control/loops.d.ts +22 -0
- package/dist/ir/converters/statements/control/loops.d.ts.map +1 -0
- package/dist/ir/converters/statements/control/loops.js +75 -0
- package/dist/ir/converters/statements/control/loops.js.map +1 -0
- package/dist/ir/converters/statements/control.d.ts +6 -0
- package/dist/ir/converters/statements/control.d.ts.map +1 -0
- package/dist/ir/converters/statements/control.js +6 -0
- package/dist/ir/converters/statements/control.js.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/constructors.d.ts +14 -0
- package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/constructors.js +91 -0
- package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -0
- package/{src/ir/converters/statements/declarations/classes/index.ts → dist/ir/converters/statements/declarations/classes/index.d.ts} +2 -5
- package/dist/ir/converters/statements/declarations/classes/index.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/index.js +9 -0
- package/dist/ir/converters/statements/declarations/classes/index.js.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/methods.d.ts +10 -0
- package/dist/ir/converters/statements/declarations/classes/methods.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/methods.js +39 -0
- package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts +10 -0
- package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/orchestrator.js +123 -0
- package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts +13 -0
- package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/override-detection.js +79 -0
- package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/properties.d.ts +10 -0
- package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/properties.js +42 -0
- package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -0
- package/dist/ir/converters/statements/declarations/classes.d.ts +6 -0
- package/dist/ir/converters/statements/declarations/classes.d.ts.map +1 -0
- package/{src/ir/converters/statements/declarations/classes.ts → dist/ir/converters/statements/declarations/classes.js} +1 -1
- package/dist/ir/converters/statements/declarations/classes.js.map +1 -0
- package/dist/ir/converters/statements/declarations/enums.d.ts +10 -0
- package/dist/ir/converters/statements/declarations/enums.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/enums.js +24 -0
- package/dist/ir/converters/statements/declarations/enums.js.map +1 -0
- package/dist/ir/converters/statements/declarations/functions.d.ts +10 -0
- package/dist/ir/converters/statements/declarations/functions.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/functions.js +28 -0
- package/dist/ir/converters/statements/declarations/functions.js.map +1 -0
- package/dist/ir/converters/statements/declarations/index.d.ts +11 -0
- package/dist/ir/converters/statements/declarations/index.d.ts.map +1 -0
- package/{src/ir/converters/statements/declarations/index.ts → dist/ir/converters/statements/declarations/index.js} +2 -5
- package/dist/ir/converters/statements/declarations/index.js.map +1 -0
- package/dist/ir/converters/statements/declarations/interfaces.d.ts +15 -0
- package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/interfaces.js +96 -0
- package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -0
- package/dist/ir/converters/statements/declarations/registry.d.ts +24 -0
- package/dist/ir/converters/statements/declarations/registry.d.ts.map +1 -0
- package/{src/ir/converters/statements/declarations/registry.ts → dist/ir/converters/statements/declarations/registry.js} +9 -16
- package/dist/ir/converters/statements/declarations/registry.js.map +1 -0
- package/dist/ir/converters/statements/declarations/type-aliases.d.ts +10 -0
- package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/type-aliases.js +19 -0
- package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -0
- package/dist/ir/converters/statements/declarations/variables.d.ts +10 -0
- package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/variables.js +45 -0
- package/dist/ir/converters/statements/declarations/variables.js.map +1 -0
- package/dist/ir/converters/statements/declarations.d.ts +6 -0
- package/dist/ir/converters/statements/declarations.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations.js +6 -0
- package/dist/ir/converters/statements/declarations.js.map +1 -0
- package/dist/ir/converters/statements/helpers.d.ts +34 -0
- package/dist/ir/converters/statements/helpers.d.ts.map +1 -0
- package/dist/ir/converters/statements/helpers.js +137 -0
- package/dist/ir/converters/statements/helpers.js.map +1 -0
- package/dist/ir/converters/statements/index.d.ts +7 -0
- package/dist/ir/converters/statements/index.d.ts.map +1 -0
- package/dist/ir/converters/statements/index.js +10 -0
- package/dist/ir/converters/statements/index.js.map +1 -0
- package/dist/ir/expression-converter.d.ts +13 -0
- package/dist/ir/expression-converter.d.ts.map +1 -0
- package/dist/ir/expression-converter.js +167 -0
- package/dist/ir/expression-converter.js.map +1 -0
- package/dist/ir/generic-validator.d.ts +38 -0
- package/dist/ir/generic-validator.d.ts.map +1 -0
- package/dist/ir/generic-validator.js +69 -0
- package/dist/ir/generic-validator.js.map +1 -0
- package/dist/ir/hierarchical-bindings-e2e.test.d.ts +6 -0
- package/dist/ir/hierarchical-bindings-e2e.test.d.ts.map +1 -0
- package/dist/ir/hierarchical-bindings-e2e.test.js +129 -0
- package/dist/ir/hierarchical-bindings-e2e.test.js.map +1 -0
- package/{src/ir/index.ts → dist/ir/index.d.ts} +1 -1
- package/dist/ir/index.d.ts.map +1 -0
- package/dist/ir/index.js +6 -0
- package/dist/ir/index.js.map +1 -0
- package/dist/ir/statement-converter.d.ts +14 -0
- package/dist/ir/statement-converter.d.ts.map +1 -0
- package/dist/ir/statement-converter.js +100 -0
- package/dist/ir/statement-converter.js.map +1 -0
- package/dist/ir/type-converter/arrays.d.ts +10 -0
- package/dist/ir/type-converter/arrays.d.ts.map +1 -0
- package/dist/ir/type-converter/arrays.js +13 -0
- package/dist/ir/type-converter/arrays.js.map +1 -0
- package/dist/ir/type-converter/converter.d.ts +6 -0
- package/dist/ir/type-converter/converter.d.ts.map +1 -0
- package/dist/ir/type-converter/converter.js +6 -0
- package/dist/ir/type-converter/converter.js.map +1 -0
- package/dist/ir/type-converter/functions.d.ts +10 -0
- package/dist/ir/type-converter/functions.d.ts.map +1 -0
- package/dist/ir/type-converter/functions.js +15 -0
- package/dist/ir/type-converter/functions.js.map +1 -0
- package/dist/ir/type-converter/index.d.ts +7 -0
- package/dist/ir/type-converter/index.d.ts.map +1 -0
- package/{src/ir/type-converter/index.ts → dist/ir/type-converter/index.js} +2 -6
- package/dist/ir/type-converter/index.js.map +1 -0
- package/dist/ir/type-converter/inference.d.ts +20 -0
- package/dist/ir/type-converter/inference.d.ts.map +1 -0
- package/dist/ir/type-converter/inference.js +105 -0
- package/dist/ir/type-converter/inference.js.map +1 -0
- package/dist/ir/type-converter/literals.d.ts +10 -0
- package/dist/ir/type-converter/literals.d.ts.map +1 -0
- package/dist/ir/type-converter/literals.js +31 -0
- package/dist/ir/type-converter/literals.js.map +1 -0
- package/dist/ir/type-converter/objects.d.ts +16 -0
- package/dist/ir/type-converter/objects.d.ts.map +1 -0
- package/dist/ir/type-converter/objects.js +82 -0
- package/dist/ir/type-converter/objects.js.map +1 -0
- package/dist/ir/type-converter/orchestrator.d.ts +13 -0
- package/dist/ir/type-converter/orchestrator.d.ts.map +1 -0
- package/dist/ir/type-converter/orchestrator.js +59 -0
- package/dist/ir/type-converter/orchestrator.js.map +1 -0
- package/dist/ir/type-converter/patterns.d.ts +10 -0
- package/dist/ir/type-converter/patterns.d.ts.map +1 -0
- package/dist/ir/type-converter/patterns.js +66 -0
- package/dist/ir/type-converter/patterns.js.map +1 -0
- package/dist/ir/type-converter/primitives.d.ts +18 -0
- package/dist/ir/type-converter/primitives.d.ts.map +1 -0
- package/dist/ir/type-converter/primitives.js +47 -0
- package/dist/ir/type-converter/primitives.js.map +1 -0
- package/dist/ir/type-converter/references.d.ts +11 -0
- package/dist/ir/type-converter/references.d.ts.map +1 -0
- package/dist/ir/type-converter/references.js +62 -0
- package/dist/ir/type-converter/references.js.map +1 -0
- package/dist/ir/type-converter/unions-intersections.d.ts +14 -0
- package/dist/ir/type-converter/unions-intersections.d.ts.map +1 -0
- package/dist/ir/type-converter/unions-intersections.js +22 -0
- package/dist/ir/type-converter/unions-intersections.js.map +1 -0
- package/dist/ir/type-converter.d.ts +6 -0
- package/dist/ir/type-converter.d.ts.map +1 -0
- package/dist/ir/type-converter.js +6 -0
- package/dist/ir/type-converter.js.map +1 -0
- package/dist/ir/types/expressions.d.ts +164 -0
- package/dist/ir/types/expressions.d.ts.map +1 -0
- package/dist/ir/types/expressions.js +5 -0
- package/dist/ir/types/expressions.js.map +1 -0
- package/dist/ir/types/guards.d.ts +8 -0
- package/dist/ir/types/guards.d.ts.map +1 -0
- package/dist/ir/types/guards.js +31 -0
- package/dist/ir/types/guards.js.map +1 -0
- package/dist/ir/types/helpers.d.ts +65 -0
- package/dist/ir/types/helpers.d.ts.map +1 -0
- package/dist/ir/types/helpers.js +5 -0
- package/dist/ir/types/helpers.js.map +1 -0
- package/dist/ir/types/index.d.ts +11 -0
- package/dist/ir/types/index.d.ts.map +1 -0
- package/dist/ir/types/index.js +7 -0
- package/dist/ir/types/index.js.map +1 -0
- package/dist/ir/types/ir-types.d.ts +79 -0
- package/dist/ir/types/ir-types.d.ts.map +1 -0
- package/dist/ir/types/ir-types.js +5 -0
- package/dist/ir/types/ir-types.js.map +1 -0
- package/dist/ir/types/module.d.ts +56 -0
- package/dist/ir/types/module.d.ts.map +1 -0
- package/dist/ir/types/module.js +5 -0
- package/dist/ir/types/module.js.map +1 -0
- package/dist/ir/types/statements.d.ts +182 -0
- package/dist/ir/types/statements.d.ts.map +1 -0
- package/dist/ir/types/statements.js +5 -0
- package/dist/ir/types/statements.js.map +1 -0
- package/dist/ir/types.d.ts +7 -0
- package/dist/ir/types.d.ts.map +1 -0
- package/dist/ir/types.js +7 -0
- package/dist/ir/types.js.map +1 -0
- package/dist/metadata/bindings-loader.d.ts +41 -0
- package/dist/metadata/bindings-loader.d.ts.map +1 -0
- package/dist/metadata/bindings-loader.js +308 -0
- package/dist/metadata/bindings-loader.js.map +1 -0
- package/dist/metadata/bindings-loader.test.d.ts +5 -0
- package/dist/metadata/bindings-loader.test.d.ts.map +1 -0
- package/dist/metadata/bindings-loader.test.js +117 -0
- package/dist/metadata/bindings-loader.test.js.map +1 -0
- package/{src/metadata/index.ts → dist/metadata/index.d.ts} +2 -9
- package/dist/metadata/index.d.ts.map +1 -0
- package/dist/metadata/index.js +7 -0
- package/dist/metadata/index.js.map +1 -0
- package/dist/metadata/library-loader.d.ts +42 -0
- package/dist/metadata/library-loader.d.ts.map +1 -0
- package/dist/metadata/library-loader.js +126 -0
- package/dist/metadata/library-loader.js.map +1 -0
- package/dist/metadata/loader.d.ts +26 -0
- package/dist/metadata/loader.d.ts.map +1 -0
- package/dist/metadata/loader.js +333 -0
- package/dist/metadata/loader.js.map +1 -0
- package/dist/metadata/loader.test.d.ts +5 -0
- package/dist/metadata/loader.test.d.ts.map +1 -0
- package/dist/metadata/loader.test.js +119 -0
- package/dist/metadata/loader.test.js.map +1 -0
- package/dist/program/bindings.d.ts +159 -0
- package/dist/program/bindings.d.ts.map +1 -0
- package/dist/program/bindings.js +329 -0
- package/dist/program/bindings.js.map +1 -0
- package/dist/program/bindings.test.d.ts +5 -0
- package/dist/program/bindings.test.d.ts.map +1 -0
- package/dist/program/bindings.test.js +435 -0
- package/dist/program/bindings.test.js.map +1 -0
- package/dist/program/config.d.ts +9 -0
- package/dist/program/config.d.ts.map +1 -0
- package/dist/program/config.js +29 -0
- package/dist/program/config.js.map +1 -0
- package/dist/program/creation.d.ts +17 -0
- package/dist/program/creation.d.ts.map +1 -0
- package/dist/program/creation.js +182 -0
- package/dist/program/creation.js.map +1 -0
- package/dist/program/dependency-graph.d.ts +19 -0
- package/dist/program/dependency-graph.d.ts.map +1 -0
- package/dist/program/dependency-graph.js +230 -0
- package/dist/program/dependency-graph.js.map +1 -0
- package/dist/program/diagnostics.d.ts +23 -0
- package/dist/program/diagnostics.d.ts.map +1 -0
- package/dist/program/diagnostics.js +65 -0
- package/dist/program/diagnostics.js.map +1 -0
- package/{src/program/index.ts → dist/program/index.d.ts} +3 -10
- package/dist/program/index.d.ts.map +1 -0
- package/dist/program/index.js +11 -0
- package/dist/program/index.js.map +1 -0
- package/dist/program/metadata.d.ts +10 -0
- package/dist/program/metadata.d.ts.map +1 -0
- package/dist/program/metadata.js +56 -0
- package/dist/program/metadata.js.map +1 -0
- package/dist/program/queries.d.ts +10 -0
- package/dist/program/queries.d.ts.map +1 -0
- package/dist/program/queries.js +12 -0
- package/dist/program/queries.js.map +1 -0
- package/dist/program/types.d.ts +36 -0
- package/dist/program/types.d.ts.map +1 -0
- package/dist/program/types.js +5 -0
- package/dist/program/types.js.map +1 -0
- package/{src/program.ts → dist/program.d.ts} +2 -7
- package/dist/program.d.ts.map +1 -0
- package/dist/program.js +6 -0
- package/dist/program.js.map +1 -0
- package/dist/resolver/clr-bindings-resolver.d.ts +84 -0
- package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -0
- package/dist/resolver/clr-bindings-resolver.js +224 -0
- package/dist/resolver/clr-bindings-resolver.js.map +1 -0
- package/dist/resolver/import-resolution.d.ts +20 -0
- package/dist/resolver/import-resolution.d.ts.map +1 -0
- package/dist/resolver/import-resolution.js +102 -0
- package/dist/resolver/import-resolution.js.map +1 -0
- package/{src/resolver/index.ts → dist/resolver/index.d.ts} +3 -11
- package/dist/resolver/index.d.ts.map +1 -0
- package/dist/resolver/index.js +9 -0
- package/dist/resolver/index.js.map +1 -0
- package/dist/resolver/namespace.d.ts +20 -0
- package/dist/resolver/namespace.d.ts.map +1 -0
- package/dist/resolver/namespace.js +35 -0
- package/dist/resolver/namespace.js.map +1 -0
- package/dist/resolver/namespace.test.d.ts +2 -0
- package/dist/resolver/namespace.test.d.ts.map +1 -0
- package/dist/resolver/namespace.test.js +42 -0
- package/dist/resolver/namespace.test.js.map +1 -0
- package/dist/resolver/naming.d.ts +12 -0
- package/dist/resolver/naming.d.ts.map +1 -0
- package/dist/resolver/naming.js +30 -0
- package/dist/resolver/naming.js.map +1 -0
- package/dist/resolver/path-resolution.d.ts +8 -0
- package/dist/resolver/path-resolution.d.ts.map +1 -0
- package/dist/resolver/path-resolution.js +16 -0
- package/dist/resolver/path-resolution.js.map +1 -0
- package/dist/resolver/types.d.ts +13 -0
- package/dist/resolver/types.d.ts.map +1 -0
- package/dist/resolver/types.js +5 -0
- package/dist/resolver/types.js.map +1 -0
- package/dist/resolver.d.ts +7 -0
- package/dist/resolver.d.ts.map +1 -0
- package/dist/resolver.js +6 -0
- package/dist/resolver.js.map +1 -0
- package/dist/resolver.test.d.ts +5 -0
- package/dist/resolver.test.d.ts.map +1 -0
- package/dist/resolver.test.js +93 -0
- package/dist/resolver.test.js.map +1 -0
- package/dist/symbol-table/builder.d.ts +10 -0
- package/dist/symbol-table/builder.d.ts.map +1 -0
- package/dist/symbol-table/builder.js +105 -0
- package/dist/symbol-table/builder.js.map +1 -0
- package/dist/symbol-table/creation.d.ts +13 -0
- package/dist/symbol-table/creation.d.ts.map +1 -0
- package/dist/symbol-table/creation.js +36 -0
- package/dist/symbol-table/creation.js.map +1 -0
- package/dist/symbol-table/helpers.d.ts +9 -0
- package/dist/symbol-table/helpers.d.ts.map +1 -0
- package/dist/symbol-table/helpers.js +15 -0
- package/dist/symbol-table/helpers.js.map +1 -0
- package/{src/symbol-table/index.ts → dist/symbol-table/index.d.ts} +2 -6
- package/dist/symbol-table/index.d.ts.map +1 -0
- package/dist/symbol-table/index.js +8 -0
- package/dist/symbol-table/index.js.map +1 -0
- package/dist/symbol-table/queries.d.ts +17 -0
- package/dist/symbol-table/queries.d.ts.map +1 -0
- package/dist/symbol-table/queries.js +27 -0
- package/dist/symbol-table/queries.js.map +1 -0
- package/dist/symbol-table/types.d.ts +18 -0
- package/dist/symbol-table/types.d.ts.map +1 -0
- package/dist/symbol-table/types.js +5 -0
- package/dist/symbol-table/types.js.map +1 -0
- package/{src/symbol-table.ts → dist/symbol-table.d.ts} +2 -9
- package/dist/symbol-table.d.ts.map +1 -0
- package/dist/symbol-table.js +6 -0
- package/dist/symbol-table.js.map +1 -0
- package/dist/types/bindings.d.ts +153 -0
- package/dist/types/bindings.d.ts.map +1 -0
- package/dist/types/bindings.js +14 -0
- package/dist/types/bindings.js.map +1 -0
- package/dist/types/diagnostic.d.ts +30 -0
- package/dist/types/diagnostic.d.ts.map +1 -0
- package/dist/types/diagnostic.js +37 -0
- package/dist/types/diagnostic.js.map +1 -0
- package/dist/types/diagnostic.test.d.ts +5 -0
- package/dist/types/diagnostic.test.d.ts.map +1 -0
- package/dist/types/diagnostic.test.js +94 -0
- package/dist/types/diagnostic.test.js.map +1 -0
- package/dist/types/explicit-views.d.ts +97 -0
- package/dist/types/explicit-views.d.ts.map +1 -0
- package/dist/types/explicit-views.js +163 -0
- package/dist/types/explicit-views.js.map +1 -0
- package/dist/types/explicit-views.test.d.ts +5 -0
- package/dist/types/explicit-views.test.d.ts.map +1 -0
- package/dist/types/explicit-views.test.js +67 -0
- package/dist/types/explicit-views.test.js.map +1 -0
- package/dist/types/metadata.d.ts +196 -0
- package/dist/types/metadata.d.ts.map +1 -0
- package/dist/types/metadata.js +10 -0
- package/dist/types/metadata.js.map +1 -0
- package/dist/types/module.d.ts +51 -0
- package/dist/types/module.d.ts.map +1 -0
- package/dist/types/module.js +28 -0
- package/dist/types/module.js.map +1 -0
- package/dist/types/nested-types.d.ts +111 -0
- package/dist/types/nested-types.d.ts.map +1 -0
- package/dist/types/nested-types.js +176 -0
- package/dist/types/nested-types.js.map +1 -0
- package/dist/types/nested-types.test.d.ts +5 -0
- package/dist/types/nested-types.test.d.ts.map +1 -0
- package/dist/types/nested-types.test.js +135 -0
- package/dist/types/nested-types.test.js.map +1 -0
- package/dist/types/parameter-modifiers.d.ts +55 -0
- package/dist/types/parameter-modifiers.d.ts.map +1 -0
- package/dist/types/parameter-modifiers.js +148 -0
- package/dist/types/parameter-modifiers.js.map +1 -0
- package/dist/types/ref-parameters.d.ts +123 -0
- package/dist/types/ref-parameters.d.ts.map +1 -0
- package/dist/types/ref-parameters.js +203 -0
- package/dist/types/ref-parameters.js.map +1 -0
- package/dist/types/ref-parameters.test.d.ts +5 -0
- package/dist/types/ref-parameters.test.d.ts.map +1 -0
- package/dist/types/ref-parameters.test.js +147 -0
- package/dist/types/ref-parameters.test.js.map +1 -0
- package/dist/types/result.d.ts +26 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +19 -0
- package/dist/types/result.js.map +1 -0
- package/dist/types/result.test.d.ts +5 -0
- package/dist/types/result.test.d.ts.map +1 -0
- package/dist/types/result.test.js +121 -0
- package/dist/types/result.test.js.map +1 -0
- package/dist/types/support-types.d.ts +103 -0
- package/dist/types/support-types.d.ts.map +1 -0
- package/dist/types/support-types.js +220 -0
- package/dist/types/support-types.js.map +1 -0
- package/dist/types/support-types.test.d.ts +5 -0
- package/dist/types/support-types.test.d.ts.map +1 -0
- package/dist/types/support-types.test.js +53 -0
- package/dist/types/support-types.test.js.map +1 -0
- package/dist/types/test-harness.d.ts +34 -0
- package/dist/types/test-harness.d.ts.map +1 -0
- package/dist/types/test-harness.js +127 -0
- package/dist/types/test-harness.js.map +1 -0
- package/dist/validation/exports.d.ts +11 -0
- package/dist/validation/exports.d.ts.map +1 -0
- package/dist/validation/exports.js +56 -0
- package/dist/validation/exports.js.map +1 -0
- package/dist/validation/features.d.ts +11 -0
- package/dist/validation/features.d.ts.map +1 -0
- package/dist/validation/features.js +36 -0
- package/dist/validation/features.js.map +1 -0
- package/dist/validation/generics.d.ts +11 -0
- package/dist/validation/generics.d.ts.map +1 -0
- package/dist/validation/generics.js +31 -0
- package/dist/validation/generics.js.map +1 -0
- package/dist/validation/helpers.d.ts +15 -0
- package/dist/validation/helpers.d.ts.map +1 -0
- package/dist/validation/helpers.js +18 -0
- package/dist/validation/helpers.js.map +1 -0
- package/dist/validation/imports.d.ts +15 -0
- package/dist/validation/imports.d.ts.map +1 -0
- package/dist/validation/imports.js +42 -0
- package/dist/validation/imports.js.map +1 -0
- package/dist/validation/index.d.ts +11 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/{src/validation/index.ts → dist/validation/index.js} +1 -1
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/orchestrator.d.ts +15 -0
- package/dist/validation/orchestrator.d.ts.map +1 -0
- package/dist/validation/orchestrator.js +30 -0
- package/dist/validation/orchestrator.js.map +1 -0
- package/dist/validation/static-safety.d.ts +23 -0
- package/dist/validation/static-safety.d.ts.map +1 -0
- package/dist/validation/static-safety.js +165 -0
- package/dist/validation/static-safety.js.map +1 -0
- package/dist/validator.d.ts +6 -0
- package/dist/validator.d.ts.map +1 -0
- package/dist/validator.js +6 -0
- package/dist/validator.js.map +1 -0
- package/dist/validator.test.d.ts +11 -0
- package/dist/validator.test.d.ts.map +1 -0
- package/dist/validator.test.js +341 -0
- package/dist/validator.test.js.map +1 -0
- package/package.json +4 -1
- package/src/dotnet-metadata.ts +0 -121
- package/src/graph/builder.ts +0 -81
- package/src/graph/circular.ts +0 -58
- package/src/graph/extraction/exports.ts +0 -55
- package/src/graph/extraction/imports.ts +0 -81
- package/src/graph/extraction/orchestrator.ts +0 -99
- package/src/graph/helpers.ts +0 -51
- package/src/index.ts +0 -80
- package/src/ir/binding-resolution.test.ts +0 -585
- package/src/ir/builder/exports.ts +0 -78
- package/src/ir/builder/helpers.ts +0 -27
- package/src/ir/builder/imports.ts +0 -153
- package/src/ir/builder/orchestrator.ts +0 -178
- package/src/ir/builder/statements.ts +0 -55
- package/src/ir/builder/types.ts +0 -8
- package/src/ir/builder/validation.ts +0 -129
- package/src/ir/builder.test.ts +0 -581
- package/src/ir/converters/expressions/access.ts +0 -99
- package/src/ir/converters/expressions/calls.ts +0 -137
- package/src/ir/converters/expressions/collections.ts +0 -84
- package/src/ir/converters/expressions/functions.ts +0 -62
- package/src/ir/converters/expressions/helpers.ts +0 -264
- package/src/ir/converters/expressions/index.ts +0 -43
- package/src/ir/converters/expressions/literals.ts +0 -22
- package/src/ir/converters/expressions/operators.ts +0 -147
- package/src/ir/converters/expressions/other.ts +0 -60
- package/src/ir/converters/statements/control/blocks.ts +0 -22
- package/src/ir/converters/statements/control/conditionals.ts +0 -67
- package/src/ir/converters/statements/control/exceptions.ts +0 -43
- package/src/ir/converters/statements/control/index.ts +0 -17
- package/src/ir/converters/statements/control/loops.ts +0 -99
- package/src/ir/converters/statements/control.ts +0 -17
- package/src/ir/converters/statements/declarations/classes/constructors.ts +0 -120
- package/src/ir/converters/statements/declarations/classes/methods.ts +0 -61
- package/src/ir/converters/statements/declarations/classes/orchestrator.ts +0 -166
- package/src/ir/converters/statements/declarations/classes/override-detection.ts +0 -116
- package/src/ir/converters/statements/declarations/classes/properties.ts +0 -63
- package/src/ir/converters/statements/declarations/enums.ts +0 -29
- package/src/ir/converters/statements/declarations/functions.ts +0 -39
- package/src/ir/converters/statements/declarations/interfaces.ts +0 -131
- package/src/ir/converters/statements/declarations/type-aliases.ts +0 -25
- package/src/ir/converters/statements/declarations/variables.ts +0 -60
- package/src/ir/converters/statements/declarations.ts +0 -16
- package/src/ir/converters/statements/helpers.ts +0 -174
- package/src/ir/converters/statements/index.ts +0 -40
- package/src/ir/expression-converter.ts +0 -207
- package/src/ir/generic-validator.ts +0 -100
- package/src/ir/hierarchical-bindings-e2e.test.ts +0 -163
- package/src/ir/statement-converter.ts +0 -128
- package/src/ir/type-converter/arrays.ts +0 -20
- package/src/ir/type-converter/converter.ts +0 -10
- package/src/ir/type-converter/functions.ts +0 -22
- package/src/ir/type-converter/inference.ts +0 -122
- package/src/ir/type-converter/literals.ts +0 -40
- package/src/ir/type-converter/objects.ts +0 -107
- package/src/ir/type-converter/orchestrator.ts +0 -85
- package/src/ir/type-converter/patterns.ts +0 -73
- package/src/ir/type-converter/primitives.ts +0 -57
- package/src/ir/type-converter/references.ts +0 -64
- package/src/ir/type-converter/unions-intersections.ts +0 -34
- package/src/ir/type-converter.ts +0 -13
- package/src/ir/types/expressions.ts +0 -215
- package/src/ir/types/guards.ts +0 -39
- package/src/ir/types/helpers.ts +0 -135
- package/src/ir/types/index.ts +0 -108
- package/src/ir/types/ir-types.ts +0 -96
- package/src/ir/types/module.ts +0 -57
- package/src/ir/types/statements.ts +0 -238
- package/src/ir/types.ts +0 -97
- package/src/metadata/bindings-loader.test.ts +0 -144
- package/src/metadata/bindings-loader.ts +0 -357
- package/src/metadata/library-loader.ts +0 -153
- package/src/metadata/loader.test.ts +0 -156
- package/src/metadata/loader.ts +0 -382
- package/src/program/bindings.test.ts +0 -512
- package/src/program/bindings.ts +0 -253
- package/src/program/config.ts +0 -30
- package/src/program/creation.ts +0 -249
- package/src/program/dependency-graph.ts +0 -245
- package/src/program/diagnostics.ts +0 -103
- package/src/program/metadata.ts +0 -68
- package/src/program/queries.ts +0 -18
- package/src/program/types.ts +0 -38
- package/src/resolver/dotnet-import-resolver.ts +0 -226
- package/src/resolver/import-resolution.ts +0 -177
- package/src/resolver/namespace.test.ts +0 -86
- package/src/resolver/namespace.ts +0 -42
- package/src/resolver/naming.ts +0 -38
- package/src/resolver/path-resolution.ts +0 -22
- package/src/resolver/types.ts +0 -15
- package/src/resolver.test.ts +0 -155
- package/src/resolver.ts +0 -14
- package/src/symbol-table/builder.ts +0 -114
- package/src/symbol-table/creation.ts +0 -42
- package/src/symbol-table/helpers.ts +0 -18
- package/src/symbol-table/queries.ts +0 -42
- package/src/symbol-table/types.ts +0 -28
- package/src/types/bindings.ts +0 -172
- package/src/types/diagnostic.test.ts +0 -164
- package/src/types/diagnostic.ts +0 -153
- package/src/types/explicit-views.test.ts +0 -113
- package/src/types/explicit-views.ts +0 -218
- package/src/types/metadata.ts +0 -229
- package/src/types/module.ts +0 -99
- package/src/types/nested-types.test.ts +0 -194
- package/src/types/nested-types.ts +0 -215
- package/src/types/parameter-modifiers.ts +0 -173
- package/src/types/ref-parameters.test.ts +0 -192
- package/src/types/ref-parameters.ts +0 -268
- package/src/types/result.test.ts +0 -157
- package/src/types/result.ts +0 -48
- package/src/types/support-types.test.ts +0 -81
- package/src/types/support-types.ts +0 -288
- package/src/types/test-harness.ts +0 -180
- package/src/validation/exports.ts +0 -98
- package/src/validation/features.ts +0 -89
- package/src/validation/generics.ts +0 -40
- package/src/validation/helpers.ts +0 -31
- package/src/validation/imports.ts +0 -97
- package/src/validation/orchestrator.ts +0 -51
- package/src/validation/static-safety.ts +0 -267
- package/src/validator.test.ts +0 -468
- package/src/validator.ts +0 -15
- package/tsconfig.json +0 -13
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for support types recognition using real TypeScript types.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import { describe, it, before, after } from "mocha";
|
|
6
|
-
import { strict as assert } from "assert";
|
|
7
|
-
import { checkUnsupportedSupportType } from "./support-types.js";
|
|
8
|
-
import {
|
|
9
|
-
createTestHarness,
|
|
10
|
-
getSupportTypes,
|
|
11
|
-
type TestHarness,
|
|
12
|
-
} from "./test-harness.js";
|
|
13
|
-
|
|
14
|
-
describe("Support Types", () => {
|
|
15
|
-
let harness: TestHarness;
|
|
16
|
-
let types: ReturnType<typeof getSupportTypes>;
|
|
17
|
-
|
|
18
|
-
before(() => {
|
|
19
|
-
// Create test harness with real TypeScript program
|
|
20
|
-
harness = createTestHarness();
|
|
21
|
-
types = getSupportTypes(harness);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
after(() => {
|
|
25
|
-
// Clean up temporary files
|
|
26
|
-
harness.cleanup();
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
describe("checkUnsupportedSupportType", () => {
|
|
30
|
-
it("should detect TSUnsafePointer as unsupported", () => {
|
|
31
|
-
const error = checkUnsupportedSupportType(
|
|
32
|
-
types.unsafePointer,
|
|
33
|
-
harness.checker
|
|
34
|
-
);
|
|
35
|
-
|
|
36
|
-
assert.ok(error);
|
|
37
|
-
assert.match(error!, /unsafe pointer/i);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it("should detect TSFixed as unsupported", () => {
|
|
41
|
-
const error = checkUnsupportedSupportType(types.fixed, harness.checker);
|
|
42
|
-
|
|
43
|
-
assert.ok(error);
|
|
44
|
-
assert.match(error!, /fixed-size buffer/i);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
it("should detect TSStackAlloc as unsupported", () => {
|
|
48
|
-
const error = checkUnsupportedSupportType(
|
|
49
|
-
types.stackAlloc,
|
|
50
|
-
harness.checker
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
assert.ok(error);
|
|
54
|
-
assert.match(error!, /stackalloc/i);
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
it("should allow TSByRef (supported)", () => {
|
|
58
|
-
const error = checkUnsupportedSupportType(types.byRef, harness.checker);
|
|
59
|
-
|
|
60
|
-
assert.equal(error, undefined);
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
it("should allow TSNullable (supported)", () => {
|
|
64
|
-
const error = checkUnsupportedSupportType(
|
|
65
|
-
types.nullable,
|
|
66
|
-
harness.checker
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
assert.equal(error, undefined);
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
it("should allow TSDelegate (supported)", () => {
|
|
73
|
-
const error = checkUnsupportedSupportType(
|
|
74
|
-
types.delegate,
|
|
75
|
-
harness.checker
|
|
76
|
-
);
|
|
77
|
-
|
|
78
|
-
assert.equal(error, undefined);
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
});
|
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Support Types Recognition - Detect and work with _support/types.d.ts marker types.
|
|
3
|
-
*
|
|
4
|
-
* This module provides type guards and helpers to recognize special CLR interop types
|
|
5
|
-
* that don't have JavaScript equivalents: TSByRef, TSUnsafePointer, TSDelegate, etc.
|
|
6
|
-
*
|
|
7
|
-
* @see spec/support-types.md for complete documentation
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import * as ts from "typescript";
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Support type kind enumeration.
|
|
14
|
-
* Represents the different marker types from _support/types.d.ts.
|
|
15
|
-
*/
|
|
16
|
-
export type SupportTypeKind =
|
|
17
|
-
| "TSByRef"
|
|
18
|
-
| "TSUnsafePointer"
|
|
19
|
-
| "TSDelegate"
|
|
20
|
-
| "TSNullable"
|
|
21
|
-
| "TSFixed"
|
|
22
|
-
| "TSStackAlloc";
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Information about a recognized support type.
|
|
26
|
-
*/
|
|
27
|
-
export type SupportTypeInfo = {
|
|
28
|
-
readonly kind: SupportTypeKind;
|
|
29
|
-
readonly wrappedType: ts.Type;
|
|
30
|
-
readonly typeArguments: readonly ts.Type[];
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Check if a type is a support type (TSByRef, TSUnsafePointer, etc.).
|
|
35
|
-
*
|
|
36
|
-
* @param type - TypeScript type to check
|
|
37
|
-
* @param checker - TypeScript type checker
|
|
38
|
-
* @returns Support type info if recognized, undefined otherwise
|
|
39
|
-
*/
|
|
40
|
-
export const getSupportTypeInfo = (
|
|
41
|
-
type: ts.Type,
|
|
42
|
-
_checker: ts.TypeChecker
|
|
43
|
-
): SupportTypeInfo | undefined => {
|
|
44
|
-
// Try to get type name from either symbol or aliasSymbol
|
|
45
|
-
const symbol = type.aliasSymbol || type.symbol;
|
|
46
|
-
if (!symbol) {
|
|
47
|
-
return undefined;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const typeName = symbol.getName();
|
|
51
|
-
|
|
52
|
-
// Check if it's a recognized support type
|
|
53
|
-
const kind = getSupportTypeKind(typeName);
|
|
54
|
-
if (!kind) {
|
|
55
|
-
return undefined;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// Extract type arguments - try alias type arguments first, then regular
|
|
59
|
-
let typeArguments: readonly ts.Type[] = [];
|
|
60
|
-
|
|
61
|
-
// Type aliases have aliasTypeArguments
|
|
62
|
-
if (type.aliasTypeArguments && type.aliasTypeArguments.length > 0) {
|
|
63
|
-
typeArguments = type.aliasTypeArguments;
|
|
64
|
-
}
|
|
65
|
-
// Generic type references have typeArguments through TypeReference interface
|
|
66
|
-
else if (isGenericTypeReference(type)) {
|
|
67
|
-
typeArguments = getTypeArguments(type);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (typeArguments.length === 0) {
|
|
71
|
-
return undefined;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const wrappedType = typeArguments[0];
|
|
75
|
-
if (!wrappedType) {
|
|
76
|
-
return undefined;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return {
|
|
80
|
-
kind,
|
|
81
|
-
wrappedType,
|
|
82
|
-
typeArguments,
|
|
83
|
-
};
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Get support type kind from type name.
|
|
88
|
-
*
|
|
89
|
-
* @param typeName - Type symbol name
|
|
90
|
-
* @returns Support type kind if recognized, undefined otherwise
|
|
91
|
-
*/
|
|
92
|
-
const getSupportTypeKind = (typeName: string): SupportTypeKind | undefined => {
|
|
93
|
-
switch (typeName) {
|
|
94
|
-
case "TSByRef":
|
|
95
|
-
return "TSByRef";
|
|
96
|
-
case "TSUnsafePointer":
|
|
97
|
-
return "TSUnsafePointer";
|
|
98
|
-
case "TSDelegate":
|
|
99
|
-
return "TSDelegate";
|
|
100
|
-
case "TSNullable":
|
|
101
|
-
return "TSNullable";
|
|
102
|
-
case "TSFixed":
|
|
103
|
-
return "TSFixed";
|
|
104
|
-
case "TSStackAlloc":
|
|
105
|
-
return "TSStackAlloc";
|
|
106
|
-
default:
|
|
107
|
-
return undefined;
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Check if a type is TSByRef<T>.
|
|
113
|
-
*
|
|
114
|
-
* @param type - TypeScript type to check
|
|
115
|
-
* @param checker - TypeScript type checker
|
|
116
|
-
* @returns True if type is TSByRef<T>
|
|
117
|
-
*/
|
|
118
|
-
export const isTSByRef = (type: ts.Type, checker: ts.TypeChecker): boolean => {
|
|
119
|
-
const info = getSupportTypeInfo(type, checker);
|
|
120
|
-
return info?.kind === "TSByRef";
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Check if a type is TSUnsafePointer<T>.
|
|
125
|
-
*
|
|
126
|
-
* @param type - TypeScript type to check
|
|
127
|
-
* @param checker - TypeScript type checker
|
|
128
|
-
* @returns True if type is TSUnsafePointer<T>
|
|
129
|
-
*/
|
|
130
|
-
export const isTSUnsafePointer = (
|
|
131
|
-
type: ts.Type,
|
|
132
|
-
checker: ts.TypeChecker
|
|
133
|
-
): boolean => {
|
|
134
|
-
const info = getSupportTypeInfo(type, checker);
|
|
135
|
-
return info?.kind === "TSUnsafePointer";
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Check if a type is TSDelegate<TArgs, TReturn>.
|
|
140
|
-
*
|
|
141
|
-
* @param type - TypeScript type to check
|
|
142
|
-
* @param checker - TypeScript type checker
|
|
143
|
-
* @returns True if type is TSDelegate<TArgs, TReturn>
|
|
144
|
-
*/
|
|
145
|
-
export const isTSDelegate = (
|
|
146
|
-
type: ts.Type,
|
|
147
|
-
checker: ts.TypeChecker
|
|
148
|
-
): boolean => {
|
|
149
|
-
const info = getSupportTypeInfo(type, checker);
|
|
150
|
-
return info?.kind === "TSDelegate";
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Check if a type is TSNullable<T>.
|
|
155
|
-
*
|
|
156
|
-
* @param type - TypeScript type to check
|
|
157
|
-
* @param checker - TypeScript type checker
|
|
158
|
-
* @returns True if type is TSNullable<T>
|
|
159
|
-
*/
|
|
160
|
-
export const isTSNullable = (
|
|
161
|
-
type: ts.Type,
|
|
162
|
-
checker: ts.TypeChecker
|
|
163
|
-
): boolean => {
|
|
164
|
-
const info = getSupportTypeInfo(type, checker);
|
|
165
|
-
return info?.kind === "TSNullable";
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Check if a type is TSFixed<T, N>.
|
|
170
|
-
*
|
|
171
|
-
* @param type - TypeScript type to check
|
|
172
|
-
* @param checker - TypeScript type checker
|
|
173
|
-
* @returns True if type is TSFixed<T, N>
|
|
174
|
-
*/
|
|
175
|
-
export const isTSFixed = (type: ts.Type, checker: ts.TypeChecker): boolean => {
|
|
176
|
-
const info = getSupportTypeInfo(type, checker);
|
|
177
|
-
return info?.kind === "TSFixed";
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Check if a type is TSStackAlloc<T>.
|
|
182
|
-
*
|
|
183
|
-
* @param type - TypeScript type to check
|
|
184
|
-
* @param checker - TypeScript type checker
|
|
185
|
-
* @returns True if type is TSStackAlloc<T>
|
|
186
|
-
*/
|
|
187
|
-
export const isTSStackAlloc = (
|
|
188
|
-
type: ts.Type,
|
|
189
|
-
checker: ts.TypeChecker
|
|
190
|
-
): boolean => {
|
|
191
|
-
const info = getSupportTypeInfo(type, checker);
|
|
192
|
-
return info?.kind === "TSStackAlloc";
|
|
193
|
-
};
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* Extract the wrapped type from TSByRef<T>.
|
|
197
|
-
*
|
|
198
|
-
* @param type - TypeScript type (must be TSByRef<T>)
|
|
199
|
-
* @param checker - TypeScript type checker
|
|
200
|
-
* @returns Wrapped type T, or undefined if not TSByRef
|
|
201
|
-
*/
|
|
202
|
-
export const getTSByRefWrappedType = (
|
|
203
|
-
type: ts.Type,
|
|
204
|
-
checker: ts.TypeChecker
|
|
205
|
-
): ts.Type | undefined => {
|
|
206
|
-
const info = getSupportTypeInfo(type, checker);
|
|
207
|
-
if (info?.kind === "TSByRef") {
|
|
208
|
-
return info.wrappedType;
|
|
209
|
-
}
|
|
210
|
-
return undefined;
|
|
211
|
-
};
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* Extract the wrapped type from TSUnsafePointer<T>.
|
|
215
|
-
*
|
|
216
|
-
* @param type - TypeScript type (must be TSUnsafePointer<T>)
|
|
217
|
-
* @param checker - TypeScript type checker
|
|
218
|
-
* @returns Wrapped type T, or undefined if not TSUnsafePointer
|
|
219
|
-
*/
|
|
220
|
-
export const getTSUnsafePointerWrappedType = (
|
|
221
|
-
type: ts.Type,
|
|
222
|
-
checker: ts.TypeChecker
|
|
223
|
-
): ts.Type | undefined => {
|
|
224
|
-
const info = getSupportTypeInfo(type, checker);
|
|
225
|
-
if (info?.kind === "TSUnsafePointer") {
|
|
226
|
-
return info.wrappedType;
|
|
227
|
-
}
|
|
228
|
-
return undefined;
|
|
229
|
-
};
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Check if type is a generic type reference with type arguments.
|
|
233
|
-
*
|
|
234
|
-
* @param type - TypeScript type
|
|
235
|
-
* @returns True if type is a generic type reference
|
|
236
|
-
*/
|
|
237
|
-
const isGenericTypeReference = (type: ts.Type): boolean => {
|
|
238
|
-
return (
|
|
239
|
-
(type.flags & ts.TypeFlags.Object) !== 0 &&
|
|
240
|
-
((type as ts.ObjectType).objectFlags & ts.ObjectFlags.Reference) !== 0
|
|
241
|
-
);
|
|
242
|
-
};
|
|
243
|
-
|
|
244
|
-
/**
|
|
245
|
-
* Get type arguments from a generic type reference.
|
|
246
|
-
*
|
|
247
|
-
* @param type - TypeScript type (must be generic reference)
|
|
248
|
-
* @returns Array of type arguments
|
|
249
|
-
*/
|
|
250
|
-
const getTypeArguments = (type: ts.Type): readonly ts.Type[] => {
|
|
251
|
-
const typeRef = type as ts.TypeReference;
|
|
252
|
-
if (!typeRef.typeArguments) {
|
|
253
|
-
return [];
|
|
254
|
-
}
|
|
255
|
-
return typeRef.typeArguments;
|
|
256
|
-
};
|
|
257
|
-
|
|
258
|
-
/**
|
|
259
|
-
* Check if any support type is unsupported (unsafe pointers, fixed buffers, stackalloc).
|
|
260
|
-
*
|
|
261
|
-
* @param type - TypeScript type to check
|
|
262
|
-
* @param checker - TypeScript type checker
|
|
263
|
-
* @returns Error message if unsupported, undefined if supported
|
|
264
|
-
*/
|
|
265
|
-
export const checkUnsupportedSupportType = (
|
|
266
|
-
type: ts.Type,
|
|
267
|
-
checker: ts.TypeChecker
|
|
268
|
-
): string | undefined => {
|
|
269
|
-
const info = getSupportTypeInfo(type, checker);
|
|
270
|
-
if (!info) {
|
|
271
|
-
return undefined;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
switch (info.kind) {
|
|
275
|
-
case "TSUnsafePointer":
|
|
276
|
-
return "Unsafe pointers are not supported in Tsonic. Use IntPtr for opaque handles.";
|
|
277
|
-
case "TSFixed":
|
|
278
|
-
return "Fixed-size buffers (unsafe feature) are not supported. Use arrays or Span<T> instead.";
|
|
279
|
-
case "TSStackAlloc":
|
|
280
|
-
return "stackalloc is not supported in Tsonic. Use heap-allocated arrays instead.";
|
|
281
|
-
case "TSByRef":
|
|
282
|
-
case "TSDelegate":
|
|
283
|
-
case "TSNullable":
|
|
284
|
-
return undefined; // These are supported
|
|
285
|
-
default:
|
|
286
|
-
return undefined;
|
|
287
|
-
}
|
|
288
|
-
};
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Test harness for support types tests.
|
|
3
|
-
* Creates a real TypeScript program with support type definitions
|
|
4
|
-
* and provides helpers to extract ts.Type objects.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import * as ts from "typescript";
|
|
8
|
-
import * as path from "path";
|
|
9
|
-
import * as os from "os";
|
|
10
|
-
import * as fs from "fs";
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Support type definitions (from _support/types.d.ts)
|
|
14
|
-
*/
|
|
15
|
-
const SUPPORT_TYPES_DEFS = `
|
|
16
|
-
// Support types for CLR interop
|
|
17
|
-
export type TSByRef<T> = { value: T };
|
|
18
|
-
export type TSUnsafePointer<T> = { __brand: "unsafe-pointer"; __type: T };
|
|
19
|
-
export type TSDelegate<TArgs extends any[], TReturn> = { __brand: "delegate"; __args: TArgs; __return: TReturn };
|
|
20
|
-
export type TSNullable<T> = { __brand: "nullable"; __value: T };
|
|
21
|
-
export type TSFixed<T, N extends number> = { __brand: "fixed"; __type: T; __size: N };
|
|
22
|
-
export type TSStackAlloc<T> = { __brand: "stackalloc"; __type: T };
|
|
23
|
-
`;
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Test code that uses the support types
|
|
27
|
-
*/
|
|
28
|
-
const TEST_CODE = `
|
|
29
|
-
import type { TSByRef, TSUnsafePointer, TSDelegate, TSNullable, TSFixed, TSStackAlloc } from "./support-types";
|
|
30
|
-
|
|
31
|
-
// Test variables with support types
|
|
32
|
-
const byRef: TSByRef<number> = { value: 42 };
|
|
33
|
-
const unsafePtr: TSUnsafePointer<string> = null!;
|
|
34
|
-
const delegate: TSDelegate<[string], void> = null!;
|
|
35
|
-
const nullable: TSNullable<number> = null!;
|
|
36
|
-
const fixed: TSFixed<number, 10> = null!;
|
|
37
|
-
const stackAlloc: TSStackAlloc<number> = null!;
|
|
38
|
-
`;
|
|
39
|
-
|
|
40
|
-
export type TestHarness = {
|
|
41
|
-
readonly program: ts.Program;
|
|
42
|
-
readonly checker: ts.TypeChecker;
|
|
43
|
-
readonly sourceFile: ts.SourceFile;
|
|
44
|
-
readonly cleanup: () => void;
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Create a test harness with a real TypeScript program.
|
|
49
|
-
* Returns program, checker, and source file for testing.
|
|
50
|
-
*/
|
|
51
|
-
export const createTestHarness = (): TestHarness => {
|
|
52
|
-
// Create temporary directory
|
|
53
|
-
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "tsonic-test-"));
|
|
54
|
-
|
|
55
|
-
// Write support types definition file
|
|
56
|
-
const supportTypesPath = path.join(tmpDir, "support-types.d.ts");
|
|
57
|
-
fs.writeFileSync(supportTypesPath, SUPPORT_TYPES_DEFS);
|
|
58
|
-
|
|
59
|
-
// Write test code file
|
|
60
|
-
const testCodePath = path.join(tmpDir, "test.ts");
|
|
61
|
-
fs.writeFileSync(testCodePath, TEST_CODE);
|
|
62
|
-
|
|
63
|
-
// Create TypeScript program
|
|
64
|
-
const program = ts.createProgram({
|
|
65
|
-
rootNames: [testCodePath],
|
|
66
|
-
options: {
|
|
67
|
-
target: ts.ScriptTarget.ES2020,
|
|
68
|
-
module: ts.ModuleKind.ES2020,
|
|
69
|
-
moduleResolution: ts.ModuleResolutionKind.Node10,
|
|
70
|
-
strict: true,
|
|
71
|
-
skipLibCheck: true,
|
|
72
|
-
noEmit: true,
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
const checker = program.getTypeChecker();
|
|
77
|
-
const sourceFile = program.getSourceFile(testCodePath);
|
|
78
|
-
|
|
79
|
-
if (!sourceFile) {
|
|
80
|
-
throw new Error("Failed to get source file from test program");
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const cleanup = () => {
|
|
84
|
-
// Clean up temporary files
|
|
85
|
-
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
return {
|
|
89
|
-
program,
|
|
90
|
-
checker,
|
|
91
|
-
sourceFile,
|
|
92
|
-
cleanup,
|
|
93
|
-
};
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Extract the type of a variable declaration by name.
|
|
98
|
-
* Gets the type from the type annotation node, not the inferred type.
|
|
99
|
-
*/
|
|
100
|
-
export const getVariableType = (
|
|
101
|
-
sourceFile: ts.SourceFile,
|
|
102
|
-
checker: ts.TypeChecker,
|
|
103
|
-
variableName: string
|
|
104
|
-
): ts.Type | undefined => {
|
|
105
|
-
let foundType: ts.Type | undefined = undefined;
|
|
106
|
-
|
|
107
|
-
const visit = (node: ts.Node): void => {
|
|
108
|
-
if (ts.isVariableDeclaration(node)) {
|
|
109
|
-
if (ts.isIdentifier(node.name) && node.name.text === variableName) {
|
|
110
|
-
// Get type from type annotation if present
|
|
111
|
-
if (node.type) {
|
|
112
|
-
foundType = checker.getTypeFromTypeNode(node.type);
|
|
113
|
-
} else {
|
|
114
|
-
foundType = checker.getTypeAtLocation(node);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
ts.forEachChild(node, visit);
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
visit(sourceFile);
|
|
122
|
-
return foundType;
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Get all support type instances from the test harness.
|
|
127
|
-
*/
|
|
128
|
-
export const getSupportTypes = (
|
|
129
|
-
harness: TestHarness
|
|
130
|
-
): {
|
|
131
|
-
byRef: ts.Type;
|
|
132
|
-
unsafePointer: ts.Type;
|
|
133
|
-
delegate: ts.Type;
|
|
134
|
-
nullable: ts.Type;
|
|
135
|
-
fixed: ts.Type;
|
|
136
|
-
stackAlloc: ts.Type;
|
|
137
|
-
} => {
|
|
138
|
-
const byRef = getVariableType(harness.sourceFile, harness.checker, "byRef");
|
|
139
|
-
const unsafePointer = getVariableType(
|
|
140
|
-
harness.sourceFile,
|
|
141
|
-
harness.checker,
|
|
142
|
-
"unsafePtr"
|
|
143
|
-
);
|
|
144
|
-
const delegate = getVariableType(
|
|
145
|
-
harness.sourceFile,
|
|
146
|
-
harness.checker,
|
|
147
|
-
"delegate"
|
|
148
|
-
);
|
|
149
|
-
const nullable = getVariableType(
|
|
150
|
-
harness.sourceFile,
|
|
151
|
-
harness.checker,
|
|
152
|
-
"nullable"
|
|
153
|
-
);
|
|
154
|
-
const fixed = getVariableType(harness.sourceFile, harness.checker, "fixed");
|
|
155
|
-
const stackAlloc = getVariableType(
|
|
156
|
-
harness.sourceFile,
|
|
157
|
-
harness.checker,
|
|
158
|
-
"stackAlloc"
|
|
159
|
-
);
|
|
160
|
-
|
|
161
|
-
if (
|
|
162
|
-
!byRef ||
|
|
163
|
-
!unsafePointer ||
|
|
164
|
-
!delegate ||
|
|
165
|
-
!nullable ||
|
|
166
|
-
!fixed ||
|
|
167
|
-
!stackAlloc
|
|
168
|
-
) {
|
|
169
|
-
throw new Error("Failed to extract all support types from test harness");
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
return {
|
|
173
|
-
byRef,
|
|
174
|
-
unsafePointer,
|
|
175
|
-
delegate,
|
|
176
|
-
nullable,
|
|
177
|
-
fixed,
|
|
178
|
-
stackAlloc,
|
|
179
|
-
};
|
|
180
|
-
};
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Export validation
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import * as ts from "typescript";
|
|
6
|
-
import { TsonicProgram } from "../program.js";
|
|
7
|
-
import {
|
|
8
|
-
DiagnosticsCollector,
|
|
9
|
-
addDiagnostic,
|
|
10
|
-
createDiagnostic,
|
|
11
|
-
} from "../types/diagnostic.js";
|
|
12
|
-
import { hasExportModifier, getNodeLocation } from "./helpers.js";
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Validate exports (check for duplicates)
|
|
16
|
-
*/
|
|
17
|
-
export const validateExports = (
|
|
18
|
-
sourceFile: ts.SourceFile,
|
|
19
|
-
_program: TsonicProgram,
|
|
20
|
-
collector: DiagnosticsCollector
|
|
21
|
-
): DiagnosticsCollector => {
|
|
22
|
-
const exportedNames = new Set<string>();
|
|
23
|
-
|
|
24
|
-
const visitor = (node: ts.Node): void => {
|
|
25
|
-
if (ts.isExportDeclaration(node) || ts.isExportAssignment(node)) {
|
|
26
|
-
// Validate export syntax
|
|
27
|
-
if (ts.isExportAssignment(node) && !node.isExportEquals) {
|
|
28
|
-
// export default is allowed
|
|
29
|
-
} else if (
|
|
30
|
-
ts.isExportDeclaration(node) &&
|
|
31
|
-
node.exportClause &&
|
|
32
|
-
ts.isNamedExports(node.exportClause)
|
|
33
|
-
) {
|
|
34
|
-
node.exportClause.elements.forEach((spec) => {
|
|
35
|
-
const name = spec.name.text;
|
|
36
|
-
if (exportedNames.has(name)) {
|
|
37
|
-
collector = addDiagnostic(
|
|
38
|
-
collector,
|
|
39
|
-
createDiagnostic(
|
|
40
|
-
"TSN1005",
|
|
41
|
-
"error",
|
|
42
|
-
`Duplicate export: "${name}"`,
|
|
43
|
-
getNodeLocation(sourceFile, spec)
|
|
44
|
-
)
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
exportedNames.add(name);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (ts.isVariableStatement(node) && hasExportModifier(node)) {
|
|
53
|
-
node.declarationList.declarations.forEach((decl) => {
|
|
54
|
-
if (ts.isIdentifier(decl.name)) {
|
|
55
|
-
const name = decl.name.text;
|
|
56
|
-
if (exportedNames.has(name)) {
|
|
57
|
-
collector = addDiagnostic(
|
|
58
|
-
collector,
|
|
59
|
-
createDiagnostic(
|
|
60
|
-
"TSN1005",
|
|
61
|
-
"error",
|
|
62
|
-
`Duplicate export: "${name}"`,
|
|
63
|
-
getNodeLocation(sourceFile, decl)
|
|
64
|
-
)
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
exportedNames.add(name);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (
|
|
73
|
-
(ts.isFunctionDeclaration(node) || ts.isClassDeclaration(node)) &&
|
|
74
|
-
hasExportModifier(node)
|
|
75
|
-
) {
|
|
76
|
-
const name = node.name?.text;
|
|
77
|
-
if (name) {
|
|
78
|
-
if (exportedNames.has(name)) {
|
|
79
|
-
collector = addDiagnostic(
|
|
80
|
-
collector,
|
|
81
|
-
createDiagnostic(
|
|
82
|
-
"TSN1005",
|
|
83
|
-
"error",
|
|
84
|
-
`Duplicate export: "${name}"`,
|
|
85
|
-
getNodeLocation(sourceFile, node)
|
|
86
|
-
)
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
exportedNames.add(name);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
ts.forEachChild(node, visitor);
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
visitor(sourceFile);
|
|
97
|
-
return collector;
|
|
98
|
-
};
|