@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,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The host members whose call-site renderer takes a `dynamic` argument through
|
|
3
|
+
* unconditionally -- the C++ backend's half of
|
|
4
|
+
* `TargetRuntimeManifest.dynamicArgumentHostParameters`
|
|
5
|
+
* (preflight/obligations.ts), which states what listing one WAIVES and why
|
|
6
|
+
* the key includes member, argument role and ordinal.
|
|
7
|
+
*
|
|
8
|
+
* Here rather than in `manifest.ts` because the fact is a property of the
|
|
9
|
+
* renderers, not of the manifest: every entry below is an `objectMemberText`
|
|
10
|
+
* arm (`emit-host-object.ts`), and a member added there without a row here --
|
|
11
|
+
* or a row here whose arm was deleted -- is a drift best noticed by the two
|
|
12
|
+
* living side by side. `manifest.ts` cites this set; it does not own it.
|
|
13
|
+
*
|
|
14
|
+
* ## Why each of these needs the waiver and the others do not
|
|
15
|
+
*
|
|
16
|
+
* Each row passes that one argument's box straight into a host call-site
|
|
17
|
+
* renderer. So there is no conversion for the emitted line to perform and
|
|
18
|
+
* none for preflight to demand at that position. No row grants anything to a
|
|
19
|
+
* sibling parameter of the same member.
|
|
20
|
+
*
|
|
21
|
+
* `Object.keys`, `getOwnPropertyNames`, `freeze` and `isFrozen` are
|
|
22
|
+
* deliberately ABSENT even though they take the same dynamic receiver. Their
|
|
23
|
+
* declared parameter is `object` / `T`, which already derives a carrier a
|
|
24
|
+
* `dynamic` converts into, so the ordinary obligation is satisfied on its own
|
|
25
|
+
* -- and waiving a check that passes hides a real one for no gain.
|
|
26
|
+
*
|
|
27
|
+
* What these positions have in common is a declared parameter nothing
|
|
28
|
+
* converts into:
|
|
29
|
+
* `{ [s: string]: T } | ArrayLike<T>` for `values`/`entries`, which derives a
|
|
30
|
+
* `tagged-union(dictionary | native-record-ref)`; and `PropertyKey` -- a
|
|
31
|
+
* `string | number | symbol` union -- for the key parameter of `hasOwn`,
|
|
32
|
+
* `defineProperty` and `getOwnPropertyDescriptor`. `assign`'s variadic source
|
|
33
|
+
* parameter is the same shape as `values`'.
|
|
34
|
+
*
|
|
35
|
+
* `Object.defineProperty:argument:2` is deliberately absent. The emitter
|
|
36
|
+
* materializes descriptors only from an exact descriptor carrier; a dynamic
|
|
37
|
+
* box does not state which descriptor fields and attributes are present.
|
|
38
|
+
* `Object.defineProperties` is absent wholesale: its source transform accepts
|
|
39
|
+
* only a closed descriptor-map literal and lowers it to singular operations,
|
|
40
|
+
* while an open/dynamic map must remain fail-closed.
|
|
41
|
+
*/
|
|
42
|
+
export const cppDynamicArgumentHostParameters = new Set([
|
|
43
|
+
'gea::ReflectNamespace.get:argument:0',
|
|
44
|
+
'gea::ReflectNamespace.get:argument:1',
|
|
45
|
+
'gea::ReflectNamespace.set:argument:0',
|
|
46
|
+
'gea::ReflectNamespace.set:argument:1',
|
|
47
|
+
'gea::ReflectNamespace.set:argument:2',
|
|
48
|
+
'gea::ReflectNamespace.has:argument:0',
|
|
49
|
+
'gea::ReflectNamespace.has:argument:1',
|
|
50
|
+
'gea::ReflectNamespace.deleteProperty:argument:0',
|
|
51
|
+
'gea::ReflectNamespace.deleteProperty:argument:1',
|
|
52
|
+
'ObjectConstructor.values:argument:0',
|
|
53
|
+
'ObjectConstructor.entries:argument:0',
|
|
54
|
+
'ObjectConstructor.hasOwn:argument:0',
|
|
55
|
+
'ObjectConstructor.hasOwn:argument:1',
|
|
56
|
+
'ObjectConstructor.defineProperty:argument:0',
|
|
57
|
+
'ObjectConstructor.defineProperty:argument:1',
|
|
58
|
+
'ObjectConstructor.getOwnPropertyDescriptor:argument:0',
|
|
59
|
+
'ObjectConstructor.getOwnPropertyDescriptor:argument:1',
|
|
60
|
+
'ObjectConstructor.assign:argument:*'
|
|
61
|
+
]);
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import type { Representation } from '../../../representation/model.js';
|
|
2
|
+
import { type EmitContext, type HostMemberRead } from '../emit-context.js';
|
|
3
|
+
import { type HostCallSpelling } from './host-members.js';
|
|
4
|
+
/**
|
|
5
|
+
* A host call whose trailing arguments the program may omit.
|
|
6
|
+
*
|
|
7
|
+
* TypeScript writes an omissible parameter `buttons?: number` and C++ writes
|
|
8
|
+
* the same parameter `double buttons = 0.0`. They agree about the program --
|
|
9
|
+
* a caller may leave it out -- and they disagree about *where the default
|
|
10
|
+
* lives*: TypeScript says the argument is `number | undefined` and hands the
|
|
11
|
+
* callee an absence, C++ says the argument is a `double` and fills the
|
|
12
|
+
* omission in at the call site, from a default only the callee's own
|
|
13
|
+
* declaration carries.
|
|
14
|
+
*
|
|
15
|
+
* So a value carried as `gea::Optional<double>` cannot be passed to
|
|
16
|
+
* `double buttons = 0.0`, and nothing at this boundary knows what to pass
|
|
17
|
+
* instead: the default is written in the host's header, which is not a table
|
|
18
|
+
* this compiler reads and not a fact it may invent. `value_or(0)` is the shape
|
|
19
|
+
* of the guess -- it would be right for this one parameter and silently wrong
|
|
20
|
+
* for the first host that defaults one to `-1`.
|
|
21
|
+
*
|
|
22
|
+
* What both languages DO agree on is the omission itself. So the call is
|
|
23
|
+
* emitted once per arity: absent means "not passed", which is exactly what
|
|
24
|
+
* TypeScript means and exactly what lets C++ supply its own default. Nothing
|
|
25
|
+
* is guessed, and a host that instead takes the optional as a template
|
|
26
|
+
* parameter (the engine's `getCurrentPosition(Success, Error)`) gets the
|
|
27
|
+
* unwrapped value, which is the callable it wanted rather than a wrapper it
|
|
28
|
+
* cannot call.
|
|
29
|
+
*
|
|
30
|
+
* The one shape neither language can express is a HOLE -- an omitted argument
|
|
31
|
+
* followed by a supplied one. `f(a, undefined, 5)` is legal TypeScript and
|
|
32
|
+
* means "default the second"; C++ default arguments are positional and cannot
|
|
33
|
+
* skip. That call is refused at run time, by name, at the point it happens:
|
|
34
|
+
* the alternative is passing a fabricated default, which is the silent wrong
|
|
35
|
+
* answer this whole rule exists to avoid.
|
|
36
|
+
*/
|
|
37
|
+
/** One rendered argument at a host call, with the carrier the program holds it in. */
|
|
38
|
+
export interface HostCallArgument {
|
|
39
|
+
readonly text: string;
|
|
40
|
+
readonly representation: Representation;
|
|
41
|
+
}
|
|
42
|
+
/** One host call site, with its trailing optional arguments held apart from the rest. */
|
|
43
|
+
export interface HostArityCall {
|
|
44
|
+
/** The host's own spelling of the function: a path to append arguments to, or a template that places them. */
|
|
45
|
+
readonly spelling: HostCallSpelling;
|
|
46
|
+
/** Arguments that are always passed: the receiver, if the convention declares one, and every argument before the optional tail. */
|
|
47
|
+
readonly fixed: readonly HostCallArgument[];
|
|
48
|
+
/** Arguments carried as optionals, in call order; every one of them trails the fixed arguments. */
|
|
49
|
+
readonly optionals: readonly HostCallArgument[];
|
|
50
|
+
/**
|
|
51
|
+
* The assignment target for the call's result and the carrier the program
|
|
52
|
+
* holds it in, or `null` when the call publishes none. The carrier travels
|
|
53
|
+
* with the name because the crossing back is decided by it -- see
|
|
54
|
+
* `hostResultText`.
|
|
55
|
+
*/
|
|
56
|
+
readonly result: {
|
|
57
|
+
readonly name: string;
|
|
58
|
+
readonly representation: Representation;
|
|
59
|
+
} | null;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* One argument, as the host takes it.
|
|
63
|
+
*
|
|
64
|
+
* A carrier this compiler chose for the *program*'s sake is not always the one
|
|
65
|
+
* a host declares, and where the two differ the crossing is a conversion rather
|
|
66
|
+
* than a cast. Only one carrier needs one statically: an Array exotic object --
|
|
67
|
+
* identity, growth, and holes, so `shared_ptr<ArrayObject<E>>` -- meeting a
|
|
68
|
+
* host that declares `const std::vector<E>&` and wants the elements. The
|
|
69
|
+
* runtime performs it (`gea::detail::hostArrayArgument`), including refusing a
|
|
70
|
+
* hole rather than filling one in.
|
|
71
|
+
*
|
|
72
|
+
* Everything else passes through untouched, which is the point: this is not a
|
|
73
|
+
* universal wrapper around host arguments but the named list of carriers whose
|
|
74
|
+
* host spelling differs, and a carrier absent from it reaches the host exactly
|
|
75
|
+
* as the program holds it.
|
|
76
|
+
*/
|
|
77
|
+
export declare const hostArgumentText: (representation: Representation, text: string, arrayArguments?: "snapshot" | "native") => string;
|
|
78
|
+
/**
|
|
79
|
+
* The receiver a deferred host member call renders on, spelled here rather than
|
|
80
|
+
* where the member was reached.
|
|
81
|
+
*
|
|
82
|
+
* The access that recorded the member produced no C++ (a host method is not a
|
|
83
|
+
* value), so it had nothing of its own to print and no reason to print the
|
|
84
|
+
* receiver either -- it did so only because the record it left behind held a
|
|
85
|
+
* string. Recording the operand instead (`HostMemberRead`) moves the spelling
|
|
86
|
+
* to the one place that consumes it, which is this call, and leaves the record
|
|
87
|
+
* a fact rather than a rendering.
|
|
88
|
+
*
|
|
89
|
+
* The crossing is the same one every other host argument makes: a receiver a
|
|
90
|
+
* row declares `raw` is taken as the program holds it, and anything else meets
|
|
91
|
+
* `hostArgumentText`. That is not a new decision -- it is exactly what the
|
|
92
|
+
* declaration-bound seed site already did, and the static-member seed site's
|
|
93
|
+
* receivers are native handles and native record refs, for which
|
|
94
|
+
* `hostArgumentText` is the identity.
|
|
95
|
+
*/
|
|
96
|
+
export declare const hostMemberReceiverText: (ctx: EmitContext, read: HostMemberRead) => string | null;
|
|
97
|
+
/**
|
|
98
|
+
* One result, as the program holds it.
|
|
99
|
+
*
|
|
100
|
+
* The mirror of `hostArgumentText`, for the one carrier whose two sides differ:
|
|
101
|
+
* a host that hands back a finished sequence declares `std::vector<E>`
|
|
102
|
+
* (`AVCaptureDevice.virtualDeviceSwitchOverVideoZoomFactors` is `number[]` and
|
|
103
|
+
* the generated bridge returns exactly that), and the program holds an Array
|
|
104
|
+
* exotic object. Assigning one to the other does not compile, and reinterpreting
|
|
105
|
+
* it would be a lie about identity -- so the runtime moves the elements across.
|
|
106
|
+
*
|
|
107
|
+
* Applied at every host result whose carrier is `array-object`, without asking
|
|
108
|
+
* what the host's C++ actually returns: that fact belongs to each host and this
|
|
109
|
+
* compiler does not hold it. `gea::detail::hostArrayResult` is overloaded for
|
|
110
|
+
* both shapes precisely so the crossing does not need to know -- a host that
|
|
111
|
+
* already hands back an array object gets the identity overload.
|
|
112
|
+
*
|
|
113
|
+
* A `typed-array` result carrier is the identical joint one level down:
|
|
114
|
+
* `image.readFile` states its C++ return type as `std::vector<std::uint8_t>`
|
|
115
|
+
* (`host-shims.ts`) -- a complete byte sequence the host built and shares no
|
|
116
|
+
* identity over -- while the program's own carrier for the checker's declared
|
|
117
|
+
* `Uint8Array` is `shared_ptr<gea::TypedArray<uint8_t>>`. Unlike the
|
|
118
|
+
* `array-object` crossing, the element type is not recoverable from the
|
|
119
|
+
* argument's own C++ type (every such host row returns the same
|
|
120
|
+
* `vector<uint8_t>` regardless of which typed array it is declared to
|
|
121
|
+
* produce), so it is named explicitly from the representation this compiler
|
|
122
|
+
* already selected -- `gea::detail::hostTypedArrayResult`'s own header
|
|
123
|
+
* explains why that is still not a guess.
|
|
124
|
+
*/
|
|
125
|
+
export declare const hostResultText: (representation: Representation, text: string, spelling?: HostCallSpelling) => string;
|
|
126
|
+
/**
|
|
127
|
+
* The call, once per arity the program can actually reach.
|
|
128
|
+
*
|
|
129
|
+
* `k` optional arguments produce `k + 1` branches: one for each prefix of them
|
|
130
|
+
* that is present, and the last for all of them. Presence is tested in order,
|
|
131
|
+
* so each branch knows every earlier optional is present and needs only to
|
|
132
|
+
* prove the ones after the first absence are absent too.
|
|
133
|
+
*
|
|
134
|
+
* Every optional is bound to a name first, for the reason the union branch
|
|
135
|
+
* binds one: the argument is an expression, and it is read once in a condition
|
|
136
|
+
* and again in a call. The whole thing sits inside a block so those names are
|
|
137
|
+
* this call's alone.
|
|
138
|
+
*/
|
|
139
|
+
export declare const hostArityCallLines: (call: HostArityCall) => readonly string[];
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { cppRecordFieldName, cppScalarType, cppTypeOf } from '../types.js';
|
|
2
|
+
import { createCppEmitBlockedError, operandText } from '../emit-context.js';
|
|
3
|
+
import { fillHostTemplate, hostCallName, hostMemberOf } from './host-members.js';
|
|
4
|
+
import { unboxedReadText } from '../emit-dynamic-properties.js';
|
|
5
|
+
/**
|
|
6
|
+
* One argument, as the host takes it.
|
|
7
|
+
*
|
|
8
|
+
* A carrier this compiler chose for the *program*'s sake is not always the one
|
|
9
|
+
* a host declares, and where the two differ the crossing is a conversion rather
|
|
10
|
+
* than a cast. Only one carrier needs one statically: an Array exotic object --
|
|
11
|
+
* identity, growth, and holes, so `shared_ptr<ArrayObject<E>>` -- meeting a
|
|
12
|
+
* host that declares `const std::vector<E>&` and wants the elements. The
|
|
13
|
+
* runtime performs it (`gea::detail::hostArrayArgument`), including refusing a
|
|
14
|
+
* hole rather than filling one in.
|
|
15
|
+
*
|
|
16
|
+
* Everything else passes through untouched, which is the point: this is not a
|
|
17
|
+
* universal wrapper around host arguments but the named list of carriers whose
|
|
18
|
+
* host spelling differs, and a carrier absent from it reaches the host exactly
|
|
19
|
+
* as the program holds it.
|
|
20
|
+
*/
|
|
21
|
+
export const hostArgumentText = (representation, text, arrayArguments) => {
|
|
22
|
+
if (arrayArguments === 'native')
|
|
23
|
+
return text;
|
|
24
|
+
if (representation.kind === 'array-object' && arrayArguments === 'snapshot')
|
|
25
|
+
return `gea::detail::hostArraySnapshotArgument(${text})`;
|
|
26
|
+
if (representation.kind === 'array-object')
|
|
27
|
+
return `gea::detail::hostArrayArgument(${text})`;
|
|
28
|
+
// A typed array is held behind a pointer and every host takes the sequence,
|
|
29
|
+
// never the pointer -- see `gea::detail::hostTypedArrayArgument`.
|
|
30
|
+
if (representation.kind === 'typed-array')
|
|
31
|
+
return `gea::detail::hostTypedArrayArgument(${text})`;
|
|
32
|
+
return text;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* The receiver a deferred host member call renders on, spelled here rather than
|
|
36
|
+
* where the member was reached.
|
|
37
|
+
*
|
|
38
|
+
* The access that recorded the member produced no C++ (a host method is not a
|
|
39
|
+
* value), so it had nothing of its own to print and no reason to print the
|
|
40
|
+
* receiver either -- it did so only because the record it left behind held a
|
|
41
|
+
* string. Recording the operand instead (`HostMemberRead`) moves the spelling
|
|
42
|
+
* to the one place that consumes it, which is this call, and leaves the record
|
|
43
|
+
* a fact rather than a rendering.
|
|
44
|
+
*
|
|
45
|
+
* The crossing is the same one every other host argument makes: a receiver a
|
|
46
|
+
* row declares `raw` is taken as the program holds it, and anything else meets
|
|
47
|
+
* `hostArgumentText`. That is not a new decision -- it is exactly what the
|
|
48
|
+
* declaration-bound seed site already did, and the static-member seed site's
|
|
49
|
+
* receivers are native handles and native record refs, for which
|
|
50
|
+
* `hostArgumentText` is the identity.
|
|
51
|
+
*/
|
|
52
|
+
export const hostMemberReceiverText = (ctx, read) => {
|
|
53
|
+
if (read.receiver === null)
|
|
54
|
+
return null;
|
|
55
|
+
const text = operandText(ctx, read.receiver);
|
|
56
|
+
const host = hostMemberOf(ctx.hosts.members, read.protocol, read.member);
|
|
57
|
+
if (host?.kind === 'method' && host.receiver === 'raw')
|
|
58
|
+
return text;
|
|
59
|
+
return hostArgumentText(read.receiver.representation, text);
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* One result, as the program holds it.
|
|
63
|
+
*
|
|
64
|
+
* The mirror of `hostArgumentText`, for the one carrier whose two sides differ:
|
|
65
|
+
* a host that hands back a finished sequence declares `std::vector<E>`
|
|
66
|
+
* (`AVCaptureDevice.virtualDeviceSwitchOverVideoZoomFactors` is `number[]` and
|
|
67
|
+
* the generated bridge returns exactly that), and the program holds an Array
|
|
68
|
+
* exotic object. Assigning one to the other does not compile, and reinterpreting
|
|
69
|
+
* it would be a lie about identity -- so the runtime moves the elements across.
|
|
70
|
+
*
|
|
71
|
+
* Applied at every host result whose carrier is `array-object`, without asking
|
|
72
|
+
* what the host's C++ actually returns: that fact belongs to each host and this
|
|
73
|
+
* compiler does not hold it. `gea::detail::hostArrayResult` is overloaded for
|
|
74
|
+
* both shapes precisely so the crossing does not need to know -- a host that
|
|
75
|
+
* already hands back an array object gets the identity overload.
|
|
76
|
+
*
|
|
77
|
+
* A `typed-array` result carrier is the identical joint one level down:
|
|
78
|
+
* `image.readFile` states its C++ return type as `std::vector<std::uint8_t>`
|
|
79
|
+
* (`host-shims.ts`) -- a complete byte sequence the host built and shares no
|
|
80
|
+
* identity over -- while the program's own carrier for the checker's declared
|
|
81
|
+
* `Uint8Array` is `shared_ptr<gea::TypedArray<uint8_t>>`. Unlike the
|
|
82
|
+
* `array-object` crossing, the element type is not recoverable from the
|
|
83
|
+
* argument's own C++ type (every such host row returns the same
|
|
84
|
+
* `vector<uint8_t>` regardless of which typed array it is declared to
|
|
85
|
+
* produce), so it is named explicitly from the representation this compiler
|
|
86
|
+
* already selected -- `gea::detail::hostTypedArrayResult`'s own header
|
|
87
|
+
* explains why that is still not a guess.
|
|
88
|
+
*/
|
|
89
|
+
export const hostResultText = (representation, text, spelling) => {
|
|
90
|
+
// A host that states `result: 'dynamic'` answers in a `gea::Value` and the
|
|
91
|
+
// program holds whatever the compiler proved -- so the crossing back is the
|
|
92
|
+
// same checked unbox a dynamic property read performs, and a no-op when the
|
|
93
|
+
// program's own carrier is dynamic too.
|
|
94
|
+
if (spelling?.result === 'dynamic')
|
|
95
|
+
return unboxedReadText(representation, text, `${hostCallName(spelling)} result`);
|
|
96
|
+
if (representation.kind === 'array-object')
|
|
97
|
+
return `gea::detail::hostArrayResult(${text})`;
|
|
98
|
+
if (representation.kind === 'typed-array')
|
|
99
|
+
return `gea::detail::hostTypedArrayResult<${cppScalarType(representation.element)}>(${text})`;
|
|
100
|
+
// TypeScript tuples derive as records with required consecutive numeric
|
|
101
|
+
// fields. A host tuple is not an Array exotic object: it has no JS-visible
|
|
102
|
+
// identity, growth, holes, or prototype, so adapting it through
|
|
103
|
+
// `hostArrayResult` would manufacture the wrong ABI. Materialise the record
|
|
104
|
+
// directly from the host's fixed indexed result instead.
|
|
105
|
+
if (representation.kind === 'record' &&
|
|
106
|
+
representation.fields.length > 0 &&
|
|
107
|
+
representation.fields.every((field, index) => field.key === String(index) && field.required && field.value.kind === 'scalar' && field.value.domain === 'number')) {
|
|
108
|
+
const fields = representation.fields
|
|
109
|
+
.map((field, index) => `gea_host_tuple_result.${cppRecordFieldName(field.key)} = gea_host_tuple[${index}];`)
|
|
110
|
+
.join(' ');
|
|
111
|
+
return `([&]() { const auto gea_host_tuple = ${text}; auto gea_host_tuple_result = ${cppTypeOf(representation)}{}; ${fields} return gea_host_tuple_result; }())`;
|
|
112
|
+
}
|
|
113
|
+
return text;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* The call itself, with every argument rendered as the host takes it -- and one
|
|
117
|
+
* branch per live arm of any argument the program carries as a sum.
|
|
118
|
+
*
|
|
119
|
+
* `setSupportedOrientations(orientations: string | string[])` is the shape. The
|
|
120
|
+
* host declares that as two things it can be handed (a `std::string`, or
|
|
121
|
+
* something with `.size()` and `[0]`) and picks between them with `if
|
|
122
|
+
* constexpr` -- a COMPILE-TIME question. The program's carrier answers it at run
|
|
123
|
+
* time: a `gea::TaggedUnion` whose live arm is a fact only the running program
|
|
124
|
+
* has. There is no single C++ argument that is both, and passing the union
|
|
125
|
+
* itself reaches the host's `else` branch, which casts it to `std::string` and
|
|
126
|
+
* does not compile.
|
|
127
|
+
*
|
|
128
|
+
* So the arm is chosen where it is known -- at the call, at run time -- and each
|
|
129
|
+
* arm is then an ordinary argument of its own carrier, adapted by the rule
|
|
130
|
+
* above. This is the same move the arity split makes for an optional: the
|
|
131
|
+
* program's runtime fact becomes a branch, and each branch is a call the host
|
|
132
|
+
* already accepts.
|
|
133
|
+
*/
|
|
134
|
+
/**
|
|
135
|
+
* One call, in whichever of the two forms the host stated.
|
|
136
|
+
*
|
|
137
|
+
* A path appends its arguments; a template places them, through the same
|
|
138
|
+
* `fillHostTemplate` every host MEMBER row already renders through, so a
|
|
139
|
+
* namespace member and a carrier member can never drift on what `{args}` means.
|
|
140
|
+
* A template that names a slot this call cannot fill is refused by name rather
|
|
141
|
+
* than emitted with a hole -- the identical fail-closed answer
|
|
142
|
+
* `emit-host-properties.ts` gives for a member row written for the wrong
|
|
143
|
+
* position.
|
|
144
|
+
*/
|
|
145
|
+
const callText = (spelling, args) => {
|
|
146
|
+
if (spelling.kind === 'path')
|
|
147
|
+
return `${spelling.text}(${args.join(', ')})`;
|
|
148
|
+
const filled = fillHostTemplate(spelling.emit, null, args, args.join(', '));
|
|
149
|
+
if (filled === null) {
|
|
150
|
+
throw createCppEmitBlockedError(`host-invocation:${hostCallName(spelling)}`, `the "${spelling.emit}" host template names a slot this call cannot fill`);
|
|
151
|
+
}
|
|
152
|
+
return filled;
|
|
153
|
+
};
|
|
154
|
+
const callLines = (call, passed, indent, depth) => {
|
|
155
|
+
const union = passed.findIndex((argument) => argument.representation.kind === 'tagged-union');
|
|
156
|
+
const carrier = union < 0 ? null : passed[union]?.representation;
|
|
157
|
+
if (carrier === null || carrier === undefined || carrier.kind !== 'tagged-union') {
|
|
158
|
+
const text = callText(call.spelling, passed.map((argument) => hostArgumentText(argument.representation, argument.text, call.spelling.arrayArguments)));
|
|
159
|
+
const bound = call.result === null ? null : hostResultText(call.result.representation, text, call.spelling);
|
|
160
|
+
return [`${indent}${call.result === null ? `${text};` : `${call.result.name} = ${bound};`}`];
|
|
161
|
+
}
|
|
162
|
+
// Bound once, then branched on: the argument's text is an expression, and
|
|
163
|
+
// testing `index()` on it and then reading an arm out of it would evaluate
|
|
164
|
+
// that expression twice per branch -- building the value again, and running
|
|
165
|
+
// whatever it does again with it.
|
|
166
|
+
//
|
|
167
|
+
// Inside a block of its own, always. The name is keyed by NESTING DEPTH, not
|
|
168
|
+
// by call site, so two calls in one body that each carry a union argument
|
|
169
|
+
// both bind `gea_host_arg_0` -- and where the call has no optional tail,
|
|
170
|
+
// `hostArityCallLines` below emits no enclosing block, so the second binding
|
|
171
|
+
// redeclared the first at function scope and clang refused the unit.
|
|
172
|
+
// (`encodeURIComponent(a); encodeURIComponent(b);` is exactly that shape:
|
|
173
|
+
// one `string | number | boolean` parameter, no optionals.) Bracing here
|
|
174
|
+
// rather than at the caller keeps the block with the declaration it scopes,
|
|
175
|
+
// and also removes a jump-over-initialization hazard: bodies branch with
|
|
176
|
+
// `goto`, and a `const auto&` at function scope can be jumped past.
|
|
177
|
+
const held = `${cppHostArgumentName}${depth}`;
|
|
178
|
+
const lines = [`${indent}{`, `${indent}const auto& ${held} = ${passed[union]?.text};`];
|
|
179
|
+
carrier.arms.forEach((arm, index) => {
|
|
180
|
+
const chosen = passed.map((argument, position) => position === union ? { text: `${held}.get<${index}>()`, representation: arm.value } : argument);
|
|
181
|
+
const last = index === carrier.arms.length - 1;
|
|
182
|
+
lines.push(last ? `${indent}} else {` : `${indent}${index === 0 ? 'if' : '} else if'} (${held}.index() == ${index}) {`);
|
|
183
|
+
lines.push(...callLines(call, chosen, `${indent} `, depth + 1));
|
|
184
|
+
});
|
|
185
|
+
lines.push(`${indent}}`);
|
|
186
|
+
lines.push(`${indent}}`);
|
|
187
|
+
return lines;
|
|
188
|
+
};
|
|
189
|
+
const invocation = (call, count, indent) => callLines(call, [...call.fixed, ...call.optionals.slice(0, count).map((argument) => ({ ...argument, text: `(*${argument.text})` }))], indent, 0);
|
|
190
|
+
/**
|
|
191
|
+
* The guard for one arity: every optional AFTER the omitted one must also be
|
|
192
|
+
* omitted, or the call is the hole this boundary cannot express.
|
|
193
|
+
*/
|
|
194
|
+
const holeGuard = (call, omitted, indent, names) => names
|
|
195
|
+
.slice(omitted + 1)
|
|
196
|
+
.map((name) => `${indent}if (${name}.has_value()) gea::detail::refuseOmittedArgument(${JSON.stringify(hostCallName(call.spelling))}, ${omitted});`);
|
|
197
|
+
/** The prefix of the temporaries this call binds; scoped to the call's own block, so two calls in one function never collide. */
|
|
198
|
+
const cppHostArgumentName = 'gea_host_arg_';
|
|
199
|
+
/**
|
|
200
|
+
* The call, once per arity the program can actually reach.
|
|
201
|
+
*
|
|
202
|
+
* `k` optional arguments produce `k + 1` branches: one for each prefix of them
|
|
203
|
+
* that is present, and the last for all of them. Presence is tested in order,
|
|
204
|
+
* so each branch knows every earlier optional is present and needs only to
|
|
205
|
+
* prove the ones after the first absence are absent too.
|
|
206
|
+
*
|
|
207
|
+
* Every optional is bound to a name first, for the reason the union branch
|
|
208
|
+
* binds one: the argument is an expression, and it is read once in a condition
|
|
209
|
+
* and again in a call. The whole thing sits inside a block so those names are
|
|
210
|
+
* this call's alone.
|
|
211
|
+
*/
|
|
212
|
+
export const hostArityCallLines = (call) => {
|
|
213
|
+
if (call.optionals.length === 0)
|
|
214
|
+
return invocation(call, 0, '');
|
|
215
|
+
const names = call.optionals.map((_, index) => `${cppHostArgumentName}optional_${index}`);
|
|
216
|
+
const bound = {
|
|
217
|
+
...call,
|
|
218
|
+
optionals: call.optionals.map((argument, index) => ({ ...argument, text: names[index] }))
|
|
219
|
+
};
|
|
220
|
+
const lines = ['{', ...call.optionals.map((argument, index) => ` const auto& ${names[index]} = ${argument.text};`)];
|
|
221
|
+
for (let omitted = 0; omitted < bound.optionals.length; omitted += 1) {
|
|
222
|
+
const opener = omitted === 0 ? 'if' : '} else if';
|
|
223
|
+
lines.push(` ${opener} (!${names[omitted]}.has_value()) {`);
|
|
224
|
+
lines.push(...holeGuard(bound, omitted, ' ', names));
|
|
225
|
+
lines.push(...invocation(bound, omitted, ' '));
|
|
226
|
+
}
|
|
227
|
+
lines.push(' } else {');
|
|
228
|
+
lines.push(...invocation(bound, bound.optionals.length, ' '));
|
|
229
|
+
lines.push(' }');
|
|
230
|
+
lines.push('}');
|
|
231
|
+
return lines;
|
|
232
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { CallableAbi, Representation } from '../../../representation/model.js';
|
|
2
|
+
import type { CallOperation, IrOperand } from '../../../ir/model.js';
|
|
3
|
+
import { type EmitContext } from '../emit-context.js';
|
|
4
|
+
/**
|
|
5
|
+
* `[[Call]]`/`[[Construct]]` on a `native-handle` receiver -- the invoke path
|
|
6
|
+
* `emitCall`/`emitConstruct` (emit.ts) take when a callee is the host handle
|
|
7
|
+
* itself, never a member of one (`nativeHandleMemberText`, emit-properties.ts,
|
|
8
|
+
* is the sibling for `Math.pow`-shaped reads; this is for `new Error(x)`).
|
|
9
|
+
*
|
|
10
|
+
* A qualified free-function symbol, `gea::host::<protocol>::<member>(...)`,
|
|
11
|
+
* called directly with an explicit template argument -- the same convention
|
|
12
|
+
* `gea::jsx::create<Node>(tag)` already uses, for the same reason: a C++
|
|
13
|
+
* function pointer stored inside `gea_runtime.h` cannot name a program's own
|
|
14
|
+
* generated struct (`gea_record_type|N`), because that struct is declared
|
|
15
|
+
* *after* this header is included. A free function template sidesteps that
|
|
16
|
+
* entirely -- it is instantiated at the call site, where the struct name is
|
|
17
|
+
* already in scope.
|
|
18
|
+
*
|
|
19
|
+
* This table is deliberately small: it is the backend's honest inventory of
|
|
20
|
+
* which host protocols have a *real* `gea::host` implementation behind them,
|
|
21
|
+
* keyed by the protocol string the checker bound (`nativeHandleMemberText`
|
|
22
|
+
* keys its own dispatch the identical way) -- never a guess, and never
|
|
23
|
+
* silently widened to a protocol this file has not implemented.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* One protocol's own invocation renderer.
|
|
27
|
+
*
|
|
28
|
+
* A single shared shape was enough while `ErrorConstructor` was the only entry,
|
|
29
|
+
* and it stopped being enough the moment a second protocol arrived that is not
|
|
30
|
+
* that shape: `String(x)` takes one argument of *any* carrier and returns a
|
|
31
|
+
* `std::string`, `new Error(m)` takes an optional string and returns a pointer
|
|
32
|
+
* to a program-generated struct. Those are not one convention with a parameter
|
|
33
|
+
* -- they are different conventions -- so each states and checks its own
|
|
34
|
+
* requirements here and refuses by name when a call does not meet them.
|
|
35
|
+
*/
|
|
36
|
+
type HostInvocationRenderer = (context: HostInvocationRequest) => string;
|
|
37
|
+
interface HostInvocationRequest {
|
|
38
|
+
readonly ctx: EmitContext;
|
|
39
|
+
readonly protocol: string;
|
|
40
|
+
readonly abi: CallableAbi;
|
|
41
|
+
readonly args: readonly IrOperand[];
|
|
42
|
+
readonly role: 'call' | 'construct';
|
|
43
|
+
/**
|
|
44
|
+
* The carrier this invocation's result is HELD as, where the graph published
|
|
45
|
+
* one -- which is not always what `abi.result` says.
|
|
46
|
+
*
|
|
47
|
+
* `abi` is the declaration's convention; this is the value this call site
|
|
48
|
+
* actually produces. The two differ for exactly the shape
|
|
49
|
+
* `errorConstructResultOverride` (semantics/normalize/producers/invocations.ts)
|
|
50
|
+
* licenses: `new RangeError(m) as RangeError & { code: string }` is declared
|
|
51
|
+
* to return the plain error interface and holds the intersection's record.
|
|
52
|
+
* `create<ErrorRecord>` is a template over the struct, so it can mint either
|
|
53
|
+
* -- and the one to mint is the one the program holds.
|
|
54
|
+
*/
|
|
55
|
+
readonly result: Representation | null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The renderer for each protocol whose *handle itself* is invoked.
|
|
59
|
+
*
|
|
60
|
+
* Deliberately small: it is the backend's honest inventory of which host
|
|
61
|
+
* protocols have a real `gea::host` implementation behind an invocation, keyed
|
|
62
|
+
* by the protocol string the checker bound (`nativeHandleMemberText`, in
|
|
63
|
+
* emit-properties.ts, keys its own member dispatch the identical way). Never a
|
|
64
|
+
* guess, and never silently widened to a protocol this file has not written.
|
|
65
|
+
*
|
|
66
|
+
* Exported so `host/native-protocols.ts` can read the key set as one of the
|
|
67
|
+
* tables a native-boundary claim is derived from, rather than restating this
|
|
68
|
+
* inventory as a fourth, hand-typed copy: this map IS the emitter's dispatch,
|
|
69
|
+
* not a description of it, so its keys are proof a protocol here is real.
|
|
70
|
+
*/
|
|
71
|
+
export declare const hostInvocations: ReadonlyMap<string, HostInvocationRenderer>;
|
|
72
|
+
export declare const hostMemberRenderers: ReadonlyMap<string, (ctx: EmitContext, member: string, operation: CallOperation) => string>;
|
|
73
|
+
/**
|
|
74
|
+
* The call/construct text for a `native-handle` invocation, or a thrown
|
|
75
|
+
* refusal naming exactly what is missing.
|
|
76
|
+
*/
|
|
77
|
+
export declare const nativeHandleInvocationText: (ctx: EmitContext, callee: Extract<Representation, {
|
|
78
|
+
readonly kind: "native-handle";
|
|
79
|
+
}>, abi: CallableAbi, args: readonly IrOperand[], role: "call" | "construct", result: Representation | null) => string;
|
|
80
|
+
/**
|
|
81
|
+
* A host *method* call -- `document.getElementById(id)`, `el.setAttribute(k, v)`.
|
|
82
|
+
*
|
|
83
|
+
* The access itself rendered nothing (`nativeHandleMemberText`, emit-properties.ts)
|
|
84
|
+
* because a host method is not a value: the host states one spelling for the
|
|
85
|
+
* whole call and none for the method on its own. That access recorded which
|
|
86
|
+
* member was reached and how the receiver renders, and this fills the host's
|
|
87
|
+
* template with both. Returns `null` when the callee is not a deferred host
|
|
88
|
+
* member, so the ordinary invoke paths run unchanged.
|
|
89
|
+
*/
|
|
90
|
+
export declare const hostCallText: (ctx: EmitContext, operation: CallOperation) => string | null;
|
|
91
|
+
export {};
|