@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
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
import { describe, it } from "mocha";
|
|
5
5
|
import { expect } from "chai";
|
|
6
6
|
import { emitAttributes, emitParameterAttributes } from "./attributes.js";
|
|
7
|
+
import { printAttributes, printExpression, printType, } from "./backend-ast/printer.js";
|
|
8
|
+
import { getIndent } from "../../types.js";
|
|
7
9
|
const defaultOptions = {
|
|
8
10
|
rootNamespace: "Test",
|
|
9
11
|
indent: 2,
|
|
@@ -18,17 +20,37 @@ const createContext = (indentLevel = 0) => ({
|
|
|
18
20
|
isAsync: false,
|
|
19
21
|
usings: new Set(),
|
|
20
22
|
});
|
|
23
|
+
/**
|
|
24
|
+
* Format attribute ASTs as declaration-level text (multi-line with indent)
|
|
25
|
+
*/
|
|
26
|
+
const formatAttrs = (attrs, context) => printAttributes(attrs, getIndent(context));
|
|
27
|
+
/**
|
|
28
|
+
* Format attribute ASTs as inline parameter attributes: [Attr1][Attr2]<space>
|
|
29
|
+
*/
|
|
30
|
+
const formatInlineAttrs = (attrs) => {
|
|
31
|
+
if (attrs.length === 0)
|
|
32
|
+
return "";
|
|
33
|
+
return (attrs
|
|
34
|
+
.map((a) => {
|
|
35
|
+
const targetPrefix = a.target ? `${a.target}: ` : "";
|
|
36
|
+
const args = a.arguments && a.arguments.length > 0
|
|
37
|
+
? `(${a.arguments.map(printExpression).join(", ")})`
|
|
38
|
+
: "";
|
|
39
|
+
return `[${targetPrefix}${printType(a.type)}${args}]`;
|
|
40
|
+
})
|
|
41
|
+
.join("") + " ");
|
|
42
|
+
};
|
|
21
43
|
describe("Attribute Emission", () => {
|
|
22
44
|
describe("emitAttributes", () => {
|
|
23
|
-
it("should return empty
|
|
45
|
+
it("should return empty array when no attributes", () => {
|
|
24
46
|
const context = createContext();
|
|
25
47
|
const [result, _ctx] = emitAttributes(undefined, context);
|
|
26
|
-
expect(result).to.equal(
|
|
48
|
+
expect(result).to.deep.equal([]);
|
|
27
49
|
});
|
|
28
|
-
it("should return empty
|
|
50
|
+
it("should return empty array for empty input", () => {
|
|
29
51
|
const context = createContext();
|
|
30
52
|
const [result, _ctx] = emitAttributes([], context);
|
|
31
|
-
expect(result).to.equal(
|
|
53
|
+
expect(result).to.deep.equal([]);
|
|
32
54
|
});
|
|
33
55
|
it("should emit single attribute without arguments", () => {
|
|
34
56
|
const context = createContext();
|
|
@@ -43,7 +65,8 @@ describe("Attribute Emission", () => {
|
|
|
43
65
|
namedArgs: new Map(),
|
|
44
66
|
};
|
|
45
67
|
const [result, _ctx] = emitAttributes([attr], context);
|
|
46
|
-
|
|
68
|
+
const text = formatAttrs(result, context);
|
|
69
|
+
expect(text).to.include("[global::System.SerializableAttribute]");
|
|
47
70
|
});
|
|
48
71
|
it("should emit attribute target specifier when provided", () => {
|
|
49
72
|
const context = createContext();
|
|
@@ -69,7 +92,8 @@ describe("Attribute Emission", () => {
|
|
|
69
92
|
namedArgs: new Map(),
|
|
70
93
|
};
|
|
71
94
|
const [result, _ctx] = emitAttributes([attr], context);
|
|
72
|
-
|
|
95
|
+
const text = formatAttrs(result, context);
|
|
96
|
+
expect(text).to.include("[return: global::System.Runtime.InteropServices.MarshalAsAttribute(global::System.Runtime.InteropServices.UnmanagedType.Bool)]");
|
|
73
97
|
});
|
|
74
98
|
it("should emit attribute with positional string argument", () => {
|
|
75
99
|
const context = createContext();
|
|
@@ -84,8 +108,9 @@ describe("Attribute Emission", () => {
|
|
|
84
108
|
namedArgs: new Map(),
|
|
85
109
|
};
|
|
86
110
|
const [result, _ctx] = emitAttributes([attr], context);
|
|
87
|
-
|
|
88
|
-
expect(
|
|
111
|
+
const text = formatAttrs(result, context);
|
|
112
|
+
expect(text).to.include("System.ObsoleteAttribute");
|
|
113
|
+
expect(text).to.include('"Use NewClass instead"');
|
|
89
114
|
});
|
|
90
115
|
it("should emit attribute with positional number argument", () => {
|
|
91
116
|
const context = createContext();
|
|
@@ -100,8 +125,9 @@ describe("Attribute Emission", () => {
|
|
|
100
125
|
namedArgs: new Map(),
|
|
101
126
|
};
|
|
102
127
|
const [result, _ctx] = emitAttributes([attr], context);
|
|
103
|
-
|
|
104
|
-
expect(
|
|
128
|
+
const text = formatAttrs(result, context);
|
|
129
|
+
expect(text).to.include("MyApp.CustomAttribute");
|
|
130
|
+
expect(text).to.include("(42)");
|
|
105
131
|
});
|
|
106
132
|
it("should emit attribute with positional boolean argument", () => {
|
|
107
133
|
const context = createContext();
|
|
@@ -116,7 +142,8 @@ describe("Attribute Emission", () => {
|
|
|
116
142
|
namedArgs: new Map(),
|
|
117
143
|
};
|
|
118
144
|
const [result, _ctx] = emitAttributes([attr], context);
|
|
119
|
-
|
|
145
|
+
const text = formatAttrs(result, context);
|
|
146
|
+
expect(text).to.include("(true)");
|
|
120
147
|
});
|
|
121
148
|
it("should emit attribute with named arguments", () => {
|
|
122
149
|
const context = createContext();
|
|
@@ -134,9 +161,10 @@ describe("Attribute Emission", () => {
|
|
|
134
161
|
]),
|
|
135
162
|
};
|
|
136
163
|
const [result, _ctx] = emitAttributes([attr], context);
|
|
137
|
-
|
|
138
|
-
expect(
|
|
139
|
-
expect(
|
|
164
|
+
const text = formatAttrs(result, context);
|
|
165
|
+
expect(text).to.include("DataContractAttribute");
|
|
166
|
+
expect(text).to.include('Name = "UserDTO"');
|
|
167
|
+
expect(text).to.include('Namespace = "urn:example"');
|
|
140
168
|
});
|
|
141
169
|
it("should emit attribute with mixed positional and named arguments", () => {
|
|
142
170
|
const context = createContext();
|
|
@@ -151,8 +179,9 @@ describe("Attribute Emission", () => {
|
|
|
151
179
|
namedArgs: new Map([["IsError", { kind: "boolean", value: true }]]),
|
|
152
180
|
};
|
|
153
181
|
const [result, _ctx] = emitAttributes([attr], context);
|
|
154
|
-
|
|
155
|
-
expect(
|
|
182
|
+
const text = formatAttrs(result, context);
|
|
183
|
+
expect(text).to.include('"Deprecated"');
|
|
184
|
+
expect(text).to.include("IsError = true");
|
|
156
185
|
});
|
|
157
186
|
it("should emit multiple attributes on separate lines", () => {
|
|
158
187
|
const context = createContext();
|
|
@@ -179,7 +208,8 @@ describe("Attribute Emission", () => {
|
|
|
179
208
|
},
|
|
180
209
|
];
|
|
181
210
|
const [result, _ctx] = emitAttributes(attrs, context);
|
|
182
|
-
const
|
|
211
|
+
const text = formatAttrs(result, context);
|
|
212
|
+
const lines = text.split("\n").filter((l) => l.length > 0);
|
|
183
213
|
expect(lines).to.have.length(2);
|
|
184
214
|
expect(lines[0]).to.include("SerializableAttribute");
|
|
185
215
|
expect(lines[1]).to.include("ObsoleteAttribute");
|
|
@@ -197,8 +227,9 @@ describe("Attribute Emission", () => {
|
|
|
197
227
|
namedArgs: new Map(),
|
|
198
228
|
};
|
|
199
229
|
const [result, _ctx] = emitAttributes([attr], context);
|
|
230
|
+
const text = formatAttrs(result, context);
|
|
200
231
|
// Should have 4 spaces (2 * 2 spaces per level)
|
|
201
|
-
expect(
|
|
232
|
+
expect(text).to.match(/^ {4}\[/);
|
|
202
233
|
});
|
|
203
234
|
it("should emit typeof argument", () => {
|
|
204
235
|
const context = createContext();
|
|
@@ -222,7 +253,8 @@ describe("Attribute Emission", () => {
|
|
|
222
253
|
namedArgs: new Map(),
|
|
223
254
|
};
|
|
224
255
|
const [result, _ctx] = emitAttributes([attr], context);
|
|
225
|
-
|
|
256
|
+
const text = formatAttrs(result, context);
|
|
257
|
+
expect(text).to.include("typeof(global::MyApp.CustomConverter)");
|
|
226
258
|
});
|
|
227
259
|
it("should emit enum argument", () => {
|
|
228
260
|
const context = createContext();
|
|
@@ -247,7 +279,8 @@ describe("Attribute Emission", () => {
|
|
|
247
279
|
namedArgs: new Map(),
|
|
248
280
|
};
|
|
249
281
|
const [result, _ctx] = emitAttributes([attr], context);
|
|
250
|
-
|
|
282
|
+
const text = formatAttrs(result, context);
|
|
283
|
+
expect(text).to.include("Newtonsoft.Json.Required.Always");
|
|
251
284
|
});
|
|
252
285
|
it("should emit array argument", () => {
|
|
253
286
|
const context = createContext();
|
|
@@ -270,7 +303,8 @@ describe("Attribute Emission", () => {
|
|
|
270
303
|
namedArgs: new Map(),
|
|
271
304
|
};
|
|
272
305
|
const [result, _ctx] = emitAttributes([attr], context);
|
|
273
|
-
|
|
306
|
+
const text = formatAttrs(result, context);
|
|
307
|
+
expect(text).to.include('new[] { "PropertyId", "Ts" }');
|
|
274
308
|
});
|
|
275
309
|
it("should escape special characters in string arguments", () => {
|
|
276
310
|
const context = createContext();
|
|
@@ -285,14 +319,15 @@ describe("Attribute Emission", () => {
|
|
|
285
319
|
namedArgs: new Map(),
|
|
286
320
|
};
|
|
287
321
|
const [result, _ctx] = emitAttributes([attr], context);
|
|
288
|
-
|
|
322
|
+
const text = formatAttrs(result, context);
|
|
323
|
+
expect(text).to.include('"Say \\"Hello\\" and \\\\escape"');
|
|
289
324
|
});
|
|
290
325
|
});
|
|
291
326
|
describe("emitParameterAttributes", () => {
|
|
292
|
-
it("should return empty
|
|
327
|
+
it("should return empty array when no attributes", () => {
|
|
293
328
|
const context = createContext();
|
|
294
329
|
const [result, _ctx] = emitParameterAttributes(undefined, context);
|
|
295
|
-
expect(result).to.equal(
|
|
330
|
+
expect(result).to.deep.equal([]);
|
|
296
331
|
});
|
|
297
332
|
it("should emit inline attribute with trailing space", () => {
|
|
298
333
|
const context = createContext();
|
|
@@ -307,8 +342,9 @@ describe("Attribute Emission", () => {
|
|
|
307
342
|
namedArgs: new Map(),
|
|
308
343
|
};
|
|
309
344
|
const [result, _ctx] = emitParameterAttributes([attr], context);
|
|
310
|
-
|
|
311
|
-
expect(
|
|
345
|
+
const text = formatInlineAttrs(result);
|
|
346
|
+
expect(text).to.match(/^\[.*\] $/);
|
|
347
|
+
expect(text).to.include("NotNullAttribute");
|
|
312
348
|
});
|
|
313
349
|
it("should emit inline attribute target specifier when provided", () => {
|
|
314
350
|
const context = createContext();
|
|
@@ -324,8 +360,9 @@ describe("Attribute Emission", () => {
|
|
|
324
360
|
namedArgs: new Map(),
|
|
325
361
|
};
|
|
326
362
|
const [result, _ctx] = emitParameterAttributes([attr], context);
|
|
327
|
-
|
|
328
|
-
expect(
|
|
363
|
+
const text = formatInlineAttrs(result);
|
|
364
|
+
expect(text).to.include("[param: global::System.Runtime.InteropServices.InAttribute]");
|
|
365
|
+
expect(text).to.match(/ $/);
|
|
329
366
|
});
|
|
330
367
|
it("should emit multiple inline attributes", () => {
|
|
331
368
|
const context = createContext();
|
|
@@ -352,11 +389,12 @@ describe("Attribute Emission", () => {
|
|
|
352
389
|
},
|
|
353
390
|
];
|
|
354
391
|
const [result, _ctx] = emitParameterAttributes(attrs, context);
|
|
392
|
+
const text = formatInlineAttrs(result);
|
|
355
393
|
// Should be on same line: [Attr1][Attr2]<space>
|
|
356
|
-
expect(
|
|
357
|
-
expect(
|
|
358
|
-
expect(
|
|
359
|
-
expect(
|
|
394
|
+
expect(text).to.not.include("\n");
|
|
395
|
+
expect(text).to.include("NotNullAttribute");
|
|
396
|
+
expect(text).to.include("CallerMemberNameAttribute");
|
|
397
|
+
expect(text).to.match(/ $/);
|
|
360
398
|
});
|
|
361
399
|
});
|
|
362
400
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attributes.test.js","sourceRoot":"","sources":["../../../src/core/format/attributes.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backend AST module exports
|
|
3
|
+
*/
|
|
4
|
+
export type { CSharpTypeAst, CSharpPredefinedTypeAst, CSharpIdentifierTypeAst, CSharpNullableTypeAst, CSharpArrayTypeAst, CSharpPointerTypeAst, CSharpTupleTypeAst, CSharpTupleElementAst, CSharpExpressionAst, CSharpLiteralExpressionAst, CSharpIdentifierExpressionAst, CSharpParenthesizedExpressionAst, CSharpMemberAccessExpressionAst, CSharpConditionalMemberAccessExpressionAst, CSharpElementAccessExpressionAst, CSharpConditionalElementAccessExpressionAst, CSharpInvocationExpressionAst, CSharpObjectCreationExpressionAst, CSharpArrayCreationExpressionAst, CSharpStackAllocArrayCreationExpressionAst, CSharpAssignmentExpressionAst, CSharpBinaryExpressionAst, CSharpPrefixUnaryExpressionAst, CSharpPostfixUnaryExpressionAst, CSharpConditionalExpressionAst, CSharpCastExpressionAst, CSharpAsExpressionAst, CSharpIsExpressionAst, CSharpDefaultExpressionAst, CSharpAwaitExpressionAst, CSharpLambdaExpressionAst, CSharpLambdaParameterAst, CSharpInterpolatedStringExpressionAst, CSharpInterpolatedStringPart, CSharpThrowExpressionAst, CSharpSuppressNullableWarningExpressionAst, CSharpTypeofExpressionAst, CSharpSwitchExpressionAst, CSharpSwitchExpressionArmAst, CSharpPatternAst, CSharpTypePatternAst, CSharpDeclarationPatternAst, CSharpVarPatternAst, CSharpConstantPatternAst, CSharpDiscardPatternAst, CSharpNegatedPatternAst, CSharpStatementAst, CSharpBlockStatementAst, CSharpLocalDeclarationStatementAst, CSharpLocalFunctionStatementAst, CSharpExpressionStatementAst, CSharpIfStatementAst, CSharpWhileStatementAst, CSharpForStatementAst, CSharpForeachStatementAst, CSharpSwitchStatementAst, CSharpSwitchSectionAst, CSharpSwitchLabelAst, CSharpTryStatementAst, CSharpCatchClauseAst, CSharpThrowStatementAst, CSharpReturnStatementAst, CSharpBreakStatementAst, CSharpContinueStatementAst, CSharpEmptyStatementAst, CSharpYieldStatementAst, CSharpVariableDeclaratorAst, CSharpParameterAst, CSharpMemberAst, CSharpFieldDeclarationAst, CSharpPropertyDeclarationAst, CSharpMethodDeclarationAst, CSharpConstructorDeclarationAst, CSharpAttributeAst, CSharpEnumMemberAst, CSharpTypeParameterAst, CSharpTypeParameterConstraintNodeAst, CSharpTypeParameterConstraintAst, CSharpTypeDeclarationAst, CSharpClassDeclarationAst, CSharpStructDeclarationAst, CSharpInterfaceDeclarationAst, CSharpEnumDeclarationAst, CSharpUsingDirectiveAst, CSharpNamespaceDeclarationAst, CSharpCompilationUnitAst, } from "./types.js";
|
|
5
|
+
export { printType, printExpression, printPattern, printStatement, printMember, printTypeDeclaration, printCompilationUnit, printAttributes, printParameter, } from "./printer.js";
|
|
6
|
+
export { extractCalleeNameFromAst, renderTypeAst } from "./utils.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/format/backend-ast/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAEV,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EAErB,mBAAmB,EACnB,0BAA0B,EAC1B,6BAA6B,EAC7B,gCAAgC,EAChC,+BAA+B,EAC/B,0CAA0C,EAC1C,gCAAgC,EAChC,2CAA2C,EAC3C,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,0CAA0C,EAC1C,6BAA6B,EAC7B,yBAAyB,EACzB,8BAA8B,EAC9B,+BAA+B,EAC/B,8BAA8B,EAC9B,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,qCAAqC,EACrC,4BAA4B,EAC5B,wBAAwB,EACxB,0CAA0C,EAC1C,yBAAyB,EACzB,yBAAyB,EACzB,4BAA4B,EAE5B,gBAAgB,EAChB,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EAEvB,kBAAkB,EAClB,uBAAuB,EACvB,kCAAkC,EAClC,+BAA+B,EAC/B,4BAA4B,EAC5B,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC3B,kBAAkB,EAElB,eAAe,EACf,yBAAyB,EACzB,4BAA4B,EAC5B,0BAA0B,EAC1B,+BAA+B,EAC/B,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,oCAAoC,EACpC,gCAAgC,EAChC,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,6BAA6B,EAC7B,wBAAwB,EAExB,uBAAuB,EACvB,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,SAAS,EACT,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backend AST module exports
|
|
3
|
+
*/
|
|
4
|
+
export { printType, printExpression, printPattern, printStatement, printMember, printTypeDeclaration, printCompilationUnit, printAttributes, printParameter, } from "./printer.js";
|
|
5
|
+
export { extractCalleeNameFromAst, renderTypeAst } from "./utils.js";
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/format/backend-ast/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiGH,OAAO,EACL,SAAS,EACT,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backend AST Printer
|
|
3
|
+
*
|
|
4
|
+
* Converts typed C# AST nodes into deterministic C# source text.
|
|
5
|
+
* Pure and stateless - no parsing, no string heuristics.
|
|
6
|
+
*
|
|
7
|
+
* Parenthesization is derived from operator precedence tables,
|
|
8
|
+
* not from advisory metadata on fragments.
|
|
9
|
+
*/
|
|
10
|
+
import type { CSharpTypeAst, CSharpExpressionAst, CSharpStatementAst, CSharpPatternAst, CSharpParameterAst, CSharpMemberAst, CSharpTypeDeclarationAst, CSharpAttributeAst, CSharpCompilationUnitAst } from "./types.js";
|
|
11
|
+
export declare const printType: (type: CSharpTypeAst) => string;
|
|
12
|
+
export declare const printExpression: (expr: CSharpExpressionAst) => string;
|
|
13
|
+
export declare const printPattern: (pattern: CSharpPatternAst) => string;
|
|
14
|
+
export declare const printStatement: (stmt: CSharpStatementAst, indent: string) => string;
|
|
15
|
+
export declare const printParameter: (param: CSharpParameterAst) => string;
|
|
16
|
+
export declare const printMember: (member: CSharpMemberAst, indent: string) => string;
|
|
17
|
+
export declare const printTypeDeclaration: (decl: CSharpTypeDeclarationAst, indent: string) => string;
|
|
18
|
+
export declare const printAttributes: (attrs: readonly CSharpAttributeAst[], indent: string) => string;
|
|
19
|
+
export declare const printCompilationUnit: (unit: CSharpCompilationUnitAst) => string;
|
|
20
|
+
/**
|
|
21
|
+
* Print a statement with "flat block" convention:
|
|
22
|
+
* block braces and inner statements share the same indent level.
|
|
23
|
+
*
|
|
24
|
+
* Used by the static container's __TopLevel method and other contexts
|
|
25
|
+
* where block bodies need Tsonic's flat-block formatting (braces at same
|
|
26
|
+
* indent as inner statements, not C#-standard nested convention).
|
|
27
|
+
*
|
|
28
|
+
* For compound statements (if/while/for/foreach/switch/try), body blocks
|
|
29
|
+
* are printed at indent+4 with flat block convention (braces and inner
|
|
30
|
+
* statements at the same level).
|
|
31
|
+
*/
|
|
32
|
+
export declare const printStatementFlatBlock: (stmt: CSharpStatementAst, indent: string) => string;
|
|
33
|
+
//# sourceMappingURL=printer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printer.d.ts","sourceRoot":"","sources":["../../../../src/core/format/backend-ast/printer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAElB,gBAAgB,EAChB,kBAAkB,EAMlB,eAAe,EACf,wBAAwB,EAIxB,kBAAkB,EAElB,wBAAwB,EAGzB,MAAM,YAAY,CAAC;AAmUpB,eAAO,MAAM,SAAS,GAAI,MAAM,aAAa,KAAG,MAgD/C,CAAC;AAMF,eAAO,MAAM,eAAe,GAAI,MAAM,mBAAmB,KAAG,MAoK3D,CAAC;AAqJF,eAAO,MAAM,YAAY,GAAI,SAAS,gBAAgB,KAAG,MA2BxD,CAAC;AAMF,eAAO,MAAM,cAAc,GACzB,MAAM,kBAAkB,EACxB,QAAQ,MAAM,KACb,MAgGF,CAAC;AAmJF,eAAO,MAAM,cAAc,GAAI,OAAO,kBAAkB,KAAG,MAwB1D,CAAC;AAMF,eAAO,MAAM,WAAW,GACtB,QAAQ,eAAe,EACvB,QAAQ,MAAM,KACb,MAmGF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,MAAM,wBAAwB,EAC9B,QAAQ,MAAM,KACb,MAkDF,CAAC;AAsDF,eAAO,MAAM,eAAe,GAC1B,OAAO,SAAS,kBAAkB,EAAE,EACpC,QAAQ,MAAM,KACb,MAYF,CAAC;AAMF,eAAO,MAAM,oBAAoB,GAC/B,MAAM,wBAAwB,KAC7B,MA4BF,CAAC;AAgBF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,kBAAkB,EACxB,QAAQ,MAAM,KACb,MA6HF,CAAC"}
|