@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,340 @@
|
|
|
1
|
+
import { resultOf } from '../semantics/model/operands.js';
|
|
2
|
+
/**
|
|
3
|
+
* The storage a host claims for a name, or `null` when no host claims it.
|
|
4
|
+
*
|
|
5
|
+
* Asked at BOTH sites that can produce a host-owned cell, and that is the
|
|
6
|
+
* point of it being a function. A program reaches an ambient name in one of
|
|
7
|
+
* two ways -- by writing the declaration itself (`declare const deviceInfo:
|
|
8
|
+
* {...}` in its own source, which introduces a cell) or by merely reading one
|
|
9
|
+
* the environment declares -- and which of the two it used says nothing about
|
|
10
|
+
* whose name it is. When the two sites answered separately, a program that
|
|
11
|
+
* declared its own view of the host got `extern std::shared_ptr<...>
|
|
12
|
+
* deviceInfo;` while `requestAnimationFrame`, reached the other way three
|
|
13
|
+
* lines later, resolved to the host's function.
|
|
14
|
+
*
|
|
15
|
+
* The order is constant, then function, then namespace, then singleton. A
|
|
16
|
+
* constant and a function each name something the program can hold or call; a
|
|
17
|
+
* namespace and a singleton name neither, so they are asked last.
|
|
18
|
+
* `__gea_audioContext` is what makes the order matter rather than merely be
|
|
19
|
+
* tidy: the host states it as a constant AND states members under its name,
|
|
20
|
+
* because the members really are members of that one object, and it is the
|
|
21
|
+
* constant that must win.
|
|
22
|
+
*
|
|
23
|
+
* Each of the four is asked twice: once of the table keyed by the declaration
|
|
24
|
+
* FILE this program's binding resolved to, and once of the flat table keyed
|
|
25
|
+
* by name alone. The file-keyed answer always wins, on the same reasoning
|
|
26
|
+
* `hostFunctionsByDeclaration` states for functions -- two of a host's own
|
|
27
|
+
* files can declare one name and mean a different constant, namespace root or
|
|
28
|
+
* singleton by it, and only the declaration this program actually resolved to
|
|
29
|
+
* says which was meant. A host with no such collision states an empty
|
|
30
|
+
* file-keyed table for that question and every name is answered by the flat
|
|
31
|
+
* one exactly as before.
|
|
32
|
+
*/
|
|
33
|
+
const hostStorageOf = (input, declaration, linkageName, representation) => {
|
|
34
|
+
// The declaration first, the name second -- for all four of a host's own
|
|
35
|
+
// tables, not only its functions. Two of a host's own files can declare the
|
|
36
|
+
// same name and mean a different constant, namespace root or singleton by
|
|
37
|
+
// it, exactly as they can a different function, and only the declaration
|
|
38
|
+
// this program actually resolved to says which was meant. Computed once and
|
|
39
|
+
// reused below, since it is the same file for every one of these questions
|
|
40
|
+
// about the same declaration.
|
|
41
|
+
const file = input.externalFiles?.get(declaration);
|
|
42
|
+
const declaredConstant = file === undefined ? undefined : input.hostConstantsByDeclaration?.get(file)?.get(linkageName);
|
|
43
|
+
if (declaredConstant !== undefined)
|
|
44
|
+
return { kind: 'host-constant', linkageName, emit: declaredConstant };
|
|
45
|
+
const constant = input.hostConstants?.get(linkageName);
|
|
46
|
+
if (constant !== undefined)
|
|
47
|
+
return { kind: 'host-constant', linkageName, emit: constant };
|
|
48
|
+
// The name-keyed table below is the answer for every host that has no such
|
|
49
|
+
// pair, which is nearly all of them.
|
|
50
|
+
const declared = file === undefined ? undefined : input.hostFunctionsByDeclaration?.get(file)?.get(linkageName);
|
|
51
|
+
if (declared !== undefined)
|
|
52
|
+
return { kind: 'host-function', linkageName, emit: declared };
|
|
53
|
+
const hostFunction = input.hostFunctions?.get(linkageName);
|
|
54
|
+
if (hostFunction !== undefined)
|
|
55
|
+
return { kind: 'host-function', linkageName, emit: hostFunction };
|
|
56
|
+
// A language builtin, last of the three function routes and gated on the
|
|
57
|
+
// declaration being the standard library's own: an installed host that
|
|
58
|
+
// claims one of these names has already won above, which is the right
|
|
59
|
+
// precedence -- a target that implements `btoa` itself is describing its own
|
|
60
|
+
// platform, and this table is the answer for every target that does not.
|
|
61
|
+
if (input.standardLibraryExternals?.has(declaration)) {
|
|
62
|
+
const core = input.coreGlobalFunctions?.get(linkageName);
|
|
63
|
+
if (core !== undefined)
|
|
64
|
+
return { kind: 'host-function', linkageName, emit: core };
|
|
65
|
+
}
|
|
66
|
+
// The language's own class objects, on the same gate: a constructor with no
|
|
67
|
+
// cell, whose `new` the emitter spells whole. Checked after the function
|
|
68
|
+
// table because the two never share a name and the order costs nothing, and
|
|
69
|
+
// before the namespace/singleton routes because neither of those describes a
|
|
70
|
+
// constructor.
|
|
71
|
+
if (input.standardLibraryExternals?.has(declaration) && input.coreGlobalClasses?.has(linkageName)) {
|
|
72
|
+
return { kind: 'host-class', linkageName };
|
|
73
|
+
}
|
|
74
|
+
if (input.hostNamespaceBindings?.has(declaration))
|
|
75
|
+
return { kind: 'host-namespace', linkageName };
|
|
76
|
+
if (input.exactHostNamespaceNames?.has(linkageName))
|
|
77
|
+
return null;
|
|
78
|
+
if (file !== undefined && input.hostNamespaceRootsByDeclaration?.get(file)?.has(linkageName)) {
|
|
79
|
+
return { kind: 'host-namespace', linkageName };
|
|
80
|
+
}
|
|
81
|
+
if (input.hostNamespaces?.roots.has(linkageName))
|
|
82
|
+
return { kind: 'host-namespace', linkageName };
|
|
83
|
+
if (input.hostSingletonBindings?.has(declaration))
|
|
84
|
+
return { kind: 'host-singleton', linkageName };
|
|
85
|
+
if (file !== undefined && input.hostSingletonsByDeclaration?.get(file)?.has(linkageName)) {
|
|
86
|
+
return { kind: 'host-singleton', linkageName };
|
|
87
|
+
}
|
|
88
|
+
if (input.hostSingletons?.has(linkageName))
|
|
89
|
+
return { kind: 'host-singleton', linkageName };
|
|
90
|
+
// A host handle that declares a construct convention is the host's class
|
|
91
|
+
// object rather than a cell the host defines -- see `host-class` above.
|
|
92
|
+
if (representation?.kind === 'native-handle' && representation.construct !== null)
|
|
93
|
+
return { kind: 'host-class', linkageName };
|
|
94
|
+
return null;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* The namespace a value stands for, or `null` when it is an ordinary value.
|
|
98
|
+
*
|
|
99
|
+
* Two shapes, and only two.
|
|
100
|
+
*
|
|
101
|
+
* A READ of a cell already placed as a namespace is that namespace: the
|
|
102
|
+
* framework re-exports the host's globals under second names
|
|
103
|
+
* (`export const geolocation = Geolocation`), and an alias of a path is a
|
|
104
|
+
* path.
|
|
105
|
+
*
|
|
106
|
+
* A CONDITIONAL whose arms are that namespace and nothing else is also that
|
|
107
|
+
* namespace. This is the framework's own guard --
|
|
108
|
+
* `typeof __gea_Accelerometer !== 'undefined' ? __gea_Accelerometer :
|
|
109
|
+
* (undefined as unknown as typeof __gea_Accelerometer)` -- written because a
|
|
110
|
+
* web build only injects the global when an app uses it. On a target whose
|
|
111
|
+
* host TABLE claims the name, the question the guard asks is already answered:
|
|
112
|
+
* the host defines it, so the absent arm is unreachable and the value is the
|
|
113
|
+
* namespace. Every other arm must be an absent constant for that to hold, and
|
|
114
|
+
* an arm that is anything else makes this `null` rather than a guess.
|
|
115
|
+
*/
|
|
116
|
+
const namespacePathOfValue = (valueId, producers, placements, seen) => {
|
|
117
|
+
if (seen.has(valueId))
|
|
118
|
+
return null;
|
|
119
|
+
seen.add(valueId);
|
|
120
|
+
const producer = producers.get(valueId);
|
|
121
|
+
if (!producer)
|
|
122
|
+
return null;
|
|
123
|
+
if (producer.family === 'binding' && producer.action === 'read' && producer.declaration) {
|
|
124
|
+
const placed = placements.get(producer.declaration);
|
|
125
|
+
return placed?.storage.kind === 'host-namespace' ? placed.storage.linkageName : null;
|
|
126
|
+
}
|
|
127
|
+
if (producer.family !== 'computation' || producer.form !== 'conditional')
|
|
128
|
+
return null;
|
|
129
|
+
let path = null;
|
|
130
|
+
for (const operand of producer.operands) {
|
|
131
|
+
if (operand.role === 'condition')
|
|
132
|
+
continue;
|
|
133
|
+
if (operand.source.kind === 'constant') {
|
|
134
|
+
// The arm the host rules out. Only an absence qualifies: an arm holding
|
|
135
|
+
// any other value would mean the program really can observe something
|
|
136
|
+
// other than the namespace here.
|
|
137
|
+
if (operand.source.literal === 'undefined' || operand.source.literal === 'null')
|
|
138
|
+
continue;
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
if (operand.source.kind !== 'result')
|
|
142
|
+
return null;
|
|
143
|
+
const armPath = namespacePathOfValue(operand.source.result, producers, placements, seen);
|
|
144
|
+
if (armPath === null)
|
|
145
|
+
return null;
|
|
146
|
+
if (path !== null && path !== armPath)
|
|
147
|
+
return null;
|
|
148
|
+
path = armPath;
|
|
149
|
+
}
|
|
150
|
+
return path;
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Cells whose value is a host namespace, placed as that namespace.
|
|
154
|
+
*
|
|
155
|
+
* Run to a fixpoint after every direct claim, because an alias can alias an
|
|
156
|
+
* alias: the framework exports `Geolocation`, then `geolocation`, and a single
|
|
157
|
+
* pass would place whichever it reached first and leave the other an `extern`
|
|
158
|
+
* nothing defines.
|
|
159
|
+
*/
|
|
160
|
+
const placeNamespaceAliases = (input, placements) => {
|
|
161
|
+
if (!input.hostNamespaces || input.hostNamespaces.roots.size === 0)
|
|
162
|
+
return;
|
|
163
|
+
const producers = new Map();
|
|
164
|
+
for (const operation of input.graph.operations.values()) {
|
|
165
|
+
for (const result of operation.results)
|
|
166
|
+
producers.set(result.id, operation);
|
|
167
|
+
}
|
|
168
|
+
let changed = true;
|
|
169
|
+
while (changed) {
|
|
170
|
+
changed = false;
|
|
171
|
+
for (const operation of input.graph.operations.values()) {
|
|
172
|
+
if (operation.family !== 'binding' || operation.action !== 'initialize' || !operation.declaration)
|
|
173
|
+
continue;
|
|
174
|
+
const existing = placements.get(operation.declaration);
|
|
175
|
+
if (existing?.storage.kind === 'host-namespace')
|
|
176
|
+
continue;
|
|
177
|
+
const initializer = operation.operands.find((operand) => operand.role === 'initializer');
|
|
178
|
+
if (initializer?.source.kind !== 'result')
|
|
179
|
+
continue;
|
|
180
|
+
const path = namespacePathOfValue(initializer.source.result, producers, placements, new Set());
|
|
181
|
+
if (path === null)
|
|
182
|
+
continue;
|
|
183
|
+
placements.set(operation.declaration, {
|
|
184
|
+
storage: { kind: 'host-namespace', linkageName: path },
|
|
185
|
+
representation: existing?.representation ?? null
|
|
186
|
+
});
|
|
187
|
+
changed = true;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
* Every cell a program introduces, keyed by declaration.
|
|
193
|
+
*
|
|
194
|
+
* `initialize`, `declare`, and the `module-link`/`initialize` events of the
|
|
195
|
+
* declaration-lifecycle family are all introductions, and they are collected
|
|
196
|
+
* together on purpose: a consumer asking "where does this cell live" must get
|
|
197
|
+
* one answer regardless of which family happened to introduce it.
|
|
198
|
+
*/
|
|
199
|
+
export const projectBindingPlacements = (input) => {
|
|
200
|
+
const placements = new Map();
|
|
201
|
+
// Every graph operation that names one watched declaration, family and
|
|
202
|
+
// action included. The refusal a missing placement raises
|
|
203
|
+
// (`native-boundary:external-binding`) can only say that nothing introduced
|
|
204
|
+
// the cell; which producer was supposed to and what it emitted instead is
|
|
205
|
+
// exactly this list, and there is no other way to see it on the module-graph
|
|
206
|
+
// path. An instrument like `GEA_SHAKE_DEBUG`, not a result.
|
|
207
|
+
const watched = process.env['GEA_PLACEMENT_WATCH'];
|
|
208
|
+
if (watched) {
|
|
209
|
+
for (const operation of input.graph.operations.values()) {
|
|
210
|
+
if (!('declaration' in operation) || String(operation.declaration) !== watched)
|
|
211
|
+
continue;
|
|
212
|
+
const action = 'action' in operation ? String(operation.action) : '';
|
|
213
|
+
const event = 'event' in operation ? String(operation.event) : '';
|
|
214
|
+
console.log(`[PLACEMENT] ${watched} <- ${operation.family}${action ? `/${action}` : ''}${event ? `/${event}` : ''} ${operation.id}`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
const record = (declaration, storage, representation) => {
|
|
218
|
+
const existing = placements.get(declaration);
|
|
219
|
+
// A cell introduced twice keeps its first placement rather than acquiring a
|
|
220
|
+
// second: `var` re-declaration and a hoisted function name both do this, and
|
|
221
|
+
// they introduce one cell, not two.
|
|
222
|
+
if (existing)
|
|
223
|
+
return;
|
|
224
|
+
placements.set(declaration, { storage, representation });
|
|
225
|
+
};
|
|
226
|
+
for (const operation of input.graph.operations.values()) {
|
|
227
|
+
const introduces = (operation.family === 'binding' && (operation.action === 'initialize' || operation.action === 'declare')) ||
|
|
228
|
+
(operation.family === 'declaration-lifecycle' && (operation.event === 'module-link' || operation.event === 'initialize'));
|
|
229
|
+
if (!introduces)
|
|
230
|
+
continue;
|
|
231
|
+
const published = resultOf(operation, 'value');
|
|
232
|
+
const representation = published ? (input.plan.selected.get(published.id) ?? null) : null;
|
|
233
|
+
// `external` is checked ahead of `caller.kind`: an ambient declaration's
|
|
234
|
+
// caller is still an ordinary region (the module body it sits in), and
|
|
235
|
+
// that fact is irrelevant here -- the host, not that region, owns the
|
|
236
|
+
// cell, so the caller must not be consulted for one once this is set.
|
|
237
|
+
const storage = operation.family === 'binding' && operation.external
|
|
238
|
+
? (hostStorageOf(input, operation.declaration, operation.external.linkageName, representation) ?? {
|
|
239
|
+
kind: 'external',
|
|
240
|
+
linkageName: operation.external.linkageName
|
|
241
|
+
})
|
|
242
|
+
: operation.caller.kind === 'function'
|
|
243
|
+
? { kind: 'local', owner: operation.caller.functionId }
|
|
244
|
+
: { kind: 'region', owner: operation.caller.regionId };
|
|
245
|
+
record(operation.declaration, storage, representation);
|
|
246
|
+
}
|
|
247
|
+
// Second, and only where the graph introduced nothing: a cell the program
|
|
248
|
+
// reads but never creates. The order is what makes this safe -- a declaration
|
|
249
|
+
// this program really does introduce keeps its own placement, so a local
|
|
250
|
+
// shadowing an ambient name is never turned into an `extern`.
|
|
251
|
+
//
|
|
252
|
+
// The carrier comes from a *read* of the cell rather than from an
|
|
253
|
+
// introduction, because there is no introduction: the reads are the only
|
|
254
|
+
// published results that name this declaration's type, and every one of them
|
|
255
|
+
// carries the same type, so any one of them answers. A cell with no read
|
|
256
|
+
// reaches nothing and needs no `extern`.
|
|
257
|
+
const reads = readsByDeclaration(input.graph);
|
|
258
|
+
for (const [declaration, linkageName] of input.externals ?? []) {
|
|
259
|
+
if (placements.has(declaration))
|
|
260
|
+
continue;
|
|
261
|
+
const representation = readCarrierOf(input, reads, declaration);
|
|
262
|
+
if (!representation)
|
|
263
|
+
continue;
|
|
264
|
+
// A host that DENIED the name is answered before any host that might claim
|
|
265
|
+
// it, because a denial is the one claim that cannot be outvoted by the
|
|
266
|
+
// generic external fallback below: falling through would emit an `extern`
|
|
267
|
+
// for a symbol this compiler has just concluded is not there.
|
|
268
|
+
const storage = input.absentBindings?.has(declaration)
|
|
269
|
+
? { kind: 'absent', linkageName }
|
|
270
|
+
: (hostStorageOf(input, declaration, linkageName, representation) ?? { kind: 'external', linkageName });
|
|
271
|
+
placements.set(declaration, { storage, representation });
|
|
272
|
+
}
|
|
273
|
+
// A program cell that is written but whose introduction nothing reached:
|
|
274
|
+
// every read folded to what the initializer named (a script-global
|
|
275
|
+
// `var Request = RequestImpl` read only as the class), so the tree shake
|
|
276
|
+
// dropped the initialize while a later write (`global.Request = ...`) still
|
|
277
|
+
// stores into it. The cell is file-scope storage like any module cell; its
|
|
278
|
+
// owner region is never consulted for one.
|
|
279
|
+
let anyRegion;
|
|
280
|
+
for (const operation of input.graph.operations.values()) {
|
|
281
|
+
if (operation.caller.kind !== 'function') {
|
|
282
|
+
anyRegion = operation.caller.regionId;
|
|
283
|
+
break;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
for (const operation of input.graph.operations.values()) {
|
|
287
|
+
if (operation.family !== 'binding' || operation.action !== 'write' || !operation.declaration)
|
|
288
|
+
continue;
|
|
289
|
+
if (placements.has(operation.declaration) || input.externals?.has(operation.declaration))
|
|
290
|
+
continue;
|
|
291
|
+
const written = resultOf(operation, 'value');
|
|
292
|
+
const representation = readCarrierOf(input, reads, operation.declaration) ?? (written ? (input.plan.selected.get(written.id) ?? null) : null);
|
|
293
|
+
const owner = operation.caller.kind === 'function' ? anyRegion : operation.caller.regionId;
|
|
294
|
+
if (representation === null || owner === undefined)
|
|
295
|
+
continue;
|
|
296
|
+
placements.set(operation.declaration, { storage: { kind: 'region', owner }, representation });
|
|
297
|
+
}
|
|
298
|
+
// Last, so every directly-claimed cell is already placed: an alias is
|
|
299
|
+
// recognized by what it reads, and what it reads has to be known first.
|
|
300
|
+
placeNamespaceAliases(input, placements);
|
|
301
|
+
return placements;
|
|
302
|
+
};
|
|
303
|
+
/**
|
|
304
|
+
* Every read of a cell, by the declaration it reads, in `graph.operations` order.
|
|
305
|
+
*
|
|
306
|
+
* `readCarrierOf` below answers "what carrier does a read of this cell publish",
|
|
307
|
+
* once per ambient declaration this program never introduces, and answering it
|
|
308
|
+
* by walking the whole operation table made placement cost externals x
|
|
309
|
+
* operations. Bucketing on the field the scan already tested answers all of them
|
|
310
|
+
* in one pass, and dealing the buckets in table order keeps the same read
|
|
311
|
+
* first -- which is the one the original scan returned.
|
|
312
|
+
*/
|
|
313
|
+
const readsByDeclaration = (graph) => {
|
|
314
|
+
const reads = new Map();
|
|
315
|
+
for (const operation of graph.operations.values()) {
|
|
316
|
+
const declaration = operation.family === 'binding' && operation.action === 'read'
|
|
317
|
+
? operation.declaration
|
|
318
|
+
: operation.family === 'property'
|
|
319
|
+
? operation.resolvedBinding
|
|
320
|
+
: undefined;
|
|
321
|
+
if (declaration === undefined)
|
|
322
|
+
continue;
|
|
323
|
+
const bucket = reads.get(declaration);
|
|
324
|
+
if (bucket)
|
|
325
|
+
bucket.push(operation);
|
|
326
|
+
else
|
|
327
|
+
reads.set(declaration, [operation]);
|
|
328
|
+
}
|
|
329
|
+
return reads;
|
|
330
|
+
};
|
|
331
|
+
/** The carrier the plan selected for a value read out of one cell, or `null` when nothing reads it. */
|
|
332
|
+
const readCarrierOf = (input, reads, declaration) => {
|
|
333
|
+
for (const operation of reads.get(declaration) ?? []) {
|
|
334
|
+
const published = resultOf(operation, 'value');
|
|
335
|
+
const representation = published ? input.plan.selected.get(published.id) : undefined;
|
|
336
|
+
if (representation && representation.kind !== 'unresolved')
|
|
337
|
+
return representation;
|
|
338
|
+
}
|
|
339
|
+
return null;
|
|
340
|
+
};
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import type { DeclarationId, FunctionId, SemanticResultId } from '../identity/ids.js';
|
|
2
|
+
import type { RepresentationDeriver } from '../representation/derive.js';
|
|
3
|
+
import { type CallableAbi, type Representation } from '../representation/model.js';
|
|
4
|
+
import type { SealedRepresentationPlan } from '../representation/plan.js';
|
|
5
|
+
import { type HostMemberTable } from '../targets/cpp/host/host-members.js';
|
|
6
|
+
import type { BindingPlacement } from './bindings.js';
|
|
7
|
+
import type { ClassLayout } from './classes.js';
|
|
8
|
+
import type { SemanticGraph } from '../semantics/model/graph.js';
|
|
9
|
+
import { type SemanticOperand } from '../semantics/model/operands.js';
|
|
10
|
+
import type { InvocationOperation } from '../semantics/model/operations.js';
|
|
11
|
+
/**
|
|
12
|
+
* What a callee carrier says about the frame a call fills.
|
|
13
|
+
*
|
|
14
|
+
* These queries are asked twice in the pipeline -- once when a call lowers
|
|
15
|
+
* (`ir/lower-invocation.ts`) and once when the slot census states which
|
|
16
|
+
* carrier each argument must arrive in (`projection/slots.ts`). They live
|
|
17
|
+
* here, below both, so the two cannot drift: a lowering that packed
|
|
18
|
+
* arguments against one reading of a callee and a census that checked them
|
|
19
|
+
* against another would be two authorities over one convention.
|
|
20
|
+
*/
|
|
21
|
+
/** The convention a callable carrier states, or `null` for a carrier that states none. */
|
|
22
|
+
export declare const abiOfCallee: (representation: Representation) => CallableAbi | null;
|
|
23
|
+
/**
|
|
24
|
+
* The `[[Construct]]` convention a callee carries, which is the frame
|
|
25
|
+
* `super(...)` and `new` fill.
|
|
26
|
+
*
|
|
27
|
+
* Distinct from `abiOfCallee` for exactly one carrier: a value that is both
|
|
28
|
+
* callable and constructible states two conventions, and a construction fills
|
|
29
|
+
* the constructing one. Reusing `abiOfCallee` there would pack the arguments
|
|
30
|
+
* against a `[[Call]]` signature the base's initialization never reads.
|
|
31
|
+
*/
|
|
32
|
+
export declare const constructAbiOfCallee: (representation: Representation) => CallableAbi | null;
|
|
33
|
+
/**
|
|
34
|
+
* The convention a method VALUE carries when a receiver-less slot takes it:
|
|
35
|
+
* the source states a receiver and the slot states the identical convention
|
|
36
|
+
* without one. Such a value is bound to the object it was read from before it
|
|
37
|
+
* enters the slot (`ir/lower-operands.ts`'s `enter`, minting a detached
|
|
38
|
+
* `bind-callable`); `null` for any other pair.
|
|
39
|
+
*/
|
|
40
|
+
export declare const detachedMethodAbiOf: (source: Representation, target: Representation) => CallableAbi | null;
|
|
41
|
+
/**
|
|
42
|
+
* Whether a rest slot's carrier is a fixed-arity tuple: a record whose keys
|
|
43
|
+
* are exactly `0..n-1` in order. Such a rest slot is filled field by field,
|
|
44
|
+
* never by a runtime-sized array.
|
|
45
|
+
*/
|
|
46
|
+
export declare const isClosedContiguousTupleRecord: (representation: Representation) => representation is Extract<Representation, {
|
|
47
|
+
kind: "record";
|
|
48
|
+
}>;
|
|
49
|
+
/**
|
|
50
|
+
* The value a body's `return` hands back, given the convention's own result:
|
|
51
|
+
* the payload of an async function's promise, the completion of a generator's
|
|
52
|
+
* cursor, and otherwise the result itself.
|
|
53
|
+
*/
|
|
54
|
+
export declare const returnPayloadOf: (result: Representation) => Representation;
|
|
55
|
+
/**
|
|
56
|
+
* A call through `Function.prototype.call`/`apply`/`bind` whose real callee
|
|
57
|
+
* is the receiver of the member read, when the builtin is unshadowed and the
|
|
58
|
+
* receiver's own convention is known.
|
|
59
|
+
*
|
|
60
|
+
* `receiver` is the operand of the PROPERTY READ that produced the call's
|
|
61
|
+
* callee -- the function value itself -- not the invocation's own `receiver`
|
|
62
|
+
* operand, which names that same function and is never read as `this`.
|
|
63
|
+
*/
|
|
64
|
+
export interface DeferredCallee {
|
|
65
|
+
readonly member: 'call' | 'apply' | 'bind';
|
|
66
|
+
readonly receiver: SemanticOperand;
|
|
67
|
+
readonly abi: CallableAbi;
|
|
68
|
+
readonly functionId: FunctionId | null;
|
|
69
|
+
/**
|
|
70
|
+
* WHICH frame the rewritten call fills -- the one question `abi` above does
|
|
71
|
+
* not answer, and the one both consumers of this record were assuming.
|
|
72
|
+
*
|
|
73
|
+
* `abi` is the underlying callable's own physical convention, recovered for
|
|
74
|
+
* a `dynamic` receiver out of `functionId` so that a boxed Function can
|
|
75
|
+
* still be bound and reasoned about. It is NOT the frame such a call fills:
|
|
76
|
+
* `emit-callable.ts`'s `callee.kind === 'dynamic'` arm renders
|
|
77
|
+
* `Value::callWithReceiver` with a flat `std::vector<Value>` and says why in
|
|
78
|
+
* its own comment -- "there is no convention to build a frame against, so
|
|
79
|
+
* the arguments cross as boxes and the callable's own declared parameters
|
|
80
|
+
* are recovered by the thunk". Two authorities on one frame, and the
|
|
81
|
+
* emitter is the one that is right.
|
|
82
|
+
*
|
|
83
|
+
* Measured: `routedFn.call(receiver, 'called', 4, 5)` over a rest-taking
|
|
84
|
+
* `Routed` (`test/runtime/dynamic-callable-abi-recovery.runtime.js`). The
|
|
85
|
+
* slot census converted `4, 5` to the rest ELEMENT carrier and the lowering
|
|
86
|
+
* PACKED them into an `ArrayObject<double>`, which the emitter then boxed as
|
|
87
|
+
* ONE argument -- and the callee's own `DynamicRestCallSignature` thunk,
|
|
88
|
+
* doing the job the boxed convention gives it, packed a second time and
|
|
89
|
+
* unboxed an array where a `double` was declared. `Function.prototype.call`
|
|
90
|
+
* SPREADS; in the boxed frame the packing is the thunk's and the call
|
|
91
|
+
* site's alone would be enough only if the call bypassed the box.
|
|
92
|
+
*/
|
|
93
|
+
readonly frame: 'native' | 'boxed';
|
|
94
|
+
/**
|
|
95
|
+
* The RECEIVER's own carrier -- the boxed frame's argument carrier, and the
|
|
96
|
+
* carrier the this-argument must keep its identity in. Carried here because
|
|
97
|
+
* `receiver` above is an operand of the deferred property READ, not of the
|
|
98
|
+
* invocation, so a consumer holding only the invocation cannot ask for it.
|
|
99
|
+
*/
|
|
100
|
+
readonly receiverCarrier: Representation;
|
|
101
|
+
}
|
|
102
|
+
export interface DeferredCalleeInput {
|
|
103
|
+
readonly graph: SemanticGraph;
|
|
104
|
+
readonly plan: SealedRepresentationPlan;
|
|
105
|
+
readonly abis: ReadonlyMap<FunctionId, CallableAbi>;
|
|
106
|
+
readonly constructs: ReadonlyMap<FunctionId, CallableAbi>;
|
|
107
|
+
readonly callableOrigins: ReadonlyMap<SemanticResultId, FunctionId>;
|
|
108
|
+
readonly classes: ReadonlyMap<DeclarationId, ClassLayout>;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* The source function a method read as a VALUE names: `host.readFile` read
|
|
112
|
+
* off a class instance, or `Host.create` off its constructor, is the member
|
|
113
|
+
* declaration's own body -- provenance `callableOriginsOf` cannot carry,
|
|
114
|
+
* since it follows allocations and the cells that alias them, and a method
|
|
115
|
+
* is never allocated. `null` for a read that is not that: a computed key, a
|
|
116
|
+
* receiver that is no class, a member that is a field or an accessor, or a
|
|
117
|
+
* value whose convention states no receiver (a bound callable, an arrow
|
|
118
|
+
* field), which the read cannot have produced from a method body.
|
|
119
|
+
*
|
|
120
|
+
* Asked by the property lowering, which records the receiver a method value
|
|
121
|
+
* must be bound to (`LoweringProgram.methodValueReceivers`), and by the
|
|
122
|
+
* `Function.prototype.bind` rewrite below, which binds the same body.
|
|
123
|
+
*/
|
|
124
|
+
export declare const methodValueOriginOf: (classes: ReadonlyMap<DeclarationId, ClassLayout>, receiver: Representation, key: string, representation: Representation) => FunctionId | null;
|
|
125
|
+
export declare const deferredCalleeOf: (input: DeferredCalleeInput, operation: InvocationOperation) => DeferredCallee | null;
|
|
126
|
+
/**
|
|
127
|
+
* How a call reaches its callee: through a callable VALUE with a physical
|
|
128
|
+
* convention (`callable`), or through a TEMPLATE the backend spells from the
|
|
129
|
+
* call's own operands (`template`) -- a host member on a native handle, a
|
|
130
|
+
* `String`/`Array`/`Promise`/`RegExp` prototype method, a host-placed
|
|
131
|
+
* function, a generator cursor's `next`. A template never sees the declared
|
|
132
|
+
* convention: `substring`'s optional `end` is a C++ overload there, not a
|
|
133
|
+
* `gea::Optional<double>` formal, so an argument reaching one must stay in
|
|
134
|
+
* its own carrier. The slot census reads this to answer `host-overload` for
|
|
135
|
+
* those arguments instead of the lib.d.ts formal the callee's carrier states.
|
|
136
|
+
*
|
|
137
|
+
* Decided from the callee's provenance -- the read that produced it and the
|
|
138
|
+
* carrier that read went through -- which is the same fact the printer's
|
|
139
|
+
* property-read emitters decide it from when they defer a read into
|
|
140
|
+
* `hostMemberReads`/`prototypeMethodReads` rather than materializing a
|
|
141
|
+
* value. A receiver this cannot see is read as `callable`, which is the
|
|
142
|
+
* conservative side for nothing: a template rendered for an argument the
|
|
143
|
+
* census converted is a C++ overload mismatch, so every receiver kind the
|
|
144
|
+
* printer spells from a template must be named here.
|
|
145
|
+
*/
|
|
146
|
+
export type CalleeRendering = 'callable' | 'template';
|
|
147
|
+
/**
|
|
148
|
+
* `hasOwnProperty`/`propertyIsEnumerable` reached as instance methods off a
|
|
149
|
+
* known-shape receiver (`record`/`class-ref`/a `native-record-ref` naming no
|
|
150
|
+
* native type) -- the two ambient `Object.prototype` members the C++
|
|
151
|
+
* backend's object-shape protocol (`targets/cpp/host/object-protocol.ts`'s
|
|
152
|
+
* `objectShapePrototypeMemberRead`) claims regardless of the receiver's own
|
|
153
|
+
* layout: the GET renders nothing and the CALL fuses receiver, key and field
|
|
154
|
+
* list into one expression, never going through `Object.prototype`'s
|
|
155
|
+
* declared `(v: PropertyKey) => boolean` convention. `calleeRenderingOf`
|
|
156
|
+
* below is the ONE authority for whether a call renders from a template or a
|
|
157
|
+
* convention, so it states this claim too, rather than leaving the printer
|
|
158
|
+
* as a second, silent authority the census cannot see: a census that let
|
|
159
|
+
* this call's ABI apply would convert a literal string key into the
|
|
160
|
+
* `PropertyKey` tagged union, which `objectShapeCallText` explicitly refuses.
|
|
161
|
+
*/
|
|
162
|
+
export declare const objectShapePrototypeMethods: ReadonlySet<string>;
|
|
163
|
+
export interface CalleeRenderingInput {
|
|
164
|
+
readonly graph: SemanticGraph;
|
|
165
|
+
readonly plan: SealedRepresentationPlan;
|
|
166
|
+
readonly deriver: RepresentationDeriver;
|
|
167
|
+
readonly placements: ReadonlyMap<DeclarationId, BindingPlacement>;
|
|
168
|
+
/** Declarations that hold one host method forever -- see `hostMethodAliasDeclarations`. */
|
|
169
|
+
readonly hostMethodAliasDeclarations: ReadonlySet<DeclarationId>;
|
|
170
|
+
readonly hostMembers?: HostMemberTable;
|
|
171
|
+
}
|
|
172
|
+
/** A direct read of a host callable whose numeric rest frame need not escape to an array. */
|
|
173
|
+
export declare const numericRestHostCallOf: (input: CalleeRenderingInput, operation: InvocationOperation) => {
|
|
174
|
+
readonly protocol: string;
|
|
175
|
+
readonly member: string;
|
|
176
|
+
} | null;
|
|
177
|
+
/**
|
|
178
|
+
* Declarations written exactly once, from a direct read of a host METHOD --
|
|
179
|
+
* `var __isArray = Array.isArray`, the shape test262's propertyHelper and any
|
|
180
|
+
* program guarding a later monkey-patch names a builtin through.
|
|
181
|
+
*
|
|
182
|
+
* `targets/cpp/host/host-method-aliases.ts` proves the identical fact, but
|
|
183
|
+
* over the LOWERED ir, for the printer to fold a read of the cell back into a
|
|
184
|
+
* bare host-member name. `calleeRenderingOf` needs the same fact one stage
|
|
185
|
+
* earlier, over the semantic graph and its sealed plan -- before lowering
|
|
186
|
+
* builds a call's argument `convert`s -- because a call through such a cell
|
|
187
|
+
* renders as a host call-site template exactly like `Array.isArray(v)`
|
|
188
|
+
* itself, and a template's arguments enter their OWN carrier
|
|
189
|
+
* (`invocationSlot`'s `host-overload`), never the `dynamic` an ordinary
|
|
190
|
+
* callable's declared-`any` formal would otherwise ask the census for. Both
|
|
191
|
+
* live on the sealed plan, which is why this can answer without waiting for
|
|
192
|
+
* a lowered body: a `native-handle` receiver and a host member table are
|
|
193
|
+
* exactly what the plan and `hosts.members` already state.
|
|
194
|
+
*/
|
|
195
|
+
export declare const hostMethodAliasDeclarations: (graph: SemanticGraph, plan: SealedRepresentationPlan, deriver: RepresentationDeriver, hostMembers: HostMemberTable) => ReadonlySet<DeclarationId>;
|
|
196
|
+
export declare const calleeRenderingOf: (input: CalleeRenderingInput, operation: InvocationOperation) => CalleeRendering;
|