@geastack/compiler 1.0.15
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/LICENSE +202 -0
- package/README.md +149 -0
- package/dist/cli-analyze.d.ts +1 -0
- package/dist/cli-analyze.js +61 -0
- package/dist/cli-coverage.d.ts +1 -0
- package/dist/cli-coverage.js +329 -0
- package/dist/cli-emit.d.ts +10 -0
- package/dist/cli-emit.js +398 -0
- package/dist/cli-module-graph.d.ts +18 -0
- package/dist/cli-module-graph.js +123 -0
- package/dist/cli-package-source.d.ts +5 -0
- package/dist/cli-package-source.js +116 -0
- package/dist/cli-project.d.ts +2 -0
- package/dist/cli-project.js +60 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +199 -0
- package/dist/compiler.d.ts +228 -0
- package/dist/compiler.js +1029 -0
- package/dist/conversion/algebra.d.ts +218 -0
- package/dist/conversion/algebra.js +155 -0
- package/dist/conversion/build.d.ts +67 -0
- package/dist/conversion/build.js +1378 -0
- package/dist/conversion/derive.d.ts +37 -0
- package/dist/conversion/derive.js +260 -0
- package/dist/conversion/graph-validation.d.ts +8 -0
- package/dist/conversion/graph-validation.js +97 -0
- package/dist/conversion/native-callable-adapter.d.ts +13 -0
- package/dist/conversion/native-callable-adapter.js +53 -0
- package/dist/conversion/native-class-reference.d.ts +12 -0
- package/dist/conversion/native-class-reference.js +39 -0
- package/dist/conversion/native-payload-transport.d.ts +25 -0
- package/dist/conversion/native-payload-transport.js +33 -0
- package/dist/conversion/native-selection.d.ts +49 -0
- package/dist/conversion/native-selection.js +135 -0
- package/dist/conversion/native-sum.d.ts +42 -0
- package/dist/conversion/native-sum.js +115 -0
- package/dist/conversion/nodes.d.ts +55 -0
- package/dist/conversion/nodes.js +91 -0
- package/dist/conversion/operand-view.d.ts +14 -0
- package/dist/conversion/operand-view.js +20 -0
- package/dist/conversion/record-view.d.ts +157 -0
- package/dist/conversion/record-view.js +273 -0
- package/dist/conversion/registry.d.ts +217 -0
- package/dist/conversion/registry.js +1 -0
- package/dist/diagnostics/model.d.ts +76 -0
- package/dist/diagnostics/model.js +60 -0
- package/dist/diagnostics/sweep.d.ts +31 -0
- package/dist/diagnostics/sweep.js +112 -0
- package/dist/identity/ids.d.ts +179 -0
- package/dist/identity/ids.js +212 -0
- package/dist/ir/absent-class-arm.d.ts +48 -0
- package/dist/ir/absent-class-arm.js +157 -0
- package/dist/ir/borrow-effects.d.ts +23 -0
- package/dist/ir/borrow-effects.js +151 -0
- package/dist/ir/borrowed-call-arguments.d.ts +40 -0
- package/dist/ir/borrowed-call-arguments.js +117 -0
- package/dist/ir/build.d.ts +168 -0
- package/dist/ir/build.js +459 -0
- package/dist/ir/call-dispatch.d.ts +38 -0
- package/dist/ir/call-dispatch.js +502 -0
- package/dist/ir/call-entry.d.ts +142 -0
- package/dist/ir/call-entry.js +386 -0
- package/dist/ir/callable-class-flow.d.ts +27 -0
- package/dist/ir/callable-class-flow.js +1386 -0
- package/dist/ir/callable-field-slots.d.ts +22 -0
- package/dist/ir/callable-field-slots.js +166 -0
- package/dist/ir/callable-identity-demand.d.ts +52 -0
- package/dist/ir/callable-identity-demand.js +460 -0
- package/dist/ir/callable-member-candidates.d.ts +9 -0
- package/dist/ir/callable-member-candidates.js +39 -0
- package/dist/ir/callable-records.d.ts +21 -0
- package/dist/ir/callable-records.js +411 -0
- package/dist/ir/captures.d.ts +26 -0
- package/dist/ir/captures.js +335 -0
- package/dist/ir/certificate.d.ts +45 -0
- package/dist/ir/certificate.js +47 -0
- package/dist/ir/certify/carrier-keys.d.ts +73 -0
- package/dist/ir/certify/carrier-keys.js +221 -0
- package/dist/ir/certify/function-source.d.ts +4 -0
- package/dist/ir/certify/function-source.js +28 -0
- package/dist/ir/certify/has-property-key.d.ts +88 -0
- package/dist/ir/certify/has-property-key.js +116 -0
- package/dist/ir/certify/instanceof-key.d.ts +24 -0
- package/dist/ir/certify/instanceof-key.js +35 -0
- package/dist/ir/certify/property-access-keys.d.ts +172 -0
- package/dist/ir/certify/property-access-keys.js +291 -0
- package/dist/ir/certify/property-access.d.ts +3 -0
- package/dist/ir/certify/property-access.js +597 -0
- package/dist/ir/certify/runtime-helper.d.ts +3 -0
- package/dist/ir/certify/runtime-helper.js +326 -0
- package/dist/ir/certify/typeof-operand.d.ts +14 -0
- package/dist/ir/certify/typeof-operand.js +16 -0
- package/dist/ir/certify.d.ts +123 -0
- package/dist/ir/certify.js +481 -0
- package/dist/ir/class-evaluation.d.ts +26 -0
- package/dist/ir/class-evaluation.js +50 -0
- package/dist/ir/class-static-fields.d.ts +60 -0
- package/dist/ir/class-static-fields.js +108 -0
- package/dist/ir/construct-entry.d.ts +26 -0
- package/dist/ir/construct-entry.js +117 -0
- package/dist/ir/dead-values.d.ts +90 -0
- package/dist/ir/dead-values.js +184 -0
- package/dist/ir/deferral.d.ts +99 -0
- package/dist/ir/deferral.js +409 -0
- package/dist/ir/dense-loops.d.ts +230 -0
- package/dist/ir/dense-loops.js +697 -0
- package/dist/ir/dominance.d.ts +82 -0
- package/dist/ir/dominance.js +268 -0
- package/dist/ir/emission-representations.d.ts +71 -0
- package/dist/ir/emission-representations.js +350 -0
- package/dist/ir/facts.d.ts +218 -0
- package/dist/ir/facts.js +181 -0
- package/dist/ir/fixed-data-definition.d.ts +19 -0
- package/dist/ir/fixed-data-definition.js +49 -0
- package/dist/ir/generator-split.d.ts +38 -0
- package/dist/ir/generator-split.js +329 -0
- package/dist/ir/hoist.d.ts +55 -0
- package/dist/ir/hoist.js +375 -0
- package/dist/ir/instantiation.d.ts +61 -0
- package/dist/ir/instantiation.js +137 -0
- package/dist/ir/integer-storage.d.ts +170 -0
- package/dist/ir/integer-storage.js +822 -0
- package/dist/ir/integers.d.ts +161 -0
- package/dist/ir/integers.js +539 -0
- package/dist/ir/integrity-restrictions.d.ts +50 -0
- package/dist/ir/integrity-restrictions.js +118 -0
- package/dist/ir/local-iterators.d.ts +4 -0
- package/dist/ir/local-iterators.js +27 -0
- package/dist/ir/lower-allocation.d.ts +4 -0
- package/dist/ir/lower-allocation.js +325 -0
- package/dist/ir/lower-completion.d.ts +15 -0
- package/dist/ir/lower-completion.js +25 -0
- package/dist/ir/lower-destructuring.d.ts +5 -0
- package/dist/ir/lower-destructuring.js +693 -0
- package/dist/ir/lower-element.d.ts +29 -0
- package/dist/ir/lower-element.js +111 -0
- package/dist/ir/lower-exceptions.d.ts +47 -0
- package/dist/ir/lower-exceptions.js +92 -0
- package/dist/ir/lower-flow.d.ts +137 -0
- package/dist/ir/lower-flow.js +600 -0
- package/dist/ir/lower-graph.d.ts +218 -0
- package/dist/ir/lower-graph.js +687 -0
- package/dist/ir/lower-invocation.d.ts +4 -0
- package/dist/ir/lower-invocation.js +514 -0
- package/dist/ir/lower-narrow.d.ts +53 -0
- package/dist/ir/lower-narrow.js +320 -0
- package/dist/ir/lower-operands.d.ts +272 -0
- package/dist/ir/lower-operands.js +461 -0
- package/dist/ir/lower-property.d.ts +21 -0
- package/dist/ir/lower-property.js +132 -0
- package/dist/ir/lower-protocol.d.ts +11 -0
- package/dist/ir/lower-protocol.js +118 -0
- package/dist/ir/lower-short-circuit.d.ts +41 -0
- package/dist/ir/lower-short-circuit.js +63 -0
- package/dist/ir/lower.d.ts +82 -0
- package/dist/ir/lower.js +1346 -0
- package/dist/ir/model.d.ts +1474 -0
- package/dist/ir/model.js +6 -0
- package/dist/ir/native-absent-property.d.ts +3 -0
- package/dist/ir/native-absent-property.js +13 -0
- package/dist/ir/native-array-transport.d.ts +7 -0
- package/dist/ir/native-array-transport.js +46 -0
- package/dist/ir/native-callable-bind.d.ts +9 -0
- package/dist/ir/native-callable-bind.js +30 -0
- package/dist/ir/native-carrier-predicate.d.ts +34 -0
- package/dist/ir/native-carrier-predicate.js +49 -0
- package/dist/ir/native-class-accessor.d.ts +18 -0
- package/dist/ir/native-class-accessor.js +52 -0
- package/dist/ir/native-class-construction.d.ts +16 -0
- package/dist/ir/native-class-construction.js +71 -0
- package/dist/ir/native-class-initialization.d.ts +15 -0
- package/dist/ir/native-class-initialization.js +56 -0
- package/dist/ir/native-class-origins.d.ts +13 -0
- package/dist/ir/native-class-origins.js +237 -0
- package/dist/ir/native-dictionary-transport.d.ts +6 -0
- package/dist/ir/native-dictionary-transport.js +37 -0
- package/dist/ir/native-enumeration.d.ts +14 -0
- package/dist/ir/native-enumeration.js +26 -0
- package/dist/ir/native-equality.d.ts +10 -0
- package/dist/ir/native-equality.js +18 -0
- package/dist/ir/native-field-owner.d.ts +37 -0
- package/dist/ir/native-field-owner.js +183 -0
- package/dist/ir/native-fixed-layout.d.ts +41 -0
- package/dist/ir/native-fixed-layout.js +232 -0
- package/dist/ir/native-host-construction.d.ts +53 -0
- package/dist/ir/native-host-construction.js +62 -0
- package/dist/ir/native-key-query.d.ts +4 -0
- package/dist/ir/native-key-query.js +38 -0
- package/dist/ir/native-merge-transport.d.ts +25 -0
- package/dist/ir/native-merge-transport.js +71 -0
- package/dist/ir/native-record-index-transport.d.ts +11 -0
- package/dist/ir/native-record-index-transport.js +34 -0
- package/dist/ir/native-record-index.d.ts +12 -0
- package/dist/ir/native-record-index.js +27 -0
- package/dist/ir/native-reflect-field.d.ts +5 -0
- package/dist/ir/native-reflect-field.js +33 -0
- package/dist/ir/native-sequence-transport.d.ts +7 -0
- package/dist/ir/native-sequence-transport.js +53 -0
- package/dist/ir/numeric-intrinsics.d.ts +13 -0
- package/dist/ir/numeric-intrinsics.js +57 -0
- package/dist/ir/object-value-conversions.d.ts +20 -0
- package/dist/ir/object-value-conversions.js +50 -0
- package/dist/ir/physical-class-reflection.d.ts +9 -0
- package/dist/ir/physical-class-reflection.js +57 -0
- package/dist/ir/presence-proof.d.ts +42 -0
- package/dist/ir/presence-proof.js +490 -0
- package/dist/ir/program-facts.d.ts +106 -0
- package/dist/ir/program-facts.js +319 -0
- package/dist/ir/proven-branches.d.ts +16 -0
- package/dist/ir/proven-branches.js +219 -0
- package/dist/ir/queries.d.ts +41 -0
- package/dist/ir/queries.js +213 -0
- package/dist/ir/reflection-demand.d.ts +64 -0
- package/dist/ir/reflection-demand.js +1394 -0
- package/dist/ir/refusal.d.ts +43 -0
- package/dist/ir/refusal.js +28 -0
- package/dist/ir/shake.d.ts +37 -0
- package/dist/ir/shake.js +1078 -0
- package/dist/ir/static-callables.d.ts +11 -0
- package/dist/ir/static-callables.js +163 -0
- package/dist/ir/string-layout-reuse.d.ts +13 -0
- package/dist/ir/string-layout-reuse.js +39 -0
- package/dist/ir/string-length-reuse.d.ts +8 -0
- package/dist/ir/string-length-reuse.js +47 -0
- package/dist/ir/transfer.d.ts +78 -0
- package/dist/ir/transfer.js +270 -0
- package/dist/ir/type-query-results.d.ts +25 -0
- package/dist/ir/type-query-results.js +96 -0
- package/dist/ir/typed-property-access.d.ts +100 -0
- package/dist/ir/typed-property-access.js +161 -0
- package/dist/ir/verify.d.ts +19 -0
- package/dist/ir/verify.js +355 -0
- package/dist/plugins/apple/constructors.d.ts +112 -0
- package/dist/plugins/apple/constructors.js +217 -0
- package/dist/plugins/apple/host.d.ts +181 -0
- package/dist/plugins/apple/host.js +262 -0
- package/dist/plugins/apple/jsx.d.ts +2 -0
- package/dist/plugins/apple/jsx.js +293 -0
- package/dist/plugins/apple/members.d.ts +16 -0
- package/dist/plugins/apple/members.js +190 -0
- package/dist/plugins/apple/plugin.d.ts +2 -0
- package/dist/plugins/apple/plugin.js +156 -0
- package/dist/plugins/gea/component-classes.d.ts +25 -0
- package/dist/plugins/gea/component-classes.js +162 -0
- package/dist/plugins/gea/component-inline.d.ts +13 -0
- package/dist/plugins/gea/component-inline.js +532 -0
- package/dist/plugins/gea/constructors.d.ts +23 -0
- package/dist/plugins/gea/constructors.js +100 -0
- package/dist/plugins/gea/contract.d.ts +150 -0
- package/dist/plugins/gea/contract.js +195 -0
- package/dist/plugins/gea/element-ref.d.ts +31 -0
- package/dist/plugins/gea/element-ref.js +45 -0
- package/dist/plugins/gea/host.d.ts +520 -0
- package/dist/plugins/gea/host.js +762 -0
- package/dist/plugins/gea/lower.d.ts +6 -0
- package/dist/plugins/gea/lower.js +195 -0
- package/dist/plugins/gea/members.d.ts +22 -0
- package/dist/plugins/gea/members.js +221 -0
- package/dist/plugins/gea/plugin.d.ts +22 -0
- package/dist/plugins/gea/plugin.js +307 -0
- package/dist/plugins/gea/prelude.d.ts +78 -0
- package/dist/plugins/gea/prelude.js +153 -0
- package/dist/plugins/gea/producer.d.ts +5 -0
- package/dist/plugins/gea/producer.js +52 -0
- package/dist/plugins/gea/reactive-slots.d.ts +49 -0
- package/dist/plugins/gea/reactive-slots.js +578 -0
- package/dist/plugins/gea/render-bridge.d.ts +6 -0
- package/dist/plugins/gea/render-bridge.js +281 -0
- package/dist/plugins/gea/slots.d.ts +15 -0
- package/dist/plugins/gea/slots.js +36 -0
- package/dist/plugins/gea/template-analysis.d.ts +151 -0
- package/dist/plugins/gea/template-analysis.js +346 -0
- package/dist/plugins/gea/user-agent-styles.d.ts +9 -0
- package/dist/plugins/gea/user-agent-styles.js +94 -0
- package/dist/plugins/installed.d.ts +19 -0
- package/dist/plugins/installed.js +21 -0
- package/dist/plugins/load.d.ts +7 -0
- package/dist/plugins/load.js +207 -0
- package/dist/plugins/model.d.ts +735 -0
- package/dist/plugins/model.js +47 -0
- package/dist/plugins/webgl/host.d.ts +77 -0
- package/dist/plugins/webgl/host.js +162 -0
- package/dist/plugins/webgl/plugin.d.ts +40 -0
- package/dist/plugins/webgl/plugin.js +99 -0
- package/dist/preflight/obligations.d.ts +206 -0
- package/dist/preflight/obligations.js +36 -0
- package/dist/preflight/report.d.ts +20 -0
- package/dist/preflight/report.js +61 -0
- package/dist/preflight/run.d.ts +39 -0
- package/dist/preflight/run.js +403 -0
- package/dist/project-preparation.d.ts +33 -0
- package/dist/project-preparation.js +314 -0
- package/dist/projection/abi.d.ts +82 -0
- package/dist/projection/abi.js +349 -0
- package/dist/projection/apply-arguments.d.ts +12 -0
- package/dist/projection/apply-arguments.js +20 -0
- package/dist/projection/bindings.d.ts +250 -0
- package/dist/projection/bindings.js +340 -0
- package/dist/projection/callee.d.ts +196 -0
- package/dist/projection/callee.js +444 -0
- package/dist/projection/class-property-presence.d.ts +28 -0
- package/dist/projection/class-property-presence.js +58 -0
- package/dist/projection/class-prototype.d.ts +5 -0
- package/dist/projection/class-prototype.js +23 -0
- package/dist/projection/class-storage.d.ts +26 -0
- package/dist/projection/class-storage.js +236 -0
- package/dist/projection/classes.d.ts +283 -0
- package/dist/projection/classes.js +944 -0
- package/dist/projection/coercions.d.ts +20 -0
- package/dist/projection/coercions.js +33 -0
- package/dist/projection/dispatch.d.ts +167 -0
- package/dist/projection/dispatch.js +379 -0
- package/dist/projection/fields.d.ts +123 -0
- package/dist/projection/fields.js +383 -0
- package/dist/projection/instance-test.d.ts +78 -0
- package/dist/projection/instance-test.js +156 -0
- package/dist/projection/slots.d.ts +146 -0
- package/dist/projection/slots.js +663 -0
- package/dist/projection/synthesized-abi.d.ts +61 -0
- package/dist/projection/synthesized-abi.js +94 -0
- package/dist/representation/array-index.d.ts +14 -0
- package/dist/representation/array-index.js +17 -0
- package/dist/representation/callable-object.d.ts +3 -0
- package/dist/representation/callable-object.js +6 -0
- package/dist/representation/collections.d.ts +84 -0
- package/dist/representation/collections.js +139 -0
- package/dist/representation/derive.d.ts +159 -0
- package/dist/representation/derive.js +2546 -0
- package/dist/representation/difference.d.ts +30 -0
- package/dist/representation/difference.js +240 -0
- package/dist/representation/field-descriptor-policy.d.ts +19 -0
- package/dist/representation/field-descriptor-policy.js +39 -0
- package/dist/representation/function-constructor.d.ts +13 -0
- package/dist/representation/function-constructor.js +9 -0
- package/dist/representation/host-abi.d.ts +32 -0
- package/dist/representation/host-abi.js +97 -0
- package/dist/representation/host-templates.d.ts +67 -0
- package/dist/representation/host-templates.js +94 -0
- package/dist/representation/intersection.d.ts +84 -0
- package/dist/representation/intersection.js +149 -0
- package/dist/representation/literal-destination.d.ts +43 -0
- package/dist/representation/literal-destination.js +133 -0
- package/dist/representation/merge.d.ts +18 -0
- package/dist/representation/merge.js +83 -0
- package/dist/representation/model.d.ts +1160 -0
- package/dist/representation/model.js +1019 -0
- package/dist/representation/numeric-index.d.ts +13 -0
- package/dist/representation/numeric-index.js +29 -0
- package/dist/representation/object-shape.d.ts +109 -0
- package/dist/representation/object-shape.js +123 -0
- package/dist/representation/optional.d.ts +12 -0
- package/dist/representation/optional.js +87 -0
- package/dist/representation/plan.d.ts +60 -0
- package/dist/representation/plan.js +78 -0
- package/dist/representation/policies.d.ts +589 -0
- package/dist/representation/policies.js +107 -0
- package/dist/representation/primitive-domain.d.ts +1 -0
- package/dist/representation/primitive-domain.js +1 -0
- package/dist/representation/primitives.d.ts +44 -0
- package/dist/representation/primitives.js +78 -0
- package/dist/representation/publish.d.ts +49 -0
- package/dist/representation/publish.js +648 -0
- package/dist/representation/record-fields.d.ts +96 -0
- package/dist/representation/record-fields.js +116 -0
- package/dist/representation/template-object.d.ts +11 -0
- package/dist/representation/template-object.js +26 -0
- package/dist/representation/union.d.ts +30 -0
- package/dist/representation/union.js +324 -0
- package/dist/representation/value-records.d.ts +3 -0
- package/dist/representation/value-records.js +307 -0
- package/dist/representation/verify.d.ts +17 -0
- package/dist/representation/verify.js +221 -0
- package/dist/semantics/alias-this-field-declaration-transform.d.ts +4 -0
- package/dist/semantics/alias-this-field-declaration-transform.js +207 -0
- package/dist/semantics/ambient-type-realization-transform.d.ts +62 -0
- package/dist/semantics/ambient-type-realization-transform.js +168 -0
- package/dist/semantics/ambient.d.ts +24 -0
- package/dist/semantics/ambient.js +119 -0
- package/dist/semantics/borrowed-builtin-call-bind-source-transform.d.ts +4 -0
- package/dist/semantics/borrowed-builtin-call-bind-source-transform.js +341 -0
- package/dist/semantics/callable-origins.d.ts +46 -0
- package/dist/semantics/callable-origins.js +354 -0
- package/dist/semantics/class-alias.d.ts +7 -0
- package/dist/semantics/class-alias.js +37 -0
- package/dist/semantics/class-heritage.d.ts +34 -0
- package/dist/semantics/class-heritage.js +104 -0
- package/dist/semantics/commonjs-wrapper.d.ts +69 -0
- package/dist/semantics/commonjs-wrapper.js +231 -0
- package/dist/semantics/constructor-slot-subclasses.d.ts +28 -0
- package/dist/semantics/constructor-slot-subclasses.js +112 -0
- package/dist/semantics/declaration-overlay-transform.d.ts +35 -0
- package/dist/semantics/declaration-overlay-transform.js +2157 -0
- package/dist/semantics/define-property-source-transform.d.ts +4 -0
- package/dist/semantics/define-property-source-transform.js +437 -0
- package/dist/semantics/diagnostic-source-preparation.d.ts +24 -0
- package/dist/semantics/diagnostic-source-preparation.js +82 -0
- package/dist/semantics/documentation-ranges.d.ts +22 -0
- package/dist/semantics/documentation-ranges.js +36 -0
- package/dist/semantics/dynamic-fallback.d.ts +86 -0
- package/dist/semantics/dynamic-fallback.js +249 -0
- package/dist/semantics/frontend-timing.d.ts +6 -0
- package/dist/semantics/frontend-timing.js +35 -0
- package/dist/semantics/frontend.d.ts +504 -0
- package/dist/semantics/frontend.js +1157 -0
- package/dist/semantics/host-declaration-provenance.d.ts +11 -0
- package/dist/semantics/host-declaration-provenance.js +18 -0
- package/dist/semantics/host-methods.d.ts +24 -0
- package/dist/semantics/host-methods.js +74 -0
- package/dist/semantics/host-protocols.d.ts +429 -0
- package/dist/semantics/host-protocols.js +1501 -0
- package/dist/semantics/inherited-accessor.d.ts +7 -0
- package/dist/semantics/inherited-accessor.js +48 -0
- package/dist/semantics/interface-families.d.ts +70 -0
- package/dist/semantics/interface-families.js +180 -0
- package/dist/semantics/interface-implementors.d.ts +53 -0
- package/dist/semantics/interface-implementors.js +87 -0
- package/dist/semantics/jsdoc-namepath-transform.d.ts +4 -0
- package/dist/semantics/jsdoc-namepath-transform.js +85 -0
- package/dist/semantics/model/coverage.d.ts +68 -0
- package/dist/semantics/model/coverage.js +73 -0
- package/dist/semantics/model/edges.d.ts +103 -0
- package/dist/semantics/model/edges.js +20 -0
- package/dist/semantics/model/graph.d.ts +55 -0
- package/dist/semantics/model/graph.js +129 -0
- package/dist/semantics/model/operands.d.ts +159 -0
- package/dist/semantics/model/operands.js +26 -0
- package/dist/semantics/model/operations.d.ts +496 -0
- package/dist/semantics/model/operations.js +2 -0
- package/dist/semantics/model/primitive-domain.d.ts +26 -0
- package/dist/semantics/model/primitive-domain.js +38 -0
- package/dist/semantics/model/selected-signature.d.ts +261 -0
- package/dist/semantics/model/selected-signature.js +55 -0
- package/dist/semantics/model/structural-type-table.d.ts +93 -0
- package/dist/semantics/model/structural-type-table.js +237 -0
- package/dist/semantics/model/structural-types.d.ts +367 -0
- package/dist/semantics/model/structural-types.js +200 -0
- package/dist/semantics/module-resolution.d.ts +23 -0
- package/dist/semantics/module-resolution.js +227 -0
- package/dist/semantics/new-callee-class-tag-source-transform.d.ts +4 -0
- package/dist/semantics/new-callee-class-tag-source-transform.js +64 -0
- package/dist/semantics/node-project.d.ts +13 -0
- package/dist/semantics/node-project.js +107 -0
- package/dist/semantics/node-source-hooks.d.ts +1 -0
- package/dist/semantics/node-source-hooks.js +63 -0
- package/dist/semantics/normalize/absent-globals.d.ts +143 -0
- package/dist/semantics/normalize/absent-globals.js +191 -0
- package/dist/semantics/normalize/arguments-objects.d.ts +43 -0
- package/dist/semantics/normalize/arguments-objects.js +60 -0
- package/dist/semantics/normalize/asserted-arm-absence.d.ts +28 -0
- package/dist/semantics/normalize/asserted-arm-absence.js +61 -0
- package/dist/semantics/normalize/assignment-patterns.d.ts +70 -0
- package/dist/semantics/normalize/assignment-patterns.js +147 -0
- package/dist/semantics/normalize/bag-absence.d.ts +8 -0
- package/dist/semantics/normalize/bag-absence.js +42 -0
- package/dist/semantics/normalize/binding-fixpoint.d.ts +36 -0
- package/dist/semantics/normalize/binding-fixpoint.js +140 -0
- package/dist/semantics/normalize/callback-parameter-contracts.d.ts +16 -0
- package/dist/semantics/normalize/callback-parameter-contracts.js +91 -0
- package/dist/semantics/normalize/cells/agreement.d.ts +46 -0
- package/dist/semantics/normalize/cells/agreement.js +34 -0
- package/dist/semantics/normalize/cells/candidates.d.ts +17 -0
- package/dist/semantics/normalize/cells/candidates.js +35 -0
- package/dist/semantics/normalize/cells/facts.d.ts +19 -0
- package/dist/semantics/normalize/cells/facts.js +90 -0
- package/dist/semantics/normalize/cells/index.d.ts +10 -0
- package/dist/semantics/normalize/cells/index.js +6 -0
- package/dist/semantics/normalize/cells/model.d.ts +98 -0
- package/dist/semantics/normalize/cells/model.js +2 -0
- package/dist/semantics/normalize/cells/policies/bag.d.ts +44 -0
- package/dist/semantics/normalize/cells/policies/bag.js +114 -0
- package/dist/semantics/normalize/cells/policies/collection.d.ts +42 -0
- package/dist/semantics/normalize/cells/policies/collection.js +218 -0
- package/dist/semantics/normalize/cells/policies/field.d.ts +28 -0
- package/dist/semantics/normalize/cells/policies/field.js +40 -0
- package/dist/semantics/normalize/cells/policies/index.d.ts +49 -0
- package/dist/semantics/normalize/cells/policies/index.js +58 -0
- package/dist/semantics/normalize/cells/policies/local.d.ts +18 -0
- package/dist/semantics/normalize/cells/policies/local.js +37 -0
- package/dist/semantics/normalize/cells/policies/parameter.d.ts +28 -0
- package/dist/semantics/normalize/cells/policies/parameter.js +39 -0
- package/dist/semantics/normalize/cells/policies/return.d.ts +26 -0
- package/dist/semantics/normalize/cells/policies/return.js +45 -0
- package/dist/semantics/normalize/cells/policies/shared.d.ts +33 -0
- package/dist/semantics/normalize/cells/policies/shared.js +45 -0
- package/dist/semantics/normalize/cells/policy.d.ts +72 -0
- package/dist/semantics/normalize/cells/policy.js +18 -0
- package/dist/semantics/normalize/cells/registry.d.ts +14 -0
- package/dist/semantics/normalize/cells/registry.js +17 -0
- package/dist/semantics/normalize/census-refusal.d.ts +62 -0
- package/dist/semantics/normalize/census-refusal.js +27 -0
- package/dist/semantics/normalize/census.d.ts +109 -0
- package/dist/semantics/normalize/census.js +667 -0
- package/dist/semantics/normalize/collection-bindings.d.ts +278 -0
- package/dist/semantics/normalize/collection-bindings.js +677 -0
- package/dist/semantics/normalize/commonjs-module-record.d.ts +21 -0
- package/dist/semantics/normalize/commonjs-module-record.js +289 -0
- package/dist/semantics/normalize/commonjs-require.d.ts +13 -0
- package/dist/semantics/normalize/commonjs-require.js +1527 -0
- package/dist/semantics/normalize/contribution.d.ts +63 -0
- package/dist/semantics/normalize/contribution.js +172 -0
- package/dist/semantics/normalize/dead-typeof-guards.d.ts +64 -0
- package/dist/semantics/normalize/dead-typeof-guards.js +152 -0
- package/dist/semantics/normalize/deferred-intrinsic-protocols.d.ts +57 -0
- package/dist/semantics/normalize/deferred-intrinsic-protocols.js +109 -0
- package/dist/semantics/normalize/derived-expression-type.d.ts +1070 -0
- package/dist/semantics/normalize/derived-expression-type.js +3463 -0
- package/dist/semantics/normalize/evaluation-order.d.ts +16 -0
- package/dist/semantics/normalize/evaluation-order.js +37 -0
- package/dist/semantics/normalize/field-bindings.d.ts +167 -0
- package/dist/semantics/normalize/field-bindings.js +1125 -0
- package/dist/semantics/normalize/flow/array-element-continuation.d.ts +27 -0
- package/dist/semantics/normalize/flow/array-element-continuation.js +1452 -0
- package/dist/semantics/normalize/flow/callable-array-origins.d.ts +42 -0
- package/dist/semantics/normalize/flow/callable-array-origins.js +318 -0
- package/dist/semantics/normalize/flow/callable-completions.d.ts +45 -0
- package/dist/semantics/normalize/flow/callable-completions.js +82 -0
- package/dist/semantics/normalize/flow/callable-reach.d.ts +237 -0
- package/dist/semantics/normalize/flow/callable-reach.js +7174 -0
- package/dist/semantics/normalize/flow/class-family-member-read.d.ts +16 -0
- package/dist/semantics/normalize/flow/class-family-member-read.js +992 -0
- package/dist/semantics/normalize/flow/collection-value-continuation.d.ts +21 -0
- package/dist/semantics/normalize/flow/collection-value-continuation.js +192 -0
- package/dist/semantics/normalize/flow/component-solver.d.ts +199 -0
- package/dist/semantics/normalize/flow/component-solver.js +587 -0
- package/dist/semantics/normalize/flow/computed-key-set.d.ts +84 -0
- package/dist/semantics/normalize/flow/computed-key-set.js +660 -0
- package/dist/semantics/normalize/flow/export-importers.d.ts +24 -0
- package/dist/semantics/normalize/flow/export-importers.js +269 -0
- package/dist/semantics/normalize/flow/host-text-sink.d.ts +25 -0
- package/dist/semantics/normalize/flow/host-text-sink.js +87 -0
- package/dist/semantics/normalize/flow/intrinsic-array-callback-frames.d.ts +84 -0
- package/dist/semantics/normalize/flow/intrinsic-array-callback-frames.js +180 -0
- package/dist/semantics/normalize/flow/intrinsic-data-definition.d.ts +35 -0
- package/dist/semantics/normalize/flow/intrinsic-data-definition.js +140 -0
- package/dist/semantics/normalize/flow/invocation-facts.d.ts +98 -0
- package/dist/semantics/normalize/flow/invocation-facts.js +257 -0
- package/dist/semantics/normalize/flow/member-call-forwarding.d.ts +122 -0
- package/dist/semantics/normalize/flow/member-call-forwarding.js +835 -0
- package/dist/semantics/normalize/flow/model.d.ts +357 -0
- package/dist/semantics/normalize/flow/model.js +177 -0
- package/dist/semantics/normalize/flow/native-collection-protocol.d.ts +24 -0
- package/dist/semantics/normalize/flow/native-collection-protocol.js +252 -0
- package/dist/semantics/normalize/flow/node-path-token.d.ts +3 -0
- package/dist/semantics/normalize/flow/node-path-token.js +53 -0
- package/dist/semantics/normalize/flow/object-binding-continuation.d.ts +11 -0
- package/dist/semantics/normalize/flow/object-binding-continuation.js +42 -0
- package/dist/semantics/normalize/flow/origin-authority.d.ts +56 -0
- package/dist/semantics/normalize/flow/origin-authority.js +2 -0
- package/dist/semantics/normalize/flow/owned-class-receivers.d.ts +35 -0
- package/dist/semantics/normalize/flow/owned-class-receivers.js +191 -0
- package/dist/semantics/normalize/flow/parameter-values.d.ts +27 -0
- package/dist/semantics/normalize/flow/parameter-values.js +251 -0
- package/dist/semantics/normalize/flow/proof-hypotheses.d.ts +66 -0
- package/dist/semantics/normalize/flow/proof-hypotheses.js +162 -0
- package/dist/semantics/normalize/flow/record-alias-closure.d.ts +27 -0
- package/dist/semantics/normalize/flow/record-alias-closure.js +298 -0
- package/dist/semantics/normalize/flow/seeded-origins.d.ts +43 -0
- package/dist/semantics/normalize/flow/seeded-origins.js +54 -0
- package/dist/semantics/normalize/flow/source-class-data.d.ts +132 -0
- package/dist/semantics/normalize/flow/source-class-data.js +838 -0
- package/dist/semantics/normalize/flow/source-class-instanceof.d.ts +13 -0
- package/dist/semantics/normalize/flow/source-class-instanceof.js +37 -0
- package/dist/semantics/normalize/flow/source-class-static-data.d.ts +16 -0
- package/dist/semantics/normalize/flow/source-class-static-data.js +47 -0
- package/dist/semantics/normalize/flow/source-construction-frames.d.ts +12 -0
- package/dist/semantics/normalize/flow/source-construction-frames.js +118 -0
- package/dist/semantics/normalize/flow/source-invocation-frame-layout.d.ts +34 -0
- package/dist/semantics/normalize/flow/source-invocation-frame-layout.js +78 -0
- package/dist/semantics/normalize/flow/source-invocation-receiver.d.ts +37 -0
- package/dist/semantics/normalize/flow/source-invocation-receiver.js +95 -0
- package/dist/semantics/normalize/flow/source-prototype-method-identity.d.ts +23 -0
- package/dist/semantics/normalize/flow/source-prototype-method-identity.js +81 -0
- package/dist/semantics/normalize/flow/source-record-data.d.ts +29 -0
- package/dist/semantics/normalize/flow/source-record-data.js +626 -0
- package/dist/semantics/normalize/flow/source-value-session.d.ts +77 -0
- package/dist/semantics/normalize/flow/source-value-session.js +3089 -0
- package/dist/semantics/normalize/flow/targets.d.ts +118 -0
- package/dist/semantics/normalize/flow/targets.js +405 -0
- package/dist/semantics/normalize/flow/value-flow.d.ts +36 -0
- package/dist/semantics/normalize/flow/value-flow.js +823 -0
- package/dist/semantics/normalize/flow/value-provenance.d.ts +31 -0
- package/dist/semantics/normalize/flow/value-provenance.js +112 -0
- package/dist/semantics/normalize/gating.d.ts +51 -0
- package/dist/semantics/normalize/gating.js +560 -0
- package/dist/semantics/normalize/generic-function-choice.d.ts +31 -0
- package/dist/semantics/normalize/generic-function-choice.js +115 -0
- package/dist/semantics/normalize/global-host-mutations.d.ts +51 -0
- package/dist/semantics/normalize/global-host-mutations.js +5989 -0
- package/dist/semantics/normalize/host-effect-contracts.d.ts +77 -0
- package/dist/semantics/normalize/host-effect-contracts.js +143 -0
- package/dist/semantics/normalize/host-mutation-computed-keys.d.ts +38 -0
- package/dist/semantics/normalize/host-mutation-computed-keys.js +26 -0
- package/dist/semantics/normalize/host-mutation-key-reader.d.ts +66 -0
- package/dist/semantics/normalize/host-mutation-key-reader.js +192 -0
- package/dist/semantics/normalize/host-mutation-keys.d.ts +114 -0
- package/dist/semantics/normalize/host-mutation-keys.js +183 -0
- package/dist/semantics/normalize/identities.d.ts +172 -0
- package/dist/semantics/normalize/identities.js +426 -0
- package/dist/semantics/normalize/implicit-arguments-tuple.d.ts +97 -0
- package/dist/semantics/normalize/implicit-arguments-tuple.js +197 -0
- package/dist/semantics/normalize/implicit-arguments.d.ts +11 -0
- package/dist/semantics/normalize/implicit-arguments.js +39 -0
- package/dist/semantics/normalize/instantiation.d.ts +73 -0
- package/dist/semantics/normalize/instantiation.js +399 -0
- package/dist/semantics/normalize/intrinsic-property-call.d.ts +18 -0
- package/dist/semantics/normalize/intrinsic-property-call.js +69 -0
- package/dist/semantics/normalize/intrinsic-prototype.d.ts +41 -0
- package/dist/semantics/normalize/intrinsic-prototype.js +87 -0
- package/dist/semantics/normalize/intrinsic-static-member.d.ts +14 -0
- package/dist/semantics/normalize/intrinsic-static-member.js +23 -0
- package/dist/semantics/normalize/jsdoc-type-names.d.ts +32 -0
- package/dist/semantics/normalize/jsdoc-type-names.js +512 -0
- package/dist/semantics/normalize/keyof.d.ts +32 -0
- package/dist/semantics/normalize/keyof.js +110 -0
- package/dist/semantics/normalize/local-bindings.d.ts +176 -0
- package/dist/semantics/normalize/local-bindings.js +1826 -0
- package/dist/semantics/normalize/logical-result-type.d.ts +16 -0
- package/dist/semantics/normalize/logical-result-type.js +102 -0
- package/dist/semantics/normalize/namespace-paths.d.ts +57 -0
- package/dist/semantics/normalize/namespace-paths.js +108 -0
- package/dist/semantics/normalize/normalize.d.ts +57 -0
- package/dist/semantics/normalize/normalize.js +68 -0
- package/dist/semantics/normalize/object-bag-bindings.d.ts +305 -0
- package/dist/semantics/normalize/object-bag-bindings.js +1290 -0
- package/dist/semantics/normalize/omitted-stated-parameter.d.ts +53 -0
- package/dist/semantics/normalize/omitted-stated-parameter.js +59 -0
- package/dist/semantics/normalize/open-type-form.d.ts +10 -0
- package/dist/semantics/normalize/open-type-form.js +32 -0
- package/dist/semantics/normalize/parameter-bindings.d.ts +361 -0
- package/dist/semantics/normalize/parameter-bindings.js +3339 -0
- package/dist/semantics/normalize/parameter-slot.d.ts +264 -0
- package/dist/semantics/normalize/parameter-slot.js +491 -0
- package/dist/semantics/normalize/physical-overload-result.d.ts +77 -0
- package/dist/semantics/normalize/physical-overload-result.js +99 -0
- package/dist/semantics/normalize/primitive-property-absence.d.ts +12 -0
- package/dist/semantics/normalize/primitive-property-absence.js +60 -0
- package/dist/semantics/normalize/producer-context.d.ts +376 -0
- package/dist/semantics/normalize/producer-context.js +1 -0
- package/dist/semantics/normalize/producers/allocations.d.ts +3 -0
- package/dist/semantics/normalize/producers/allocations.js +863 -0
- package/dist/semantics/normalize/producers/binding-kind.d.ts +37 -0
- package/dist/semantics/normalize/producers/binding-kind.js +36 -0
- package/dist/semantics/normalize/producers/bindings.d.ts +85 -0
- package/dist/semantics/normalize/producers/bindings.js +710 -0
- package/dist/semantics/normalize/producers/boundary.d.ts +34 -0
- package/dist/semantics/normalize/producers/boundary.js +123 -0
- package/dist/semantics/normalize/producers/class-lifecycle.d.ts +3 -0
- package/dist/semantics/normalize/producers/class-lifecycle.js +902 -0
- package/dist/semantics/normalize/producers/computations.d.ts +3 -0
- package/dist/semantics/normalize/producers/computations.js +613 -0
- package/dist/semantics/normalize/producers/control-loops.d.ts +30 -0
- package/dist/semantics/normalize/producers/control-loops.js +91 -0
- package/dist/semantics/normalize/producers/control.d.ts +30 -0
- package/dist/semantics/normalize/producers/control.js +923 -0
- package/dist/semantics/normalize/producers/declaration-lifecycle.d.ts +3 -0
- package/dist/semantics/normalize/producers/declaration-lifecycle.js +390 -0
- package/dist/semantics/normalize/producers/destructuring.d.ts +45 -0
- package/dist/semantics/normalize/producers/destructuring.js +1180 -0
- package/dist/semantics/normalize/producers/dynamic-language.d.ts +3 -0
- package/dist/semantics/normalize/producers/dynamic-language.js +70 -0
- package/dist/semantics/normalize/producers/erasure.d.ts +51 -0
- package/dist/semantics/normalize/producers/erasure.js +90 -0
- package/dist/semantics/normalize/producers/installed.d.ts +3 -0
- package/dist/semantics/normalize/producers/installed.js +55 -0
- package/dist/semantics/normalize/producers/invocations.d.ts +35 -0
- package/dist/semantics/normalize/producers/invocations.js +1796 -0
- package/dist/semantics/normalize/producers/iteration-yield.d.ts +59 -0
- package/dist/semantics/normalize/producers/iteration-yield.js +235 -0
- package/dist/semantics/normalize/producers/jsx.d.ts +3 -0
- package/dist/semantics/normalize/producers/jsx.js +360 -0
- package/dist/semantics/normalize/producers/mint.d.ts +39 -0
- package/dist/semantics/normalize/producers/mint.js +44 -0
- package/dist/semantics/normalize/producers/nullish.d.ts +16 -0
- package/dist/semantics/normalize/producers/nullish.js +27 -0
- package/dist/semantics/normalize/producers/object-assignment.d.ts +8 -0
- package/dist/semantics/normalize/producers/object-assignment.js +204 -0
- package/dist/semantics/normalize/producers/object-tag.d.ts +9 -0
- package/dist/semantics/normalize/producers/object-tag.js +119 -0
- package/dist/semantics/normalize/producers/optional-chain.d.ts +44 -0
- package/dist/semantics/normalize/producers/optional-chain.js +75 -0
- package/dist/semantics/normalize/producers/properties.d.ts +21 -0
- package/dist/semantics/normalize/producers/properties.js +1053 -0
- package/dist/semantics/normalize/producers/protocol.d.ts +67 -0
- package/dist/semantics/normalize/producers/protocol.js +695 -0
- package/dist/semantics/normalize/producers/references.d.ts +53 -0
- package/dist/semantics/normalize/producers/references.js +1027 -0
- package/dist/semantics/normalize/producers/shared.d.ts +561 -0
- package/dist/semantics/normalize/producers/shared.js +1683 -0
- package/dist/semantics/normalize/producers/spread-arguments.d.ts +72 -0
- package/dist/semantics/normalize/producers/spread-arguments.js +375 -0
- package/dist/semantics/normalize/producers/tagged-template.d.ts +5 -0
- package/dist/semantics/normalize/producers/tagged-template.js +307 -0
- package/dist/semantics/normalize/producers/tuple-spread.d.ts +189 -0
- package/dist/semantics/normalize/producers/tuple-spread.js +279 -0
- package/dist/semantics/normalize/property-key-domain.d.ts +36 -0
- package/dist/semantics/normalize/property-key-domain.js +150 -0
- package/dist/semantics/normalize/reachability.d.ts +189 -0
- package/dist/semantics/normalize/reachability.js +1057 -0
- package/dist/semantics/normalize/reassigned-bindings.d.ts +13 -0
- package/dist/semantics/normalize/reassigned-bindings.js +41 -0
- package/dist/semantics/normalize/record-storage-families.d.ts +11 -0
- package/dist/semantics/normalize/record-storage-families.js +109 -0
- package/dist/semantics/normalize/return-bindings.d.ts +260 -0
- package/dist/semantics/normalize/return-bindings.js +1311 -0
- package/dist/semantics/normalize/return-paths.d.ts +2 -0
- package/dist/semantics/normalize/return-paths.js +28 -0
- package/dist/semantics/normalize/script-global-redefinition.d.ts +44 -0
- package/dist/semantics/normalize/script-global-redefinition.js +75 -0
- package/dist/semantics/normalize/specialization.d.ts +201 -0
- package/dist/semantics/normalize/specialization.js +1824 -0
- package/dist/semantics/normalize/structural-array-element.d.ts +176 -0
- package/dist/semantics/normalize/structural-array-element.js +700 -0
- package/dist/semantics/normalize/structural-array-read.d.ts +13 -0
- package/dist/semantics/normalize/structural-array-read.js +124 -0
- package/dist/semantics/normalize/structural-callable.d.ts +12 -0
- package/dist/semantics/normalize/structural-callable.js +82 -0
- package/dist/semantics/normalize/structural-creation-order.d.ts +32 -0
- package/dist/semantics/normalize/structural-creation-order.js +111 -0
- package/dist/semantics/normalize/structural-declarations.d.ts +395 -0
- package/dist/semantics/normalize/structural-declarations.js +968 -0
- package/dist/semantics/normalize/structural-declared-body.d.ts +25 -0
- package/dist/semantics/normalize/structural-declared-body.js +147 -0
- package/dist/semantics/normalize/structural-generics.d.ts +56 -0
- package/dist/semantics/normalize/structural-generics.js +120 -0
- package/dist/semantics/normalize/structural-indexed-access.d.ts +11 -0
- package/dist/semantics/normalize/structural-indexed-access.js +126 -0
- package/dist/semantics/normalize/structural-instantiated-member.d.ts +64 -0
- package/dist/semantics/normalize/structural-instantiated-member.js +407 -0
- package/dist/semantics/normalize/structural-joins.d.ts +44 -0
- package/dist/semantics/normalize/structural-joins.js +143 -0
- package/dist/semantics/normalize/structural-layout-relevance.d.ts +29 -0
- package/dist/semantics/normalize/structural-layout-relevance.js +391 -0
- package/dist/semantics/normalize/structural-layout-type.d.ts +11 -0
- package/dist/semantics/normalize/structural-layout-type.js +1468 -0
- package/dist/semantics/normalize/structural-leaves.d.ts +49 -0
- package/dist/semantics/normalize/structural-leaves.js +125 -0
- package/dist/semantics/normalize/structural-local-union.d.ts +13 -0
- package/dist/semantics/normalize/structural-local-union.js +133 -0
- package/dist/semantics/normalize/structural-members.d.ts +26 -0
- package/dist/semantics/normalize/structural-members.js +84 -0
- package/dist/semantics/normalize/structural-mutable-method.d.ts +15 -0
- package/dist/semantics/normalize/structural-mutable-method.js +109 -0
- package/dist/semantics/normalize/structural-parts.d.ts +131 -0
- package/dist/semantics/normalize/structural-parts.js +737 -0
- package/dist/semantics/normalize/structural-receiver.d.ts +66 -0
- package/dist/semantics/normalize/structural-receiver.js +551 -0
- package/dist/semantics/normalize/structural-rules.d.ts +112 -0
- package/dist/semantics/normalize/structural-rules.js +93 -0
- package/dist/semantics/normalize/structural-self-reference.d.ts +150 -0
- package/dist/semantics/normalize/structural-self-reference.js +494 -0
- package/dist/semantics/normalize/structural.d.ts +202 -0
- package/dist/semantics/normalize/structural.js +4218 -0
- package/dist/semantics/normalize/unreduced-type-form.d.ts +41 -0
- package/dist/semantics/normalize/unreduced-type-form.js +53 -0
- package/dist/semantics/normalize/unresolvable-names.d.ts +56 -0
- package/dist/semantics/normalize/unresolvable-names.js +140 -0
- package/dist/semantics/package-sources.d.ts +16 -0
- package/dist/semantics/package-sources.js +365 -0
- package/dist/semantics/program.d.ts +151 -0
- package/dist/semantics/program.js +667 -0
- package/dist/semantics/prototype-install-source-transform.d.ts +4 -0
- package/dist/semantics/prototype-install-source-transform.js +341 -0
- package/dist/semantics/prototype-object-class-source-transform.d.ts +4 -0
- package/dist/semantics/prototype-object-class-source-transform.js +525 -0
- package/dist/semantics/prototype-reparenting.d.ts +50 -0
- package/dist/semantics/prototype-reparenting.js +317 -0
- package/dist/semantics/stable-checker.d.ts +10 -0
- package/dist/semantics/stable-checker.js +148 -0
- package/dist/semantics/subclass-member-overlay-transform.d.ts +35 -0
- package/dist/semantics/subclass-member-overlay-transform.js +1418 -0
- package/dist/semantics/symbol-keyed-expando-source-transform.d.ts +4 -0
- package/dist/semantics/symbol-keyed-expando-source-transform.js +66 -0
- package/dist/semantics/this-constructor-source-transform.d.ts +4 -0
- package/dist/semantics/this-constructor-source-transform.js +122 -0
- package/dist/semantics/uninstantiable-classes.d.ts +22 -0
- package/dist/semantics/uninstantiable-classes.js +75 -0
- package/dist/targets/cpp/balanced-units.d.ts +3 -0
- package/dist/targets/cpp/balanced-units.js +58 -0
- package/dist/targets/cpp/borrowed-call-entry.d.ts +30 -0
- package/dist/targets/cpp/borrowed-call-entry.js +68 -0
- package/dist/targets/cpp/captures.d.ts +68 -0
- package/dist/targets/cpp/captures.js +269 -0
- package/dist/targets/cpp/class-layout.d.ts +313 -0
- package/dist/targets/cpp/class-layout.js +483 -0
- package/dist/targets/cpp/class-properties/computed-method-value.d.ts +25 -0
- package/dist/targets/cpp/class-properties/computed-method-value.js +22 -0
- package/dist/targets/cpp/class-properties/emit-class-properties.d.ts +216 -0
- package/dist/targets/cpp/class-properties/emit-class-properties.js +917 -0
- package/dist/targets/cpp/class-properties/native-prototype.d.ts +11 -0
- package/dist/targets/cpp/class-properties/native-prototype.js +101 -0
- package/dist/targets/cpp/class-ref-transport.d.ts +12 -0
- package/dist/targets/cpp/class-ref-transport.js +32 -0
- package/dist/targets/cpp/conversions.d.ts +3 -0
- package/dist/targets/cpp/conversions.js +2027 -0
- package/dist/targets/cpp/deferral-safety.d.ts +82 -0
- package/dist/targets/cpp/deferral-safety.js +86 -0
- package/dist/targets/cpp/direct-call-receivers.d.ts +37 -0
- package/dist/targets/cpp/direct-call-receivers.js +79 -0
- package/dist/targets/cpp/document.d.ts +74 -0
- package/dist/targets/cpp/document.js +106 -0
- package/dist/targets/cpp/emit-allocation.d.ts +60 -0
- package/dist/targets/cpp/emit-allocation.js +573 -0
- package/dist/targets/cpp/emit-arrays.d.ts +119 -0
- package/dist/targets/cpp/emit-arrays.js +1047 -0
- package/dist/targets/cpp/emit-binding-reference.d.ts +17 -0
- package/dist/targets/cpp/emit-binding-reference.js +120 -0
- package/dist/targets/cpp/emit-bindings.d.ts +158 -0
- package/dist/targets/cpp/emit-bindings.js +769 -0
- package/dist/targets/cpp/emit-buffers.d.ts +156 -0
- package/dist/targets/cpp/emit-buffers.js +573 -0
- package/dist/targets/cpp/emit-callable.d.ts +230 -0
- package/dist/targets/cpp/emit-callable.js +2154 -0
- package/dist/targets/cpp/emit-carrier-members.d.ts +406 -0
- package/dist/targets/cpp/emit-carrier-members.js +1224 -0
- package/dist/targets/cpp/emit-coercion.d.ts +26 -0
- package/dist/targets/cpp/emit-coercion.js +39 -0
- package/dist/targets/cpp/emit-context.d.ts +1882 -0
- package/dist/targets/cpp/emit-context.js +904 -0
- package/dist/targets/cpp/emit-dynamic-properties.d.ts +174 -0
- package/dist/targets/cpp/emit-dynamic-properties.js +1249 -0
- package/dist/targets/cpp/emit-equality.d.ts +39 -0
- package/dist/targets/cpp/emit-equality.js +472 -0
- package/dist/targets/cpp/emit-exceptions.d.ts +104 -0
- package/dist/targets/cpp/emit-exceptions.js +513 -0
- package/dist/targets/cpp/emit-field-owner.d.ts +4 -0
- package/dist/targets/cpp/emit-field-owner.js +27 -0
- package/dist/targets/cpp/emit-in.d.ts +31 -0
- package/dist/targets/cpp/emit-in.js +426 -0
- package/dist/targets/cpp/emit-instanceof.d.ts +19 -0
- package/dist/targets/cpp/emit-instanceof.js +601 -0
- package/dist/targets/cpp/emit-integers.d.ts +68 -0
- package/dist/targets/cpp/emit-integers.js +184 -0
- package/dist/targets/cpp/emit-iterator.d.ts +100 -0
- package/dist/targets/cpp/emit-iterator.js +1137 -0
- package/dist/targets/cpp/emit-json.d.ts +73 -0
- package/dist/targets/cpp/emit-json.js +823 -0
- package/dist/targets/cpp/emit-jsx.d.ts +74 -0
- package/dist/targets/cpp/emit-jsx.js +806 -0
- package/dist/targets/cpp/emit-mixed-binary.d.ts +51 -0
- package/dist/targets/cpp/emit-mixed-binary.js +60 -0
- package/dist/targets/cpp/emit-namespaces.d.ts +101 -0
- package/dist/targets/cpp/emit-namespaces.js +133 -0
- package/dist/targets/cpp/emit-narrowing.d.ts +738 -0
- package/dist/targets/cpp/emit-narrowing.js +3967 -0
- package/dist/targets/cpp/emit-native-equality.d.ts +3 -0
- package/dist/targets/cpp/emit-native-equality.js +14 -0
- package/dist/targets/cpp/emit-native-selection.d.ts +5 -0
- package/dist/targets/cpp/emit-native-selection.js +37 -0
- package/dist/targets/cpp/emit-object-tag.d.ts +4 -0
- package/dist/targets/cpp/emit-object-tag.js +108 -0
- package/dist/targets/cpp/emit-owned-record.d.ts +2 -0
- package/dist/targets/cpp/emit-owned-record.js +15 -0
- package/dist/targets/cpp/emit-presence.d.ts +78 -0
- package/dist/targets/cpp/emit-presence.js +376 -0
- package/dist/targets/cpp/emit-properties.d.ts +105 -0
- package/dist/targets/cpp/emit-properties.js +1640 -0
- package/dist/targets/cpp/emit-record-view.d.ts +20 -0
- package/dist/targets/cpp/emit-record-view.js +354 -0
- package/dist/targets/cpp/emit-return.d.ts +5 -0
- package/dist/targets/cpp/emit-return.js +237 -0
- package/dist/targets/cpp/emit-sum-widening.d.ts +10 -0
- package/dist/targets/cpp/emit-sum-widening.js +69 -0
- package/dist/targets/cpp/emit-tonumber.d.ts +38 -0
- package/dist/targets/cpp/emit-tonumber.js +177 -0
- package/dist/targets/cpp/emit-tostring.d.ts +92 -0
- package/dist/targets/cpp/emit-tostring.js +556 -0
- package/dist/targets/cpp/emit-typeof.d.ts +49 -0
- package/dist/targets/cpp/emit-typeof.js +317 -0
- package/dist/targets/cpp/emit-union-properties.d.ts +181 -0
- package/dist/targets/cpp/emit-union-properties.js +1281 -0
- package/dist/targets/cpp/emit.d.ts +45 -0
- package/dist/targets/cpp/emit.js +2225 -0
- package/dist/targets/cpp/error-types.d.ts +4 -0
- package/dist/targets/cpp/error-types.js +11 -0
- package/dist/targets/cpp/function-source-reads.d.ts +72 -0
- package/dist/targets/cpp/function-source-reads.js +148 -0
- package/dist/targets/cpp/host/atomics.d.ts +25 -0
- package/dist/targets/cpp/host/atomics.js +63 -0
- package/dist/targets/cpp/host/core-globals.d.ts +108 -0
- package/dist/targets/cpp/host/core-globals.js +158 -0
- package/dist/targets/cpp/host/dynamic-argument-members.d.ts +42 -0
- package/dist/targets/cpp/host/dynamic-argument-members.js +61 -0
- package/dist/targets/cpp/host/emit-host-arity.d.ts +139 -0
- package/dist/targets/cpp/host/emit-host-arity.js +232 -0
- package/dist/targets/cpp/host/emit-host-invoke.d.ts +91 -0
- package/dist/targets/cpp/host/emit-host-invoke.js +1105 -0
- package/dist/targets/cpp/host/emit-host-object.d.ts +55 -0
- package/dist/targets/cpp/host/emit-host-object.js +2206 -0
- package/dist/targets/cpp/host/emit-host-properties.d.ts +69 -0
- package/dist/targets/cpp/host/emit-host-properties.js +533 -0
- package/dist/targets/cpp/host/emit-host-reflect.d.ts +4 -0
- package/dist/targets/cpp/host/emit-host-reflect.js +180 -0
- package/dist/targets/cpp/host/emit-host-value.d.ts +120 -0
- package/dist/targets/cpp/host/emit-host-value.js +392 -0
- package/dist/targets/cpp/host/host-members.d.ts +505 -0
- package/dist/targets/cpp/host/host-members.js +819 -0
- package/dist/targets/cpp/host/host-method-aliases.d.ts +30 -0
- package/dist/targets/cpp/host/host-method-aliases.js +76 -0
- package/dist/targets/cpp/host/native-protocols.d.ts +47 -0
- package/dist/targets/cpp/host/native-protocols.js +183 -0
- package/dist/targets/cpp/host/object-protocol.d.ts +351 -0
- package/dist/targets/cpp/host/object-protocol.js +671 -0
- package/dist/targets/cpp/host-namespace-reads.d.ts +83 -0
- package/dist/targets/cpp/host-namespace-reads.js +113 -0
- package/dist/targets/cpp/manifest/capabilities.d.ts +39 -0
- package/dist/targets/cpp/manifest/capabilities.js +1484 -0
- package/dist/targets/cpp/manifest.d.ts +23 -0
- package/dist/targets/cpp/manifest.js +113 -0
- package/dist/targets/cpp/native-error-base.d.ts +38 -0
- package/dist/targets/cpp/native-error-base.js +74 -0
- package/dist/targets/cpp/native-narrowing-transport.d.ts +12 -0
- package/dist/targets/cpp/native-narrowing-transport.js +151 -0
- package/dist/targets/cpp/native-selection-helpers.d.ts +11 -0
- package/dist/targets/cpp/native-selection-helpers.js +46 -0
- package/dist/targets/cpp/native-symbol-keys.d.ts +8 -0
- package/dist/targets/cpp/native-symbol-keys.js +34 -0
- package/dist/targets/cpp/ownership.d.ts +43 -0
- package/dist/targets/cpp/ownership.js +38 -0
- package/dist/targets/cpp/owning-conversion-input.d.ts +14 -0
- package/dist/targets/cpp/owning-conversion-input.js +12 -0
- package/dist/targets/cpp/property-read-claims.d.ts +62 -0
- package/dist/targets/cpp/property-read-claims.js +23 -0
- package/dist/targets/cpp/property-store-claims.d.ts +62 -0
- package/dist/targets/cpp/property-store-claims.js +26 -0
- package/dist/targets/cpp/prototype/emit-prototype-array.d.ts +111 -0
- package/dist/targets/cpp/prototype/emit-prototype-array.js +602 -0
- package/dist/targets/cpp/prototype/emit-prototype-date.d.ts +133 -0
- package/dist/targets/cpp/prototype/emit-prototype-date.js +515 -0
- package/dist/targets/cpp/prototype/emit-prototype-error.d.ts +13 -0
- package/dist/targets/cpp/prototype/emit-prototype-error.js +54 -0
- package/dist/targets/cpp/prototype/emit-prototype-invoke.d.ts +34 -0
- package/dist/targets/cpp/prototype/emit-prototype-invoke.js +1003 -0
- package/dist/targets/cpp/prototype/emit-prototype-iterator.d.ts +47 -0
- package/dist/targets/cpp/prototype/emit-prototype-iterator.js +250 -0
- package/dist/targets/cpp/prototype/emit-prototype-promise.d.ts +46 -0
- package/dist/targets/cpp/prototype/emit-prototype-promise.js +143 -0
- package/dist/targets/cpp/prototype/emit-prototype-regexp.d.ts +335 -0
- package/dist/targets/cpp/prototype/emit-prototype-regexp.js +853 -0
- package/dist/targets/cpp/prototype/emit-prototype-string.d.ts +42 -0
- package/dist/targets/cpp/prototype/emit-prototype-string.js +252 -0
- package/dist/targets/cpp/prototype/prototype-method-reads.d.ts +25 -0
- package/dist/targets/cpp/prototype/prototype-method-reads.js +182 -0
- package/dist/targets/cpp/reactive-dependencies.d.ts +140 -0
- package/dist/targets/cpp/reactive-dependencies.js +432 -0
- package/dist/targets/cpp/reactive-origins.d.ts +44 -0
- package/dist/targets/cpp/reactive-origins.js +82 -0
- package/dist/targets/cpp/records.d.ts +277 -0
- package/dist/targets/cpp/records.js +2427 -0
- package/dist/targets/cpp/recursive-containers.d.ts +43 -0
- package/dist/targets/cpp/recursive-containers.js +144 -0
- package/dist/targets/cpp/regexp-types.d.ts +56 -0
- package/dist/targets/cpp/regexp-types.js +59 -0
- package/dist/targets/cpp/substrate.d.ts +125 -0
- package/dist/targets/cpp/substrate.js +12 -0
- package/dist/targets/cpp/translation-unit.d.ts +219 -0
- package/dist/targets/cpp/translation-unit.js +2063 -0
- package/dist/targets/cpp/types.d.ts +280 -0
- package/dist/targets/cpp/types.js +1135 -0
- package/dist/targets/cpp/virtual-methods.d.ts +95 -0
- package/dist/targets/cpp/virtual-methods.js +264 -0
- package/package.json +95 -0
- package/src/targets/cpp/runtime/gea_dynamic_proxy.h +824 -0
- package/src/targets/cpp/runtime/gea_eval.h +1376 -0
- package/src/targets/cpp/runtime/gea_native_class_prototype.h +44 -0
- package/src/targets/cpp/runtime/gea_runtime.h +29222 -0
- package/src/targets/cpp/runtime/gea_runtime_builtins.cpp +55 -0
|
@@ -0,0 +1,738 @@
|
|
|
1
|
+
import type { NativeSelectionHelper } from './native-selection-helpers.js';
|
|
2
|
+
import type { CallableAbi, Representation, TaggedUnionArm } from '../../representation/model.js';
|
|
3
|
+
import type { IrOperand, MergeLiveArmRebuildOperation } from '../../ir/model.js';
|
|
4
|
+
import type { DeclarationId, FunctionId } from '../../identity/ids.js';
|
|
5
|
+
import type { ConversionNode } from '../../conversion/algebra.js';
|
|
6
|
+
import type { ConversionCensus } from '../../conversion/nodes.js';
|
|
7
|
+
import type { RecordLayoutPolicy } from '../../representation/policies.js';
|
|
8
|
+
import type { ClassLayout } from '../../projection/classes.js';
|
|
9
|
+
import type { CaptureIndex } from './emit-context.js';
|
|
10
|
+
import { type EmitContext } from './emit-context.js';
|
|
11
|
+
/**
|
|
12
|
+
* Whether the C++ backend has a concrete reconciliation recipe for a promise
|
|
13
|
+
* payload. Promise-to-promise conversion is state adoption plus this payload
|
|
14
|
+
* conversion, so preflight and emission must ask the same authority rather
|
|
15
|
+
* than maintaining a second, inevitably drifting list of payload pairs.
|
|
16
|
+
*/
|
|
17
|
+
export declare const promisePayloadConvertible: (source: Representation, target: Representation) => boolean;
|
|
18
|
+
/**
|
|
19
|
+
* A base-class carrier narrowed to a union of descendant classes.
|
|
20
|
+
*
|
|
21
|
+
* The physical carrier intentionally remains one `Ref<Base>`: allocation
|
|
22
|
+
* identity supplies the target union's discriminant, and checked class-family
|
|
23
|
+
* downcasts preserve the same native object. This is shared by cell and field
|
|
24
|
+
* reads because both are projections out of wider storage. An optional target
|
|
25
|
+
* preserves the source's absence around the projected descendant union.
|
|
26
|
+
*/
|
|
27
|
+
export declare const classFamilyLoadText: (ctx: ConversionSite, held: Representation, read: Representation, text: string) => string | null;
|
|
28
|
+
/**
|
|
29
|
+
* The load a narrowing licenses, or `null` when the two carriers are the same
|
|
30
|
+
* and there is nothing to load.
|
|
31
|
+
*
|
|
32
|
+
* Returning `null` for "no narrowing needed" and throwing for "no narrowing
|
|
33
|
+
* possible" keeps the two apart: the first is the ordinary case, the second is
|
|
34
|
+
* a program this compiler already knows is wrong.
|
|
35
|
+
*/
|
|
36
|
+
export declare const narrowedLoadText: (held: Representation, read: Representation, text: string) => string | null;
|
|
37
|
+
/**
|
|
38
|
+
* The store a widening needs, or `null` when the value can be assigned as it
|
|
39
|
+
* stands.
|
|
40
|
+
*
|
|
41
|
+
* This is the mirror of `narrowedLoadText` and it exists for the same reason:
|
|
42
|
+
* `const x: string | number = 3` puts a `double` into a `TaggedUnion`, and the
|
|
43
|
+
* language really does widen there -- the union is the declared carrier and the
|
|
44
|
+
* initializer is one arm of it.
|
|
45
|
+
*
|
|
46
|
+
* `gea::Optional<T>` needs nothing: it declares a converting assignment from
|
|
47
|
+
* `T`, so a present value assigns straight in and the presence flag follows.
|
|
48
|
+
* `gea::TaggedUnion` deliberately declares no such thing, because there is no
|
|
49
|
+
* one answer -- two arms can share a C++ type, and an implicit conversion would
|
|
50
|
+
* have to pick one silently. `ofArm<Index>` is where that choice is stated, and
|
|
51
|
+
* the index is the arm's position in the checker's own order, the same order
|
|
52
|
+
* the load reads back.
|
|
53
|
+
*
|
|
54
|
+
* The first arm carrying the written carrier is the one chosen. When several
|
|
55
|
+
* do, they are indistinguishable at runtime by construction -- the load
|
|
56
|
+
* dispatches over exactly that set and reads the same C++ type from any of them
|
|
57
|
+
* -- so the choice is not observable. What would be observable is choosing an
|
|
58
|
+
* arm that does *not* carry it, which is what returning `null` prevents.
|
|
59
|
+
*/
|
|
60
|
+
/**
|
|
61
|
+
* The `gea::Value::Tag` a concrete representation boxes under when it is
|
|
62
|
+
* written into a `dynamic` cell -- the widening direction `conversion/
|
|
63
|
+
* derive.ts`'s narrowing-only algebra has no answer for (see citations.md
|
|
64
|
+
* finding 1). `null` for a carrier this compiler does not yet box (a
|
|
65
|
+
* container, a proxy, an existing `dynamic` itself, which the
|
|
66
|
+
* `representationKey` equality check above already short-circuits): an
|
|
67
|
+
* omission to extend deliberately later, not to guess at here.
|
|
68
|
+
*
|
|
69
|
+
* Exported so `targets/cpp/conversions.ts`'s `widening` registry entry can
|
|
70
|
+
* ask the identical question when the conversion graph -- not just a
|
|
71
|
+
* `convert` this function already renders -- needs to know whether boxing a
|
|
72
|
+
* given carrier is a real, installed capability. One answer, asked from both
|
|
73
|
+
* the preflight authority and the emission authority, rather than a second
|
|
74
|
+
* table naming the same tags that could drift from this one.
|
|
75
|
+
*/
|
|
76
|
+
export declare const dynamicTagFor: (representation: Representation) => string | null;
|
|
77
|
+
/**
|
|
78
|
+
* One value, boxed.
|
|
79
|
+
*
|
|
80
|
+
* A CALLABLE with a rest parameter takes the ABI-stating form: which formal
|
|
81
|
+
* absorbs the trailing arguments is invisible in the C++ type -- `(a, xs: T[])`
|
|
82
|
+
* and `(a, ...xs: T[])` are the same `CallableObject` -- so a dynamic call
|
|
83
|
+
* through the box would hand the first trailing argument to a slot expecting
|
|
84
|
+
* the packed array (10.2.11 binds a rest parameter to an Array of ALL the
|
|
85
|
+
* remaining ones). The emitter is the only reader of the ABI, so it states the
|
|
86
|
+
* position here and `gea::Value::boxCallable` records the matching thunk.
|
|
87
|
+
* hono's `this[method] = (args1, ...args) => ...` is every `app.get(path,
|
|
88
|
+
* handler)` in the program.
|
|
89
|
+
*/
|
|
90
|
+
export declare const boxedText: (representation: Representation, tag: string, text: string) => string;
|
|
91
|
+
/**
|
|
92
|
+
* How a native carrier boxes into a dynamic cell, rendered over an arbitrary
|
|
93
|
+
* text naming the storage.
|
|
94
|
+
*
|
|
95
|
+
* The dynamic reason is stated HERE rather than at each caller because it is
|
|
96
|
+
* not a choice: `widenedStoreText` records below that no `DynamicReason` is
|
|
97
|
+
* consulted on this edge -- every boundary a reason names admits any concrete
|
|
98
|
+
* value the checker lets reach it -- so a caller asking "box this carrier"
|
|
99
|
+
* asks this one question and must not be free to spell a different reason for
|
|
100
|
+
* it.
|
|
101
|
+
*
|
|
102
|
+
* `storage` is a TEXT, not a member. The recipe is a function of the
|
|
103
|
+
* representation and that text alone: no field key, no struct name, no
|
|
104
|
+
* surrounding statement. So two fields spelling the same carrier spell the
|
|
105
|
+
* same recipe, and the native field table's read hook can render an optional
|
|
106
|
+
* or union carrier's arms ONCE over a slot its key chain selects into
|
|
107
|
+
* (`records.ts`) instead of once per field. `null` is the renderer's own
|
|
108
|
+
* answer that this carrier needs no widening at all.
|
|
109
|
+
*/
|
|
110
|
+
export declare const dynamicCarrierBoxText: (carrier: Representation, storage: string) => string | null;
|
|
111
|
+
/**
|
|
112
|
+
* A `dynamic` value an async body returns, settled into its `Promise<V>`
|
|
113
|
+
* result. The value may itself be a promise, which the return ADOPTS rather
|
|
114
|
+
* than fulfils with (ECMA-262 27.2.1.3.2), so the choice is made at run time
|
|
115
|
+
* by `gea::detail::promiseFromDynamic` -- the store-direction recipe below.
|
|
116
|
+
*/
|
|
117
|
+
export declare const dynamicPromiseAdoptionText: (result: Extract<Representation, {
|
|
118
|
+
kind: "promise";
|
|
119
|
+
}>, text: string) => string | null;
|
|
120
|
+
export declare const widenedStoreText: (held: Representation, written: Representation, text: string) => string | null;
|
|
121
|
+
/**
|
|
122
|
+
* Rebuilding a tagged union at a different arm ordering than the one it was
|
|
123
|
+
* built with.
|
|
124
|
+
*
|
|
125
|
+
* Two declared unions with the same member set do not have to agree on tag
|
|
126
|
+
* order -- `boolean | number` and `number | boolean` are two unrelated C++
|
|
127
|
+
* template instantiations (`gea::TaggedUnion<bool, double>` vs
|
|
128
|
+
* `gea::TaggedUnion<double, bool>`), which is exactly what a control-flow merge
|
|
129
|
+
* produces when its two branches arrive through independently-declared unions.
|
|
130
|
+
* Neither `narrowedLoadText` nor `widenedStoreText` covers it: the target is
|
|
131
|
+
* not one arm of the source, and the source is not one arm of the target. What
|
|
132
|
+
* it needs is the same discriminant `narrowedLoadText` reads, dispatched into
|
|
133
|
+
* the same constructor `widenedStoreText` calls -- read the live arm by
|
|
134
|
+
* whichever tag the source actually holds, and rebuild it at the target's tag
|
|
135
|
+
* for that same value type. `null` when some source arm has no same-typed home
|
|
136
|
+
* in the target: that is a real hole in the target's arm set, not a spelling
|
|
137
|
+
* gap, and inventing a fallback there would silently drop a live value.
|
|
138
|
+
*/
|
|
139
|
+
/**
|
|
140
|
+
* A sum converted ARM BY ARM into one payload, or `null` when an arm has no
|
|
141
|
+
* way there.
|
|
142
|
+
*
|
|
143
|
+
* tsc's `visitEachChild<T>` returns `fn === undefined ? node : fn(node, ...)`
|
|
144
|
+
* where `fn` is a `VisitEachChildFunction<any>`: the conditional merges `T`
|
|
145
|
+
* with a declared `any` into `tagged-union(native-record-ref | dynamic)`, and
|
|
146
|
+
* the function returns `T | undefined`. The typed arm IS the payload; the
|
|
147
|
+
* dynamic arm is the checked unbox every read of a declared-`any` value into
|
|
148
|
+
* a typed cell already performs (`unboxedLoadText`, which aborts naming the
|
|
149
|
+
* carrier on a mismatch). So the load dispatches on the live arm, exactly as
|
|
150
|
+
* `recastedUnionText` does for a sum whose home is another sum. Only a sum
|
|
151
|
+
* WITH a dynamic arm is answered: without one, a same-keyed arm beside
|
|
152
|
+
* others is a narrowing (`narrowedLoadText`), which selects an arm and
|
|
153
|
+
* proves nothing about the rest, and this must not stand in for it.
|
|
154
|
+
* `targets/cpp/conversions.ts`'s `recasting` admits the pair on the same
|
|
155
|
+
* predicate -- through this function -- so the admission and the render
|
|
156
|
+
* cannot drift.
|
|
157
|
+
*/
|
|
158
|
+
export declare const sumIntoPayloadText: (source: Extract<Representation, {
|
|
159
|
+
kind: "tagged-union";
|
|
160
|
+
}>, payload: Representation, text: string, wrap: (armText: string) => string) => string | null;
|
|
161
|
+
export declare const recastedUnionText: (source: Extract<Representation, {
|
|
162
|
+
kind: "tagged-union";
|
|
163
|
+
}>, target: Extract<Representation, {
|
|
164
|
+
kind: "tagged-union";
|
|
165
|
+
}>, text: string, viaLayout?: (source: Representation, target: Representation, text: string) => string | null) => string | null;
|
|
166
|
+
export interface RecastUnionHome {
|
|
167
|
+
readonly index: number;
|
|
168
|
+
readonly text: string;
|
|
169
|
+
/** `text` is already a complete value of the target union (a nested union arm homed as a whole), not an arm payload to wrap in `ofArm`. */
|
|
170
|
+
readonly whole?: true;
|
|
171
|
+
}
|
|
172
|
+
/** The text an arm of a multi-arm source is read through, bound by `recastedUnionFromHomes`; a single-arm source reads the value itself. */
|
|
173
|
+
export declare const recastUnionArmText: (source: Extract<Representation, {
|
|
174
|
+
kind: "tagged-union";
|
|
175
|
+
}>, text: string, index: number) => string;
|
|
176
|
+
/**
|
|
177
|
+
* The dispatch over a sum's arms, given each arm's home in the target: the
|
|
178
|
+
* discriminant read and the `ofArm` rebuild are one answer, whoever decided
|
|
179
|
+
* the homes -- the chain probe above or a plan the census owns
|
|
180
|
+
* (`conversion/record-view.ts`).
|
|
181
|
+
*/
|
|
182
|
+
export declare const recastedUnionFromHomes: (source: Extract<Representation, {
|
|
183
|
+
kind: "tagged-union";
|
|
184
|
+
}>, target: Extract<Representation, {
|
|
185
|
+
kind: "tagged-union";
|
|
186
|
+
}>, text: string, homes: readonly RecastUnionHome[]) => string | null;
|
|
187
|
+
/** Two array carriers of one element and ownership whose only difference is the extension an interface adds -- one C++ type. */
|
|
188
|
+
export declare const sameArrayUpToExtension: (left: Representation, right: Representation) => boolean;
|
|
189
|
+
export declare const recordsRecastable: (source: Representation, target: Representation) => boolean;
|
|
190
|
+
/**
|
|
191
|
+
* Whether an admitted record recast moves any field across the dynamic
|
|
192
|
+
* boundary: boxes a native field into a `dynamic` destination (the
|
|
193
|
+
* `to.kind === 'dynamic'` admission of `recastableFieldValue`) or unboxes a
|
|
194
|
+
* `dynamic` source field into a native one -- through an optional's payload,
|
|
195
|
+
* a nested record, or a container's element.
|
|
196
|
+
*
|
|
197
|
+
* `targets/cpp/conversions.ts` states `nativeFieldProtocol: 'unused'` for a
|
|
198
|
+
* record recast, which `ir/reflection-demand.ts` reads as "this copy asks no
|
|
199
|
+
* dynamic field table, so the fields it copies keep their sealed keys-only
|
|
200
|
+
* protocol". That is true of a recast that only copies native storage. A
|
|
201
|
+
* recast that boxes a field hands the boxed payload to every later dynamic
|
|
202
|
+
* read, and those reads DO go through the payload's field protocol -- so the
|
|
203
|
+
* claim must not be made for it, or the boxed child is emitted without the
|
|
204
|
+
* protocol the box needs (`reflection-demand.test.ts`, "a boxed destination
|
|
205
|
+
* still exposes its payload").
|
|
206
|
+
*/
|
|
207
|
+
export declare const recordRecastCrossesDynamic: (source: Representation, target: Representation) => boolean;
|
|
208
|
+
/**
|
|
209
|
+
* A record recast into a dictionary, one level out from `recordsRecastable`
|
|
210
|
+
* above.
|
|
211
|
+
*
|
|
212
|
+
* A `record`'s field set is CLOSED and known at compile time; a `dictionary`'s
|
|
213
|
+
* is open and string/number-keyed. Going from the closed shape to the open one
|
|
214
|
+
* loses no information -- every field the record has, the dictionary can hold
|
|
215
|
+
* -- so the direction is always sound, unlike the reverse (`derive.ts`'s own
|
|
216
|
+
* `dictionary` case: "Product needs a complete frozen field list", never
|
|
217
|
+
* derivable from an open one). Concretely this is `return {}` reaching a
|
|
218
|
+
* function whose declared result is `Record<string, V>`: TypeScript types the
|
|
219
|
+
* empty literal as the record with zero fields it is, not as the dictionary
|
|
220
|
+
* its ABI slot wants, and the two carriers stay genuinely different even
|
|
221
|
+
* though the empty case rebuilds to zero inserts.
|
|
222
|
+
*
|
|
223
|
+
* Every field's own value must have an installed conversion into the
|
|
224
|
+
* dictionary's declared value carrier. This is the same store each field
|
|
225
|
+
* would perform if the source literal had been contextualized as the index
|
|
226
|
+
* signature in the first place: a scalar into a declared `any` slot boxes at
|
|
227
|
+
* that explicit dynamic boundary, and a typed slot keeps its ordinary native
|
|
228
|
+
* conversion. A field with no such conversion refuses the whole recast before
|
|
229
|
+
* any output is rendered.
|
|
230
|
+
*/
|
|
231
|
+
export declare const recordCastableToDictionary: (source: Extract<Representation, {
|
|
232
|
+
kind: "record";
|
|
233
|
+
}>, target: Extract<Representation, {
|
|
234
|
+
kind: "dictionary";
|
|
235
|
+
}>) => boolean;
|
|
236
|
+
/**
|
|
237
|
+
* An open dictionary recast into another open dictionary over the same key
|
|
238
|
+
* domain whose VALUES it widens into -- `Record<string, string>` reaching a
|
|
239
|
+
* slot declared `OutgoingHttpHeaders` (`{ [name: string]: string | number |
|
|
240
|
+
* boolean | readonly string[] | undefined }`). TypeScript's `||` typing
|
|
241
|
+
* subtype-reduces the two into the wider one, so `@hono/node-server`'s `get
|
|
242
|
+
* headers()` -- `cache[2] || { 'content-type': defaultContentType }` where
|
|
243
|
+
* the slot is `Record<string, string> | [string, string][] |
|
|
244
|
+
* OutgoingHttpHeaders | undefined` -- publishes ONLY the wider dictionary as
|
|
245
|
+
* the merge's arm, and both the literal and the slot's own string-dictionary
|
|
246
|
+
* arm have to reach it. Nothing between the two carriers is a view: a
|
|
247
|
+
* `gea::Dictionary<std::string>` and a `gea::Dictionary<gea::Optional<...>>`
|
|
248
|
+
* are two template instantiations.
|
|
249
|
+
*
|
|
250
|
+
* One level out from `recordCastableToDictionary` above and admitted on the
|
|
251
|
+
* same terms: every value the source holds converts into the target's value
|
|
252
|
+
* carrier by the store it would have performed had the entry been written
|
|
253
|
+
* against the wider index signature in the first place, and the rebuild is a
|
|
254
|
+
* fresh table -- the same fresh table the record pour builds, with the same
|
|
255
|
+
* consequence, that a program which keeps writing the SOURCE afterwards and
|
|
256
|
+
* reads the widened copy does not see the write. The record pour already
|
|
257
|
+
* stands on that ground for the identical pair one shape narrower; this does
|
|
258
|
+
* not extend it further.
|
|
259
|
+
*
|
|
260
|
+
* String keys only. `gea::NumericDictionary` and `gea::SymbolDictionary` are
|
|
261
|
+
* different containers with their own iteration, and nothing has asked for
|
|
262
|
+
* them; a pair over either refuses by name rather than guessing a spelling.
|
|
263
|
+
*/
|
|
264
|
+
export declare const dictionaryCastableToDictionary: (source: Extract<Representation, {
|
|
265
|
+
kind: "dictionary";
|
|
266
|
+
}>, target: Extract<Representation, {
|
|
267
|
+
kind: "dictionary";
|
|
268
|
+
}>) => boolean;
|
|
269
|
+
/**
|
|
270
|
+
* The text a `convert` renders to, or `null` when nothing installed performs it.
|
|
271
|
+
*
|
|
272
|
+
* A convert is a carrier change the graph asked for by name -- a merge that
|
|
273
|
+
* keeps one side, an optional chain's absent arm -- so unlike a narrowing read
|
|
274
|
+
* it may widen, and unlike a widening store it may be handed an absence rather
|
|
275
|
+
* than a payload.
|
|
276
|
+
*
|
|
277
|
+
* The absence cases are not spelled here. They used to be, and that private
|
|
278
|
+
* copy was the defect: `widenedStoreText` -- which every ordinary store site
|
|
279
|
+
* asks, and which this function's own tail already delegates to -- carried no
|
|
280
|
+
* absence rule, so a `null` reaching a binding, a field or a return came out
|
|
281
|
+
* unconverted while the same `null` reaching an explicit `convert` came out
|
|
282
|
+
* right. One question, two answers, and only the quieter one was wrong. The
|
|
283
|
+
* rule now lives once, on the store side, and this function reaches it through
|
|
284
|
+
* the same tail it already used for every other widening.
|
|
285
|
+
*/
|
|
286
|
+
/**
|
|
287
|
+
* The calling convention of a carrier the backend spells
|
|
288
|
+
* `gea::CallableObject<...>`, or `null` for anything else.
|
|
289
|
+
*
|
|
290
|
+
* The constructor carriers are deliberately absent even though they also state
|
|
291
|
+
* one convention: they spell `gea::ConstructorObject<...>`, which declares no
|
|
292
|
+
* converting constructor, so the rule below does not hold for them.
|
|
293
|
+
* `function-and-constructor` is absent for a different reason -- it states two
|
|
294
|
+
* conventions, and picking one here would answer a question the value does not.
|
|
295
|
+
*/
|
|
296
|
+
export declare const callableObjectAbi: (representation: Representation) => CallableAbi | null;
|
|
297
|
+
/**
|
|
298
|
+
* An object the program asserts (`env as unknown as Bindings`) or narrows
|
|
299
|
+
* (`body instanceof Uint8Array` over a declared `string | ReadableStream`)
|
|
300
|
+
* into a union none of whose arms it can become, even as a structural view. The
|
|
301
|
+
* assertion went through `unknown`, so it is carried as that: boxed, then
|
|
302
|
+
* read back out with the exact-type check every box read makes, which aborts
|
|
303
|
+
* by name when the value is not what the program claimed rather than
|
|
304
|
+
* inventing a layout. The last resort after `structuralRecordViewText`, and
|
|
305
|
+
* asked only there and in the census's matching fallback.
|
|
306
|
+
*/
|
|
307
|
+
export declare const boxedAssertionText: (source: Representation, target: Representation, text: string) => string | null;
|
|
308
|
+
/** Whether `source` reaches `target` through a result adapter -- see `resultAdapterOf`. Exported so `conversions.ts` asks the identical question the render below answers. */
|
|
309
|
+
export declare const adaptsResultIntoTarget: (source: Representation, target: Representation) => boolean;
|
|
310
|
+
/** The same adapter selection used by the printer publishes its transport facts to the conversion census. */
|
|
311
|
+
export declare const resultAdapterTransportOf: (source: Representation, target: Representation) => {
|
|
312
|
+
readonly nativeConventions: {
|
|
313
|
+
readonly from: CallableAbi;
|
|
314
|
+
readonly to: CallableAbi;
|
|
315
|
+
} | null;
|
|
316
|
+
} | null;
|
|
317
|
+
/** The adapter itself, or `null` for a pair that needs none -- see `resultAdapterOf`. */
|
|
318
|
+
export declare const resultAdaptedCallableText: (source: Representation, target: Representation, text: string) => string | null;
|
|
319
|
+
/**
|
|
320
|
+
* A callable filling a slot that declares MORE parameters than it does, the
|
|
321
|
+
* extra ones landing after every one the source itself names./**
|
|
322
|
+
* A callable filling a slot that declares MORE parameters than it does, the
|
|
323
|
+
* extra ones landing after every one the source itself names.
|
|
324
|
+
*
|
|
325
|
+
* ECMA-262 does not bind the extra arguments, so `() => void` really is a
|
|
326
|
+
* `(time: number) => void` and TypeScript accepts it everywhere, and the same
|
|
327
|
+
* is true one prefix over: hono's `Hono.getPath` merges two
|
|
328
|
+
* `(request: Request) => string` values into a field declared
|
|
329
|
+
* `(request: Request, options?: {env?}) => string` -- one shared leading
|
|
330
|
+
* parameter, one trailing parameter neither physical function looks at.
|
|
331
|
+
* `gea::CallableObject`'s own converting constructor (gea_runtime.h) performs
|
|
332
|
+
* both shapes, so the value converts by being written where the wider one is
|
|
333
|
+
* expected and needs no text of its own.
|
|
334
|
+
*
|
|
335
|
+
* The source's own parameters must be a TYPE-MATCHING PREFIX of the target's,
|
|
336
|
+
* not merely a shorter count: converting an arbitrary prefix without proving
|
|
337
|
+
* each shared position's type matches would let a wrong guess pass a value
|
|
338
|
+
* into a slot expecting something else, which is what the runtime
|
|
339
|
+
* constructor's own `IsTypePrefix` proves at compile time rather than
|
|
340
|
+
* assumes, and this predicate re-asks the identical question so the two
|
|
341
|
+
* cannot disagree about which pairs the constructor actually accepts. Every
|
|
342
|
+
* position through the source's own last one has to agree, not only the
|
|
343
|
+
* first -- `(a: string) => void` is not a sound stand-in for
|
|
344
|
+
* `(a: string, b: number, c: string) => void` merely because position 0
|
|
345
|
+
* matches; every position the source declares has to. The result and the
|
|
346
|
+
* receiver must still agree exactly -- neither is dropped by a call, so a
|
|
347
|
+
* difference in either is a real mismatch, not a binding the language elides.
|
|
348
|
+
*/
|
|
349
|
+
/**
|
|
350
|
+
* A method value -- its receiver first in its physical convention -- filling
|
|
351
|
+
* a slot that declares the same convention WITHOUT one: `gea_runtime.h`'s
|
|
352
|
+
* `CallableObject::bindReceiver`, which packs the receiver the property read
|
|
353
|
+
* went through in with the value. Everything but the receiver has to agree
|
|
354
|
+
* exactly, in the C++ spelling the runtime's own signature matching sees
|
|
355
|
+
* (`cppAbiType`, the one authority on that spelling), so the adapter's
|
|
356
|
+
* `Result(Receiver, Arguments...)` is the source's own type and nothing is
|
|
357
|
+
* coerced on the way through.
|
|
358
|
+
*
|
|
359
|
+
* Only the SHAPE is decided here; whether the pair can actually be rendered
|
|
360
|
+
* -- the read's receiver has to be recoverable at the site, and the body must
|
|
361
|
+
* never read `this` -- is `emit-callable.ts`'s `receiverBoundCallableText`'s
|
|
362
|
+
* question, a fact of the emitter's context and not of the two carriers.
|
|
363
|
+
*/
|
|
364
|
+
/**
|
|
365
|
+
* A `this`-TYPED function value, stored in a field and read through the object
|
|
366
|
+
* whose `this` it names: `gea_runtime.h`'s `CallableObject::bindReceiver`
|
|
367
|
+
* again, but reached from a fact about the two DECLARATIONS rather than from a
|
|
368
|
+
* method body.
|
|
369
|
+
*
|
|
370
|
+
* hono's `RegExpRouter` writes `match: typeof match<Router<T>, T> = match`
|
|
371
|
+
* over `function match<R extends Router<T>, T>(this: R, method, path)`, while
|
|
372
|
+
* `TrieRouter` and `SmartRouter` declare `match` as an ordinary method -- and
|
|
373
|
+
* `Router<T>` itself declares it as a method, with no `this` at all. So the
|
|
374
|
+
* field's carrier names a receiver and every read through the interface (or
|
|
375
|
+
* through the union of the three implementors) publishes one that does not,
|
|
376
|
+
* and nothing converted between them.
|
|
377
|
+
*
|
|
378
|
+
* Binding the read's own receiver is the only call the language admits here,
|
|
379
|
+
* which is what makes this sound where the detached-METHOD case next door
|
|
380
|
+
* needs `readsReceiver` to hold: a `this` parameter is a parameter, and
|
|
381
|
+
* TypeScript refuses a call through the value that does not supply one
|
|
382
|
+
* (`The 'this' context of type 'void' is not assignable...`). A method has no
|
|
383
|
+
* such annotation, so a detached call really can reach it with `this`
|
|
384
|
+
* undefined, and binding there would answer where the program would have
|
|
385
|
+
* thrown.
|
|
386
|
+
*/
|
|
387
|
+
export declare const receiverBoundFieldText: (ctx: ConversionSite, stored: Representation, published: Representation, storedText: string, receiver: Representation, receiverText: string) => string | null;
|
|
388
|
+
export declare const bindsReceiver: (source: Representation, target: Representation) => boolean;
|
|
389
|
+
export declare const dropsUnboundParameters: (source: Representation, target: Representation) => boolean;
|
|
390
|
+
/**
|
|
391
|
+
* A zero-parameter callable filling a slot that declares at least one
|
|
392
|
+
* parameter AND whose result is a tagged union naming the source's own
|
|
393
|
+
* result as one of its arms -- `dropsUnboundParameters`'s zero-arity special
|
|
394
|
+
* case (`gea_runtime.h`'s `dropArguments`) composed with
|
|
395
|
+
* `gea::TaggedUnion::ofArm`, for a source neither alone accepts:
|
|
396
|
+
* `dropsUnboundParameters` requires an IDENTICAL result, and a bare `ofArm`
|
|
397
|
+
* conversion has no arity adaptation of its own.
|
|
398
|
+
*
|
|
399
|
+
* hono's `Context.notFound`: `this.#notFoundHandler ??=
|
|
400
|
+
* () => createResponseInstance()` merges a `() => Response` into a field
|
|
401
|
+
* declared `(c: Context) => Response | Promise<Response>`.
|
|
402
|
+
* `gea_runtime.h`'s `ResultWidensIntoArm` proves the identical pairing at
|
|
403
|
+
* the type level; this re-asks the same two-part question so the two cannot
|
|
404
|
+
* disagree about which pairs the runtime constructor actually accepts.
|
|
405
|
+
*
|
|
406
|
+
* Deliberately narrower than `dropsUnboundParameters`: a nonzero source
|
|
407
|
+
* arity is left entirely to that function (its PREFIX proof does not carry
|
|
408
|
+
* over once the result itself also changes), and a target result that is
|
|
409
|
+
* not a tagged union, or a source result that is not EXACTLY one of its
|
|
410
|
+
* arms, is refused -- the same fail-closed discipline `ResultWidensIntoArm`
|
|
411
|
+
* documents in the runtime.
|
|
412
|
+
*/
|
|
413
|
+
export declare const dropsAllParametersIntoResultArm: (source: Representation, target: Representation) => boolean;
|
|
414
|
+
/**
|
|
415
|
+
* A callable filling a slot whose declared result is `void`, its own result
|
|
416
|
+
* being anything else -- same parameters, in the same order, with the same
|
|
417
|
+
* types; only the RESULT differs, and only in the direction of being
|
|
418
|
+
* discarded.
|
|
419
|
+
*
|
|
420
|
+
* ECMA-262 makes this sound for a reason distinct from the other two
|
|
421
|
+
* predicates above: a call's result is simply not read unless something
|
|
422
|
+
* reads it, so a function returning `T` really is a valid `() => void` (or
|
|
423
|
+
* any arity's `void`-returning form) wherever the caller never names the
|
|
424
|
+
* result -- `Array.prototype.forEach`'s callback contract is the textbook
|
|
425
|
+
* case, and this port's own is `node:http`'s `RequestListener = (req, res)
|
|
426
|
+
* => void`: `createServer(async (req, res) => { ... })` is an everyday Node
|
|
427
|
+
* idiom (`apps/hono-hello/server.ts` is one), and TypeScript accepts a
|
|
428
|
+
* `Promise<void>`-returning callback there for the identical reason -- a
|
|
429
|
+
* `void`-returning function TYPE is satisfied by ANY return type, precisely
|
|
430
|
+
* so a caller who ignores the result is never forced to wrap it.
|
|
431
|
+
*
|
|
432
|
+
* `gea_runtime.h`'s `CallableObject` composed converting constructor this
|
|
433
|
+
* asks for discards whatever the source returns; see that constructor's own
|
|
434
|
+
* comment for why doing so is never lossy for an async body specifically --
|
|
435
|
+
* this runtime's `Promise<V>` is a settled-value box, never a coroutine
|
|
436
|
+
* frame, so by the time a call returns here its entire body, `await`s
|
|
437
|
+
* included, has already run to completion.
|
|
438
|
+
*
|
|
439
|
+
* Gated the mirror of `dropsAllParametersIntoResultArm` above: parameters
|
|
440
|
+
* must agree in COUNT and in every position's TYPE (this is not an arity
|
|
441
|
+
* change, `dropsUnboundParameters`'s own axis -- it is a pure result
|
|
442
|
+
* change), the receiver must agree exactly on both sides (a call's receiver
|
|
443
|
+
* is never dropped), and the target's result must actually BE `void` --
|
|
444
|
+
* anything else stays a hard compile error, this file's shared fail-closed
|
|
445
|
+
* rule. Source and target already sharing `void` needs no constructor at
|
|
446
|
+
* all: `cppTypeOf` equality above already renders that as the identity
|
|
447
|
+
* text, so this predicate is never even asked.
|
|
448
|
+
*
|
|
449
|
+
* Zero parameters is excluded on the runtime constructor's own account, not
|
|
450
|
+
* this predicate's: `gea_runtime.h`'s matching constructor collapses to the
|
|
451
|
+
* textually identical signature the `ResultWidensIntoArm`-gated one above it
|
|
452
|
+
* already declares once `Arguments...` is empty, which fails to COMPILE
|
|
453
|
+
* (every zero-arity `CallableObject<Result()>` in the header, `Result=void`
|
|
454
|
+
* or not) rather than merely fails to be selected -- see that constructor's
|
|
455
|
+
* own comment. Asking this predicate to answer `false` there keeps the two
|
|
456
|
+
* files agreeing about which pairs the runtime actually accepts, the same
|
|
457
|
+
* discipline `dropsUnboundParameters` and `dropsAllParametersIntoResultArm`
|
|
458
|
+
* both already state for their own exclusions.
|
|
459
|
+
*/
|
|
460
|
+
/**
|
|
461
|
+
* A callable whose parameters already agree with the slot's, position for
|
|
462
|
+
* position, and whose RESULT is exactly one arm of the tagged union the slot
|
|
463
|
+
* declares -- `dropsAllParametersIntoResultArm` with the arity change taken
|
|
464
|
+
* back out, leaving only the widening half.
|
|
465
|
+
*
|
|
466
|
+
* That predicate requires a ZERO-parameter source and `dropsUnboundParameters`
|
|
467
|
+
* an IDENTICAL result, so a pair moving along only the result axis at a nonzero
|
|
468
|
+
* arity satisfies neither -- hono's `Hono.fetch` is one, a `(Context) =>
|
|
469
|
+
* Response` assigned into a field declared `(Context) => Response |
|
|
470
|
+
* Promise<Response>`. Sound for exactly the reason `gea_runtime.h`'s
|
|
471
|
+
* `ResultWidensIntoArm` states, and asked in the same terms so the two cannot
|
|
472
|
+
* disagree: the result must equal one arm EXACTLY and every other position --
|
|
473
|
+
* receiver, arity, each parameter's carrier, the rest slot -- exactly, none
|
|
474
|
+
* being adapted here. `widenResultIntoArm` is the constructor performing it.
|
|
475
|
+
*/
|
|
476
|
+
export declare const widensResultIntoArm: (source: Representation, target: Representation) => boolean;
|
|
477
|
+
/**
|
|
478
|
+
* A source whose rest parameter sits at a LATER position than the target's.
|
|
479
|
+
*
|
|
480
|
+
* ECMAScript has one calling convention, so `(base?: string, sub?: string,
|
|
481
|
+
* ...rest: string[]) => string` and `(...paths: string[]) => string` are the
|
|
482
|
+
* same function -- hono's `utils/url.ts` declares exactly that pair on one
|
|
483
|
+
* `const mergePath`, the annotation stating the second and the initializer
|
|
484
|
+
* being the first. C++ sees two unrelated function types, and the store
|
|
485
|
+
* refused.
|
|
486
|
+
*
|
|
487
|
+
* The target has to be a single rest parameter, because that array is the
|
|
488
|
+
* whole of what the thunk has to unpack. Every leading source parameter has
|
|
489
|
+
* to be `optional(E, undefined)` over the same element the rest carries: a
|
|
490
|
+
* position the call never reached has to be ABSENT, and a leading slot must
|
|
491
|
+
* never be handed an element of a type it did not declare. The source's own
|
|
492
|
+
* rest must sit exactly after its leading run, since the tail is what is
|
|
493
|
+
* left when those are taken.
|
|
494
|
+
*
|
|
495
|
+
* `gea_runtime.h`'s `RestRebaseAdmits` states the identical conditions over
|
|
496
|
+
* the C++ types, so a pair this admits and that one does not is a compile
|
|
497
|
+
* error rather than a wrong call -- the same fail-closed pairing every other
|
|
498
|
+
* predicate here has with its constructor.
|
|
499
|
+
*/
|
|
500
|
+
export declare const rebasesRestOverLeadingParameters: (source: Representation, target: Representation) => boolean;
|
|
501
|
+
export declare const discardsResultIntoVoid: (source: Representation, target: Representation) => boolean;
|
|
502
|
+
/**
|
|
503
|
+
* Reading a concrete value back OUT of a box -- the direction this backend did
|
|
504
|
+
* not have.
|
|
505
|
+
*
|
|
506
|
+
* `x as unknown as string` is an ASSERTION, not a coercion: the program states
|
|
507
|
+
* what the value is and TypeScript erases the statement, so what has to happen
|
|
508
|
+
* at runtime is a read of the payload the box holds, not a `ToString` of
|
|
509
|
+
* whatever it happens to be. `gea::unboxValue` (gea_runtime.h) is exactly that
|
|
510
|
+
* read -- it checks the box's tag AND its payload type and aborts by name when
|
|
511
|
+
* either disagrees, which is where the consequence of a wrong assertion
|
|
512
|
+
* belongs. The identical primitive `emit-dynamic-properties.ts` already reads
|
|
513
|
+
* a dynamic property back through; this states the same fact for an ordinary
|
|
514
|
+
* carrier reconciliation.
|
|
515
|
+
*
|
|
516
|
+
* Every tag that has a payload to read, not only the three primitive ones.
|
|
517
|
+
* This paragraph used to say the opposite -- that a record, a class instance,
|
|
518
|
+
* a callable or an array was a box whose payload type the target carrier does
|
|
519
|
+
* not determine, so there was no `T` to name -- and that premise is false: the
|
|
520
|
+
* target carrier is exactly what determines the `T`, because `cppTypeOf`
|
|
521
|
+
* spells it and `Value::box` recorded that same spelling's address in
|
|
522
|
+
* `payloadType()`. `unboxValue` compares the two, so naming the wrong one
|
|
523
|
+
* refuses by name instead of reinterpreting bytes.
|
|
524
|
+
*
|
|
525
|
+
* The stale claim outlived the code it described and was still being cited as
|
|
526
|
+
* settled by `targets/cpp/conversions.ts`'s own header, which is how that
|
|
527
|
+
* file's `classRefMaterializer` stayed uninstalled while the load it needed
|
|
528
|
+
* was already being rendered right here.
|
|
529
|
+
*/
|
|
530
|
+
/**
|
|
531
|
+
* Every `(tag, payload type)` pair a box can carry for this carrier.
|
|
532
|
+
*
|
|
533
|
+
* `dynamicTagFor` answers ONE tag and `null` for a sum, which is the right
|
|
534
|
+
* answer to "what tag does `Value::box` write for this" and the wrong one to
|
|
535
|
+
* "which tags could a box holding this carrier have". A union arm, and an
|
|
536
|
+
* optional's two states, each answer to several. `payload` is `null` where the
|
|
537
|
+
* tag IS the whole value (`undefined`, `null`) and there is therefore no
|
|
538
|
+
* recorded payload type to tiebreak a tag collision with -- two such arms under
|
|
539
|
+
* one tag are genuinely indistinguishable, and compare equal here so the
|
|
540
|
+
* caller refuses rather than guessing.
|
|
541
|
+
*/
|
|
542
|
+
export type BoxDiscriminant = {
|
|
543
|
+
tag: string;
|
|
544
|
+
payload: string | null;
|
|
545
|
+
nominal: string | null;
|
|
546
|
+
/** Exact checker-closed FunctionId membership; null for a non-callable discriminator. */
|
|
547
|
+
callableMembers: readonly FunctionId[] | null;
|
|
548
|
+
};
|
|
549
|
+
export declare const boxDiscriminantsOf: (carrier: Representation) => BoxDiscriminant[] | null;
|
|
550
|
+
/** The representation arm's carried discriminator and the executable classifier must agree. */
|
|
551
|
+
export declare const boxDiscriminantsOfArm: (arm: TaggedUnionArm) => BoxDiscriminant[] | null;
|
|
552
|
+
export declare const unboxedLoadText: (target: Representation, text: string) => string | null;
|
|
553
|
+
/**
|
|
554
|
+
* `generic-function-set` into a superset: each source index becomes the
|
|
555
|
+
* target's index of the same member. A one-member source is a constant; a
|
|
556
|
+
* wider one is a table lookup. `null` when the pair is not a set widening
|
|
557
|
+
* (a member the target lacks is a narrowing, and no store performs one).
|
|
558
|
+
*/
|
|
559
|
+
export declare const genericFunctionSetWideningText: (source: Representation, target: Representation, text: string) => string | null;
|
|
560
|
+
/**
|
|
561
|
+
* `never[]` read where `E[]` is wanted: the one empty array of `E`. See
|
|
562
|
+
* `conversions.ts`'s `gea::emptyArraySentinel` recipe for why identity, not a
|
|
563
|
+
* fresh `[]`, is the answer, and which pairs it admits. The dynamic target
|
|
564
|
+
* decides at runtime (`emptyArraySentinelOrBoxed`): an empty source is the
|
|
565
|
+
* sentinel, a populated one -- a real `undefined[]`, which the carrier cannot
|
|
566
|
+
* tell apart -- is boxed element by element.
|
|
567
|
+
*/
|
|
568
|
+
export declare const emptyArraySentinelText: (source: Representation, target: Representation, text: string) => string | null;
|
|
569
|
+
/**
|
|
570
|
+
* One step of the conversion chain. `undefined` means the step does not
|
|
571
|
+
* claim the pair and the chain continues; `null` means it claims the pair
|
|
572
|
+
* and cannot render it, which ends the chain with no rendering (the chain's
|
|
573
|
+
* original early returns); a string is the rendering.
|
|
574
|
+
*/
|
|
575
|
+
export interface ConversionStep {
|
|
576
|
+
readonly id: string;
|
|
577
|
+
readonly apply: (source: Representation, target: Representation, text: string) => string | null | undefined;
|
|
578
|
+
}
|
|
579
|
+
/**
|
|
580
|
+
* The chain, in the order it has always run. Each entry is one recipe with a
|
|
581
|
+
* stable id; `conversionRecipeOf` names the entry that claims a pair without
|
|
582
|
+
* rendering it, so the conversion census (`conversion/nodes.ts`) can state
|
|
583
|
+
* the same answer this printer gives, from the same table.
|
|
584
|
+
*/
|
|
585
|
+
export declare const conversionChain: readonly ConversionStep[];
|
|
586
|
+
/**
|
|
587
|
+
* One chain call the printer still makes on a pair the IR did not already
|
|
588
|
+
* align: after Phase 1.3 every operand that enters a slot arrives converted
|
|
589
|
+
* by lowering, so a printer site that finds its source and target differing
|
|
590
|
+
* is a decision the census does not own yet. Recorded per site so the 1.4
|
|
591
|
+
* work list is measured, not guessed; the row names the site, the body and
|
|
592
|
+
* the pair, and the chain still renders it.
|
|
593
|
+
*/
|
|
594
|
+
export interface PrinterDrift {
|
|
595
|
+
readonly owner: string;
|
|
596
|
+
readonly site: string;
|
|
597
|
+
/**
|
|
598
|
+
* `refused`: the census has no recipe for the pair and the chain rendered
|
|
599
|
+
* it (or refused it too). `converted`: the census answered and the printer
|
|
600
|
+
* rendered its node -- a site that still converts at all, which after
|
|
601
|
+
* Phase 1.3 is a decision lowering should have made; the by-category
|
|
602
|
+
* deletion of chain callers (1.4) works this list down.
|
|
603
|
+
*/
|
|
604
|
+
readonly kind: 'refused' | 'converted';
|
|
605
|
+
readonly source: string;
|
|
606
|
+
readonly target: string;
|
|
607
|
+
/** The census's stated reason the pair has no recipe (`refused`), or the node's capability kind (`converted`). */
|
|
608
|
+
readonly reason: string;
|
|
609
|
+
readonly sourceRepresentation: Representation;
|
|
610
|
+
readonly targetRepresentation: Representation;
|
|
611
|
+
}
|
|
612
|
+
/**
|
|
613
|
+
* A printer site's conversion, answered by the census: the node `nodeFor`
|
|
614
|
+
* mints for the pair, rendered by the recipe it names. The site is a
|
|
615
|
+
* RESULT-side one -- a call's result into the operation's carrier, a union
|
|
616
|
+
* arm's field into what the read publishes, a host template's value into
|
|
617
|
+
* the slot -- where the value is produced inside this printer's own
|
|
618
|
+
* expression and lowering had nothing to convert; every operand-side pair
|
|
619
|
+
* already arrived converted (`ir/lower-operands.ts`'s `enter`).
|
|
620
|
+
*
|
|
621
|
+
* A pair the census has no recipe for is recorded as printer drift with the
|
|
622
|
+
* census's reason and STILL handed to the chain, because the chain renders
|
|
623
|
+
* some pairs the census does not yet own (a `dynamic` source the eager
|
|
624
|
+
* derivation refused, a callable adapter) and refusing them here would
|
|
625
|
+
* uncertify programs that run. The drift rows are the list of pairs the
|
|
626
|
+
* census still has to learn; a row whose chain rendering is also `null` is
|
|
627
|
+
* the refusal the site reports.
|
|
628
|
+
*/
|
|
629
|
+
/**
|
|
630
|
+
* What a conversion site needs from its context: the census, the drift list
|
|
631
|
+
* it reports to, and what the record view renders from. A body's
|
|
632
|
+
* `EmitContext` is one; the program-level renderers with no body (construct
|
|
633
|
+
* thunks, field initializers, virtual dispatch adapters in
|
|
634
|
+
* `translation-unit.ts`) build one over the same census.
|
|
635
|
+
*/
|
|
636
|
+
export interface ConversionSite {
|
|
637
|
+
readonly conversions: ConversionCensus;
|
|
638
|
+
readonly nativeSelectionHelpers?: ReadonlyMap<string, NativeSelectionHelper>;
|
|
639
|
+
readonly printerDrift: PrinterDrift[];
|
|
640
|
+
readonly owner: string;
|
|
641
|
+
readonly layouts: RecordLayoutPolicy;
|
|
642
|
+
readonly classes: ReadonlyMap<DeclarationId, ClassLayout>;
|
|
643
|
+
readonly captures: CaptureIndex;
|
|
644
|
+
/** The dispatch members this unit emitted; absent where a site has none to name. */
|
|
645
|
+
readonly virtualDispatch?: ReadonlyMap<string, CallableAbi>;
|
|
646
|
+
}
|
|
647
|
+
export declare const alignedValueText: (ctx: ConversionSite, site: string, source: Representation, target: Representation, text: string) => string | null;
|
|
648
|
+
/**
|
|
649
|
+
* A census node's recipe, rendered by one of the two renderers the census
|
|
650
|
+
* owns. The chain first: the registry's atoms ARE its narrowing, widening
|
|
651
|
+
* and recasting steps, and its static recipes are named by the step that
|
|
652
|
+
* claimed the pair (`conversions.ts`'s `staticRecipe`). Then the structural
|
|
653
|
+
* record view (`conversion/record-view.ts`), which renders both the
|
|
654
|
+
* `view:structural-record` recipe and the registry's `gea::record::recast`
|
|
655
|
+
* atom -- the eager graph minted that atom for a by-value record entering
|
|
656
|
+
* an interface's shared shape before the view plan existed, and the chain's
|
|
657
|
+
* `record-recast` step spells only the by-reference recast, so the view is
|
|
658
|
+
* that atom's renderer. Keyed by capability KIND rather than by materializer
|
|
659
|
+
* id on purpose: a node's id says which table answered, not which text
|
|
660
|
+
* spells it, and every non-`never` node has exactly one of these two.
|
|
661
|
+
*
|
|
662
|
+
* `class-family` is a third renderer, asked before the chain rather than
|
|
663
|
+
* folded into it: `classFamilyLoadText` orders its cascade over
|
|
664
|
+
* `ctx.classes`, the whole-program class table, and the chain
|
|
665
|
+
* (`convertedValueText`) is deliberately ctx-free -- see `algebra.ts`'s doc
|
|
666
|
+
* on the kind for why an `atom` cannot carry this recipe.
|
|
667
|
+
*/
|
|
668
|
+
export declare const recipeText: (ctx: ConversionSite, node: ConversionNode, text: string) => string | null;
|
|
669
|
+
/**
|
|
670
|
+
* The text of a node a `convert` instruction NAMES, rather than of the pair
|
|
671
|
+
* it spans: a coercion node shares its (source, target) pair with the store
|
|
672
|
+
* node `alignedValueText` would look up -- `string -> scalar(number)` is an
|
|
673
|
+
* exact tag read as a store and StringToNumber as a coercion -- so the
|
|
674
|
+
* instruction's own node id is the only thing that says which one runs.
|
|
675
|
+
*/
|
|
676
|
+
export declare const namedConversionText: (ctx: ConversionSite, site: string, node: ConversionNode, text: string) => string | null;
|
|
677
|
+
export declare const convertedValueText: (source: Representation, target: Representation, text: string) => string | null;
|
|
678
|
+
export declare const isSpellable: (representation: Representation) => boolean;
|
|
679
|
+
/**
|
|
680
|
+
* The chain's answer for a pair, as a predicate: the registry's static recipe
|
|
681
|
+
* and a record view's field and arm pairs (`conversion/record-view.ts`) ask
|
|
682
|
+
* this one question, so a view the census admits is a view the printer
|
|
683
|
+
* renders.
|
|
684
|
+
*/
|
|
685
|
+
export declare const chainConverts: (source: Representation, target: Representation) => boolean;
|
|
686
|
+
export declare const conversionRecipeOf: (source: Representation, target: Representation) => {
|
|
687
|
+
readonly id: string;
|
|
688
|
+
readonly renders: boolean;
|
|
689
|
+
} | null;
|
|
690
|
+
/**
|
|
691
|
+
* A DYING refcounted value moves into the slot that takes it rather than being
|
|
692
|
+
* copied into it -- see `ir/transfer.ts`'s `buildDyingArgumentIndex` for what
|
|
693
|
+
* makes a value dying, which is the whole of the safety argument.
|
|
694
|
+
*
|
|
695
|
+
* Two conditions here, both about the CARRIER rather than the value's life:
|
|
696
|
+
* only a carrier that owns a count has anything to hand over, and the slot must
|
|
697
|
+
* hold exactly what the value already holds. `gea::Ref` has no converting move
|
|
698
|
+
* constructor, so an upcast to a base class binds `std::move(x)` right back to
|
|
699
|
+
* the copying `Ref(const Ref<Other>&)` -- and any slot needing a real
|
|
700
|
+
* conversion has already built a temporary of its own, which moving cannot
|
|
701
|
+
* make cheaper.
|
|
702
|
+
*/
|
|
703
|
+
export declare const movedValueText: (ctx: EmitContext, value: IrOperand, held: Representation | null, text: string) => string;
|
|
704
|
+
/**
|
|
705
|
+
* The proven-partial-dead-arm sibling of `emit.ts`'s `emitConvert` -- see
|
|
706
|
+
* `MergeLiveArmRebuildOperation`'s doc comment (`ir/model.ts`) for why a
|
|
707
|
+
* general `convert` cannot express this.
|
|
708
|
+
*
|
|
709
|
+
* `operation.liveArms` is the proof: which of the source's (optional-
|
|
710
|
+
* unwrapped) tagged-union arms are not proven dead at this merge, computed
|
|
711
|
+
* once by the control-flow lowering that owns the guard and carried here
|
|
712
|
+
* unchanged -- never recomputed. `ir/lower-narrow.ts` derives it from
|
|
713
|
+
* `partialDeadMergeArms` for `&&`; `ir/lower-destructuring.ts` derives it from
|
|
714
|
+
* the top-level arms surviving a default's `is-defined` guard. Only those
|
|
715
|
+
* indices are tested, in source-arm order, on the source's own discriminant
|
|
716
|
+
* (`.is<N>()`/`.get<N>()`, the
|
|
717
|
+
* identical accessors this file already renders for a narrowed tagged
|
|
718
|
+
* union above), and the chain falls through to the last live index without
|
|
719
|
+
* testing it -- sound because reaching this expression at all already proves
|
|
720
|
+
* the held arm is one of them. The source's own absence (if it is optional)
|
|
721
|
+
* reads the result's own absent value instead of testing any arm at all.
|
|
722
|
+
*
|
|
723
|
+
* Each live arm converts into the result's carrier through `convertedValueText`
|
|
724
|
+
* (below) FIRST, unmodified, and only when that finds no installed load AND
|
|
725
|
+
* the result is boolean-shaped (`isBooleanShapedMergeTarget`) does it fall
|
|
726
|
+
* back to `ToBoolean` (`emit-presence.ts`'s `booleanTestText`) instead. That
|
|
727
|
+
* fallback is not a general "any carrier converts to boolean" capability -- it
|
|
728
|
+
* is not added to `convertedValueText`'s own representation-keyed dispatch,
|
|
729
|
+
* which would let it fire for any unrelated occurrence of the same
|
|
730
|
+
* representation pair. It fires only here, for an arm THIS merge's own
|
|
731
|
+
* partial-dead-arm proof already marked live, because a `&&` merge's own
|
|
732
|
+
* published type collapsing to `boolean | undefined` is the checker having
|
|
733
|
+
* already proven the kept contribution meaningful only as its truthiness:
|
|
734
|
+
* ECMA-262's `&&` picks its kept operand by `ToBoolean` in the first place, so
|
|
735
|
+
* restating that answer as a plain `bool` is not a new fact about the arm's
|
|
736
|
+
* carrier, it is the exact question this merge already asked of it.
|
|
737
|
+
*/
|
|
738
|
+
export declare const emitMergeLiveArmRebuild: (ctx: EmitContext, lines: string[], operation: MergeLiveArmRebuildOperation) => void;
|