@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,505 @@
|
|
|
1
|
+
import type { DeclarationId, FunctionId, RegionId } from '../../../identity/ids.js';
|
|
2
|
+
import type { ReactiveDependency } from '../reactive-dependencies.js';
|
|
3
|
+
import type { HostIntrinsicMember } from '../../../semantics/host-protocols.js';
|
|
4
|
+
import type { Representation } from '../../../representation/model.js';
|
|
5
|
+
/**
|
|
6
|
+
* What a host protocol's members lower to.
|
|
7
|
+
*
|
|
8
|
+
* A host object is not a struct this compiler lays out: its members are the
|
|
9
|
+
* host's own implementation, reached by a spelling the host defines. So a
|
|
10
|
+
* member is rendered from a template naming that spelling, exactly as the v1
|
|
11
|
+
* plugin's host shims do (`geatsc-plugin-gea/src/host-shims.ts`), rather than
|
|
12
|
+
* by inventing a field offset or a calling convention.
|
|
13
|
+
*
|
|
14
|
+
* Two kinds, because a host member is one of two things and the difference is
|
|
15
|
+
* observable. A `property` is read at the access itself -- `el.scrollTop` is a
|
|
16
|
+
* value. A `method` is NOT: `el.setAttribute` on its own is a function, and
|
|
17
|
+
* what the program does is *call* it, so the template renders at the call and
|
|
18
|
+
* the access alone renders nothing. Treating a method as a property would
|
|
19
|
+
* materialise a callable no host symbol corresponds to.
|
|
20
|
+
*
|
|
21
|
+
* `{receiver}` is the object the member was reached through, `{arg0}`,
|
|
22
|
+
* `{arg1}`, ... are the call's own arguments, and `{value}` -- in a `store`
|
|
23
|
+
* template only -- is what is being written. A template naming a slot the site
|
|
24
|
+
* does not supply is refused rather than rendered with a hole, so an arity the
|
|
25
|
+
* host does not implement cannot reach C++.
|
|
26
|
+
*/
|
|
27
|
+
export type HostMember =
|
|
28
|
+
/**
|
|
29
|
+
* A data property, with one template per direction.
|
|
30
|
+
*
|
|
31
|
+
* Read and write are separate host spellings, not one spelling used twice:
|
|
32
|
+
* `view.frame` reads as `(...).frame` and writes as `(...).frame = {value}`,
|
|
33
|
+
* and a numeric setter may need a cast the getter does not. Either may be
|
|
34
|
+
* `null` -- a read-only member states no `store`, and an access in the
|
|
35
|
+
* direction a member does not state is refused by name at the site rather
|
|
36
|
+
* than rendered from the other direction's text. A row states at least one;
|
|
37
|
+
* a row stating neither would claim a member it cannot render at all.
|
|
38
|
+
*/
|
|
39
|
+
{
|
|
40
|
+
readonly kind: 'property';
|
|
41
|
+
readonly emit: string | null;
|
|
42
|
+
readonly store: string | null;
|
|
43
|
+
/** Fixed carrier returned by the host template, when it differs from a site's checker result. */
|
|
44
|
+
readonly resultRepresentation?: Representation;
|
|
45
|
+
/** Direct numeric operands can use this borrowed sequence spelling; reads and spreads retain the callable ABI. */
|
|
46
|
+
readonly numericRestCall?: string;
|
|
47
|
+
} | {
|
|
48
|
+
readonly kind: 'method';
|
|
49
|
+
readonly emit: string;
|
|
50
|
+
readonly arity: number;
|
|
51
|
+
readonly receiver?: 'host' | 'raw';
|
|
52
|
+
/** The host returns a dynamic Value that must be checked at the result boundary. */
|
|
53
|
+
readonly result?: 'dynamic';
|
|
54
|
+
} | {
|
|
55
|
+
readonly kind: 'method';
|
|
56
|
+
readonly emit: string;
|
|
57
|
+
readonly arity: 'variadic';
|
|
58
|
+
readonly receiver?: 'host' | 'raw';
|
|
59
|
+
readonly result?: 'dynamic';
|
|
60
|
+
} | {
|
|
61
|
+
readonly kind: 'method';
|
|
62
|
+
readonly emit: string;
|
|
63
|
+
readonly arity: 'call-site';
|
|
64
|
+
readonly receiver?: 'host' | 'raw';
|
|
65
|
+
readonly result?: 'dynamic';
|
|
66
|
+
} | {
|
|
67
|
+
readonly kind: 'method';
|
|
68
|
+
readonly emit: string;
|
|
69
|
+
readonly arity: 'pass-through';
|
|
70
|
+
readonly receiver?: 'host' | 'raw';
|
|
71
|
+
readonly result?: 'dynamic';
|
|
72
|
+
};
|
|
73
|
+
/** Key: `<protocol>.<member>`, the same protocol string the checker bound. */
|
|
74
|
+
export type HostMemberTable = ReadonlyMap<string, HostMember>;
|
|
75
|
+
/**
|
|
76
|
+
* What constructing one of a host's own types costs, as the host spells it.
|
|
77
|
+
*
|
|
78
|
+
* A separate table from `HostMemberTable` for the same reason `hostInvocations`
|
|
79
|
+
* and `hostMemberRenderers` are two maps in `emit-host-invoke.ts`: they answer
|
|
80
|
+
* about two different things. A protocol may have constructible values, callable
|
|
81
|
+
* members, or both, and one map keyed by protocol could not say which.
|
|
82
|
+
*
|
|
83
|
+
* The template carries `{argN}` slots and NO `{receiver}`: a construction has no
|
|
84
|
+
* receiver, and `fillHostTemplate` refuses a template that names one -- which is
|
|
85
|
+
* the fail-closed answer for a host row that was written for the wrong position.
|
|
86
|
+
*
|
|
87
|
+
* `arity` is a fixed count for a template naming `{argN}` slots, and the string
|
|
88
|
+
* `'pass-through'` for one naming the single `{args}` slot instead -- the same
|
|
89
|
+
* distinction `HostMember`'s own `'pass-through'` arm makes, for the same
|
|
90
|
+
* reason: `new MediaStream({args})`, `new AudioContext({args})` and the like
|
|
91
|
+
* take however many constructor arguments the program wrote, and which of the
|
|
92
|
+
* host's overloads that means is for C++'s own overload resolution to decide
|
|
93
|
+
* from the argument types, not something to count here. A fixed number would
|
|
94
|
+
* refuse every call whose argument count did not match the one call site the
|
|
95
|
+
* number happened to be read from.
|
|
96
|
+
*/
|
|
97
|
+
export interface HostConstructor {
|
|
98
|
+
readonly emit: string;
|
|
99
|
+
readonly arity: number | 'pass-through';
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Key: the carrier the host stated for the protocol, falling back to the
|
|
103
|
+
* declared protocol name for a host that stated none -- the same key
|
|
104
|
+
* `HostMemberTable` uses, so one host's rows are all filed under one name.
|
|
105
|
+
*/
|
|
106
|
+
export type HostConstructorTable = ReadonlyMap<string, HostConstructor>;
|
|
107
|
+
/**
|
|
108
|
+
* One host handle's `[[Call]]` spelling, keyed `${carrier}.call`.
|
|
109
|
+
*
|
|
110
|
+
* Hosts can expose a callable value which itself has typed members. Keeping
|
|
111
|
+
* that callable as a host handle lets both halves remain authenticated by the
|
|
112
|
+
* checker instead of inventing a language-level function object.
|
|
113
|
+
*/
|
|
114
|
+
export type HostInvocationTable = ReadonlyMap<string, HostConstructor>;
|
|
115
|
+
/**
|
|
116
|
+
* Which host type each host type derives from: carrier to immediate base
|
|
117
|
+
* carrier.
|
|
118
|
+
*
|
|
119
|
+
* A host's own inheritance, stated by the host. AppKit's `NSStackView` IS an
|
|
120
|
+
* `NSView` -- passing one where the other is declared is not a conversion at
|
|
121
|
+
* all, and the generated bridge makes it free in C++ by giving the wrapper
|
|
122
|
+
* structs the same inheritance (`struct NSStackView : gea::apple::AppKit::NSView`).
|
|
123
|
+
* But nothing in TypeScript's structural view says two opaque handles are
|
|
124
|
+
* related, so without this the backend refuses an upcast the target performs
|
|
125
|
+
* implicitly.
|
|
126
|
+
*
|
|
127
|
+
* The chain is walked exactly once, by `compiler.ts`, into the transitive
|
|
128
|
+
* answer each `native-handle` carrier then STATES (`Representation`'s
|
|
129
|
+
* `native-handle` arm). Nothing reads this table at emission: the two
|
|
130
|
+
* questions that need the fact -- the conversion census admitting the pair and
|
|
131
|
+
* the printer rendering it -- are both pure carrier-to-carrier, and a table
|
|
132
|
+
* only one of them could reach is what let a certificate refuse an upcast the
|
|
133
|
+
* printer knew how to write.
|
|
134
|
+
*
|
|
135
|
+
* A host that states no inheritance gets an empty table and every handle stays
|
|
136
|
+
* unrelated to every other, which is the correct answer for a host whose types
|
|
137
|
+
* really are unrelated.
|
|
138
|
+
*/
|
|
139
|
+
export type HostBaseTable = ReadonlyMap<string, string>;
|
|
140
|
+
/**
|
|
141
|
+
* Everything the hosts installed in one compilation say about their own types.
|
|
142
|
+
*
|
|
143
|
+
* Bundled rather than threaded one map per question: they are all the same
|
|
144
|
+
* plugin's answer about the same protocols, they are all unioned once by
|
|
145
|
+
* `compiler.ts`, and they all reach emission by the same route. A signature
|
|
146
|
+
* that grew a parameter per table would say they were independent, and the
|
|
147
|
+
* next host fact would be a fourth.
|
|
148
|
+
*/
|
|
149
|
+
/**
|
|
150
|
+
* The header that declares each host carrier.
|
|
151
|
+
*
|
|
152
|
+
* Keyed by carrier rather than by plugin so a unit includes exactly the hosts
|
|
153
|
+
* it used: a program that never touches AppKit must not carry an AppKit header,
|
|
154
|
+
* and "which plugin was installed" is the wrong question -- installing a plugin
|
|
155
|
+
* is what makes a host available, not what makes a program use it.
|
|
156
|
+
*/
|
|
157
|
+
export type HostIncludeTable = ReadonlyMap<string, string>;
|
|
158
|
+
/**
|
|
159
|
+
* The free functions a host defines, keyed by the name a program writes.
|
|
160
|
+
*
|
|
161
|
+
* A host function is not a member of anything and not a constructor of
|
|
162
|
+
* anything: `installRootViewController(vc)` and `requestAnimationFrame(f)` are
|
|
163
|
+
* ambient names that resolve to a C++ free function the host's own runtime
|
|
164
|
+
* defines. Nothing declares a C++ *variable* of that name, so a compiler with
|
|
165
|
+
* no table for it emits `extern gea::CallableObject<...> installRootViewController;`
|
|
166
|
+
* and calls through it -- text that compiles and never links, because the
|
|
167
|
+
* symbol the host exports is a function and this named a global.
|
|
168
|
+
*
|
|
169
|
+
* The host states the qualified spelling itself (`embeddedHostFunctions` in
|
|
170
|
+
* v1's plugin packages, verbatim), so the call renders as the call it always
|
|
171
|
+
* was.
|
|
172
|
+
*/
|
|
173
|
+
export type HostFunctionTable = ReadonlyMap<string, string>;
|
|
174
|
+
/**
|
|
175
|
+
* The same, for the names one host declares more than once.
|
|
176
|
+
*
|
|
177
|
+
* Keyed by the *declaration file* the program's binding resolved to, because
|
|
178
|
+
* that is what tells two same-named functions apart: Apple's UIKit and AppKit
|
|
179
|
+
* each declare an `installRootView`, taking different views and calling
|
|
180
|
+
* different thunks, and a table keyed by name can only hold one of them. This
|
|
181
|
+
* one is consulted first and the flat table answers everything it does not
|
|
182
|
+
* cover, so a host with no such collisions states nothing and nothing changes.
|
|
183
|
+
*/
|
|
184
|
+
export type HostFunctionFileTable = ReadonlyMap<string, ReadonlyMap<string, string>>;
|
|
185
|
+
/**
|
|
186
|
+
* The declaration-file-keyed sibling of `HostFunctionFileTable` for a table
|
|
187
|
+
* whose flat form is a set of claimed names rather than a name-to-spelling
|
|
188
|
+
* map -- `PluginCapabilities.nativeConstants`'s keys, `hostNamespaces.roots`,
|
|
189
|
+
* `hostSingletons`. A name claimed twice by one host, under two of its own
|
|
190
|
+
* files, means two different things by it exactly as a doubly-declared
|
|
191
|
+
* function does; this states which declaration this program actually
|
|
192
|
+
* resolved to answers, the same way the file-keyed function table does,
|
|
193
|
+
* consulted first and answered by the flat set for every host with no such
|
|
194
|
+
* collision.
|
|
195
|
+
*/
|
|
196
|
+
export type HostNameFileTable = ReadonlyMap<string, ReadonlySet<string>>;
|
|
197
|
+
/**
|
|
198
|
+
* How a host names something the program CALLS.
|
|
199
|
+
*
|
|
200
|
+
* Two forms, because hosts state two genuinely different things and the
|
|
201
|
+
* difference is not recoverable from the text:
|
|
202
|
+
*
|
|
203
|
+
* - a PATH is the function's own name, and the call is that name with the
|
|
204
|
+
* arguments appended -- `gea::host::device_info::deviceId(a, b)`;
|
|
205
|
+
* - a TEMPLATE places the arguments itself, and can therefore do something to
|
|
206
|
+
* the call that the name alone cannot -- wrap the result
|
|
207
|
+
* (`gea::host::MediaStream(gea::host::media::get_user_media_audio({args}))`,
|
|
208
|
+
* which turns a raw handle into the typed value the program's carrier
|
|
209
|
+
* actually holds), reorder, or take the receiver first.
|
|
210
|
+
*
|
|
211
|
+
* This used to be one `string`, always a path, and a package row that stated a
|
|
212
|
+
* template was reduced to the bare symbol inside it or dropped -- so a member a
|
|
213
|
+
* host described twice, once bare and once typed, silently rendered as the bare
|
|
214
|
+
* one and the wrapper went missing. That is a *carrier* difference, not a
|
|
215
|
+
* cosmetic one: `get_user_media_audio` returns a `NativeMediaStreamHandle`
|
|
216
|
+
* (`unsigned int`) where the program holds `gea::Promise<gea::host::MediaStream>`.
|
|
217
|
+
* Naming the two forms apart is what lets the typed row win without the
|
|
218
|
+
* renderer having to guess which kind of string it was handed.
|
|
219
|
+
*/
|
|
220
|
+
export type HostCallSpelling = ({
|
|
221
|
+
readonly kind: 'path';
|
|
222
|
+
readonly text: string;
|
|
223
|
+
} | {
|
|
224
|
+
readonly kind: 'template';
|
|
225
|
+
readonly emit: string;
|
|
226
|
+
}) & {
|
|
227
|
+
readonly arrayArguments?: 'snapshot' | 'native';
|
|
228
|
+
readonly arguments?: 'dynamic';
|
|
229
|
+
/**
|
|
230
|
+
* The host hands back a `gea::Value`, whatever carrier the PROGRAM holds the
|
|
231
|
+
* result in. `Reflect.get` is the case: its target is boxed, so the runtime
|
|
232
|
+
* can only answer with a boxed value -- while the compiler may well know the
|
|
233
|
+
* result is a `number`, because the target it reflects over is a
|
|
234
|
+
* `Record<string, number>` whose values are numbers no matter how the key is
|
|
235
|
+
* spelled. Without this the call assigned a `Value` straight into a `double`
|
|
236
|
+
* and clang refused the unit; the crossing back is an unbox, and it is stated
|
|
237
|
+
* by the host rather than guessed from the spelling's name.
|
|
238
|
+
*/
|
|
239
|
+
readonly result?: 'dynamic';
|
|
240
|
+
};
|
|
241
|
+
/** The one string that identifies a call spelling -- for a diagnostic, and as the key its preamble is stated under. */
|
|
242
|
+
export declare const hostCallName: (spelling: HostCallSpelling) => string;
|
|
243
|
+
/**
|
|
244
|
+
* A host's NAMESPACE surface: global names that are paths, not values.
|
|
245
|
+
*
|
|
246
|
+
* `deviceInfo`, `Display`, `navigator` are not objects a program can hold.
|
|
247
|
+
* Every use is a path to a C++ spelling -- `deviceInfo.deviceId(...)` is
|
|
248
|
+
* `gea::host::device_info::deviceId(...)`, `Display.width` is `gea::host::Display.width`
|
|
249
|
+
* -- and the object itself never exists at run time. Given no table for them
|
|
250
|
+
* the backend has one shape left for "a global you read members off": a
|
|
251
|
+
* structural record, so it emits `extern std::shared_ptr<gea_record_type_801>
|
|
252
|
+
* deviceInfo;` and member reads through it. That compiles and never links,
|
|
253
|
+
* the same way a host free function declared as a callable global does.
|
|
254
|
+
*
|
|
255
|
+
* Keyed by the PROGRAM's path rather than the host's prefix. The package states
|
|
256
|
+
* a nested namespace by spelling its whole program-facing path
|
|
257
|
+
* (`navigator.bluetooth.keyboard`), so following that spelling makes "what does
|
|
258
|
+
* this member render to" and "is this path itself a namespace" one lookup and
|
|
259
|
+
* one prefix test over one key space -- where translating to the host's prefix
|
|
260
|
+
* first would be a second naming rule, free to disagree with the tables.
|
|
261
|
+
*/
|
|
262
|
+
export interface HostNamespaceTable {
|
|
263
|
+
/** The global names that begin a namespace path. */
|
|
264
|
+
readonly roots: ReadonlySet<string>;
|
|
265
|
+
/**
|
|
266
|
+
* Namespace paths whose JavaScript `typeof` differs from the carrier used
|
|
267
|
+
* only to resolve their members. `Buffer` is both a callable constructor
|
|
268
|
+
* object and a namespace of statics, while `performance` is an object; the
|
|
269
|
+
* host owns that distinction because neither path is materialized as a C++
|
|
270
|
+
* value the generic carrier table can inspect.
|
|
271
|
+
*/
|
|
272
|
+
readonly typeofs: ReadonlyMap<string, 'function' | 'object'>;
|
|
273
|
+
/** `path.member` to the C++ spelling a CALL through it renders. */
|
|
274
|
+
readonly methods: ReadonlyMap<string, HostCallSpelling>;
|
|
275
|
+
/** `path.member` to the C++ spelling a READ of it renders. */
|
|
276
|
+
readonly properties: ReadonlyMap<string, string>;
|
|
277
|
+
/**
|
|
278
|
+
* `path.member` to the C++ spelling a WRITE of it renders.
|
|
279
|
+
*
|
|
280
|
+
* A separate map from `properties`, never merged in: the host states a
|
|
281
|
+
* different spelling for each direction -- `Display.autoRotate` READS
|
|
282
|
+
* `gea::host::Display.autoRotate()` and WRITES
|
|
283
|
+
* `gea::host::Display.setAutoRotate(...)` -- so one map keyed by `path.member`
|
|
284
|
+
* could hold only one of the two, exactly the reason `HostMemberTable`'s own
|
|
285
|
+
* `property` arm carries an `emit` and a `store` rather than one `emit` field.
|
|
286
|
+
*/
|
|
287
|
+
readonly propertySetters: ReadonlyMap<string, string>;
|
|
288
|
+
}
|
|
289
|
+
export declare const noHostNamespaces: HostNamespaceTable;
|
|
290
|
+
/**
|
|
291
|
+
* Whether a path names a namespace rather than a member of one.
|
|
292
|
+
*
|
|
293
|
+
* Asked of the member tables' own keys: `navigator.bluetooth` is a namespace
|
|
294
|
+
* exactly because members are stated under it. A prefix test rather than a
|
|
295
|
+
* separate list, so a path cannot be a namespace here and have no members
|
|
296
|
+
* there.
|
|
297
|
+
*/
|
|
298
|
+
export declare const isHostNamespacePath: (namespaces: HostNamespaceTable, path: string) => boolean;
|
|
299
|
+
/**
|
|
300
|
+
* Which class fields are held in a reactive cell, and what that cell is spelled.
|
|
301
|
+
*
|
|
302
|
+
* The two halves travel together because neither is usable alone: a set of
|
|
303
|
+
* fields with no cell spelling names storage nothing can render, and a spelling
|
|
304
|
+
* with no fields is a type nothing uses. Both come from the same plugin
|
|
305
|
+
* statement (`PluginCapabilities.reactiveClassFields` / `nativeReactiveCell`),
|
|
306
|
+
* so keeping them in one object is what stops a compilation from marking fields
|
|
307
|
+
* reactive under one plugin and spelling the cell from another.
|
|
308
|
+
*/
|
|
309
|
+
export interface ReactiveCellPlan {
|
|
310
|
+
readonly fields: ReadonlyMap<DeclarationId, ReadonlySet<string>>;
|
|
311
|
+
readonly cell: string | null;
|
|
312
|
+
/**
|
|
313
|
+
* What a unit must carry before it may name `cell`, from the plugin that
|
|
314
|
+
* stated the spelling (`PluginCapabilities.nativeReactiveCellPreamble`).
|
|
315
|
+
*
|
|
316
|
+
* `cell` says what the cell is spelled and this says what that spelling
|
|
317
|
+
* needs -- the same fact, one step on, which is why it travels beside it
|
|
318
|
+
* rather than as its own emitter channel. `translation-unit.ts` emits it only
|
|
319
|
+
* where a field is actually celled: gea's cell lives in the engine's own
|
|
320
|
+
* `ui/signal.h`, which is on the include path for an engine build only.
|
|
321
|
+
*/
|
|
322
|
+
readonly cellPreamble: readonly string[];
|
|
323
|
+
/**
|
|
324
|
+
* Which reactive fields each BODY reads, so a caller can subscribe a thunk
|
|
325
|
+
* it cannot see inside of -- see `targets/cpp/reactive-dependencies.ts`.
|
|
326
|
+
*
|
|
327
|
+
* It lives on the reactive plan rather than travelling as its own emitter
|
|
328
|
+
* parameter because it answers the same question the two fields above do,
|
|
329
|
+
* one step further along: `fields` says which storage is a cell, `cell` says
|
|
330
|
+
* what the cell is spelled, and this says which cells a given body depends
|
|
331
|
+
* on. A consumer that has one always wants the others. `compiler.ts` states
|
|
332
|
+
* it empty -- the plugins that decide `fields` have no IR -- and
|
|
333
|
+
* `translation-unit.ts`, which does, fills it in for the emission it runs.
|
|
334
|
+
*/
|
|
335
|
+
readonly dependencies: ReadonlyMap<FunctionId | RegionId, readonly ReactiveDependency[]>;
|
|
336
|
+
/**
|
|
337
|
+
* The same census narrowed for a NODE slot, where re-running a binding means
|
|
338
|
+
* rebuilding a subtree rather than rewriting a value -- so a dependency
|
|
339
|
+
* carried in from a callee is kept only when the callee BRANCHES on it. See
|
|
340
|
+
* `ReactiveDependencyCensus` in `targets/cpp/reactive-dependencies.ts` for
|
|
341
|
+
* why the two censuses cannot be one.
|
|
342
|
+
*/
|
|
343
|
+
readonly nodeDependencies: ReadonlyMap<FunctionId | RegionId, readonly ReactiveDependency[]>;
|
|
344
|
+
/**
|
|
345
|
+
* Which reactive fields hold a COMPANION revision cell rather than a cell of
|
|
346
|
+
* their own -- `records.ts`'s own decision, reported by it and read back
|
|
347
|
+
* here. See `cppReactiveRevisionFieldName`.
|
|
348
|
+
*
|
|
349
|
+
* Like `dependencies`, `compiler.ts` states it empty (the plugins that decide
|
|
350
|
+
* `fields` have no carriers) and `translation-unit.ts` fills it in from the
|
|
351
|
+
* struct rendering that just made the call.
|
|
352
|
+
*/
|
|
353
|
+
readonly revisions: ReadonlyMap<string, ReadonlySet<string>>;
|
|
354
|
+
/**
|
|
355
|
+
* Which struct members are held in a cell, by struct name -- `records.ts`'s
|
|
356
|
+
* own decision, read back.
|
|
357
|
+
*
|
|
358
|
+
* Keyed by struct rather than by class declaration because a reactive struct
|
|
359
|
+
* is not only a class: the ELEMENT record of a reactive array is reactive
|
|
360
|
+
* too, so `cell.filled = 1` notifies exactly the row props that read it, and
|
|
361
|
+
* an element record has no declaration to key by.
|
|
362
|
+
*/
|
|
363
|
+
readonly celled: ReadonlyMap<string, ReadonlySet<string>>;
|
|
364
|
+
/**
|
|
365
|
+
* Which struct members a JSX slot actually BINDS, by struct name --
|
|
366
|
+
* `reactive-dependencies.ts`'s `reactiveBoundRecordFields`.
|
|
367
|
+
*
|
|
368
|
+
* Two consumers, one question. `records.ts` cells an element record's member
|
|
369
|
+
* only when a row renders it, and the emitter skips the companion revision
|
|
370
|
+
* notify for a member no row renders: writing `cell.piece = -1` when nothing
|
|
371
|
+
* displays `piece` would otherwise tick the array's revision and rebuild
|
|
372
|
+
* every row, which is both wasted work and the trigger for a real defect
|
|
373
|
+
* (the rebuild re-subscribes the surviving element records, so effects
|
|
374
|
+
* accumulate).
|
|
375
|
+
*/
|
|
376
|
+
readonly boundRecordFields: ReadonlyMap<string, ReadonlySet<string>>;
|
|
377
|
+
}
|
|
378
|
+
export interface HostSpellings {
|
|
379
|
+
readonly members: HostMemberTable;
|
|
380
|
+
readonly constructors: HostConstructorTable;
|
|
381
|
+
readonly invocations: HostInvocationTable;
|
|
382
|
+
readonly arraySnapshotFunctions?: ReadonlySet<string>;
|
|
383
|
+
readonly nativeArrayFunctions?: ReadonlySet<string>;
|
|
384
|
+
readonly functions: HostFunctionTable;
|
|
385
|
+
/** The global names the hosts own as PATHS rather than as values. */
|
|
386
|
+
readonly namespaces: HostNamespaceTable;
|
|
387
|
+
/** A host's own `[[HasInstance]]` per namespace-root carrier -- see `PluginCapabilities.hostInstanceTests`. */
|
|
388
|
+
readonly instanceTests: ReadonlyMap<string, string>;
|
|
389
|
+
/** The global names a host holds one instance of and reaches by name -- see `PluginCapabilities.hostSingletons`. */
|
|
390
|
+
readonly singletons: ReadonlySet<string>;
|
|
391
|
+
/** What a unit must declare before it may name a spelling, keyed by the spelling. */
|
|
392
|
+
readonly preambles: ReadonlyMap<string, readonly string[]>;
|
|
393
|
+
readonly includes: HostIncludeTable;
|
|
394
|
+
/** What a JSX fragment builds, in the host's own C++; `null` when no installed host has one -- see `PluginCapabilities.elementFragment`. */
|
|
395
|
+
readonly fragment: string | null;
|
|
396
|
+
/** Which class fields this compilation holds in a reactive cell, and the cell's own spelling. */
|
|
397
|
+
readonly reactive: ReactiveCellPlan;
|
|
398
|
+
/**
|
|
399
|
+
* `<carrier>.<member>` keys (the same key space `HostMemberTable` uses) whose
|
|
400
|
+
* REAL C++ return is `void`, when the checker's declared return is not.
|
|
401
|
+
*
|
|
402
|
+
* `OscillatorNode.connect` is the case this exists for: `lib`'s ambient
|
|
403
|
+
* `connect(destination): AudioDestinationNode` states the Web Audio
|
|
404
|
+
* chaining convention, but `gea::host::OscillatorNode::connect` (the actual
|
|
405
|
+
* function this compiler calls) returns `void` -- the package's own
|
|
406
|
+
* `nativeMemberMethods` states as much per row (`returnType: "void"`), and
|
|
407
|
+
* that is the truth an emitted call has to render against, not the checker's
|
|
408
|
+
* declared shape. Without this, `emitCall` mints a variable of the CHECKER's
|
|
409
|
+
* non-void carrier and assigns a void expression to it, which certifies and
|
|
410
|
+
* emits (the call itself has a real host spelling) and fails only in clang:
|
|
411
|
+
* "no viable overloaded '='". A member listed here is always emitted as a
|
|
412
|
+
* bare statement, discarding whatever `operation.result` the checker's ABI
|
|
413
|
+
* would otherwise have this backend capture.
|
|
414
|
+
*/
|
|
415
|
+
readonly voidResults: ReadonlySet<string>;
|
|
416
|
+
/**
|
|
417
|
+
* A reflectable host intrinsic's own member list, keyed by protocol name --
|
|
418
|
+
* the SAME data `semantics/host-protocols.ts`'s `HostProtocolBinding.members`
|
|
419
|
+
* carries per declaration, collected here into one flat table because a
|
|
420
|
+
* reflection call (`Object.getOwnPropertyDescriptor(Math, k)`) has only the
|
|
421
|
+
* receiver's `native-handle` REPRESENTATION in hand at emission, which
|
|
422
|
+
* carries a protocol NAME and no declaration id to look a binding up by.
|
|
423
|
+
*
|
|
424
|
+
* Absent (no entry) for a protocol `bindAmbientValue` never classified --
|
|
425
|
+
* every host-carried protocol (`native !== null`), and every protocol
|
|
426
|
+
* reached through a route other than an ambient global read. A reflection
|
|
427
|
+
* renderer must tell that apart from a classified-but-EMPTY list: absence
|
|
428
|
+
* means "no static answer exists" and refuses by name, where an empty list
|
|
429
|
+
* is itself the true, checked answer "this intrinsic has no own members".
|
|
430
|
+
*/
|
|
431
|
+
readonly intrinsicMembers: ReadonlyMap<string, readonly HostIntrinsicMember[]>;
|
|
432
|
+
}
|
|
433
|
+
export declare const coreHostMembers: HostMemberTable;
|
|
434
|
+
/**
|
|
435
|
+
* The ambient FREE FUNCTIONS the language itself defines on the global object,
|
|
436
|
+
* to the C++ each is -- the `hostFunctions` half of what `coreHostMembers` is
|
|
437
|
+
* to `hostMembers`.
|
|
438
|
+
*
|
|
439
|
+
* These are ECMAScript's, not any host's, so they belong here and not in a
|
|
440
|
+
* plugin package: `parseInt` is defined by ECMA-262 §19.2.5 and is present in
|
|
441
|
+
* every conforming environment, gea or otherwise. Before this table they had
|
|
442
|
+
* no claim anywhere, so `projection/bindings.ts` fell through to the ordinary
|
|
443
|
+
* external-cell case and `translation-unit.ts` declared `extern
|
|
444
|
+
* gea::CallableObject<double(std::string, gea::Optional<double>)> parseInt;`
|
|
445
|
+
* -- a global VARIABLE no object file defines. That passes a `-fsyntax-only`
|
|
446
|
+
* check, never links, and (if something does define the symbol) calls through
|
|
447
|
+
* a null invoke pointer. `plugins/model.ts`'s own `hostFunctions` comment
|
|
448
|
+
* describes exactly that failure for the host case.
|
|
449
|
+
*
|
|
450
|
+
* `parseInt` and `parseFloat` name `NumberConstructor`'s functions rather than
|
|
451
|
+
* twins of their own, because ECMA-262 21.1.2.13 and 21.1.2.12 define
|
|
452
|
+
* `Number.parseInt`/`Number.parseFloat` as *the same function objects* as the
|
|
453
|
+
* globals. `isNaN`/`isFinite` do get their own spellings, because the global
|
|
454
|
+
* pair and the `Number` pair are genuinely different functions -- see
|
|
455
|
+
* `gea::host::globalIsNaN` in `gea_runtime.h`.
|
|
456
|
+
*/
|
|
457
|
+
export declare const coreHostFunctions: HostFunctionTable;
|
|
458
|
+
/**
|
|
459
|
+
* The ambient CONSTANTS the language defines on the global object, to the text
|
|
460
|
+
* each read renders.
|
|
461
|
+
*
|
|
462
|
+
* `NaN` (ECMA-262 §19.1.1) and `Infinity` (§19.1.2) are `declare var`s in
|
|
463
|
+
* `lib.es5.d.ts`, so without a claim here they were placed as ordinary
|
|
464
|
+
* external cells and the unit emitted `extern double NaN;` -- again a symbol
|
|
465
|
+
* nothing defines. A constant is the right storage rather than a function or a
|
|
466
|
+
* cell: neither name is readable-and-writable in any meaningful sense (both
|
|
467
|
+
* are non-writable, non-configurable properties of the global object), so
|
|
468
|
+
* every read is the value, spelled inline, exactly as
|
|
469
|
+
* `BindingStorage`'s `host-constant` describes for an Objective-C enumerator.
|
|
470
|
+
*
|
|
471
|
+
* `undefined` (§19.1.3) is not here: TypeScript treats it as a keyword with
|
|
472
|
+
* its own type rather than a binding this projection ever asks about, so it
|
|
473
|
+
* needs no cell and has none.
|
|
474
|
+
*/
|
|
475
|
+
export declare const coreHostConstants: ReadonlyMap<string, string>;
|
|
476
|
+
/**
|
|
477
|
+
* The member a protocol states, looked up in the table this compilation built.
|
|
478
|
+
*
|
|
479
|
+
* The table is passed rather than imported: a plugin installs host protocols of
|
|
480
|
+
* its own, and a lookup that read a module-level map could only ever see this
|
|
481
|
+
* file's half of the answer.
|
|
482
|
+
*/
|
|
483
|
+
export declare const hostMemberOf: (table: HostMemberTable, protocol: string, member: string) => HostMember | undefined;
|
|
484
|
+
/**
|
|
485
|
+
* The spec's own `length` for a builtin, or `null` where none is stated here.
|
|
486
|
+
*
|
|
487
|
+
* Separated from `hostIntrinsicLengthOf` because a builtin read as a VALUE has
|
|
488
|
+
* no census arity to fall back to: `0` would be a fabricated answer, and the
|
|
489
|
+
* reader refuses by name instead. Same map, so the two readers cannot drift.
|
|
490
|
+
*/
|
|
491
|
+
export declare const statedHostIntrinsicLength: (protocol: string, member: string) => number | null;
|
|
492
|
+
export declare const hostIntrinsicLengthOf: (protocol: string, member: string, censusArity: number | null) => number;
|
|
493
|
+
export declare const fillHostTemplate: (emit: string, receiver: string | null, args: readonly string[], variadicArgs?: string | null, value?: string | null) => string | null;
|
|
494
|
+
/**
|
|
495
|
+
* How many arguments a host template consumes, read from the template itself.
|
|
496
|
+
*
|
|
497
|
+
* The template is the authority on this and nothing else is: it names
|
|
498
|
+
* `{arg0}`, `{arg1}`, ... exactly as many times as the host spelling needs, and
|
|
499
|
+
* `fillHostTemplate` refuses a slot the call cannot fill. Taking the count from
|
|
500
|
+
* the declared parameter list instead would be a second answer to the same
|
|
501
|
+
* question, free to drift from the text that actually gets rendered -- and a
|
|
502
|
+
* declared optional parameter the spelling does not mention would make the two
|
|
503
|
+
* disagree immediately.
|
|
504
|
+
*/
|
|
505
|
+
export declare const templateArity: (emit: string) => number;
|