@tsonic/emitter 0.0.62 → 0.0.64
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 -1
- package/dist/adapter-generator.d.ts +5 -15
- package/dist/adapter-generator.d.ts.map +1 -1
- package/dist/adapter-generator.js +60 -53
- package/dist/adapter-generator.js.map +1 -1
- package/dist/contracts/backend-adapter.d.ts +36 -0
- package/dist/contracts/backend-adapter.d.ts.map +1 -0
- package/dist/contracts/backend-adapter.js +9 -0
- package/dist/contracts/backend-adapter.js.map +1 -0
- package/dist/contracts/emitter-contract.d.ts +54 -0
- package/dist/contracts/emitter-contract.d.ts.map +1 -0
- package/dist/contracts/emitter-contract.js +8 -0
- package/dist/contracts/emitter-contract.js.map +1 -0
- package/dist/contracts/import-classifier.d.ts +36 -0
- package/dist/contracts/import-classifier.d.ts.map +1 -0
- package/dist/contracts/import-classifier.js +9 -0
- package/dist/contracts/import-classifier.js.map +1 -0
- package/dist/core/{attributes.d.ts → format/attributes.d.ts} +9 -14
- package/dist/core/format/attributes.d.ts.map +1 -0
- package/dist/core/format/attributes.js +190 -0
- package/dist/core/format/attributes.js.map +1 -0
- package/dist/core/format/attributes.test.d.ts.map +1 -0
- package/dist/core/{attributes.test.js → format/attributes.test.js} +70 -32
- package/dist/core/format/attributes.test.js.map +1 -0
- package/dist/core/format/backend-ast/index.d.ts +7 -0
- package/dist/core/format/backend-ast/index.d.ts.map +1 -0
- package/dist/core/format/backend-ast/index.js +6 -0
- package/dist/core/format/backend-ast/index.js.map +1 -0
- package/dist/core/format/backend-ast/printer.d.ts +33 -0
- package/dist/core/format/backend-ast/printer.d.ts.map +1 -0
- package/dist/core/format/backend-ast/printer.js +1151 -0
- package/dist/core/format/backend-ast/printer.js.map +1 -0
- package/dist/core/format/backend-ast/types.d.ts +504 -0
- package/dist/core/format/backend-ast/types.d.ts.map +1 -0
- package/dist/core/format/backend-ast/types.js +13 -0
- package/dist/core/format/backend-ast/types.js.map +1 -0
- package/dist/core/format/backend-ast/utils.d.ts +26 -0
- package/dist/core/format/backend-ast/utils.d.ts.map +1 -0
- package/dist/core/format/backend-ast/utils.js +65 -0
- package/dist/core/format/backend-ast/utils.js.map +1 -0
- package/dist/core/{exports.d.ts → format/exports.d.ts} +2 -2
- package/dist/core/format/exports.d.ts.map +1 -0
- package/dist/core/format/exports.js +22 -0
- package/dist/core/format/exports.js.map +1 -0
- package/dist/core/format/index.d.ts +9 -0
- package/dist/core/format/index.d.ts.map +1 -0
- package/dist/core/format/index.js +9 -0
- package/dist/core/format/index.js.map +1 -0
- package/dist/core/{local-names.d.ts → format/local-names.d.ts} +1 -1
- package/dist/core/format/local-names.d.ts.map +1 -0
- package/dist/core/{local-names.js → format/local-names.js} +1 -1
- package/dist/core/format/local-names.js.map +1 -0
- package/dist/core/format/module-emitter/assembly.d.ts +27 -0
- package/dist/core/format/module-emitter/assembly.d.ts.map +1 -0
- package/dist/core/format/module-emitter/assembly.js +44 -0
- package/dist/core/format/module-emitter/assembly.js.map +1 -0
- package/dist/core/{module-emitter → format/module-emitter}/header.d.ts +1 -1
- package/dist/core/format/module-emitter/header.d.ts.map +1 -0
- package/dist/core/{module-emitter → format/module-emitter}/header.js +1 -1
- package/dist/core/format/module-emitter/header.js.map +1 -0
- package/dist/core/format/module-emitter/index.d.ts.map +1 -0
- package/dist/core/format/module-emitter/index.js.map +1 -0
- package/dist/core/format/module-emitter/namespace.d.ts +21 -0
- package/dist/core/format/module-emitter/namespace.d.ts.map +1 -0
- package/dist/core/format/module-emitter/namespace.js +58 -0
- package/dist/core/format/module-emitter/namespace.js.map +1 -0
- package/dist/core/{module-emitter → format/module-emitter}/orchestrator.d.ts +1 -1
- package/dist/core/format/module-emitter/orchestrator.d.ts.map +1 -0
- package/dist/core/{module-emitter → format/module-emitter}/orchestrator.js +19 -19
- package/dist/core/format/module-emitter/orchestrator.js.map +1 -0
- package/dist/core/format/module-emitter/separation.d.ts.map +1 -0
- package/dist/core/format/module-emitter/separation.js.map +1 -0
- package/dist/core/{module-emitter → format/module-emitter}/static-container.d.ts +8 -3
- package/dist/core/format/module-emitter/static-container.d.ts.map +1 -0
- package/dist/core/format/module-emitter/static-container.js +202 -0
- package/dist/core/format/module-emitter/static-container.js.map +1 -0
- package/dist/core/format/module-emitter.d.ts.map +1 -0
- package/dist/core/format/module-emitter.js.map +1 -0
- package/dist/core/{options.d.ts → format/options.d.ts} +1 -1
- package/dist/core/format/options.d.ts.map +1 -0
- package/dist/core/format/options.js.map +1 -0
- package/dist/core/index.d.ts +2 -7
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -7
- package/dist/core/index.js.map +1 -1
- package/dist/core/semantic/boolean-context.d.ts +44 -0
- package/dist/core/semantic/boolean-context.d.ts.map +1 -0
- package/dist/core/semantic/boolean-context.js +717 -0
- package/dist/core/semantic/boolean-context.js.map +1 -0
- package/dist/core/semantic/boolean-context.test.d.ts.map +1 -0
- package/dist/core/{boolean-context.test.js → semantic/boolean-context.test.js} +86 -109
- package/dist/core/semantic/boolean-context.test.js.map +1 -0
- package/dist/core/{imports.d.ts → semantic/imports.d.ts} +1 -5
- package/dist/core/semantic/imports.d.ts.map +1 -0
- package/dist/core/{imports.js → semantic/imports.js} +56 -74
- package/dist/core/semantic/imports.js.map +1 -0
- package/dist/core/semantic/imports.test.d.ts.map +1 -0
- package/dist/core/semantic/imports.test.js +229 -0
- package/dist/core/semantic/imports.test.js.map +1 -0
- package/dist/core/semantic/index.d.ts +15 -0
- package/dist/core/semantic/index.d.ts.map +1 -0
- package/dist/core/semantic/index.js +15 -0
- package/dist/core/semantic/index.js.map +1 -0
- package/dist/core/{local-types.d.ts → semantic/local-types.d.ts} +1 -1
- package/dist/core/semantic/local-types.d.ts.map +1 -0
- package/dist/core/semantic/local-types.js.map +1 -0
- package/dist/core/{module-map.d.ts → semantic/module-map.d.ts} +1 -1
- package/dist/core/semantic/module-map.d.ts.map +1 -0
- package/dist/core/semantic/module-map.js.map +1 -0
- package/dist/core/semantic/module-map.test.d.ts.map +1 -0
- package/dist/core/semantic/module-map.test.js.map +1 -0
- package/dist/core/semantic/naming-collisions.d.ts.map +1 -0
- package/dist/core/{naming-collisions.js → semantic/naming-collisions.js} +1 -1
- package/dist/core/semantic/naming-collisions.js.map +1 -0
- package/dist/core/{type-alias-index.d.ts → semantic/type-alias-index.d.ts} +1 -1
- package/dist/core/semantic/type-alias-index.d.ts.map +1 -0
- package/dist/core/semantic/type-alias-index.js.map +1 -0
- package/dist/core/semantic/type-compatibility.d.ts.map +1 -0
- package/dist/core/semantic/type-compatibility.js.map +1 -0
- package/dist/core/{type-member-index.d.ts → semantic/type-member-index.d.ts} +1 -1
- package/dist/core/semantic/type-member-index.d.ts.map +1 -0
- package/dist/core/semantic/type-member-index.js.map +1 -0
- package/dist/core/semantic/type-params.d.ts.map +1 -0
- package/dist/core/semantic/type-params.js.map +1 -0
- package/dist/core/{type-resolution.d.ts → semantic/type-resolution.d.ts} +3 -6
- package/dist/core/semantic/type-resolution.d.ts.map +1 -0
- package/dist/core/{type-resolution.js → semantic/type-resolution.js} +15 -25
- package/dist/core/semantic/type-resolution.js.map +1 -0
- package/dist/core/semantic/type-resolution.test.d.ts.map +1 -0
- package/dist/core/{type-resolution.test.js → semantic/type-resolution.test.js} +11 -19
- package/dist/core/semantic/type-resolution.test.js.map +1 -0
- package/dist/core/semantic/unsafe.d.ts.map +1 -0
- package/dist/core/semantic/unsafe.js.map +1 -0
- package/dist/emitter-types/core.d.ts +6 -12
- package/dist/emitter-types/core.d.ts.map +1 -1
- package/dist/emitter-types/index.d.ts +1 -1
- package/dist/emitter-types/index.d.ts.map +1 -1
- package/dist/emitter-types/index.js.map +1 -1
- package/dist/emitter.d.ts +1 -1
- package/dist/emitter.d.ts.map +1 -1
- package/dist/emitter.js +9 -8
- package/dist/emitter.js.map +1 -1
- package/dist/expression-emitter.d.ts +10 -5
- package/dist/expression-emitter.d.ts.map +1 -1
- package/dist/expression-emitter.js +333 -117
- package/dist/expression-emitter.js.map +1 -1
- package/dist/expressions/access.d.ts +4 -3
- package/dist/expressions/access.d.ts.map +1 -1
- package/dist/expressions/access.js +252 -102
- package/dist/expressions/access.js.map +1 -1
- package/dist/expressions/calls/call-analysis.d.ts +86 -0
- package/dist/expressions/calls/call-analysis.d.ts.map +1 -0
- package/dist/expressions/calls/call-analysis.js +284 -0
- package/dist/expressions/calls/call-analysis.js.map +1 -0
- package/dist/expressions/calls/call-emitter.d.ts +13 -0
- package/dist/expressions/calls/call-emitter.d.ts.map +1 -0
- package/dist/expressions/calls/call-emitter.js +1048 -0
- package/dist/expressions/calls/call-emitter.js.map +1 -0
- package/dist/expressions/calls/new-emitter.d.ts +13 -0
- package/dist/expressions/calls/new-emitter.d.ts.map +1 -0
- package/dist/expressions/calls/new-emitter.js +641 -0
- package/dist/expressions/calls/new-emitter.js.map +1 -0
- package/dist/expressions/calls.d.ts +2 -14
- package/dist/expressions/calls.d.ts.map +1 -1
- package/dist/expressions/calls.js +2 -909
- package/dist/expressions/calls.js.map +1 -1
- package/dist/expressions/collections.d.ts +6 -16
- package/dist/expressions/collections.d.ts.map +1 -1
- package/dist/expressions/collections.js +318 -217
- package/dist/expressions/collections.js.map +1 -1
- package/dist/expressions/functions.d.ts +6 -5
- package/dist/expressions/functions.d.ts.map +1 -1
- package/dist/expressions/functions.js +57 -62
- package/dist/expressions/functions.js.map +1 -1
- package/dist/expressions/identifiers.d.ts +11 -6
- package/dist/expressions/identifiers.d.ts.map +1 -1
- package/dist/expressions/identifiers.js +76 -25
- package/dist/expressions/identifiers.js.map +1 -1
- package/dist/expressions/index.d.ts +1 -1
- package/dist/expressions/index.d.ts.map +1 -1
- package/dist/expressions/index.js +1 -1
- package/dist/expressions/index.js.map +1 -1
- package/dist/expressions/index.test.js +605 -0
- package/dist/expressions/index.test.js.map +1 -1
- package/dist/expressions/literals.d.ts +4 -3
- package/dist/expressions/literals.d.ts.map +1 -1
- package/dist/expressions/literals.js +25 -17
- package/dist/expressions/literals.js.map +1 -1
- package/dist/expressions/literals.test.js +18 -18
- package/dist/expressions/literals.test.js.map +1 -1
- package/dist/expressions/operators/assignment-emitter.d.ts +16 -0
- package/dist/expressions/operators/assignment-emitter.d.ts.map +1 -0
- package/dist/expressions/operators/assignment-emitter.js +118 -0
- package/dist/expressions/operators/assignment-emitter.js.map +1 -0
- package/dist/expressions/operators/binary-emitter.d.ts +33 -0
- package/dist/expressions/operators/binary-emitter.d.ts.map +1 -0
- package/dist/expressions/operators/binary-emitter.js +398 -0
- package/dist/expressions/operators/binary-emitter.js.map +1 -0
- package/dist/expressions/operators/conditional-emitter.d.ts +17 -0
- package/dist/expressions/operators/conditional-emitter.d.ts.map +1 -0
- package/dist/expressions/operators/conditional-emitter.js +306 -0
- package/dist/expressions/operators/conditional-emitter.js.map +1 -0
- package/dist/expressions/operators/helpers.d.ts +37 -0
- package/dist/expressions/operators/helpers.d.ts.map +1 -0
- package/dist/expressions/operators/helpers.js +136 -0
- package/dist/expressions/operators/helpers.js.map +1 -0
- package/dist/expressions/operators/logical-emitter.d.ts +23 -0
- package/dist/expressions/operators/logical-emitter.d.ts.map +1 -0
- package/dist/expressions/operators/logical-emitter.js +73 -0
- package/dist/expressions/operators/logical-emitter.js.map +1 -0
- package/dist/expressions/operators/unary-emitter.d.ts +30 -0
- package/dist/expressions/operators/unary-emitter.d.ts.map +1 -0
- package/dist/expressions/operators/unary-emitter.js +244 -0
- package/dist/expressions/operators/unary-emitter.js.map +1 -0
- package/dist/expressions/operators.d.ts +5 -81
- package/dist/expressions/operators.d.ts.map +1 -1
- package/dist/expressions/operators.js +5 -949
- package/dist/expressions/operators.js.map +1 -1
- package/dist/expressions/other.d.ts +15 -11
- package/dist/expressions/other.d.ts.map +1 -1
- package/dist/expressions/other.js +51 -36
- package/dist/expressions/other.js.map +1 -1
- package/dist/expressions/precedence.test.js +1 -1
- package/dist/expressions/precedence.test.js.map +1 -1
- package/dist/generator-exchange.d.ts +10 -3
- package/dist/generator-exchange.d.ts.map +1 -1
- package/dist/generator-exchange.js +57 -54
- package/dist/generator-exchange.js.map +1 -1
- package/dist/generator-wrapper.d.ts +17 -65
- package/dist/generator-wrapper.d.ts.map +1 -1
- package/dist/generator-wrapper.js +396 -220
- package/dist/generator-wrapper.js.map +1 -1
- package/dist/generator-wrapper.test.js +22 -14
- package/dist/generator-wrapper.test.js.map +1 -1
- package/dist/integration.test.js +169 -1
- package/dist/integration.test.js.map +1 -1
- package/dist/patterns.d.ts +18 -88
- package/dist/patterns.d.ts.map +1 -1
- package/dist/patterns.js +540 -304
- package/dist/patterns.js.map +1 -1
- package/dist/patterns.test.js +5 -4
- package/dist/patterns.test.js.map +1 -1
- package/dist/specialization/generation.d.ts +7 -3
- package/dist/specialization/generation.d.ts.map +1 -1
- package/dist/specialization/generation.js +31 -15
- package/dist/specialization/generation.js.map +1 -1
- package/dist/specialization/type-aliases.test.js +47 -2
- package/dist/specialization/type-aliases.test.js.map +1 -1
- package/dist/statement-emitter.d.ts +15 -4
- package/dist/statement-emitter.d.ts.map +1 -1
- package/dist/statement-emitter.js +54 -47
- package/dist/statement-emitter.js.map +1 -1
- package/dist/statements/blocks.d.ts +24 -16
- package/dist/statements/blocks.d.ts.map +1 -1
- package/dist/statements/blocks.js +242 -65
- package/dist/statements/blocks.js.map +1 -1
- package/dist/statements/classes/index.d.ts +1 -1
- package/dist/statements/classes/index.d.ts.map +1 -1
- package/dist/statements/classes/index.js +1 -1
- package/dist/statements/classes/index.js.map +1 -1
- package/dist/statements/classes/inline-types.d.ts +4 -3
- package/dist/statements/classes/inline-types.d.ts.map +1 -1
- package/dist/statements/classes/inline-types.js +21 -21
- package/dist/statements/classes/inline-types.js.map +1 -1
- package/dist/statements/classes/members/constructors.d.ts +4 -3
- package/dist/statements/classes/members/constructors.d.ts.map +1 -1
- package/dist/statements/classes/members/constructors.js +57 -58
- package/dist/statements/classes/members/constructors.js.map +1 -1
- package/dist/statements/classes/members/methods.d.ts +4 -3
- package/dist/statements/classes/members/methods.d.ts.map +1 -1
- package/dist/statements/classes/members/methods.js +106 -101
- package/dist/statements/classes/members/methods.js.map +1 -1
- package/dist/statements/classes/members/orchestrator.d.ts +4 -3
- package/dist/statements/classes/members/orchestrator.d.ts.map +1 -1
- package/dist/statements/classes/members/orchestrator.js +2 -2
- package/dist/statements/classes/members/orchestrator.js.map +1 -1
- package/dist/statements/classes/members/properties.d.ts +4 -3
- package/dist/statements/classes/members/properties.d.ts.map +1 -1
- package/dist/statements/classes/members/properties.js +105 -88
- package/dist/statements/classes/members/properties.js.map +1 -1
- package/dist/statements/classes/members/shadowing.test.js +7 -2
- package/dist/statements/classes/members/shadowing.test.js.map +1 -1
- package/dist/statements/classes/members/static-readonly-properties.test.js +4 -1
- package/dist/statements/classes/members/static-readonly-properties.test.js.map +1 -1
- package/dist/statements/classes/parameters.d.ts +8 -10
- package/dist/statements/classes/parameters.d.ts.map +1 -1
- package/dist/statements/classes/parameters.js +30 -26
- package/dist/statements/classes/parameters.js.map +1 -1
- package/dist/statements/classes/properties.d.ts +4 -3
- package/dist/statements/classes/properties.d.ts.map +1 -1
- package/dist/statements/classes/properties.js +76 -50
- package/dist/statements/classes/properties.js.map +1 -1
- package/dist/statements/classes.d.ts +1 -1
- package/dist/statements/classes.d.ts.map +1 -1
- package/dist/statements/classes.js +1 -1
- package/dist/statements/classes.js.map +1 -1
- package/dist/statements/control/conditionals/guard-analysis.d.ts +169 -0
- package/dist/statements/control/conditionals/guard-analysis.d.ts.map +1 -0
- package/dist/statements/control/conditionals/guard-analysis.js +591 -0
- package/dist/statements/control/conditionals/guard-analysis.js.map +1 -0
- package/dist/statements/control/conditionals/if-emitter.d.ts +14 -0
- package/dist/statements/control/conditionals/if-emitter.d.ts.map +1 -0
- package/dist/statements/control/conditionals/if-emitter.js +725 -0
- package/dist/statements/control/conditionals/if-emitter.js.map +1 -0
- package/dist/statements/control/conditionals/switch-emitter.d.ts +13 -0
- package/dist/statements/control/conditionals/switch-emitter.d.ts.map +1 -0
- package/dist/statements/control/conditionals/switch-emitter.js +60 -0
- package/dist/statements/control/conditionals/switch-emitter.js.map +1 -0
- package/dist/statements/control/conditionals.d.ts +3 -15
- package/dist/statements/control/conditionals.d.ts.map +1 -1
- package/dist/statements/control/conditionals.js +3 -1152
- package/dist/statements/control/conditionals.js.map +1 -1
- package/dist/statements/control/exceptions.d.ts +8 -6
- package/dist/statements/control/exceptions.d.ts.map +1 -1
- package/dist/statements/control/exceptions.js +35 -23
- package/dist/statements/control/exceptions.js.map +1 -1
- package/dist/statements/control/index.d.ts +3 -3
- package/dist/statements/control/index.d.ts.map +1 -1
- package/dist/statements/control/index.js +3 -3
- package/dist/statements/control/index.js.map +1 -1
- package/dist/statements/control/loops.d.ts +14 -12
- package/dist/statements/control/loops.d.ts.map +1 -1
- package/dist/statements/control/loops.js +147 -82
- package/dist/statements/control/loops.js.map +1 -1
- package/dist/statements/control.d.ts +1 -1
- package/dist/statements/control.d.ts.map +1 -1
- package/dist/statements/control.js +1 -1
- package/dist/statements/control.js.map +1 -1
- package/dist/statements/declarations/classes.d.ts +7 -3
- package/dist/statements/declarations/classes.d.ts.map +1 -1
- package/dist/statements/declarations/classes.js +107 -83
- package/dist/statements/declarations/classes.js.map +1 -1
- package/dist/statements/declarations/enums.d.ts +4 -3
- package/dist/statements/declarations/enums.d.ts.map +1 -1
- package/dist/statements/declarations/enums.js +16 -15
- package/dist/statements/declarations/enums.js.map +1 -1
- package/dist/statements/declarations/functions.d.ts +18 -2
- package/dist/statements/declarations/functions.d.ts.map +1 -1
- package/dist/statements/declarations/functions.js +633 -162
- package/dist/statements/declarations/functions.js.map +1 -1
- package/dist/statements/declarations/index.d.ts +2 -2
- package/dist/statements/declarations/index.d.ts.map +1 -1
- package/dist/statements/declarations/index.js +2 -2
- package/dist/statements/declarations/index.js.map +1 -1
- package/dist/statements/declarations/interfaces.d.ts +7 -3
- package/dist/statements/declarations/interfaces.d.ts.map +1 -1
- package/dist/statements/declarations/interfaces.js +138 -105
- package/dist/statements/declarations/interfaces.js.map +1 -1
- package/dist/statements/declarations/type-aliases.d.ts +7 -3
- package/dist/statements/declarations/type-aliases.d.ts.map +1 -1
- package/dist/statements/declarations/type-aliases.js +122 -82
- package/dist/statements/declarations/type-aliases.js.map +1 -1
- package/dist/statements/declarations/variables.d.ts +12 -2
- package/dist/statements/declarations/variables.d.ts.map +1 -1
- package/dist/statements/declarations/variables.js +541 -428
- package/dist/statements/declarations/variables.js.map +1 -1
- package/dist/statements/declarations.d.ts +1 -1
- package/dist/statements/declarations.d.ts.map +1 -1
- package/dist/statements/declarations.js +1 -1
- package/dist/statements/declarations.js.map +1 -1
- package/dist/statements/index.d.ts +3 -3
- package/dist/statements/index.d.ts.map +1 -1
- package/dist/statements/index.js +5 -5
- package/dist/statements/index.js.map +1 -1
- package/dist/statements/index.test.js +307 -0
- package/dist/statements/index.test.js.map +1 -1
- package/dist/type-emitter.d.ts +1 -1
- package/dist/type-emitter.d.ts.map +1 -1
- package/dist/type-emitter.js +1 -1
- package/dist/type-emitter.js.map +1 -1
- package/dist/types/arrays.d.ts +3 -2
- package/dist/types/arrays.d.ts.map +1 -1
- package/dist/types/arrays.js +7 -5
- package/dist/types/arrays.js.map +1 -1
- package/dist/types/dictionaries.d.ts +6 -3
- package/dist/types/dictionaries.d.ts.map +1 -1
- package/dist/types/dictionaries.js +22 -10
- package/dist/types/dictionaries.js.map +1 -1
- package/dist/types/emitter.d.ts +8 -2
- package/dist/types/emitter.d.ts.map +1 -1
- package/dist/types/emitter.js +20 -6
- package/dist/types/emitter.js.map +1 -1
- package/dist/types/functions.d.ts +3 -2
- package/dist/types/functions.d.ts.map +1 -1
- package/dist/types/functions.js +36 -13
- package/dist/types/functions.js.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/index.test.js +137 -0
- package/dist/types/index.test.js.map +1 -1
- package/dist/types/intersections.d.ts +3 -2
- package/dist/types/intersections.d.ts.map +1 -1
- package/dist/types/intersections.js +2 -2
- package/dist/types/intersections.js.map +1 -1
- package/dist/types/literals.d.ts +9 -2
- package/dist/types/literals.d.ts.map +1 -1
- package/dist/types/literals.js +11 -5
- package/dist/types/literals.js.map +1 -1
- package/dist/types/objects.d.ts +3 -2
- package/dist/types/objects.d.ts.map +1 -1
- package/dist/types/objects.js +1 -1
- package/dist/types/objects.js.map +1 -1
- package/dist/types/parameters.d.ts +6 -5
- package/dist/types/parameters.d.ts.map +1 -1
- package/dist/types/parameters.js +88 -29
- package/dist/types/parameters.js.map +1 -1
- package/dist/types/parameters.test.js +9 -4
- package/dist/types/parameters.test.js.map +1 -1
- package/dist/types/primitives.d.ts +5 -4
- package/dist/types/primitives.d.ts.map +1 -1
- package/dist/types/primitives.js +14 -13
- package/dist/types/primitives.js.map +1 -1
- package/dist/types/references.d.ts +3 -2
- package/dist/types/references.d.ts.map +1 -1
- package/dist/types/references.js +135 -111
- package/dist/types/references.js.map +1 -1
- package/dist/types/tuples.d.ts +3 -2
- package/dist/types/tuples.d.ts.map +1 -1
- package/dist/types/tuples.js +25 -11
- package/dist/types/tuples.js.map +1 -1
- package/dist/types/unions.d.ts +3 -2
- package/dist/types/unions.d.ts.map +1 -1
- package/dist/types/unions.js +36 -21
- package/dist/types/unions.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
- package/dist/core/attributes.d.ts.map +0 -1
- package/dist/core/attributes.js +0 -141
- package/dist/core/attributes.js.map +0 -1
- package/dist/core/attributes.test.d.ts.map +0 -1
- package/dist/core/attributes.test.js.map +0 -1
- package/dist/core/boolean-context.d.ts +0 -42
- package/dist/core/boolean-context.d.ts.map +0 -1
- package/dist/core/boolean-context.js +0 -442
- package/dist/core/boolean-context.js.map +0 -1
- package/dist/core/boolean-context.test.d.ts.map +0 -1
- package/dist/core/boolean-context.test.js.map +0 -1
- package/dist/core/exports.d.ts.map +0 -1
- package/dist/core/exports.js +0 -28
- package/dist/core/exports.js.map +0 -1
- package/dist/core/imports.d.ts.map +0 -1
- package/dist/core/imports.js.map +0 -1
- package/dist/core/imports.test.d.ts.map +0 -1
- package/dist/core/imports.test.js +0 -79
- package/dist/core/imports.test.js.map +0 -1
- package/dist/core/local-names.d.ts.map +0 -1
- package/dist/core/local-names.js.map +0 -1
- package/dist/core/local-types.d.ts.map +0 -1
- package/dist/core/local-types.js.map +0 -1
- package/dist/core/module-emitter/assembly.d.ts +0 -24
- package/dist/core/module-emitter/assembly.d.ts.map +0 -1
- package/dist/core/module-emitter/assembly.js +0 -69
- package/dist/core/module-emitter/assembly.js.map +0 -1
- package/dist/core/module-emitter/header.d.ts.map +0 -1
- package/dist/core/module-emitter/header.js.map +0 -1
- package/dist/core/module-emitter/index.d.ts.map +0 -1
- package/dist/core/module-emitter/index.js.map +0 -1
- package/dist/core/module-emitter/namespace.d.ts +0 -14
- package/dist/core/module-emitter/namespace.d.ts.map +0 -1
- package/dist/core/module-emitter/namespace.js +0 -26
- package/dist/core/module-emitter/namespace.js.map +0 -1
- package/dist/core/module-emitter/orchestrator.d.ts.map +0 -1
- package/dist/core/module-emitter/orchestrator.js.map +0 -1
- package/dist/core/module-emitter/separation.d.ts.map +0 -1
- package/dist/core/module-emitter/separation.js.map +0 -1
- package/dist/core/module-emitter/static-container.d.ts.map +0 -1
- package/dist/core/module-emitter/static-container.js +0 -139
- package/dist/core/module-emitter/static-container.js.map +0 -1
- package/dist/core/module-emitter.d.ts.map +0 -1
- package/dist/core/module-emitter.js.map +0 -1
- package/dist/core/module-map.d.ts.map +0 -1
- package/dist/core/module-map.js.map +0 -1
- package/dist/core/module-map.test.d.ts.map +0 -1
- package/dist/core/module-map.test.js.map +0 -1
- package/dist/core/naming-collisions.d.ts.map +0 -1
- package/dist/core/naming-collisions.js.map +0 -1
- package/dist/core/options.d.ts.map +0 -1
- package/dist/core/options.js.map +0 -1
- package/dist/core/type-alias-index.d.ts.map +0 -1
- package/dist/core/type-alias-index.js.map +0 -1
- package/dist/core/type-compatibility.d.ts.map +0 -1
- package/dist/core/type-compatibility.js.map +0 -1
- package/dist/core/type-member-index.d.ts.map +0 -1
- package/dist/core/type-member-index.js.map +0 -1
- package/dist/core/type-params.d.ts.map +0 -1
- package/dist/core/type-params.js.map +0 -1
- package/dist/core/type-resolution.d.ts.map +0 -1
- package/dist/core/type-resolution.js.map +0 -1
- package/dist/core/type-resolution.test.d.ts.map +0 -1
- package/dist/core/type-resolution.test.js.map +0 -1
- package/dist/core/unsafe.d.ts.map +0 -1
- package/dist/core/unsafe.js.map +0 -1
- /package/dist/core/{attributes.test.d.ts → format/attributes.test.d.ts} +0 -0
- /package/dist/core/{module-emitter → format/module-emitter}/index.d.ts +0 -0
- /package/dist/core/{module-emitter → format/module-emitter}/index.js +0 -0
- /package/dist/core/{module-emitter → format/module-emitter}/separation.d.ts +0 -0
- /package/dist/core/{module-emitter → format/module-emitter}/separation.js +0 -0
- /package/dist/core/{module-emitter.d.ts → format/module-emitter.d.ts} +0 -0
- /package/dist/core/{module-emitter.js → format/module-emitter.js} +0 -0
- /package/dist/core/{options.js → format/options.js} +0 -0
- /package/dist/core/{boolean-context.test.d.ts → semantic/boolean-context.test.d.ts} +0 -0
- /package/dist/core/{imports.test.d.ts → semantic/imports.test.d.ts} +0 -0
- /package/dist/core/{local-types.js → semantic/local-types.js} +0 -0
- /package/dist/core/{module-map.js → semantic/module-map.js} +0 -0
- /package/dist/core/{module-map.test.d.ts → semantic/module-map.test.d.ts} +0 -0
- /package/dist/core/{module-map.test.js → semantic/module-map.test.js} +0 -0
- /package/dist/core/{naming-collisions.d.ts → semantic/naming-collisions.d.ts} +0 -0
- /package/dist/core/{type-alias-index.js → semantic/type-alias-index.js} +0 -0
- /package/dist/core/{type-compatibility.d.ts → semantic/type-compatibility.d.ts} +0 -0
- /package/dist/core/{type-compatibility.js → semantic/type-compatibility.js} +0 -0
- /package/dist/core/{type-member-index.js → semantic/type-member-index.js} +0 -0
- /package/dist/core/{type-params.d.ts → semantic/type-params.d.ts} +0 -0
- /package/dist/core/{type-params.js → semantic/type-params.js} +0 -0
- /package/dist/core/{type-resolution.test.d.ts → semantic/type-resolution.test.d.ts} +0 -0
- /package/dist/core/{unsafe.d.ts → semantic/unsafe.d.ts} +0 -0
- /package/dist/core/{unsafe.js → semantic/unsafe.js} +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backend AST utility functions
|
|
3
|
+
*
|
|
4
|
+
* Helpers for extracting information from C# AST nodes without
|
|
5
|
+
* going through the printer.
|
|
6
|
+
*/
|
|
7
|
+
import type { CSharpExpressionAst, CSharpTypeAst } from "./types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Extract a dotted name string from a C# expression AST.
|
|
10
|
+
*
|
|
11
|
+
* Handles identifierExpression, memberAccessExpression, and parenthesized
|
|
12
|
+
* wrappers. Used for specialization name generation, int-cast analysis,
|
|
13
|
+
* and diagnostic messages where a human-readable name is needed.
|
|
14
|
+
*
|
|
15
|
+
* Falls back to `<kind>` for unrecognized shapes (should not occur in
|
|
16
|
+
* practice for callee/type-name positions).
|
|
17
|
+
*/
|
|
18
|
+
export declare const extractCalleeNameFromAst: (ast: CSharpExpressionAst) => string;
|
|
19
|
+
/**
|
|
20
|
+
* Convert a C# type AST into deterministic C# type text.
|
|
21
|
+
*
|
|
22
|
+
* This utility is used for non-emission metadata tasks (specialization keys,
|
|
23
|
+
* JSON AOT registry keys, etc.) where a stable textual form is required.
|
|
24
|
+
*/
|
|
25
|
+
export declare const renderTypeAst: (type: CSharpTypeAst) => string;
|
|
26
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/core/format/backend-ast/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAErE;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,GAAI,KAAK,mBAAmB,KAAG,MAWnE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,aAAa,KAAG,MAmCnD,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backend AST utility functions
|
|
3
|
+
*
|
|
4
|
+
* Helpers for extracting information from C# AST nodes without
|
|
5
|
+
* going through the printer.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Extract a dotted name string from a C# expression AST.
|
|
9
|
+
*
|
|
10
|
+
* Handles identifierExpression, memberAccessExpression, and parenthesized
|
|
11
|
+
* wrappers. Used for specialization name generation, int-cast analysis,
|
|
12
|
+
* and diagnostic messages where a human-readable name is needed.
|
|
13
|
+
*
|
|
14
|
+
* Falls back to `<kind>` for unrecognized shapes (should not occur in
|
|
15
|
+
* practice for callee/type-name positions).
|
|
16
|
+
*/
|
|
17
|
+
export const extractCalleeNameFromAst = (ast) => {
|
|
18
|
+
switch (ast.kind) {
|
|
19
|
+
case "identifierExpression":
|
|
20
|
+
return ast.identifier;
|
|
21
|
+
case "memberAccessExpression":
|
|
22
|
+
return `${extractCalleeNameFromAst(ast.expression)}.${ast.memberName}`;
|
|
23
|
+
case "parenthesizedExpression":
|
|
24
|
+
return extractCalleeNameFromAst(ast.expression);
|
|
25
|
+
default:
|
|
26
|
+
return `<${ast.kind}>`;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Convert a C# type AST into deterministic C# type text.
|
|
31
|
+
*
|
|
32
|
+
* This utility is used for non-emission metadata tasks (specialization keys,
|
|
33
|
+
* JSON AOT registry keys, etc.) where a stable textual form is required.
|
|
34
|
+
*/
|
|
35
|
+
export const renderTypeAst = (type) => {
|
|
36
|
+
switch (type.kind) {
|
|
37
|
+
case "predefinedType":
|
|
38
|
+
return type.keyword;
|
|
39
|
+
case "identifierType": {
|
|
40
|
+
const args = type.typeArguments && type.typeArguments.length > 0
|
|
41
|
+
? `<${type.typeArguments.map(renderTypeAst).join(", ")}>`
|
|
42
|
+
: "";
|
|
43
|
+
return `${type.name}${args}`;
|
|
44
|
+
}
|
|
45
|
+
case "nullableType":
|
|
46
|
+
return `${renderTypeAst(type.underlyingType)}?`;
|
|
47
|
+
case "arrayType": {
|
|
48
|
+
const rank = type.rank > 1 ? `[${",".repeat(Math.max(0, type.rank - 1))}]` : "[]";
|
|
49
|
+
return `${renderTypeAst(type.elementType)}${rank}`;
|
|
50
|
+
}
|
|
51
|
+
case "pointerType":
|
|
52
|
+
return `${renderTypeAst(type.elementType)}*`;
|
|
53
|
+
case "tupleType":
|
|
54
|
+
return `(${type.elements
|
|
55
|
+
.map((e) => e.name ? `${renderTypeAst(e.type)} ${e.name}` : renderTypeAst(e.type))
|
|
56
|
+
.join(", ")})`;
|
|
57
|
+
case "varType":
|
|
58
|
+
return "var";
|
|
59
|
+
default: {
|
|
60
|
+
const exhaustive = type;
|
|
61
|
+
throw new Error(`ICE: Unhandled CSharpTypeAst kind '${exhaustive.kind}' in renderTypeAst`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/core/format/backend-ast/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAwB,EAAU,EAAE;IAC3E,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,sBAAsB;YACzB,OAAO,GAAG,CAAC,UAAU,CAAC;QACxB,KAAK,wBAAwB;YAC3B,OAAO,GAAG,wBAAwB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACzE,KAAK,yBAAyB;YAC5B,OAAO,wBAAwB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAClD;YACE,OAAO,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAmB,EAAU,EAAE;IAC3D,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,gBAAgB;YACnB,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,IAAI,GACR,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;gBACjD,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBACzD,CAAC,CAAC,EAAE,CAAC;YACT,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;QAC/B,CAAC;QACD,KAAK,cAAc;YACjB,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;QAClD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,IAAI,GACR,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACvE,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE,CAAC;QACrD,CAAC;QACD,KAAK,aAAa;YAChB,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QAC/C,KAAK,WAAW;YACd,OAAO,IAAI,IAAI,CAAC,QAAQ;iBACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CACtE;iBACA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC;QACf,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,UAAU,GAAU,IAAI,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,sCAAuC,UAA4B,CAAC,IAAI,oBAAoB,CAC7F,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Export handling
|
|
3
3
|
*/
|
|
4
4
|
import { IrExport } from "@tsonic/frontend";
|
|
5
|
-
import { EmitterContext } from "
|
|
5
|
+
import { EmitterContext } from "../../types.js";
|
|
6
6
|
/**
|
|
7
7
|
* Emit an export declaration
|
|
8
8
|
*/
|
|
9
|
-
export declare const emitExport: (exp: IrExport, context: EmitterContext) =>
|
|
9
|
+
export declare const emitExport: (exp: IrExport, context: EmitterContext) => EmitterContext;
|
|
10
10
|
//# sourceMappingURL=exports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/core/format/exports.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,UAAU,GACrB,KAAK,QAAQ,EACb,SAAS,cAAc,KACtB,cAiBF,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Export handling
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Emit an export declaration
|
|
6
|
+
*/
|
|
7
|
+
export const emitExport = (exp, context) => {
|
|
8
|
+
switch (exp.kind) {
|
|
9
|
+
case "named":
|
|
10
|
+
// Named exports are handled by marking declarations as public
|
|
11
|
+
return context;
|
|
12
|
+
case "default":
|
|
13
|
+
// Default exports are surfaced through JS bindings and are type-only for C# emission.
|
|
14
|
+
return context;
|
|
15
|
+
case "declaration":
|
|
16
|
+
// Export declarations are already handled in the body
|
|
17
|
+
return context;
|
|
18
|
+
default:
|
|
19
|
+
return context;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=exports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../../../src/core/format/exports.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,GAAa,EACb,OAAuB,EACP,EAAE;IAClB,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,OAAO;YACV,8DAA8D;YAC9D,OAAO,OAAO,CAAC;QAEjB,KAAK,SAAS;YACZ,sFAAsF;YACtF,OAAO,OAAO,CAAC;QAEjB,KAAK,aAAa;YAChB,sDAAsD;YACtD,OAAO,OAAO,CAAC;QAEjB;YACE,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format/output modules — C# text generation and output assembly.
|
|
3
|
+
*/
|
|
4
|
+
export { defaultOptions } from "./options.js";
|
|
5
|
+
export { emitExport } from "./exports.js";
|
|
6
|
+
export { emitModule } from "./module-emitter.js";
|
|
7
|
+
export { emitAttributes, emitParameterAttributes } from "./attributes.js";
|
|
8
|
+
export { allocateLocalName, emitRemappedLocalName, registerLocalName, } from "./local-names.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/format/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format/output modules — C# text generation and output assembly.
|
|
3
|
+
*/
|
|
4
|
+
export { defaultOptions } from "./options.js";
|
|
5
|
+
export { emitExport } from "./exports.js";
|
|
6
|
+
export { emitModule } from "./module-emitter.js";
|
|
7
|
+
export { emitAttributes, emitParameterAttributes } from "./attributes.js";
|
|
8
|
+
export { allocateLocalName, emitRemappedLocalName, registerLocalName, } from "./local-names.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/format/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-names.d.ts","sourceRoot":"","sources":["../../../src/core/format/local-names.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,aAAa,MAAM,EACnB,SAAS,cAAc,KACtB,cAIF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAC5B,cAAc,MAAM,EACpB,SAAS,cAAc,KACtB,kBAoBF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,cAAc,MAAM,EACpB,aAAa,MAAM,EACnB,SAAS,cAAc,KACtB,cAIF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,cAAc,MAAM,EACpB,SAAS,cAAc,KACtB,MAEmC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { escapeCSharpIdentifier } from "
|
|
1
|
+
import { escapeCSharpIdentifier } from "../../emitter-types/index.js";
|
|
2
2
|
export const reserveLocalName = (emittedName, context) => {
|
|
3
3
|
const next = new Set(context.usedLocalNames ?? []);
|
|
4
4
|
next.add(emittedName);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-names.js","sourceRoot":"","sources":["../../../src/core/format/local-names.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAQtE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,WAAmB,EACnB,OAAuB,EACP,EAAE;IAClB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACtB,OAAO,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AAC9C,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,YAAoB,EACpB,OAAuB,EACH,EAAE;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,GAAG,EAAU,CAAC;IAEzD,kCAAkC;IAClC,MAAM,WAAW,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;IACzD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAClE,CAAC;IAED,qDAAqD;IACrD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,YAAY,KAAK,MAAM,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACjD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAChE,CAAC;QACD,MAAM,EAAE,CAAC;IACX,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,YAAoB,EACpB,WAAmB,EACnB,OAAuB,EACP,EAAE;IAClB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACvC,OAAO,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AAC/C,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,YAAoB,EACpB,OAAuB,EACf,EAAE,CACV,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC;IACvC,sBAAsB,CAAC,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Final output assembly
|
|
3
|
+
*
|
|
4
|
+
* Builds a CSharpCompilationUnitAst from all emitted parts and prints it.
|
|
5
|
+
*
|
|
6
|
+
* NOTE: Tsonic generally avoids `using` statements. All type and member references
|
|
7
|
+
* use fully-qualified `global::` names to eliminate ambiguity.
|
|
8
|
+
*
|
|
9
|
+
* However, some language/tooling features require namespace `using` directives
|
|
10
|
+
* (e.g., extension-method invocation syntax for EF query precompilation).
|
|
11
|
+
*/
|
|
12
|
+
import { IrModule } from "@tsonic/frontend";
|
|
13
|
+
import { EmitterContext } from "../../../types.js";
|
|
14
|
+
import type { CSharpTypeDeclarationAst } from "../backend-ast/types.js";
|
|
15
|
+
export type AssemblyParts = {
|
|
16
|
+
readonly header: string;
|
|
17
|
+
readonly adapterDecls: readonly CSharpTypeDeclarationAst[];
|
|
18
|
+
readonly specializationDecls: readonly CSharpTypeDeclarationAst[];
|
|
19
|
+
readonly exchangeDecls: readonly CSharpTypeDeclarationAst[];
|
|
20
|
+
readonly namespaceDecls: readonly CSharpTypeDeclarationAst[];
|
|
21
|
+
readonly staticContainerDecl: CSharpTypeDeclarationAst | undefined;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Build CSharpCompilationUnitAst and print to C# text
|
|
25
|
+
*/
|
|
26
|
+
export declare const assembleOutput: (module: IrModule, parts: AssemblyParts, finalContext: EmitterContext) => string;
|
|
27
|
+
//# sourceMappingURL=assembly.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assembly.d.ts","sourceRoot":"","sources":["../../../../src/core/format/module-emitter/assembly.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,KAAK,EAGV,wBAAwB,EAEzB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC3D,QAAQ,CAAC,mBAAmB,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAClE,QAAQ,CAAC,aAAa,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC5D,QAAQ,CAAC,cAAc,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC7D,QAAQ,CAAC,mBAAmB,EAAE,wBAAwB,GAAG,SAAS,CAAC;CACpE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,QAAQ,EAChB,OAAO,aAAa,EACpB,cAAc,cAAc,KAC3B,MAiCF,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Final output assembly
|
|
3
|
+
*
|
|
4
|
+
* Builds a CSharpCompilationUnitAst from all emitted parts and prints it.
|
|
5
|
+
*
|
|
6
|
+
* NOTE: Tsonic generally avoids `using` statements. All type and member references
|
|
7
|
+
* use fully-qualified `global::` names to eliminate ambiguity.
|
|
8
|
+
*
|
|
9
|
+
* However, some language/tooling features require namespace `using` directives
|
|
10
|
+
* (e.g., extension-method invocation syntax for EF query precompilation).
|
|
11
|
+
*/
|
|
12
|
+
import { printCompilationUnit } from "../backend-ast/printer.js";
|
|
13
|
+
/**
|
|
14
|
+
* Build CSharpCompilationUnitAst and print to C# text
|
|
15
|
+
*/
|
|
16
|
+
export const assembleOutput = (module, parts, finalContext) => {
|
|
17
|
+
// Collect namespace members in order
|
|
18
|
+
const namespaceMembers = [
|
|
19
|
+
...parts.adapterDecls,
|
|
20
|
+
...parts.specializationDecls,
|
|
21
|
+
...parts.exchangeDecls,
|
|
22
|
+
];
|
|
23
|
+
namespaceMembers.push(...parts.namespaceDecls);
|
|
24
|
+
if (parts.staticContainerDecl) {
|
|
25
|
+
namespaceMembers.push(parts.staticContainerDecl);
|
|
26
|
+
}
|
|
27
|
+
const namespaceDecl = {
|
|
28
|
+
kind: "namespaceDeclaration",
|
|
29
|
+
name: module.namespace,
|
|
30
|
+
members: namespaceMembers,
|
|
31
|
+
};
|
|
32
|
+
// Collect using directives
|
|
33
|
+
const usings = Array.from(finalContext.usings)
|
|
34
|
+
.sort()
|
|
35
|
+
.map((ns) => ({ kind: "usingDirective", namespace: ns }));
|
|
36
|
+
const compilationUnit = {
|
|
37
|
+
kind: "compilationUnit",
|
|
38
|
+
header: parts.header || undefined,
|
|
39
|
+
usings,
|
|
40
|
+
members: [namespaceDecl],
|
|
41
|
+
};
|
|
42
|
+
return printCompilationUnit(compilationUnit);
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=assembly.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assembly.js","sourceRoot":"","sources":["../../../../src/core/format/module-emitter/assembly.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAiBjE;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,MAAgB,EAChB,KAAoB,EACpB,YAA4B,EACpB,EAAE;IACV,qCAAqC;IACrC,MAAM,gBAAgB,GAA+B;QACnD,GAAG,KAAK,CAAC,YAAY;QACrB,GAAG,KAAK,CAAC,mBAAmB;QAC5B,GAAG,KAAK,CAAC,aAAa;KACvB,CAAC;IAEF,gBAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;IAE/C,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC9B,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,aAAa,GAAkC;QACnD,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,MAAM,CAAC,SAAS;QACtB,OAAO,EAAE,gBAAgB;KAC1B,CAAC;IAEF,2BAA2B;IAC3B,MAAM,MAAM,GAA8B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;SACtE,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAyB,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAErE,MAAM,eAAe,GAA6B;QAChD,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,SAAS;QACjC,MAAM;QACN,OAAO,EAAE,CAAC,aAAa,CAAC;KACzB,CAAC;IAEF,OAAO,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC/C,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../src/core/format/module-emitter/header.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,QAAQ,EAChB,SAAS,cAAc,KACtB,MAIF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../../../src/core/format/module-emitter/header.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,MAAgB,EAChB,OAAuB,EACf,EAAE;IACV,OAAO,kBAAkB,CAAC,MAAM,CAAC,QAAQ,EAAE;QACzC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;KAC3C,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/format/module-emitter/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,yBAAyB,EACzB,KAAK,uBAAuB,GAC7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/format/module-emitter/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAA4B,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,yBAAyB,GAE1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GAErB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAsB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Namespace-level declaration emission
|
|
3
|
+
*
|
|
4
|
+
* Calls AST-returning declaration emitters directly, collecting
|
|
5
|
+
* CSharpTypeDeclarationAst[] for the namespace body.
|
|
6
|
+
*/
|
|
7
|
+
import { IrStatement } from "@tsonic/frontend";
|
|
8
|
+
import { EmitterContext } from "../../../types.js";
|
|
9
|
+
import type { CSharpTypeDeclarationAst } from "../backend-ast/types.js";
|
|
10
|
+
export type NamespaceEmissionResult = {
|
|
11
|
+
readonly declarations: readonly CSharpTypeDeclarationAst[];
|
|
12
|
+
readonly context: EmitterContext;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Emit namespace-level declarations as AST type declarations.
|
|
16
|
+
*
|
|
17
|
+
* Returns AST declarations. Non-structural type aliases are type-only and do
|
|
18
|
+
* not emit C# declarations.
|
|
19
|
+
*/
|
|
20
|
+
export declare const emitNamespaceDeclarations: (declarations: readonly IrStatement[], baseContext: EmitterContext, hasInheritance: boolean) => NamespaceEmissionResult;
|
|
21
|
+
//# sourceMappingURL=namespace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../../src/core/format/module-emitter/namespace.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAU,MAAM,mBAAmB,CAAC;AAO3D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAExE,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,YAAY,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC3D,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GACpC,cAAc,SAAS,WAAW,EAAE,EACpC,aAAa,cAAc,EAC3B,gBAAgB,OAAO,KACtB,uBAuDF,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Namespace-level declaration emission
|
|
3
|
+
*
|
|
4
|
+
* Calls AST-returning declaration emitters directly, collecting
|
|
5
|
+
* CSharpTypeDeclarationAst[] for the namespace body.
|
|
6
|
+
*/
|
|
7
|
+
import { indent } from "../../../types.js";
|
|
8
|
+
import { emitClassDeclaration, emitInterfaceDeclaration, emitEnumDeclaration, emitTypeAliasDeclaration, } from "../../../statements/declarations.js";
|
|
9
|
+
/**
|
|
10
|
+
* Emit namespace-level declarations as AST type declarations.
|
|
11
|
+
*
|
|
12
|
+
* Returns AST declarations. Non-structural type aliases are type-only and do
|
|
13
|
+
* not emit C# declarations.
|
|
14
|
+
*/
|
|
15
|
+
export const emitNamespaceDeclarations = (declarations, baseContext, hasInheritance) => {
|
|
16
|
+
const astDecls = [];
|
|
17
|
+
const namespaceContext = { ...indent(baseContext), hasInheritance };
|
|
18
|
+
let currentContext = namespaceContext;
|
|
19
|
+
for (const decl of declarations) {
|
|
20
|
+
const declContext = { ...namespaceContext, usings: currentContext.usings };
|
|
21
|
+
switch (decl.kind) {
|
|
22
|
+
case "classDeclaration": {
|
|
23
|
+
const [classDecls, classCtx] = emitClassDeclaration(decl, declContext);
|
|
24
|
+
astDecls.push(...classDecls);
|
|
25
|
+
currentContext = { ...classCtx, hasInheritance };
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
case "interfaceDeclaration": {
|
|
29
|
+
const [ifaceDecls, ifaceCtx] = emitInterfaceDeclaration(decl, declContext);
|
|
30
|
+
astDecls.push(...ifaceDecls);
|
|
31
|
+
currentContext = { ...ifaceCtx, hasInheritance };
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
case "enumDeclaration": {
|
|
35
|
+
const [enumAst, enumCtx] = emitEnumDeclaration(decl, declContext);
|
|
36
|
+
astDecls.push(enumAst);
|
|
37
|
+
currentContext = { ...enumCtx, hasInheritance };
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
case "typeAliasDeclaration": {
|
|
41
|
+
const [aliasAst, aliasCtx] = emitTypeAliasDeclaration(decl, declContext);
|
|
42
|
+
if (aliasAst) {
|
|
43
|
+
astDecls.push(aliasAst);
|
|
44
|
+
}
|
|
45
|
+
currentContext = { ...aliasCtx, hasInheritance };
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
default:
|
|
49
|
+
// Namespace-level declarations should only be type declarations
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
declarations: astDecls,
|
|
55
|
+
context: currentContext,
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=namespace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../../src/core/format/module-emitter/namespace.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAkB,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,qCAAqC,CAAC;AAQ7C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,YAAoC,EACpC,WAA2B,EAC3B,cAAuB,EACE,EAAE;IAC3B,MAAM,QAAQ,GAA+B,EAAE,CAAC;IAChD,MAAM,gBAAgB,GAAG,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IACpE,IAAI,cAAc,GAAG,gBAAgB,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,WAAW,GAAG,EAAE,GAAG,gBAAgB,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC;QAE3E,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,oBAAoB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBACvE,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;gBAC7B,cAAc,GAAG,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,CAAC;gBACjD,MAAM;YACR,CAAC;YAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,wBAAwB,CACrD,IAAI,EACJ,WAAW,CACZ,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;gBAC7B,cAAc,GAAG,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,CAAC;gBACjD,MAAM;YACR,CAAC;YAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAClE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvB,cAAc,GAAG,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,CAAC;gBAChD,MAAM;YACR,CAAC;YAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,wBAAwB,CACnD,IAAI,EACJ,WAAW,CACZ,CAAC;gBACF,IAAI,QAAQ,EAAE,CAAC;oBACb,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1B,CAAC;gBACD,cAAc,GAAG,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,CAAC;gBACjD,MAAM;YACR,CAAC;YAED;gBACE,gEAAgE;gBAChE,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO;QACL,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,cAAc;KACxB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../../src/core/format/module-emitter/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAuB,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAiB,MAAM,mBAAmB,CAAC;AAkMlE;;GAEG;AACH,eAAO,MAAM,UAAU,GACrB,QAAQ,QAAQ,EAChB,UAAS,OAAO,CAAC,cAAc,CAAM,KACpC,MAoHF,CAAC"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Module emission orchestrator
|
|
3
3
|
*/
|
|
4
|
-
import { createContext } from "
|
|
5
|
-
import { generateStructuralAdapters } from "
|
|
6
|
-
import { collectSpecializations, generateSpecializations, } from "
|
|
7
|
-
import { generateGeneratorExchanges } from "
|
|
4
|
+
import { createContext } from "../../../types.js";
|
|
5
|
+
import { generateStructuralAdapters } from "../../../adapter-generator.js";
|
|
6
|
+
import { collectSpecializations, generateSpecializations, } from "../../../specialization-generator.js";
|
|
7
|
+
import { generateGeneratorExchanges } from "../../../generator-exchange.js";
|
|
8
8
|
import { defaultOptions } from "../options.js";
|
|
9
|
-
import { collectTypeParameters } from "
|
|
10
|
-
import { processImports } from "
|
|
11
|
-
import { buildLocalTypes } from "
|
|
9
|
+
import { collectTypeParameters } from "../../semantic/type-params.js";
|
|
10
|
+
import { processImports } from "../../semantic/imports.js";
|
|
11
|
+
import { buildLocalTypes } from "../../semantic/local-types.js";
|
|
12
12
|
import { generateHeader } from "./header.js";
|
|
13
13
|
import { separateStatements } from "./separation.js";
|
|
14
14
|
import { emitNamespaceDeclarations } from "./namespace.js";
|
|
15
15
|
import { emitStaticContainer, hasMatchingClassName, collectStaticContainerValueSymbols, } from "./static-container.js";
|
|
16
16
|
import { assembleOutput } from "./assembly.js";
|
|
17
|
-
import { escapeCSharpIdentifier } from "
|
|
17
|
+
import { escapeCSharpIdentifier } from "../../../emitter-types/index.js";
|
|
18
18
|
const isSuppressibleTypeDeclaration = (stmt) => stmt.kind === "classDeclaration" ||
|
|
19
19
|
stmt.kind === "interfaceDeclaration" ||
|
|
20
20
|
stmt.kind === "enumDeclaration" ||
|
|
@@ -191,12 +191,12 @@ export const emitModule = (module, options = {}) => {
|
|
|
191
191
|
const processedContext = processImports(module.imports, context, module);
|
|
192
192
|
// Collect type parameters and generate adapters
|
|
193
193
|
const typeParams = collectTypeParameters(module);
|
|
194
|
-
const [
|
|
194
|
+
const [adapterDecls, adaptersContext] = generateStructuralAdapters(typeParams, processedContext);
|
|
195
195
|
// Collect specializations and generate monomorphized versions
|
|
196
196
|
const specializations = collectSpecializations(module);
|
|
197
|
-
const [
|
|
197
|
+
const [specializationDecls, specializationsContext] = generateSpecializations(specializations, adaptersContext);
|
|
198
198
|
// Generate exchange objects for generators
|
|
199
|
-
const [
|
|
199
|
+
const [exchangeDecls, exchangesContext] = generateGeneratorExchanges(module, specializationsContext);
|
|
200
200
|
// Separate namespace-level declarations from static container members
|
|
201
201
|
const { namespaceLevelDecls, staticContainerMembers, hasInheritance } = separateStatements(module);
|
|
202
202
|
const suppressedTypeDeclarations = context.options.suppressedTypeDeclarations;
|
|
@@ -231,23 +231,23 @@ export const emitModule = (module, options = {}) => {
|
|
|
231
231
|
const namespaceResult = emitNamespaceDeclarations(filteredNamespaceLevelDecls, moduleContext, hasInheritance);
|
|
232
232
|
// Emit static container class if there are any static members
|
|
233
233
|
// Use __Module suffix when there's a name collision with namespace-level declarations
|
|
234
|
-
let
|
|
234
|
+
let staticContainerDecl = undefined;
|
|
235
235
|
let finalContext = namespaceResult.context;
|
|
236
236
|
if (staticContainerMembers.length > 0) {
|
|
237
237
|
const containerResult = emitStaticContainer(module, staticContainerMembers, namespaceResult.context, // Use context from namespace declarations to preserve usings
|
|
238
238
|
hasInheritance, hasCollision // Add __Module suffix only when there's a name collision
|
|
239
239
|
);
|
|
240
|
-
|
|
240
|
+
staticContainerDecl = containerResult.declaration;
|
|
241
241
|
finalContext = containerResult.context;
|
|
242
242
|
}
|
|
243
|
-
// Assemble final output
|
|
243
|
+
// Assemble final output from AST declarations
|
|
244
244
|
const parts = {
|
|
245
245
|
header,
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
246
|
+
adapterDecls,
|
|
247
|
+
specializationDecls,
|
|
248
|
+
exchangeDecls,
|
|
249
|
+
namespaceDecls: namespaceResult.declarations,
|
|
250
|
+
staticContainerDecl,
|
|
251
251
|
};
|
|
252
252
|
return assembleOutput(module, parts, finalContext);
|
|
253
253
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../../src/core/format/module-emitter/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAkB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAsB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,MAAM,6BAA6B,GAAG,CACpC,IAAiB,EAKwC,EAAE,CAC3D,IAAI,CAAC,IAAI,KAAK,kBAAkB;IAChC,IAAI,CAAC,IAAI,KAAK,sBAAsB;IACpC,IAAI,CAAC,IAAI,KAAK,iBAAiB;IAC/B,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC;AAEvC,MAAM,kBAAkB,GAAG,CACzB,QAAgB,EAChB,IAMC,EACO,EAAE,CAAC,GAAG,QAAQ,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;AAEvD,MAAM,YAAY,GAAG,CACnB,IAAwB,EACxB,WAAmC,EAC7B,EAAE;IACR,IAAI,CAAC,IAAI;QAAE,OAAO;IAElB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,eAAe;YAClB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa;oBAAE,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YACvE,CAAC;YACD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC5C,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;wBACxC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;wBACvC,SAAS;oBACX,CAAC;oBACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;wBACtC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;oBACxC,CAAC;oBACD,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;YACD,OAAO;QACT,KAAK,mBAAmB,CAAC;QACzB,KAAK,eAAe,CAAC;QACrB,KAAK,aAAa,CAAC;QACnB,KAAK,SAAS,CAAC;QACf,KAAK,aAAa,CAAC;QACnB,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW;YACd,OAAO;QACT,KAAK,WAAW;YACd,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC5C,OAAO;QACT,KAAK,WAAW;YACd,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,YAAY;gBACrC,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACrC,OAAO;QACT,KAAK,cAAc;YACjB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU;gBACjC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACxC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAC3C,OAAO;QACT,KAAK,YAAY;YACf,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClC,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;oBACxC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;oBACvC,SAAS;gBACX,CAAC;gBACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACtC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBACxC,CAAC;gBACD,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAC/C,CAAC;YACD,OAAO;QACT,KAAK,gBAAgB;YACnB,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACxC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAC1C,OAAO;QACT,KAAK,WAAW,CAAC;QACjB,KAAK,kBAAkB;YACrB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK;gBAAE,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACnE,OAAO;IACX,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAC9B,MAAgB,EAChB,UAAwC,EACnB,EAAE;IACvB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,OAAO,GAAG,CAAC,IAAwB,EAAQ,EAAE;QACjD,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,SAAS;YAC/B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,SAAS;YAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC9B,IACE,IAAI,EAAE,IAAI,KAAK,eAAe;oBAC9B,IAAI,EAAE,IAAI,KAAK,oBAAoB,EACnC,CAAC;oBACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU;wBAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACzD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,SAAS;YAC/B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAClD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClC,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;oBAC1C,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;wBAAE,SAAS;oBACjD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACrB,SAAS;gBACX,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;oBACxC,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;wBAAE,SAAS;oBACjD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU;wBAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC3D,SAAS;gBACX,CAAC;gBACD,yFAAyF;gBACzF,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;oBAAE,SAAS;gBACjD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU;oBAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7D,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,SAAS;YAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClC,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;oBACxC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACrB,SAAS;gBACX,CAAC;gBACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU;oBAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3D,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC7B,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,SAAS;YAC/B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,MAAgB,EAChB,UAAmC,EAAE,EAC7B,EAAE;IACV,MAAM,YAAY,GAAmB,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;IACvE,MAAM,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAEhD,kDAAkD;IAClD,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG;QACd,GAAG,WAAW;QACd,UAAU;QACV,gBAAgB;KACjB,CAAC;IAEF,uBAAuB;IACvB,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAEpD,8CAA8C;IAC9C,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEzE,gDAAgD;IAChD,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,0BAA0B,CAChE,UAAU,EACV,gBAAgB,CACjB,CAAC;IAEF,8DAA8D;IAC9D,MAAM,eAAe,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,uBAAuB,CAC3E,eAAe,EACf,eAAe,CAChB,CAAC;IAEF,2CAA2C;IAC3C,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,0BAA0B,CAClE,MAAM,EACN,sBAAsB,CACvB,CAAC;IAEF,sEAAsE;IACtE,MAAM,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,cAAc,EAAE,GACnE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,0BAA0B,GAAG,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC;IAC9E,MAAM,2BAA2B,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACtE,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACtD,IACE,IAAI,CAAC,IAAI,KAAK,sBAAsB;YACpC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,EAC/B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtD,OAAO,CAAC,0BAA0B,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAChB,sBAAsB,CAAC,MAAM,GAAG,CAAC;QACjC,oBAAoB,CAAC,2BAA2B,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACtE,MAAM,sBAAsB,GAAG,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACxE,MAAM,qBAAqB,GACzB,sBAAsB,CAAC,MAAM,GAAG,CAAC;QAC/B,CAAC,CAAC,YAAY;YACZ,CAAC,CAAC,GAAG,sBAAsB,UAAU;YACrC,CAAC,CAAC,sBAAsB;QAC1B,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,YAAY,GAChB,sBAAsB,CAAC,MAAM,GAAG,CAAC;QAC/B,CAAC,CAAC,kCAAkC,CAChC,sBAAsB,EACtB,gBAAgB,CACjB;QACH,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,aAAa,GAAG;QACpB,GAAG,gBAAgB;QACnB,eAAe,EAAE,MAAM,CAAC,SAAS;QACjC,qBAAqB;QACrB,YAAY;KACb,CAAC;IAEF,0DAA0D;IAC1D,MAAM,eAAe,GAAG,yBAAyB,CAC/C,2BAA2B,EAC3B,aAAa,EACb,cAAc,CACf,CAAC;IAEF,8DAA8D;IAC9D,sFAAsF;IACtF,IAAI,mBAAmB,GAAG,SAAS,CAAC;IACpC,IAAI,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC;IAE3C,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,eAAe,GAAG,mBAAmB,CACzC,MAAM,EACN,sBAAsB,EACtB,eAAe,CAAC,OAAO,EAAE,6DAA6D;QACtF,cAAc,EACd,YAAY,CAAC,yDAAyD;SACvE,CAAC;QACF,mBAAmB,GAAG,eAAe,CAAC,WAAW,CAAC;QAClD,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC;IACzC,CAAC;IAED,8CAA8C;IAC9C,MAAM,KAAK,GAAkB;QAC3B,MAAM;QACN,YAAY;QACZ,mBAAmB;QACnB,aAAa;QACb,cAAc,EAAE,eAAe,CAAC,YAAY;QAC5C,mBAAmB;KACpB,CAAC;IAEF,OAAO,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AACrD,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"separation.d.ts","sourceRoot":"","sources":["../../../../src/core/format/module-emitter/separation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,WAAW,EAAE,CAAC;IACrD,QAAQ,CAAC,sBAAsB,EAAE,SAAS,WAAW,EAAE,CAAC;IACxD,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,QAAQ,KAAG,mBA2BrD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"separation.js","sourceRoot":"","sources":["../../../../src/core/format/module-emitter/separation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAgB,EAAuB,EAAE;IAC1E,MAAM,mBAAmB,GAAkB,EAAE,CAAC;IAC9C,MAAM,sBAAsB,GAAkB,EAAE,CAAC;IAEjD,uEAAuE;IACvE,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CACrC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,kBAAkB,IAAI,IAAI,CAAC,UAAU,CAC9D,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/B,IACE,IAAI,CAAC,IAAI,KAAK,kBAAkB;YAChC,IAAI,CAAC,IAAI,KAAK,sBAAsB;YACpC,IAAI,CAAC,IAAI,KAAK,iBAAiB;YAC/B,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAsB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,EACzE,CAAC;YACD,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO;QACL,mBAAmB;QACnB,sBAAsB;QACtB,cAAc;KACf,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Static container class emission
|
|
3
|
+
*
|
|
4
|
+
* Builds a CSharpClassDeclarationAst for the module's static container class.
|
|
5
|
+
* The container holds static fields, methods, and a __TopLevel() entry point.
|
|
3
6
|
*/
|
|
4
7
|
import { IrModule, IrStatement } from "@tsonic/frontend";
|
|
5
|
-
import { EmitterContext, type ValueSymbolInfo } from "
|
|
8
|
+
import { EmitterContext, type ValueSymbolInfo } from "../../../types.js";
|
|
9
|
+
import type { CSharpClassDeclarationAst } from "../backend-ast/types.js";
|
|
6
10
|
export type StaticContainerResult = {
|
|
7
|
-
readonly
|
|
11
|
+
readonly declaration: CSharpClassDeclarationAst;
|
|
8
12
|
readonly context: EmitterContext;
|
|
9
13
|
};
|
|
10
14
|
export declare const collectStaticContainerValueSymbols: (members: readonly IrStatement[], context: EmitterContext) => ReadonlyMap<string, ValueSymbolInfo>;
|
|
@@ -13,7 +17,8 @@ export declare const collectStaticContainerValueSymbols: (members: readonly IrSt
|
|
|
13
17
|
*/
|
|
14
18
|
export declare const hasMatchingClassName: (declarations: readonly IrStatement[], className: string) => boolean;
|
|
15
19
|
/**
|
|
16
|
-
* Emit static container class
|
|
20
|
+
* Emit static container class as CSharpClassDeclarationAst.
|
|
21
|
+
*
|
|
17
22
|
* @param useModuleSuffix - If true, adds __Module suffix to avoid collision with namespace-level types
|
|
18
23
|
*/
|
|
19
24
|
export declare const emitStaticContainer: (module: IrModule, members: readonly IrStatement[], baseContext: EmitterContext, hasInheritance: boolean, useModuleSuffix?: boolean) => StaticContainerResult;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static-container.d.ts","sourceRoot":"","sources":["../../../../src/core/format/module-emitter/static-container.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,QAAQ,EAER,WAAW,EAEZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,KAAK,eAAe,EAIrB,MAAM,mBAAmB,CAAC;AAW3B,OAAO,KAAK,EACV,yBAAyB,EAG1B,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAC7C,SAAS,SAAS,WAAW,EAAE,EAC/B,SAAS,cAAc,KACtB,WAAW,CAAC,MAAM,EAAE,eAAe,CAoDrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,cAAc,SAAS,WAAW,EAAE,EACpC,WAAW,MAAM,KAChB,OAQF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,QAAQ,EAChB,SAAS,SAAS,WAAW,EAAE,EAC/B,aAAa,cAAc,EAC3B,gBAAgB,OAAO,EACvB,kBAAiB,OAAe,KAC/B,qBAmJF,CAAC"}
|