@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,561 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import type { OperationId, StructuralTypeId } from '../../../identity/ids.js';
|
|
3
|
+
import type { SemanticEdge } from '../../model/edges.js';
|
|
4
|
+
import type { OperandSource, SemanticOperand } from '../../model/operands.js';
|
|
5
|
+
import type { CandidateContribution } from '../contribution.js';
|
|
6
|
+
import { type StructuralMember } from '../../model/structural-types.js';
|
|
7
|
+
import { blocked } from './mint.js';
|
|
8
|
+
import type { ProducerContext } from '../producer-context.js';
|
|
9
|
+
import { type CitedBranch } from './references.js';
|
|
10
|
+
export { unwrapErasedExpression as unwrapErased } from './erasure.js';
|
|
11
|
+
/**
|
|
12
|
+
* Helpers every producer needs, kept in one place.
|
|
13
|
+
*
|
|
14
|
+
* Each of these existed as three or four private copies, and the copies did not
|
|
15
|
+
* stay identical: one `resultEdge` published ordinal zero for every operand
|
|
16
|
+
* while another carried the real one, so two producers disagreed about which
|
|
17
|
+
* operand an edge described. A duplicated helper is not a style problem here --
|
|
18
|
+
* it is a second authority waiting to drift, and drift in this layer is silent
|
|
19
|
+
* (a wrong citation produces no error, just an operation that never appears).
|
|
20
|
+
*/
|
|
21
|
+
/** `blocked()` mints a `CensusBlocker`; a producer's `contribute` must return a `CandidateContribution`. */
|
|
22
|
+
export declare const asBlocked: (...args: Parameters<typeof blocked>) => CandidateContribution;
|
|
23
|
+
/**
|
|
24
|
+
* The `ValueEdge` a cited result needs to stay visible to whole-program
|
|
25
|
+
* authority-connectivity analysis. A `constant`/`absent` source crosses no
|
|
26
|
+
* operation boundary, so it needs none.
|
|
27
|
+
*
|
|
28
|
+
* The ordinal is a parameter and not a constant: an operand's role and ordinal
|
|
29
|
+
* together name it, and an edge that always claimed ordinal zero would describe
|
|
30
|
+
* the first argument of a call no matter which argument it actually carried.
|
|
31
|
+
*/
|
|
32
|
+
export declare const resultEdge: (source: OperandSource, to: OperationId, role: string, ordinal: number) => SemanticEdge | null;
|
|
33
|
+
/** Every operand of an operation that cites a result, as edges into it. */
|
|
34
|
+
export declare const valueEdgesInto: (to: OperationId, operands: readonly SemanticOperand[]) => SemanticEdge[];
|
|
35
|
+
export declare const isAssignmentOperatorKind: (kind: ts.SyntaxKind) => boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Whether this source position evaluates in ECMAScript strict mode.
|
|
38
|
+
*
|
|
39
|
+
* An ES MODULE is strict in its entirety, unconditionally (ECMA-262 11.2.2) --
|
|
40
|
+
* no prologue, no `export`, nothing else required.
|
|
41
|
+
*
|
|
42
|
+
* Established against real `node`, not argued: the same `delete` of a
|
|
43
|
+
* non-configurable property answers `false` when the emitted file is loaded as
|
|
44
|
+
* CommonJS and throws `TypeError` when it is loaded as an ES module. Both
|
|
45
|
+
* `strict-delete.ts` and `native-handle-computed-access.runtime.js` throw under
|
|
46
|
+
* the module setting their own tsconfig states.
|
|
47
|
+
*
|
|
48
|
+
* THE `module` SETTING IS NOT THE QUESTION. It used to short-circuit this walk
|
|
49
|
+
* -- `module: ESNext` was read as "every file is a module, so every file is
|
|
50
|
+
* strict" -- and that is false for a file with no import and no export, which
|
|
51
|
+
* is a Script whatever the emit setting says. What actually makes every file in
|
|
52
|
+
* a build strict is `alwaysStrict` (implied by `strict`): tsc parses strict and
|
|
53
|
+
* writes a `'use strict'` prologue into each emitted file. That is
|
|
54
|
+
* `buildIsStrict`, and it is the only whole-build fact this needs; the rest --
|
|
55
|
+
* external module, prologue, class body -- is per position and walked here.
|
|
56
|
+
*
|
|
57
|
+
* `test/runtime/tsconfig.json` sets `strict: true`, so the suite's answer does
|
|
58
|
+
* not change. A build with `module: CommonJS` and `strict: true` was the case
|
|
59
|
+
* this got wrong in both directions at once.
|
|
60
|
+
*/
|
|
61
|
+
export declare const isStrictContext: (node: ts.Node, buildIsStrict: boolean) => boolean;
|
|
62
|
+
/**
|
|
63
|
+
* A logical assignment writes only when the short-circuit does not fire, so it
|
|
64
|
+
* is not a read-operate-write at all; decomposing it as one would write a value
|
|
65
|
+
* the source program leaves untouched.
|
|
66
|
+
*/
|
|
67
|
+
export declare const logicalAssignmentOperators: ReadonlySet<ts.SyntaxKind>;
|
|
68
|
+
/**
|
|
69
|
+
* A compound assignment reads its target, so the property and computation
|
|
70
|
+
* families must agree on exactly which operators those are. Derived from the
|
|
71
|
+
* assignment range minus the two forms that are not read-operate-write.
|
|
72
|
+
*/
|
|
73
|
+
export declare const isCompoundAssignmentOperator: (kind: ts.SyntaxKind) => boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Where an expression's value comes from, as an operand source.
|
|
76
|
+
*
|
|
77
|
+
* The identity is predictive, not observed: the owning family's producer mints
|
|
78
|
+
* this exact id independently from the same node, so the graph is wired by
|
|
79
|
+
* agreement on identity and never by execution order. Citation has exactly one
|
|
80
|
+
* implementation for that agreement to be worth anything -- three private
|
|
81
|
+
* copies of this drifted from it, kept citing a name's Reference Record after
|
|
82
|
+
* the shared rule moved to the value GetValue publishes, and every operand they
|
|
83
|
+
* built named a result nobody published. The publication guard then withheld
|
|
84
|
+
* those operations silently: no error, no blocker, just missing operations.
|
|
85
|
+
*
|
|
86
|
+
* The throw is deliberate. Every runtime-producing expression is censused, a
|
|
87
|
+
* literal, or `this`/`super`; reaching it means a form exists that neither this
|
|
88
|
+
* layer nor the census knows about, which is an implementation gap to fix here
|
|
89
|
+
* rather than a missing capability to report about the program.
|
|
90
|
+
*/
|
|
91
|
+
export declare const sourceForValue: (context: ProducerContext, expr: ts.Expression, branch?: CitedBranch) => OperandSource;
|
|
92
|
+
/**
|
|
93
|
+
* `Object.getOwnPropertyDescriptor(receiver, key)`'s result, minted from the
|
|
94
|
+
* RECEIVER's own structural shape rather than the ambient `PropertyDescriptor`
|
|
95
|
+
* interface's own declared `value?: any` -- see `structural.ts`'s own
|
|
96
|
+
* `objectDescriptorReturnTypeAt` for the full reasoning and the actual
|
|
97
|
+
* decision. Delegates rather than re-deriving: `context.types.typeAt(call)`
|
|
98
|
+
* (the general per-node structural authority, asked by a property access's
|
|
99
|
+
* own receiver typing, a local binding's declared type, and everything else
|
|
100
|
+
* that asks "what is this node's type") already computes this exact answer
|
|
101
|
+
* for the bare CallExpression, and `validateInvocationResult`
|
|
102
|
+
* (`model/selected-signature.ts`) requires this producer's own
|
|
103
|
+
* `resultType`/`selectedSignature.returnType` to agree with it exactly --
|
|
104
|
+
* two independently-written copies of the same decision is precisely the
|
|
105
|
+
* shape that disagreement bit once already this session (a `buildSelectedSignature`-only
|
|
106
|
+
* version published a native record for the call's own SSA value while
|
|
107
|
+
* `context.types.typeAt` kept answering the old boxed one for every other
|
|
108
|
+
* reader of the same node).
|
|
109
|
+
*/
|
|
110
|
+
export declare const objectDescriptorReturnTypeAt: (context: ProducerContext, call: ts.CallExpression | ts.NewExpression) => StructuralTypeId | null;
|
|
111
|
+
export declare const resolvedCalleeSignatureType: (context: ProducerContext, node: ts.Expression) => StructuralTypeId | null;
|
|
112
|
+
export declare const calleeAwareTypeAt: (context: ProducerContext, node: ts.Expression) => StructuralTypeId;
|
|
113
|
+
/**
|
|
114
|
+
* Whether a structural type is a plain `T[]`/`Array<T>` -- never a tuple,
|
|
115
|
+
* never a union, never an interned `unresolved`.
|
|
116
|
+
*
|
|
117
|
+
* This is the one predicate that decides whether a spread or a destructuring
|
|
118
|
+
* pattern's source may take the array/string fast path (index reads,
|
|
119
|
+
* `appendRange`) instead of needing the general iterator protocol. A tuple's
|
|
120
|
+
* elements are individually typed and keyed by position, not a single
|
|
121
|
+
* repeated element type, so it is deliberately excluded even though it is
|
|
122
|
+
* also array-shaped at runtime -- `lower-allocation.ts`'s own tuple-vs-array
|
|
123
|
+
* carrier split already draws this exact line, and this predicate answers it
|
|
124
|
+
* from the same source of truth (the interned shape), not a second opinion.
|
|
125
|
+
*/
|
|
126
|
+
export declare const isPlainArrayType: (context: ProducerContext, type: StructuralTypeId) => boolean;
|
|
127
|
+
/**
|
|
128
|
+
* The members an object spread copies, when the source's own-property set is
|
|
129
|
+
* statically known -- or the reason it is not.
|
|
130
|
+
*
|
|
131
|
+
* `{ ...a }` is `CopyDataProperties` (ECMA-262 7.3.25) over the source's OWN
|
|
132
|
+
* ENUMERABLE properties, and for a data-only object shape that set is exactly
|
|
133
|
+
* its members. This is the one authority on when that holds, asked by BOTH
|
|
134
|
+
* halves that must agree about it: `producers/allocations.ts` copies the
|
|
135
|
+
* members field by field, and `producers/protocol.ts` publishes its generic
|
|
136
|
+
* `spread` protocol operation only when this says no -- the same bypass shape,
|
|
137
|
+
* and for the same reason, that `isPlainArrayType` gives an array-literal
|
|
138
|
+
* spread. Two independent predicates here would let one half copy the fields
|
|
139
|
+
* while the other published a protocol step nothing lowers.
|
|
140
|
+
*
|
|
141
|
+
* A named interface interns as `declared` around its body; the BODY carries the
|
|
142
|
+
* members, so one level is unwrapped. Every other shape -- and every member
|
|
143
|
+
* this cannot copy correctly -- answers with a reason instead:
|
|
144
|
+
*
|
|
145
|
+
* - an INDEX SIGNATURE: the own-property set is not known until runtime, and
|
|
146
|
+
* copying only the declared members would silently drop the rest;
|
|
147
|
+
* - an ACCESSOR: `{ ...o }` copies a getter's RETURNED value, so it must be
|
|
148
|
+
* called, which is user code this layer does not invoke;
|
|
149
|
+
* - a `signature`-shaped member: a method on a class instance lives on the
|
|
150
|
+
* prototype and is not own-enumerable at all, and the shape alone cannot
|
|
151
|
+
* tell that from an own function-valued field;
|
|
152
|
+
* - `membersDropped`: a projection already filtered this body, so its member
|
|
153
|
+
* list is not the source's own-property set (see `representation/object-shape.ts`);
|
|
154
|
+
* - a SYMBOL key: `CopyDataProperties` skips a non-enumerable one, and the
|
|
155
|
+
* shape does not record enumerability.
|
|
156
|
+
*/
|
|
157
|
+
export declare const staticSpreadMembersOf: (context: ProducerContext, type: StructuralTypeId) => {
|
|
158
|
+
readonly members: readonly StructuralMember[];
|
|
159
|
+
} | {
|
|
160
|
+
readonly blocked: string;
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Whether a structural type is the standard `Set<T>` -- the second source
|
|
164
|
+
* whose iteration needs no dynamic `@@iterator` lookup.
|
|
165
|
+
*
|
|
166
|
+
* The sibling of `isPlainArrayType` above, answering the same question about a
|
|
167
|
+
* shape whose answer is a DECLARATION identity rather than a shape kind. It
|
|
168
|
+
* reads `context.keyedCollections`, the frontend's one census
|
|
169
|
+
* (`host-protocols.ts`'s `keyedCollectionDeclarationsOf`), which is also what
|
|
170
|
+
* `representation/derive.ts` selects the collection carrier from -- so the
|
|
171
|
+
* producer's "skip the method lookup" decision and the carrier's "this is a
|
|
172
|
+
* `keyed-collection`" decision can never be made about different declarations.
|
|
173
|
+
*
|
|
174
|
+
* `'set'` ONLY -- `isNativeIterableMapType` below answers the Map half, which
|
|
175
|
+
* needs a different fact from the carrier side and so cannot share one
|
|
176
|
+
* predicate. The weak families have no iteration at all (ECMA-262 24.3/24.4)
|
|
177
|
+
* and are covered by neither.
|
|
178
|
+
*/
|
|
179
|
+
export declare const isNativeIterableSetType: (context: ProducerContext, type: StructuralTypeId) => boolean;
|
|
180
|
+
/**
|
|
181
|
+
* Whether a structural type is the standard `Map<K, V>` -- the fourth source
|
|
182
|
+
* whose iteration needs no dynamic `@@iterator` lookup, and the only one whose
|
|
183
|
+
* element is not storage the source already holds.
|
|
184
|
+
*
|
|
185
|
+
* ECMA-262 24.1.5.1 `%MapIteratorPrototype%.next` yields a `[K, V]` PAIR, and
|
|
186
|
+
* this compiler carries a tuple as a record of "0"/"1" fields. That is why the
|
|
187
|
+
* decision has two halves that must agree: this one, which says the census may
|
|
188
|
+
* skip the method lookup, and `representation/publish.ts`'s
|
|
189
|
+
* `nativeCursorIteratorOf`, which must be able to publish a cursor over the
|
|
190
|
+
* pair's own carrier. The carrier side is the stricter of the two -- it reads
|
|
191
|
+
* the pair's record layout back out of the iterator record's declared element
|
|
192
|
+
* type and refuses unless the fields really are "0"/"1" carrying the
|
|
193
|
+
* collection's own key and value -- so a Map whose pair this compiler cannot
|
|
194
|
+
* lay out publishes no cursor, keys as the unclaimed
|
|
195
|
+
* `protocol:iterator:next:record`, and refuses at preflight. Skipping the
|
|
196
|
+
* method lookup for it is therefore safe in the one direction that matters:
|
|
197
|
+
* it can only ever cost a refusal, never a wrong lowering.
|
|
198
|
+
*/
|
|
199
|
+
export declare const isNativeIterableMapType: (context: ProducerContext, type: StructuralTypeId) => boolean;
|
|
200
|
+
/**
|
|
201
|
+
* Whether a structural type is a `string` -- the third source whose iteration
|
|
202
|
+
* needs no dynamic `@@iterator` lookup.
|
|
203
|
+
*
|
|
204
|
+
* ECMA-262 22.1.3.36 `String.prototype[@@iterator]` walks the receiver by CODE
|
|
205
|
+
* POINT, and a String is an immutable primitive, so the step sequence is fixed
|
|
206
|
+
* the moment the loop starts: there is nothing for `GetIterator` to resolve
|
|
207
|
+
* that the value itself does not already answer. `gea::Iterator<std::string>`'s
|
|
208
|
+
* string source (`runtime/gea_runtime.h`) is that walk.
|
|
209
|
+
*
|
|
210
|
+
* Deliberately narrower than "everything that CARRIES as `string`": a union of
|
|
211
|
+
* string literals collapses to the `string` carrier in `derive.ts`, and this
|
|
212
|
+
* answers `false` for it. That asymmetry is safe in exactly one direction --
|
|
213
|
+
* `publish.ts` would publish the cursor, this producer would still mint the
|
|
214
|
+
* `get-method` step, and `protocol:iterator:get-method:string` is claimed by no
|
|
215
|
+
* manifest, so the program refuses at preflight by name. The reverse (claiming
|
|
216
|
+
* the fast path for a shape whose carrier is not `string`) would emit a
|
|
217
|
+
* constructor call that does not exist, so the predicate is written to fail in
|
|
218
|
+
* the safe direction rather than to re-derive `deriveUnion`'s collapse rule as
|
|
219
|
+
* a second authority.
|
|
220
|
+
*/
|
|
221
|
+
export declare const isNativeIterableStringType: (context: ProducerContext, type: StructuralTypeId) => boolean;
|
|
222
|
+
/**
|
|
223
|
+
* Whether a source is a tuple with a fixed arity -- every element at a known
|
|
224
|
+
* position, none of them rest or variadic.
|
|
225
|
+
*
|
|
226
|
+
* A tuple IS an Array at runtime, so `for (const x of ['a', 'b'] as const)` is
|
|
227
|
+
* ordinary TypeScript that every JavaScript engine iterates through
|
|
228
|
+
* `Array.prototype[Symbol.iterator]`. This compiler carries a tuple as "a
|
|
229
|
+
* record whose keys are its indices" (`derive.ts`'s `deriveTuple`), which has
|
|
230
|
+
* no `@@iterator` FIELD, so the general dynamic protocol correctly refused
|
|
231
|
+
* every such loop -- nine of them in the mongodb driver alone, each over a
|
|
232
|
+
* `const [...] as const` option list.
|
|
233
|
+
*
|
|
234
|
+
* A fixed arity is what makes the walk settled: the elements are the record's
|
|
235
|
+
* own fields, in order, known before the program runs. Whether they also share
|
|
236
|
+
* ONE element carrier is a question about representations, which this layer
|
|
237
|
+
* cannot ask -- `preflight/runtime-helper-key.ts`'s `iteratorMethodCarrierKind`
|
|
238
|
+
* refines the carrier per site and leaves a heterogeneous tuple on an
|
|
239
|
+
* unclaimed key, so it refuses at preflight rather than reaching an emitter
|
|
240
|
+
* with nothing to build.
|
|
241
|
+
*/
|
|
242
|
+
export declare const isFixedArityTupleType: (context: ProducerContext, type: StructuralTypeId) => boolean;
|
|
243
|
+
/**
|
|
244
|
+
* A tuple with a `rest` position and no variadic one -- `[A, ...B[]]`. Its
|
|
245
|
+
* carrier is an ARRAY (`representation/derive.ts`'s `deriveTuple`: the array
|
|
246
|
+
* carrier over the union of its positions), so iterating it is the array's
|
|
247
|
+
* own native cursor, the same one a plain `T[]` has.
|
|
248
|
+
*/
|
|
249
|
+
export declare const isOpenTupleType: (context: ProducerContext, type: StructuralTypeId) => boolean;
|
|
250
|
+
/**
|
|
251
|
+
* Whether a source's iteration is settled before the program runs -- an
|
|
252
|
+
* `array`, a `Set<T>`, a `Map<K, V>`, a `string`, a `Generator<T, ...>`, a
|
|
253
|
+
* fixed-arity tuple, or a union whose every present arm is one of those.
|
|
254
|
+
*
|
|
255
|
+
* The ONE predicate every consumer of the native iterator cursor asks, so that
|
|
256
|
+
* `for`-`of` (`control.ts`), array-literal spread (`allocations.ts`),
|
|
257
|
+
* call-argument spread (`spread-arguments.ts`, `protocol.ts`) and array
|
|
258
|
+
* destructuring (`destructuring.ts`) can never disagree about which sources it
|
|
259
|
+
* covers. They did disagree before it existed: a `for`-`of` over a `Set` took
|
|
260
|
+
* the fast path while `[...set]` in the same program minted a `get-method`
|
|
261
|
+
* step for the identical value and refused.
|
|
262
|
+
*/
|
|
263
|
+
/**
|
|
264
|
+
* The one PRESENT arm of a union whose only other arms are absent -- `T[] |
|
|
265
|
+
* undefined`, `Set<T> | null` -- or `null` for every other shape.
|
|
266
|
+
*
|
|
267
|
+
* Iterating an absent value is a runtime `TypeError` in ECMA-262 (7.4.2
|
|
268
|
+
* `GetIterator` calls `GetMethod` on `undefined`, which throws), never a
|
|
269
|
+
* static impossibility, so `T[] | undefined` iterates through exactly the
|
|
270
|
+
* cursor `T[]` does with a presence assertion in front of it. The ONLY thing
|
|
271
|
+
* absence changes is whether the walk starts.
|
|
272
|
+
*
|
|
273
|
+
* That distinction is the reason this looks through the wrapper rather than
|
|
274
|
+
* `hasNativeIterationCursor` growing an arm per absent-shaped source: the
|
|
275
|
+
* cursor, its element and every capability claim behind it are the payload's,
|
|
276
|
+
* and the absence is a separate, single fact the backend spells once
|
|
277
|
+
* (`targets/cpp/emit-iterator.ts`'s presence assertion) for whichever payload
|
|
278
|
+
* shape it wraps.
|
|
279
|
+
*
|
|
280
|
+
* Exactly one present arm, deliberately. Two would be a real union needing a
|
|
281
|
+
* discriminated walk -- a question about representations this layer cannot
|
|
282
|
+
* ask -- and zero is `never`, which iterates nothing.
|
|
283
|
+
*/
|
|
284
|
+
export declare const presentIterationArm: (context: ProducerContext, type: StructuralTypeId) => StructuralTypeId | null;
|
|
285
|
+
export declare const hasNativeIterationCursor: (context: ProducerContext, type: StructuralTypeId) => boolean;
|
|
286
|
+
/**
|
|
287
|
+
* The type an iteration actually reads FROM, once a union that names one real
|
|
288
|
+
* iterable has been peeled to it.
|
|
289
|
+
*
|
|
290
|
+
* ONE authority, because two questions are asked about this same peeled type
|
|
291
|
+
* and they must not be able to disagree: `hasNativeIterationCursor` below asks
|
|
292
|
+
* whether it has a native cursor, and `producers/protocol.ts`'s
|
|
293
|
+
* `iterationElementType` asks what that cursor yields. Those are the two
|
|
294
|
+
* callers, and they are the only two.
|
|
295
|
+
*
|
|
296
|
+
* They HAD disagreed, in three different spellings of the same peel:
|
|
297
|
+
* `presentIterationArm` answers only when something nullish was actually
|
|
298
|
+
* removed, `soleDistinctPresentArm` dedupes members first, and
|
|
299
|
+
* `iterationElementType` carried a third, inline copy that did neither. A
|
|
300
|
+
* union whose arms intern to ONE id (`NodeArray<BindingElement> |
|
|
301
|
+
* NodeArray<ArrayBindingElement>`, tsc's `Node` family being one layout) is
|
|
302
|
+
* peeled by the deduping spelling and not by the inline one -- so the cursor
|
|
303
|
+
* predicate said "native cursor, no dynamic `Symbol.iterator` lookup needed"
|
|
304
|
+
* while the element reader fell through to the checker walk and refused with
|
|
305
|
+
* `the source declares no @@iterator/next/IteratorResult chain this can read
|
|
306
|
+
* an element type from`. That is `nested-array-assignment-pattern.runtime.js`'s
|
|
307
|
+
* for-`of` arm: a certified cursor whose element type nothing could state.
|
|
308
|
+
*
|
|
309
|
+
* Returns `null` when the type is not such a union at all -- the caller then
|
|
310
|
+
* uses the type it already had, which is what both callers did before.
|
|
311
|
+
*/
|
|
312
|
+
export declare const iterationPayloadArm: (context: ProducerContext, type: StructuralTypeId) => StructuralTypeId | null;
|
|
313
|
+
/**
|
|
314
|
+
* Whether a `for`-`in` over this source enumerates one of the NATIVE cursors
|
|
315
|
+
* `targets/cpp/emit-iterator.ts` renders: a runtime key TABLE
|
|
316
|
+
* (`gea::Dictionary<V>`), a STATIC field-name snapshot built from a
|
|
317
|
+
* statically shaped receiver's own compile-time member set
|
|
318
|
+
* (`emitStaticEnumerateIterator`, over `gea::nativeDynamicKeys`), or a
|
|
319
|
+
* genuinely DYNAMIC receiver's real own-enumerable-key walk
|
|
320
|
+
* (`emitDynamicEnumerateIterator`, over `Value::ownEnumerableStringKeys`).
|
|
321
|
+
*
|
|
322
|
+
* The enumerate sibling of `hasNativeIterationCursor`, and the same kind of
|
|
323
|
+
* fact for the first two: the keys are storage the receiver already holds
|
|
324
|
+
* (a runtime table, or a compile-time field list), so `for (const k in t)`
|
|
325
|
+
* needs no `[[OwnPropertyKeys]]` machinery and no dynamic protocol.
|
|
326
|
+
*
|
|
327
|
+
* The dictionary test mirrors `representation/object-shape.ts`'s
|
|
328
|
+
* `dictionaryIndexOf` exactly -- no members, exactly one index signature,
|
|
329
|
+
* string-keyed -- because the two have to agree: this decides the LOOP SHAPE
|
|
330
|
+
* and that decides the CARRIER, and a loop reshaped for a cursor the deriver
|
|
331
|
+
* then does not produce would refuse with a key naming neither. It is a
|
|
332
|
+
* structural test rather than a call into `representation/`, which normalize
|
|
333
|
+
* runs before and must not depend on -- `producer-context.ts`'s own doc says
|
|
334
|
+
* as much: a question this predicate cannot answer from the sealed structural
|
|
335
|
+
* table alone needs a NEW primitive threaded onto `ProducerContext`, never a
|
|
336
|
+
* second derivation of a representation-layer policy.
|
|
337
|
+
*
|
|
338
|
+
* A NAMED type (`'declared'`: an interface or type alias) COULD be
|
|
339
|
+
* intercepted by a declaration-identity policy in `representation/derive.ts`
|
|
340
|
+
* before ever reaching a plain `record`/`record-with-index` carrier --
|
|
341
|
+
* `Date`, `RegExp`, `Promise`, a data-only host-bound plugin struct via
|
|
342
|
+
* `nativeTypes` (`GeaEmbeddedImage`, `FetchResponse`, ...) -- and none of
|
|
343
|
+
* those policies' censuses (`DateDeclarationPolicy`, `RegExpDeclarationPolicy`,
|
|
344
|
+
* the host binding table, ...) are threaded onto `ProducerContext`, so this
|
|
345
|
+
* predicate cannot ask the identity question `derive.ts` asks and get the
|
|
346
|
+
* same answer; it can only ask the STRUCTURAL question (is the body a
|
|
347
|
+
* complete record) that `object-anchor` and bare `'object'` already answer
|
|
348
|
+
* below. The host-binding case is the one that matters: `derive.ts`'s own
|
|
349
|
+
* `'declared'` case hardcodes `{ kind: 'native-record-ref', ownership:
|
|
350
|
+
* 'owned', native: bound.native }` for a data-only bound type -- the EXACT
|
|
351
|
+
* `native !== null` combination `emitStaticEnumerateIterator` refuses -- and
|
|
352
|
+
* it shares its `.kind` (`'native-record-ref'`) with the safe,
|
|
353
|
+
* compiler-defined case (a plain interface derives the identical kind with
|
|
354
|
+
* `native: null`), so a carrier-kind obligation keyed only on `.kind` cannot
|
|
355
|
+
* tell the two apart. That is not a reason to keep `'declared'` OUT of this
|
|
356
|
+
* widening, though -- it is a reason the DISTINGUISHING question has to be
|
|
357
|
+
* asked somewhere that still has the full representation to inspect.
|
|
358
|
+
* `'declared'` is therefore treated exactly like `object-anchor` below (both
|
|
359
|
+
* unwrap to their body and take the identical dictionary/record checks), and
|
|
360
|
+
* the host-bound sub-case is caught downstream instead, at preflight:
|
|
361
|
+
* `runtime-helper-key.ts`'s `enumerateGetIteratorCarrierKind` re-resolves the
|
|
362
|
+
* `get-iterator` target's own representation (not just its bare kind, which
|
|
363
|
+
* is all this structural predicate has) and reports a host-bound
|
|
364
|
+
* `native-record-ref` under its own, deliberately unclaimed key --
|
|
365
|
+
* `native-record-ref(host-bound)` -- the same "refine the receiver key" move
|
|
366
|
+
* `preflight/property-access.ts`'s `nativeRecordRefHasIndexSidecar` makes for
|
|
367
|
+
* a `native-record-ref` property read. So a host-bound `for`-`in` is still
|
|
368
|
+
* refused by NAME, still at preflight, still before either loop shape is
|
|
369
|
+
* lowered -- it is just a different file that owns the distinction, because
|
|
370
|
+
* that file is the one still holding the representation once normalize's own
|
|
371
|
+
* structural view of it has been discarded.
|
|
372
|
+
*
|
|
373
|
+
* A compiler-defined CLASS instance (`'class-instance'` with a non-null
|
|
374
|
+
* `body`) does not share that risk, for a reason specific to it:
|
|
375
|
+
* `derive.ts`'s `'class-instance'` case checks the SAME host-binding census
|
|
376
|
+
* before ever looking at `shape.body`, but a bound class -- data-only or not
|
|
377
|
+
* -- resolves to a DIFFERENT kind there, `native-handle`, never `class-ref`;
|
|
378
|
+
* there is no shared-kind trap for the carrier-kind obligation to miss. And
|
|
379
|
+
* `class-ref`'s ownership is never the value-record `'owned'` override either
|
|
380
|
+
* -- `compiler.ts`'s own policy only overrides `shape.kind === 'object'`,
|
|
381
|
+
* never `'class-instance'` -- so it is always `shared-refcount`. A bound
|
|
382
|
+
* class is caught cleanly (unclaimed `native-handle` key); an unbound one is
|
|
383
|
+
* exactly the `class-ref` `emitStaticEnumerateIterator` renders.
|
|
384
|
+
*
|
|
385
|
+
* `'object'` (bare, or unwrapped from a callable-bearing object-literal
|
|
386
|
+
* anchor) needs none of that caution either: it names no declaration a policy
|
|
387
|
+
* could intercept by identity, so a plain, non-generic `record`/
|
|
388
|
+
* `record-with-index` is the only carrier `derive.ts`'s `deriveObject` can
|
|
389
|
+
* ever produce for it.
|
|
390
|
+
*/
|
|
391
|
+
export declare const hasNativeEnumerationCursor: (context: ProducerContext, type: StructuralTypeId) => boolean;
|
|
392
|
+
/**
|
|
393
|
+
* Whether a structural type is the standard `Generator<T, TReturn, TNext>` --
|
|
394
|
+
* what a `function*` returns, and the fifth source with no `@@iterator` lookup
|
|
395
|
+
* behind it.
|
|
396
|
+
*
|
|
397
|
+
* A generator IS its own iterator: ECMA-262 27.5.1.2
|
|
398
|
+
* `%GeneratorPrototype%[@@iterator]` returns `this`, so `GetIterator` over one
|
|
399
|
+
* resolves to the value already in hand and there is nothing dynamic to look
|
|
400
|
+
* up. `representation/derive.ts`'s `GeneratorDeclarationPolicy` carries it as
|
|
401
|
+
* the same `iterator(T)` cursor for exactly that reason -- one value, one
|
|
402
|
+
* carrier, whether it is being called or being walked.
|
|
403
|
+
*
|
|
404
|
+
* Keyed on the declaration the frontend resolved, never on the name, for the
|
|
405
|
+
* reason `isNativeIterableSetType` states about `Set`: the deriver reads the
|
|
406
|
+
* SAME identity, so the two cannot disagree about which declaration is meant.
|
|
407
|
+
*/
|
|
408
|
+
export declare const isGeneratorType: (context: ProducerContext, type: StructuralTypeId) => boolean;
|
|
409
|
+
/**
|
|
410
|
+
* The canonical *static* key text a bracketed key expression resolves to when
|
|
411
|
+
* it names a `unique symbol`, or `null` when it does not.
|
|
412
|
+
*
|
|
413
|
+
* `this[GEA_STATIC_ELEMENT]` is not a dynamic property access. The checker
|
|
414
|
+
* resolves it to a declared member exactly as it resolves `this.rendered`: a
|
|
415
|
+
* `unique symbol` is a compile-time identity, `class C { [S]: T }` declares a
|
|
416
|
+
* member named by it, and `keyof C` includes it. So the key here is static in
|
|
417
|
+
* the only sense this layer's `computed` flag means -- "the key resolved to a
|
|
418
|
+
* constant text" -- which is already why `o["0"]` and `o[0]` are reported
|
|
419
|
+
* non-computed despite being written in brackets.
|
|
420
|
+
*
|
|
421
|
+
* The text is `structural-types.ts`'s `symbolPropertyKeyText`, which is also
|
|
422
|
+
* what `representation/object-shape.ts` names the record field by, so the
|
|
423
|
+
* access and the layout cannot disagree about which member is meant. The
|
|
424
|
+
* `unique-symbol` shape is read back out of the interned table rather than
|
|
425
|
+
* asked of the checker a second time: `structural.ts` already resolved the
|
|
426
|
+
* declaration anchor (and already answered `unresolved` for a symbol that has
|
|
427
|
+
* none), and a second resolution here would be a second authority over one
|
|
428
|
+
* fact.
|
|
429
|
+
*/
|
|
430
|
+
export declare const uniqueSymbolKeyTextOf: (context: ProducerContext, type: StructuralTypeId) => string | null;
|
|
431
|
+
/** The shared layout fact that requires retaining a symbol's evaluated identity. */
|
|
432
|
+
export declare const isRuntimeSymbolMember: (context: ProducerContext, receiver: StructuralTypeId, keyType: StructuralTypeId) => boolean;
|
|
433
|
+
/**
|
|
434
|
+
* `ToPropertyKey` of a key whose value is fixed at compile time, or `null` when
|
|
435
|
+
* it is not.
|
|
436
|
+
*
|
|
437
|
+
* `{ [K]: v }` is not a dynamic property definition when `K`'s *type* pins the
|
|
438
|
+
* key: the checker itself types `{ [K]: 1 }` as `{ a: number }` for
|
|
439
|
+
* `const K = 'a'`, lists `a` in `keyof`, and resolves `o.a` against it. So the
|
|
440
|
+
* key is static in the only sense this layer's `computed` flag means -- the
|
|
441
|
+
* same sense in which `o["0"]` and `o[0]` are already reported non-computed --
|
|
442
|
+
* and lowering it as anything else would put a member the layout declares into
|
|
443
|
+
* a dictionary the layout does not have.
|
|
444
|
+
*
|
|
445
|
+
* The answer is read out of the interned shape rather than off the key's
|
|
446
|
+
* syntax, which is what makes `const K = 'a'` and `'a'` one case: a
|
|
447
|
+
* declaration's literal type is exactly as fixed as a literal written in place,
|
|
448
|
+
* and `structural-leaves.ts` has already interned both as the same shape.
|
|
449
|
+
* Reading syntax would see two different programs.
|
|
450
|
+
*
|
|
451
|
+
* Every literal shape resolves, because ECMA-262 7.1.19 `ToPropertyKey` is
|
|
452
|
+
* total over them and `structural-leaves.ts` already interned each one's text
|
|
453
|
+
* in the exact spelling `ToString` produces: a number through `String(value)`
|
|
454
|
+
* (which is `Number::toString`, and answers `"0"` for `-0` as the language
|
|
455
|
+
* does), a bigint in decimal, a boolean as `"true"`/`"false"`. A `unique
|
|
456
|
+
* symbol` needs no `ToString` at all -- it is already a property key -- and
|
|
457
|
+
* shares `uniqueSymbolKeyTextOf`'s spelling so a computed definition and a
|
|
458
|
+
* `receiver[K]` read name one member.
|
|
459
|
+
*/
|
|
460
|
+
export declare const staticPropertyKeyTextOf: (context: ProducerContext, type: StructuralTypeId) => string | null;
|
|
461
|
+
/**
|
|
462
|
+
* The static member key `receiver[SOME_SYMBOL]` names, or `null` when the
|
|
463
|
+
* access is not a declared-member read at all.
|
|
464
|
+
*
|
|
465
|
+
* This is the whole difference between two accesses that look identical:
|
|
466
|
+
*
|
|
467
|
+
* this[GEA_STATIC_ELEMENT] // a declared class member
|
|
468
|
+
* (obj as Record<symbol, unknown>)[GEA_DIRTY] // an index signature
|
|
469
|
+
*
|
|
470
|
+
* The first is a struct member load with a compile-time name -- the checker
|
|
471
|
+
* resolves it to a declared member exactly as it resolves `this.rendered`. The
|
|
472
|
+
* second is a genuine dynamic-table lookup keyed by the symbol's RUNTIME
|
|
473
|
+
* value, and spelling it as a static text would file it under the string half
|
|
474
|
+
* of the object's key space, where `Object.keys` would list a property whose
|
|
475
|
+
* whole purpose is not being enumerated.
|
|
476
|
+
*
|
|
477
|
+
* The RECEIVER'S MEMBER LIST decides, and it is asked of the checker rather
|
|
478
|
+
* than of the already-interned shape: `structural.ts` interns some bodies
|
|
479
|
+
* data-only (its `MemberMode`), so a symbol-named METHOD -- which
|
|
480
|
+
* `this[GEA_STATIC_TEMPLATE]()` is -- is absent from the interned body while
|
|
481
|
+
* being a perfectly ordinary declared member. Reading the interned body would
|
|
482
|
+
* therefore answer "dynamic" for a member the class really declares.
|
|
483
|
+
*
|
|
484
|
+
* Matching is by DECLARATION IDENTITY, never by spelling:
|
|
485
|
+
* `symbolKeyDeclarationOf` resolves a member's key to the `const` the symbol
|
|
486
|
+
* was bound to, which is the identical anchor `structural.ts`'s
|
|
487
|
+
* `UniqueESSymbol` branch gives the key expression's own type, so the two
|
|
488
|
+
* sides compare one fact.
|
|
489
|
+
*/
|
|
490
|
+
export declare const symbolMemberKeyOf: (context: ProducerContext, receiver: ts.Expression, keyType: StructuralTypeId) => string | null;
|
|
491
|
+
type NamedCallableNode = ts.FunctionDeclaration | ts.FunctionExpression | ts.ArrowFunction | ts.MethodDeclaration | ts.GetAccessorDeclaration | ts.SetAccessorDeclaration;
|
|
492
|
+
/**
|
|
493
|
+
* ECMA-262's `[[Name]]` internal slot for a callable, decided entirely at
|
|
494
|
+
* compile time from its syntax: a function/method/accessor's own written
|
|
495
|
+
* name (with `get `/`set ` prefixed for an accessor, exactly as
|
|
496
|
+
* `MethodDefinitionEvaluation`'s own `SetFunctionName` calls do), or --
|
|
497
|
+
* for an anonymous function/arrow expression -- the `NamedEvaluation` name
|
|
498
|
+
* from wherever it was defined (`namedEvaluationNameOf`).
|
|
499
|
+
*
|
|
500
|
+
* Both halves are pure syntax facts, independent of any value the callable
|
|
501
|
+
* ever carries at runtime, which is what makes this safe to decide once per
|
|
502
|
+
* allocation site and register in the runtime's static `SourceRegistration`
|
|
503
|
+
* table exactly as `functionSource` already is -- see
|
|
504
|
+
* `producers/allocations.ts`'s and `producers/class-lifecycle.ts`'s own
|
|
505
|
+
* `functionName` fields.
|
|
506
|
+
*/
|
|
507
|
+
/**
|
|
508
|
+
* ECMA-262's `[[Name]]` for a class constructor, the same way
|
|
509
|
+
* `staticFunctionNameOf` below decides it for a function: the class's own
|
|
510
|
+
* written name, or -- for an anonymous class expression -- the
|
|
511
|
+
* `NamedEvaluation` name of the position it was written in (`const A = class
|
|
512
|
+
* {}` is `"A"`, `[cls = class {}]` is `"cls"`), or `"default"` for an
|
|
513
|
+
* anonymous `export default class`. A class that declares its own static
|
|
514
|
+
* `name` member shadows this at the read site, which is the reader's rule
|
|
515
|
+
* (`emit-class-properties.ts`'s static-member walk runs first), not this one's.
|
|
516
|
+
*/
|
|
517
|
+
export declare const staticClassNameOf: (node: ts.ClassLikeDeclaration) => string;
|
|
518
|
+
/**
|
|
519
|
+
* `Function.prototype.length` for a class constructor: the written
|
|
520
|
+
* constructor's `ExpectedArgumentCount` (`expectedParameterCountOf`), or 0
|
|
521
|
+
* for a class relying on the implicit one -- the default constructor of a
|
|
522
|
+
* base class takes no parameters, and a derived class's `(...args)` has a
|
|
523
|
+
* rest parameter first, so both count 0.
|
|
524
|
+
*/
|
|
525
|
+
export declare const staticClassLengthOf: (node: ts.ClassLikeDeclaration) => number;
|
|
526
|
+
export declare const staticFunctionNameOf: (node: NamedCallableNode) => string;
|
|
527
|
+
/**
|
|
528
|
+
* ECMA-262 `ExpectedArgumentCount`: the leading run of a callable's own
|
|
529
|
+
* written parameters, up to (and excluding) the first one that has a default
|
|
530
|
+
* initializer or is a rest parameter. This is `Function.prototype.length`,
|
|
531
|
+
* and it is a fact about the written parameter list alone -- independent of
|
|
532
|
+
* `NamedEvaluation`, and independent of the calling convention this compiler
|
|
533
|
+
* projects, which erases exactly the "has a default" bit this needs (a
|
|
534
|
+
* defaulted parameter is narrowed to its own storage type same as a required
|
|
535
|
+
* one). So it is read directly off the syntax here, once, the same way
|
|
536
|
+
* `functionSource` is.
|
|
537
|
+
*
|
|
538
|
+
* TypeScript's synthetic `this` parameter (`function f(this: Foo, x: number)`)
|
|
539
|
+
* binds no argument position and is invisible to `.length`; the grammar
|
|
540
|
+
* allows it only in leading position, so skipping index 0 when it names
|
|
541
|
+
* `this` is exhaustive.
|
|
542
|
+
*/
|
|
543
|
+
export declare const expectedParameterCountOf: (node: ts.SignatureDeclarationBase) => number;
|
|
544
|
+
/**
|
|
545
|
+
* Whether the declaration performs ECMA-262 10.2.5 `MakeConstructor`, and so
|
|
546
|
+
* owns a `prototype` object, or `null` where the answer exists but this
|
|
547
|
+
* compiler does not model it.
|
|
548
|
+
*
|
|
549
|
+
* A syntax fact decided once per allocation site, exactly as
|
|
550
|
+
* `expectedParameterCountOf` above is: an ordinary `function` declaration or
|
|
551
|
+
* expression makes a constructor, while an arrow, a method, an accessor and
|
|
552
|
+
* an `async function` are created by `OrdinaryFunctionCreate` with no such
|
|
553
|
+
* step and own no `prototype` at all.
|
|
554
|
+
*
|
|
555
|
+
* A generator answers `null` rather than `true`. It does own a `prototype`,
|
|
556
|
+
* but 27.3.1's object inherits `%GeneratorFunction.prototype.prototype%`,
|
|
557
|
+
* which this runtime has no object for -- and reporting `true` would hand a
|
|
558
|
+
* read a plain object whose `constructor` chain is wrong. `null` keeps the
|
|
559
|
+
* read refused, which is the honest answer while that intrinsic is missing.
|
|
560
|
+
*/
|
|
561
|
+
export declare const ownPrototypePropertyOf: (node: ts.Node) => boolean | null;
|