@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,72 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import type { SemanticEdge } from '../../model/edges.js';
|
|
3
|
+
import type { OperandEvaluation, SemanticOperand } from '../../model/operands.js';
|
|
4
|
+
import type { SemanticOperation } from '../../model/operations.js';
|
|
5
|
+
import type { SelectedSignature } from '../../model/selected-signature.js';
|
|
6
|
+
import type { CensusCandidate } from '../census.js';
|
|
7
|
+
import type { ProducerContext } from '../producer-context.js';
|
|
8
|
+
/**
|
|
9
|
+
* A call's argument list, with the two spread shapes this compiler can settle
|
|
10
|
+
* without an iterator.
|
|
11
|
+
*
|
|
12
|
+
* `f(...xs)` is `ArgumentListEvaluation`, which drives GetIterator/next() over
|
|
13
|
+
* `xs` and then hands the callee however many values came out. Two source
|
|
14
|
+
* shapes make the outcome of that iteration a compile-time fact instead:
|
|
15
|
+
*
|
|
16
|
+
* - a CLOSED TUPLE, whose arity and per-position types are part of its type.
|
|
17
|
+
* `f(...pair)` is `f(pair[0], pair[1])` exactly, so `tuple-spread.ts`
|
|
18
|
+
* expands it into one positional argument per element (see that file for
|
|
19
|
+
* why the expansion is minted as real `[[Get]]` operations rather than
|
|
20
|
+
* performed inside a lowering).
|
|
21
|
+
* - a NATIVELY ITERABLE source -- a plain array, a `Set<T>`, a `Map<K, V>`, a
|
|
22
|
+
* `string` or a `Generator<T, ...>` -- landing in the callee's REST TAIL.
|
|
23
|
+
* How many values each produces is a
|
|
24
|
+
* runtime fact, so it can never be matched against NAMED formals -- but a
|
|
25
|
+
* rest parameter does not have named formals to match: the language binds
|
|
26
|
+
* the whole tail into one fresh array, and `ir/lower-operands.ts`'s
|
|
27
|
+
* `packRestArguments` already builds exactly that array at every call site.
|
|
28
|
+
* Contributing the spread's source to it as a RANGE COPY (the same
|
|
29
|
+
* `appendRange`/`appendSetRange`/`appendCodePointRange` an array literal's
|
|
30
|
+
* own admitted spread emits) makes `f(a, ...xs)` into
|
|
31
|
+
* `f(a, [.a-range-copy-of-xs.])`, which is what the language specifies, with
|
|
32
|
+
* no iterator anywhere.
|
|
33
|
+
*
|
|
34
|
+
* v1 (`geatsc`) admits a strict subset of the second shape --
|
|
35
|
+
* `spreadRestForwardIndex` in `targets/cpp/lowering/typed-ir/responsibilities/calls.ts`
|
|
36
|
+
* forwards a SOLE tail spread into the rest formal WHOLESALE, aliasing the
|
|
37
|
+
* caller's array rather than copying it, and declines `f(a, ...xs, b)`
|
|
38
|
+
* outright. The range copy here is the same admission with the alias removed:
|
|
39
|
+
* the rest array the callee binds is specified to be a fresh Array
|
|
40
|
+
* (ECMA-262 10.2.11 `FunctionDeclarationInstantiation`, step 28's
|
|
41
|
+
* `CreateListFromArrayLike`-shaped `ArrayCreate`), so a callee that pushes
|
|
42
|
+
* onto its own `...rest` must not be writing into the caller's array, and a
|
|
43
|
+
* mixed `f(a, ...xs, b)` composes for free.
|
|
44
|
+
*
|
|
45
|
+
* A third shape settles without an iterator too, in one narrow position: a
|
|
46
|
+
* tuple whose only unsettled elements are a trailing OPTIONAL run (never a
|
|
47
|
+
* `rest`/`variadic` one), spread as the call's LAST argument into a callee
|
|
48
|
+
* with NO rest formal anywhere. `tuple-spread.ts`'s `maxArityTupleSpreadReads`
|
|
49
|
+
* states why that position makes "omitted" and "explicitly `undefined`"
|
|
50
|
+
* indistinguishable to the callee, which is exactly what licenses reading the
|
|
51
|
+
* declared arity unconditionally instead of the tuple's true runtime length.
|
|
52
|
+
*
|
|
53
|
+
* Everything else -- a user-defined iterable, a hand-written
|
|
54
|
+
* `[Symbol.iterator]()`, an optional-tailed tuple anywhere but a call's last
|
|
55
|
+
* argument or into a rest formal, a natively iterable source in a NAMED
|
|
56
|
+
* formal's position -- is refused by name. None of those has a compile-time
|
|
57
|
+
* arity, and inventing one is the failure mode this refusal exists to
|
|
58
|
+
* prevent.
|
|
59
|
+
*/
|
|
60
|
+
/** The role a rest-tail range copy is published under, kept distinct from a positional `argument`. */
|
|
61
|
+
export declare const spreadArgumentRole = "spread-argument";
|
|
62
|
+
export type ArgumentListBuild = {
|
|
63
|
+
readonly kind: 'operands';
|
|
64
|
+
readonly operands: readonly SemanticOperand[];
|
|
65
|
+
/** The `[[Get]]`s a tuple spread expanded to; published with the call that cites them. */
|
|
66
|
+
readonly operations: readonly SemanticOperation[];
|
|
67
|
+
readonly edges: readonly SemanticEdge[];
|
|
68
|
+
} | {
|
|
69
|
+
readonly kind: 'refused';
|
|
70
|
+
readonly reason: string;
|
|
71
|
+
};
|
|
72
|
+
export declare const buildArgumentOperands: (context: ProducerContext, candidate: CensusCandidate, args: readonly ts.Expression[], evaluation: OperandEvaluation, selected: SelectedSignature | null, shortCircuits: boolean) => ArgumentListBuild;
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { operationId, semanticResultId } from '../../../identity/ids.js';
|
|
3
|
+
import { isFixedArgumentsSpreadAt } from '../implicit-arguments-tuple.js';
|
|
4
|
+
import { argumentsObjectValueAt, isArgumentsObjectIdentifier } from './bindings.js';
|
|
5
|
+
import { operand } from './mint.js';
|
|
6
|
+
import { hasNativeIterationCursor, sourceForValue } from './shared.js';
|
|
7
|
+
import { isDynamicIterationSource } from './protocol.js';
|
|
8
|
+
import { isClosedTupleSpread, maxArityTupleElementTypesOf, maxArityTupleSpreadReads, mintPositionalSpreadReads, openTupleSpreadShapeOf, spreadReceiverOf, tupleSpreadReads, declaredTupleRestArityOf, declaredTupleRestSpreadReads } from './tuple-spread.js';
|
|
9
|
+
/**
|
|
10
|
+
* A call's argument list, with the two spread shapes this compiler can settle
|
|
11
|
+
* without an iterator.
|
|
12
|
+
*
|
|
13
|
+
* `f(...xs)` is `ArgumentListEvaluation`, which drives GetIterator/next() over
|
|
14
|
+
* `xs` and then hands the callee however many values came out. Two source
|
|
15
|
+
* shapes make the outcome of that iteration a compile-time fact instead:
|
|
16
|
+
*
|
|
17
|
+
* - a CLOSED TUPLE, whose arity and per-position types are part of its type.
|
|
18
|
+
* `f(...pair)` is `f(pair[0], pair[1])` exactly, so `tuple-spread.ts`
|
|
19
|
+
* expands it into one positional argument per element (see that file for
|
|
20
|
+
* why the expansion is minted as real `[[Get]]` operations rather than
|
|
21
|
+
* performed inside a lowering).
|
|
22
|
+
* - a NATIVELY ITERABLE source -- a plain array, a `Set<T>`, a `Map<K, V>`, a
|
|
23
|
+
* `string` or a `Generator<T, ...>` -- landing in the callee's REST TAIL.
|
|
24
|
+
* How many values each produces is a
|
|
25
|
+
* runtime fact, so it can never be matched against NAMED formals -- but a
|
|
26
|
+
* rest parameter does not have named formals to match: the language binds
|
|
27
|
+
* the whole tail into one fresh array, and `ir/lower-operands.ts`'s
|
|
28
|
+
* `packRestArguments` already builds exactly that array at every call site.
|
|
29
|
+
* Contributing the spread's source to it as a RANGE COPY (the same
|
|
30
|
+
* `appendRange`/`appendSetRange`/`appendCodePointRange` an array literal's
|
|
31
|
+
* own admitted spread emits) makes `f(a, ...xs)` into
|
|
32
|
+
* `f(a, [.a-range-copy-of-xs.])`, which is what the language specifies, with
|
|
33
|
+
* no iterator anywhere.
|
|
34
|
+
*
|
|
35
|
+
* v1 (`geatsc`) admits a strict subset of the second shape --
|
|
36
|
+
* `spreadRestForwardIndex` in `targets/cpp/lowering/typed-ir/responsibilities/calls.ts`
|
|
37
|
+
* forwards a SOLE tail spread into the rest formal WHOLESALE, aliasing the
|
|
38
|
+
* caller's array rather than copying it, and declines `f(a, ...xs, b)`
|
|
39
|
+
* outright. The range copy here is the same admission with the alias removed:
|
|
40
|
+
* the rest array the callee binds is specified to be a fresh Array
|
|
41
|
+
* (ECMA-262 10.2.11 `FunctionDeclarationInstantiation`, step 28's
|
|
42
|
+
* `CreateListFromArrayLike`-shaped `ArrayCreate`), so a callee that pushes
|
|
43
|
+
* onto its own `...rest` must not be writing into the caller's array, and a
|
|
44
|
+
* mixed `f(a, ...xs, b)` composes for free.
|
|
45
|
+
*
|
|
46
|
+
* A third shape settles without an iterator too, in one narrow position: a
|
|
47
|
+
* tuple whose only unsettled elements are a trailing OPTIONAL run (never a
|
|
48
|
+
* `rest`/`variadic` one), spread as the call's LAST argument into a callee
|
|
49
|
+
* with NO rest formal anywhere. `tuple-spread.ts`'s `maxArityTupleSpreadReads`
|
|
50
|
+
* states why that position makes "omitted" and "explicitly `undefined`"
|
|
51
|
+
* indistinguishable to the callee, which is exactly what licenses reading the
|
|
52
|
+
* declared arity unconditionally instead of the tuple's true runtime length.
|
|
53
|
+
*
|
|
54
|
+
* Everything else -- a user-defined iterable, a hand-written
|
|
55
|
+
* `[Symbol.iterator]()`, an optional-tailed tuple anywhere but a call's last
|
|
56
|
+
* argument or into a rest formal, a natively iterable source in a NAMED
|
|
57
|
+
* formal's position -- is refused by name. None of those has a compile-time
|
|
58
|
+
* arity, and inventing one is the failure mode this refusal exists to
|
|
59
|
+
* prevent.
|
|
60
|
+
*/
|
|
61
|
+
/** The role a rest-tail range copy is published under, kept distinct from a positional `argument`. */
|
|
62
|
+
export const spreadArgumentRole = 'spread-argument';
|
|
63
|
+
/**
|
|
64
|
+
* The index of the callee's rest formal, or `null` when it declares none.
|
|
65
|
+
*
|
|
66
|
+
* Read off the signature the checker already selected for THIS call rather
|
|
67
|
+
* than off the callee's carrier: the carrier is a representation-layer answer
|
|
68
|
+
* this layer has not reached yet, and the two agree by construction --
|
|
69
|
+
* `representation/derive.ts` builds `CallableAbi.restFrom` from the same
|
|
70
|
+
* declared rest parameter `SelectedSignature.parameters[i].rest` records.
|
|
71
|
+
*/
|
|
72
|
+
const restFormalIndexOf = (selected) => {
|
|
73
|
+
if (!selected)
|
|
74
|
+
return null;
|
|
75
|
+
const index = selected.parameters.findIndex((parameter) => parameter.rest);
|
|
76
|
+
return index >= 0 ? index : null;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Whether the formals between a spread's landing position and the callee's
|
|
80
|
+
* rest formal are indistinguishable from the rest formal's own element.
|
|
81
|
+
*
|
|
82
|
+
* `console.log(...args)` is the case that matters, and the disagreement is in
|
|
83
|
+
* the TYPE DECLARATIONS rather than in this compiler: `lib.dom.d.ts` declares
|
|
84
|
+
* `log(...data: any[])`, so the rest begins at index 0 and a spread at
|
|
85
|
+
* position 0 range-copies straight into it, while `@types/node`'s
|
|
86
|
+
* `console.d.ts` declares `log(message?: any, ...optionalParams: any[])`,
|
|
87
|
+
* where the rest begins at index 1 and the same spread lands one position
|
|
88
|
+
* BEFORE it. Which of the two a program gets depends only on whether it pulled
|
|
89
|
+
* in the DOM or the Node types; `console.log(...args)` is the same call either
|
|
90
|
+
* way, and it was compiling under one and refused under the other.
|
|
91
|
+
*
|
|
92
|
+
* The refusal below is right in general: this compiler cannot know how many
|
|
93
|
+
* values a runtime iteration produces, so it cannot say which of them fill
|
|
94
|
+
* named formals and which reach the rest. That question stops mattering when
|
|
95
|
+
* every formal in between is OPTIONAL and holds the same type the rest's
|
|
96
|
+
* element does -- wherever the split falls, each value lands in a slot of that
|
|
97
|
+
* type and the callee observes the same list. `message?: any` beside
|
|
98
|
+
* `...optionalParams: any[]` is exactly that, and so is every other
|
|
99
|
+
* `f(first?: T, ...rest: T[])` written to give the leading argument a name.
|
|
100
|
+
*
|
|
101
|
+
* Optionality is load-bearing and not decoration: a REQUIRED leading formal
|
|
102
|
+
* means the callee is entitled to an argument the spread might not produce
|
|
103
|
+
* (`[...[]]` yields none), so the arity question is real again even when the
|
|
104
|
+
* types match.
|
|
105
|
+
*/
|
|
106
|
+
const restAbsorbsLeadingFormals = (context, selected, from, restFrom) => {
|
|
107
|
+
const rest = selected.parameters[restFrom];
|
|
108
|
+
if (rest === undefined)
|
|
109
|
+
return false;
|
|
110
|
+
const restShape = context.table.get(rest.type).shape;
|
|
111
|
+
if (restShape.kind !== 'array')
|
|
112
|
+
return false;
|
|
113
|
+
for (let index = from; index < restFrom; index += 1) {
|
|
114
|
+
const parameter = selected.parameters[index];
|
|
115
|
+
if (parameter === undefined || !parameter.optional || parameter.rest)
|
|
116
|
+
return false;
|
|
117
|
+
if (parameter.type !== restShape.element)
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
return true;
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Whether the spread argument at `index` may read its optional-tailed
|
|
124
|
+
* tuple's positions at the tuple's DECLARED (maximum) arity -- see
|
|
125
|
+
* `tuple-spread.ts`'s `maxArityTupleSpreadReads` for why that is exact rather
|
|
126
|
+
* than approximate here specifically.
|
|
127
|
+
*
|
|
128
|
+
* `selected !== null` keeps this to callees this compiler already checked a
|
|
129
|
+
* static convention for -- the same ground `positionsOccupiedBy`'s caller
|
|
130
|
+
* uses elsewhere in this file -- and `index === args.length - 1` is what
|
|
131
|
+
* keeps a following written argument from landing at a position only the
|
|
132
|
+
* tuple's true runtime length would know.
|
|
133
|
+
*/
|
|
134
|
+
const admitsMaxArityTupleSpread = (context, args, index, restFrom, selected) => {
|
|
135
|
+
const argument = args[index];
|
|
136
|
+
if (!argument || !ts.isSpreadElement(argument) || selected === null || restFrom !== null || index !== args.length - 1)
|
|
137
|
+
return false;
|
|
138
|
+
return maxArityTupleElementTypesOf(context, context.types.typeAt(argument.expression)) !== null;
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* How many argument-list positions one written argument occupies.
|
|
142
|
+
*
|
|
143
|
+
* A closed tuple occupies its own arity; everything else occupies one. Needed
|
|
144
|
+
* BEFORE the operands are built, because whether a plain-array spread is
|
|
145
|
+
* admissible depends on the position it lands in, and that position depends on
|
|
146
|
+
* how many positions the arguments before it expanded to.
|
|
147
|
+
*/
|
|
148
|
+
const positionsOccupiedBy = (context, argument) => {
|
|
149
|
+
if (!ts.isSpreadElement(argument))
|
|
150
|
+
return 1;
|
|
151
|
+
const type = context.types.typeAt(argument.expression);
|
|
152
|
+
const open = openTupleSpreadShapeOf(context, type);
|
|
153
|
+
if (open !== null)
|
|
154
|
+
return open.fixed.length + 1;
|
|
155
|
+
const declaredRest = declaredTupleRestArityOf(context, argument.expression);
|
|
156
|
+
if (declaredRest !== null)
|
|
157
|
+
return declaredRest;
|
|
158
|
+
const shape = context.table.get(type).shape;
|
|
159
|
+
return shape.kind === 'tuple' ? shape.elements.length : 1;
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* Whether an open-ended tuple spread at `scan` lands its range-copied tail
|
|
163
|
+
* at or past the callee's rest slot -- the same admission the plain-array
|
|
164
|
+
* spread below needs, asked of the tail alone, because the fixed positions
|
|
165
|
+
* before it are read explicitly and land wherever named formals do.
|
|
166
|
+
*/
|
|
167
|
+
const admitsOpenTupleSpread = (context, argument, scan, restFrom, selected) => {
|
|
168
|
+
if (!ts.isSpreadElement(argument))
|
|
169
|
+
return false;
|
|
170
|
+
const open = openTupleSpreadShapeOf(context, context.types.typeAt(argument.expression));
|
|
171
|
+
if (open === null)
|
|
172
|
+
return false;
|
|
173
|
+
return selected === null || (restFrom !== null && scan + open.fixed.length >= restFrom);
|
|
174
|
+
};
|
|
175
|
+
/** A final magic `arguments` spread can fill a fixed signature positionally. */
|
|
176
|
+
const admitsFixedArgumentsSpread = (context, args, index, restFrom, selected) => isFixedArgumentsSpreadAt(context.checker, args, index, selected === null ? null : { restFrom });
|
|
177
|
+
export const buildArgumentOperands = (context, candidate, args, evaluation, selected, shortCircuits) => {
|
|
178
|
+
const spreads = args.filter(ts.isSpreadElement);
|
|
179
|
+
if (spreads.length > 0 && shortCircuits) {
|
|
180
|
+
// An optional call evaluates its arguments only on the branch where the
|
|
181
|
+
// guard is present, and `normalize/gating.ts` places that gated region by
|
|
182
|
+
// walking the ARGUMENT SYNTAX. Both admitted shapes here publish something
|
|
183
|
+
// that walk cannot see -- a tuple expansion mints `[[Get]]`s against this
|
|
184
|
+
// CALL's candidate, and a rest range copy changes which operand holds the
|
|
185
|
+
// tail -- so the placement would be made on a claim this producer cannot
|
|
186
|
+
// support. Gating a minted operation is a real capability, not a detail to
|
|
187
|
+
// assume.
|
|
188
|
+
return {
|
|
189
|
+
kind: 'refused',
|
|
190
|
+
reason: 'a spread argument in an optional call needs the gated placement of a minted read, which is not installed'
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
const restFrom = restFormalIndexOf(selected);
|
|
194
|
+
// Which positions each written argument will occupy, walked once up front so
|
|
195
|
+
// a spread's own admissibility can be decided against the position it lands
|
|
196
|
+
// in rather than against where it was written.
|
|
197
|
+
let scan = 0;
|
|
198
|
+
for (const [scanIndex, argument] of args.entries()) {
|
|
199
|
+
if (ts.isSpreadElement(argument) &&
|
|
200
|
+
openTupleSpreadShapeOf(context, context.types.typeAt(argument.expression)) !== null &&
|
|
201
|
+
!admitsOpenTupleSpread(context, argument, scan, restFrom, selected)) {
|
|
202
|
+
return {
|
|
203
|
+
kind: 'refused',
|
|
204
|
+
reason: 'a spread of an open-ended tuple range-copies its rest tail, which can only land in a rest parameter; ' +
|
|
205
|
+
'this call has no rest formal at or before the position the tail reaches'
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
if (ts.isSpreadElement(argument) &&
|
|
209
|
+
!isClosedTupleSpread(context, argument.expression) &&
|
|
210
|
+
declaredTupleRestArityOf(context, argument.expression) === null &&
|
|
211
|
+
!admitsOpenTupleSpread(context, argument, scan, restFrom, selected) &&
|
|
212
|
+
!admitsMaxArityTupleSpread(context, args, scanIndex, restFrom, selected) &&
|
|
213
|
+
!admitsFixedArgumentsSpread(context, args, scanIndex, restFrom, selected)) {
|
|
214
|
+
// The magic `arguments` object -- `IArguments` has no native iteration
|
|
215
|
+
// cursor of its own (it is not a `Set`/`Map`/`Array`/`string`/
|
|
216
|
+
// `Generator`), so `hasNativeIterationCursor` correctly says no for it.
|
|
217
|
+
// It is admitted here on a SEPARATE ground: once bound
|
|
218
|
+
// (`argumentsObjectValueAt`, `bindings.ts`) it names a genuine array
|
|
219
|
+
// this compiler minted, with exactly the arity `arguments.length`
|
|
220
|
+
// itself reports -- not a runtime iteration this layer has to model,
|
|
221
|
+
// an already-materialized value.
|
|
222
|
+
const isArguments = isArgumentsObjectIdentifier(argument.expression, context.checker);
|
|
223
|
+
if (!isArguments &&
|
|
224
|
+
!hasNativeIterationCursor(context, context.types.typeAt(argument.expression)) &&
|
|
225
|
+
!isDynamicIterationSource(context, context.types.typeAt(argument.expression))) {
|
|
226
|
+
return {
|
|
227
|
+
kind: 'refused',
|
|
228
|
+
reason: 'a spread argument whose source is not an array, a Set, a Map, a string, a generator or a genuinely dynamic value needs the general ' +
|
|
229
|
+
'iterator protocol, which is not installed'
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
// `selected === null` is a callee with no static convention to check
|
|
233
|
+
// AT ALL -- `invocations.ts` only leaves it null for a callee its own
|
|
234
|
+
// `calleeType` resolved genuinely dynamic (see the comment over
|
|
235
|
+
// `calleeIsDynamic` there) -- so "this call has no rest formal at this
|
|
236
|
+
// position" is not a question a `gea::Value::callAsFunction` dynamic
|
|
237
|
+
// call has an answer to: it has no named formals to be at or before,
|
|
238
|
+
// and takes every argument as a box regardless of position. Refusing
|
|
239
|
+
// it here would refuse a call that has no ABI to check the refusal
|
|
240
|
+
// against, the same shape `invocationArgumentTarget`
|
|
241
|
+
// (`preflight/invocation-arguments.ts`) already treats as satisfied
|
|
242
|
+
// outright for a dynamic callee's ordinary arguments.
|
|
243
|
+
if (selected !== null && (restFrom === null || (scan < restFrom && !restAbsorbsLeadingFormals(context, selected, scan, restFrom)))) {
|
|
244
|
+
// How many values a native range copy produces is a runtime fact.
|
|
245
|
+
// Matching it against named formals would need the arity the iteration
|
|
246
|
+
// produces, which is exactly what this compiler does not have -- so the
|
|
247
|
+
// refusal names the shape rather than the protocol: no iterator would
|
|
248
|
+
// help a callee whose formals are named.
|
|
249
|
+
return {
|
|
250
|
+
kind: 'refused',
|
|
251
|
+
reason: 'a spread argument whose source has a native iteration cursor can only be range-copied into a rest parameter; ' +
|
|
252
|
+
'this call has no rest formal at or before that position'
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
scan += positionsOccupiedBy(context, argument);
|
|
257
|
+
}
|
|
258
|
+
const operands = [];
|
|
259
|
+
const operations = [];
|
|
260
|
+
const edges = [];
|
|
261
|
+
let position = 0;
|
|
262
|
+
for (const [buildIndex, argument] of args.entries()) {
|
|
263
|
+
if (ts.isSpreadElement(argument)) {
|
|
264
|
+
if (admitsFixedArgumentsSpread(context, args, buildIndex, restFrom, selected)) {
|
|
265
|
+
const value = argumentsObjectValueAt(argument.expression, candidate.id, candidate.caller, candidate.evaluationOrdinal, context);
|
|
266
|
+
if (!value || !selected) {
|
|
267
|
+
return {
|
|
268
|
+
kind: 'refused',
|
|
269
|
+
reason: 'a fixed-signature spread of `arguments` needs the enclosing function phantom rest array and a selected signature'
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
// A tuple frame states each position's own type, optional positions
|
|
273
|
+
// read with `undefined` beside it -- the omitted-equals-undefined
|
|
274
|
+
// ground `maxArityTupleSpreadReads` states for this same final-spread,
|
|
275
|
+
// no-rest-formal position. An array frame has one element type for
|
|
276
|
+
// every position the callee names.
|
|
277
|
+
const shape = context.table.get(value.type).shape;
|
|
278
|
+
const positions = shape.kind === 'tuple'
|
|
279
|
+
? maxArityTupleElementTypesOf(context, value.type)
|
|
280
|
+
: shape.kind === 'array'
|
|
281
|
+
? Array(Math.max(0, selected.parameters.length - position)).fill(shape.element)
|
|
282
|
+
: null;
|
|
283
|
+
if (positions === null) {
|
|
284
|
+
return {
|
|
285
|
+
kind: 'refused',
|
|
286
|
+
reason: 'a fixed-signature spread of `arguments` resolved to a value that is neither a closed tuple nor an array'
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
operations.push(...value.operations);
|
|
290
|
+
edges.push(...value.edges);
|
|
291
|
+
const expanded = mintPositionalSpreadReads(context, candidate, { source: { kind: 'result', result: value.value }, type: value.type }, positions);
|
|
292
|
+
operations.push(...expanded.operations);
|
|
293
|
+
edges.push(...expanded.edges);
|
|
294
|
+
for (const slot of expanded.positions) {
|
|
295
|
+
operands.push(operand('argument', position, slot.source, slot.type, evaluation));
|
|
296
|
+
position += 1;
|
|
297
|
+
}
|
|
298
|
+
continue;
|
|
299
|
+
}
|
|
300
|
+
const open = openTupleSpreadShapeOf(context, context.types.typeAt(argument.expression));
|
|
301
|
+
if (open !== null) {
|
|
302
|
+
const receiver = spreadReceiverOf(context, argument.expression);
|
|
303
|
+
if (!receiver)
|
|
304
|
+
return { kind: 'refused', reason: 'no normalized operation identifies the value an open-ended tuple spread reads' };
|
|
305
|
+
const head = mintPositionalSpreadReads(context, candidate, receiver, open.fixed);
|
|
306
|
+
operations.push(...head.operations);
|
|
307
|
+
edges.push(...head.edges);
|
|
308
|
+
for (const slot of head.positions) {
|
|
309
|
+
operands.push(operand('argument', position, slot.source, slot.type, evaluation));
|
|
310
|
+
position += 1;
|
|
311
|
+
}
|
|
312
|
+
operands.push({ ...operand(spreadArgumentRole, position, receiver.source, receiver.type, evaluation), from: open.fixed.length });
|
|
313
|
+
position += 1;
|
|
314
|
+
continue;
|
|
315
|
+
}
|
|
316
|
+
const expanded = tupleSpreadReads(context, candidate, argument.expression) ??
|
|
317
|
+
declaredTupleRestSpreadReads(context, candidate, argument.expression) ??
|
|
318
|
+
(admitsMaxArityTupleSpread(context, args, buildIndex, restFrom, selected)
|
|
319
|
+
? maxArityTupleSpreadReads(context, candidate, argument.expression)
|
|
320
|
+
: null);
|
|
321
|
+
if (expanded) {
|
|
322
|
+
operations.push(...expanded.operations);
|
|
323
|
+
edges.push(...expanded.edges);
|
|
324
|
+
for (const slot of expanded.positions) {
|
|
325
|
+
operands.push(operand('argument', position, slot.source, slot.type, evaluation));
|
|
326
|
+
position += 1;
|
|
327
|
+
}
|
|
328
|
+
continue;
|
|
329
|
+
}
|
|
330
|
+
// The rest-tail range copy. The operand names the WHOLE array, so it
|
|
331
|
+
// occupies one argument-list position the way a `spread` element of an
|
|
332
|
+
// array literal occupies one slot of `arrayLiteralSlotsOf`'s ordered
|
|
333
|
+
// run: `ir/lower-invocation.ts` merges the two roles back by ordinal and
|
|
334
|
+
// hands `packRestArguments` a per-slot kind, and nothing else in the
|
|
335
|
+
// pipeline has to know the difference.
|
|
336
|
+
//
|
|
337
|
+
// `arguments` has no ordinary `citeExpressionResult` citation --
|
|
338
|
+
// `references.ts` resolves an identifier's value through its
|
|
339
|
+
// DECLARATION, and the magic `arguments` binding has none -- so it is
|
|
340
|
+
// sourced directly through `argumentsObjectValueAt` instead of
|
|
341
|
+
// `sourceForValue`, and the auxiliary operations that value needs
|
|
342
|
+
// (the phantom rest slot's own read, and -- only when a real declared
|
|
343
|
+
// parameter precedes it -- the array literal that concatenates the
|
|
344
|
+
// two) are minted here, against this call's own candidate, exactly as
|
|
345
|
+
// `tupleSpreadReads` above mints its `[[Get]]`s.
|
|
346
|
+
if (isArgumentsObjectIdentifier(argument.expression, context.checker)) {
|
|
347
|
+
const value = argumentsObjectValueAt(argument.expression, candidate.id, candidate.caller, candidate.evaluationOrdinal, context);
|
|
348
|
+
if (!value) {
|
|
349
|
+
return {
|
|
350
|
+
kind: 'refused',
|
|
351
|
+
reason: 'a spread of `arguments` needs the enclosing function to have exactly the phantom rest shape this compiler recognizes'
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
operations.push(...value.operations);
|
|
355
|
+
edges.push(...value.edges);
|
|
356
|
+
operands.push(operand(spreadArgumentRole, position, { kind: 'result', result: value.value }, context.types.typeAt(argument.expression), evaluation));
|
|
357
|
+
position += 1;
|
|
358
|
+
continue;
|
|
359
|
+
}
|
|
360
|
+
const sourceType = context.types.typeAt(argument.expression);
|
|
361
|
+
const source = isDynamicIterationSource(context, sourceType)
|
|
362
|
+
? {
|
|
363
|
+
kind: 'result',
|
|
364
|
+
result: semanticResultId(operationId(context.identities.nodeIdOf(argument), 'protocol', 1), 'iterator-record')
|
|
365
|
+
}
|
|
366
|
+
: sourceForValue(context, argument.expression);
|
|
367
|
+
operands.push(operand(spreadArgumentRole, position, source, sourceType, evaluation));
|
|
368
|
+
position += 1;
|
|
369
|
+
continue;
|
|
370
|
+
}
|
|
371
|
+
operands.push(operand('argument', position, sourceForValue(context, argument), context.types.typeAt(argument), evaluation));
|
|
372
|
+
position += 1;
|
|
373
|
+
}
|
|
374
|
+
return { kind: 'operands', operands, operations, edges };
|
|
375
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import type { CensusCandidate } from '../census.js';
|
|
3
|
+
import type { CandidateContribution } from '../contribution.js';
|
|
4
|
+
import type { ProducerContext } from '../producer-context.js';
|
|
5
|
+
export declare const contributeTaggedTemplate: (context: ProducerContext, candidate: CensusCandidate, node: ts.TaggedTemplateExpression) => CandidateContribution;
|