@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,236 @@
|
|
|
1
|
+
import { representationKey } from '../representation/model.js';
|
|
2
|
+
import { operandOf } from '../semantics/model/operands.js';
|
|
3
|
+
import { abiOfCallee } from './callee.js';
|
|
4
|
+
import { recordFieldsOfShape } from './fields.js';
|
|
5
|
+
/**
|
|
6
|
+
* Keep an overlay until every native access through that ancestor has a
|
|
7
|
+
* descendant-storage dispatch path. An unused overlay needs no such bridge.
|
|
8
|
+
* Runtime-key accesses use the object's own-property protocol. That protocol
|
|
9
|
+
* dispatches on the concrete instance and needs its real fields, not a copy
|
|
10
|
+
* of every possible descendant field in an ancestor.
|
|
11
|
+
*/
|
|
12
|
+
export const nativeClassFieldUsesOf = (graph, plan, deriver, classes, slots, ownerDispatchedReads = new Set()) => {
|
|
13
|
+
const used = new Map();
|
|
14
|
+
const mark = (receiver, key) => {
|
|
15
|
+
if (receiver.kind === 'optional')
|
|
16
|
+
return mark(receiver.payload, key);
|
|
17
|
+
if (receiver.kind === 'borrowed-ref')
|
|
18
|
+
return mark(receiver.referent, key);
|
|
19
|
+
if (receiver.kind === 'tagged-union') {
|
|
20
|
+
for (const arm of receiver.arms)
|
|
21
|
+
mark(arm.value, key);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (receiver.kind !== 'class-ref')
|
|
25
|
+
return;
|
|
26
|
+
let declaration = receiver.declaration;
|
|
27
|
+
const seen = new Set();
|
|
28
|
+
const shadowed = new Set();
|
|
29
|
+
while (declaration !== null && !seen.has(declaration)) {
|
|
30
|
+
seen.add(declaration);
|
|
31
|
+
const layout = classes.get(declaration);
|
|
32
|
+
if (!layout)
|
|
33
|
+
return;
|
|
34
|
+
for (const field of layout.fields) {
|
|
35
|
+
if ((key !== null && field.key !== key) || shadowed.has(field.key))
|
|
36
|
+
continue;
|
|
37
|
+
shadowed.add(field.key);
|
|
38
|
+
if (!field.syntheticSubclassMemberOverlay)
|
|
39
|
+
continue;
|
|
40
|
+
// Demand belongs to the receiver through which code accesses the
|
|
41
|
+
// member. The ancestor supplied its type, not its allocation site.
|
|
42
|
+
const fields = used.get(receiver.declaration) ?? new Set();
|
|
43
|
+
fields.add(field.key);
|
|
44
|
+
used.set(receiver.declaration, fields);
|
|
45
|
+
}
|
|
46
|
+
declaration = layout.base;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
// A structural view reads fields even though the graph contains no `get`
|
|
50
|
+
// for each copied member. Ask the slot authority for the destination, then
|
|
51
|
+
// retain the native members that this source/target pair can read. This
|
|
52
|
+
// records demand only; conversion admission remains the conversion census's.
|
|
53
|
+
const viewed = new Set();
|
|
54
|
+
const fieldsOf = (value) => {
|
|
55
|
+
if (value.kind === 'record' || value.kind === 'record-with-index')
|
|
56
|
+
return value.fields;
|
|
57
|
+
if (value.kind === 'class-ref' || value.kind === 'native-record-ref')
|
|
58
|
+
return recordFieldsOfShape(deriver, value.shapeId) ?? [];
|
|
59
|
+
return [];
|
|
60
|
+
};
|
|
61
|
+
const view = (from, to) => {
|
|
62
|
+
const fromKey = representationKey(from);
|
|
63
|
+
const toKey = representationKey(to);
|
|
64
|
+
if (fromKey === toKey)
|
|
65
|
+
return;
|
|
66
|
+
const key = `${fromKey}->${toKey}`;
|
|
67
|
+
if (viewed.has(key))
|
|
68
|
+
return;
|
|
69
|
+
viewed.add(key);
|
|
70
|
+
if (from.kind === 'optional')
|
|
71
|
+
return view(from.payload, to);
|
|
72
|
+
if (to.kind === 'optional')
|
|
73
|
+
return view(from, to.payload);
|
|
74
|
+
if (from.kind === 'borrowed-ref')
|
|
75
|
+
return view(from.referent, to);
|
|
76
|
+
if (to.kind === 'borrowed-ref')
|
|
77
|
+
return view(from, to.referent);
|
|
78
|
+
if (from.kind === 'tagged-union') {
|
|
79
|
+
for (const arm of from.arms)
|
|
80
|
+
view(arm.value, to);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (to.kind === 'tagged-union') {
|
|
84
|
+
for (const arm of to.arms)
|
|
85
|
+
view(from, arm.value);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (to.kind === 'record' || to.kind === 'record-with-index' || to.kind === 'native-record-ref') {
|
|
89
|
+
const sourceFields = fieldsOf(from);
|
|
90
|
+
for (const field of fieldsOf(to)) {
|
|
91
|
+
if (from.kind === 'class-ref')
|
|
92
|
+
mark(from, field.key);
|
|
93
|
+
const source = sourceFields.find((candidate) => candidate.key === field.key);
|
|
94
|
+
if (source)
|
|
95
|
+
view(source.value, field.value);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (from.kind === 'array-object' && to.kind === 'array-object')
|
|
99
|
+
view(from.element, to.element);
|
|
100
|
+
if (from.kind === 'dictionary' && to.kind === 'dictionary')
|
|
101
|
+
view(from.value, to.value);
|
|
102
|
+
if (from.kind === 'keyed-collection' && to.kind === 'keyed-collection') {
|
|
103
|
+
view(from.key, to.key);
|
|
104
|
+
if (from.value && to.value)
|
|
105
|
+
view(from.value, to.value);
|
|
106
|
+
}
|
|
107
|
+
const sourceAbi = abiOfCallee(from);
|
|
108
|
+
const targetAbi = abiOfCallee(to);
|
|
109
|
+
if (sourceAbi && targetAbi) {
|
|
110
|
+
view(sourceAbi.result, targetAbi.result);
|
|
111
|
+
for (const [index, parameter] of targetAbi.parameters.entries()) {
|
|
112
|
+
const source = sourceAbi.parameters[index];
|
|
113
|
+
if (source)
|
|
114
|
+
view(parameter.value, source.value);
|
|
115
|
+
}
|
|
116
|
+
if (sourceAbi.receiver && targetAbi.receiver)
|
|
117
|
+
view(targetAbi.receiver, sourceAbi.receiver);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
for (const operation of graph.operations.values()) {
|
|
121
|
+
for (const operand of operation.operands) {
|
|
122
|
+
const target = slots.slotOf(operation, operand);
|
|
123
|
+
if (target.kind !== 'slot')
|
|
124
|
+
continue;
|
|
125
|
+
const source = slots.enteringCarrierOf(operation, operand);
|
|
126
|
+
if (source)
|
|
127
|
+
view(source, target.representation);
|
|
128
|
+
}
|
|
129
|
+
if (operation.family !== 'property' ||
|
|
130
|
+
operation.internalMethod === 'own-property-keys' ||
|
|
131
|
+
operation.internalMethod === 'has-property' ||
|
|
132
|
+
operation.internalMethod === 'delete')
|
|
133
|
+
continue;
|
|
134
|
+
if (operation.internalMethod === 'get' && ownerDispatchedReads.has(operation.id))
|
|
135
|
+
continue;
|
|
136
|
+
// Presence and deletion dispatch through the concrete object's property
|
|
137
|
+
// protocol, even for a constant key. Neither loads an ancestor payload;
|
|
138
|
+
// allocating a synthetic slot for them hides the real descendant owner.
|
|
139
|
+
const receiver = operandOf(operation, 'receiver');
|
|
140
|
+
const key = operandOf(operation, 'key');
|
|
141
|
+
if (!receiver)
|
|
142
|
+
continue;
|
|
143
|
+
if (key?.source.kind !== 'constant')
|
|
144
|
+
continue;
|
|
145
|
+
const carrier = receiver.source.kind === 'result' ? plan.selected.get(receiver.source.result) : undefined;
|
|
146
|
+
mark(carrier ?? deriver.derive(receiver.type), key.source.text);
|
|
147
|
+
}
|
|
148
|
+
return used;
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* Real inherited properties keep one slot. Synthetic fields without a native
|
|
152
|
+
* ancestor access are removed; real descendant declarations then own their
|
|
153
|
+
* own storage. Unclassified shape members retain the existing layout.
|
|
154
|
+
*/
|
|
155
|
+
export const projectNativeClassStorage = (classes, deriver, uses) => {
|
|
156
|
+
const planned = new Map();
|
|
157
|
+
const visiting = new Set();
|
|
158
|
+
const rawFields = (layout) => {
|
|
159
|
+
if (layout.instance?.kind !== 'class-ref')
|
|
160
|
+
return null;
|
|
161
|
+
const record = deriver.layoutOf(layout.instance.shapeId);
|
|
162
|
+
if (record.kind !== 'record' && record.kind !== 'record-with-index')
|
|
163
|
+
return null;
|
|
164
|
+
const overrides = layout.methodOverrides ?? [];
|
|
165
|
+
return [...record.fields.filter((field) => !overrides.some((override) => override.key === field.key)), ...overrides];
|
|
166
|
+
};
|
|
167
|
+
const visit = (declaration) => {
|
|
168
|
+
const known = planned.get(declaration);
|
|
169
|
+
if (known)
|
|
170
|
+
return known;
|
|
171
|
+
if (visiting.has(declaration))
|
|
172
|
+
return null;
|
|
173
|
+
const layout = classes.get(declaration);
|
|
174
|
+
if (!layout)
|
|
175
|
+
return null;
|
|
176
|
+
const raw = rawFields(layout);
|
|
177
|
+
if (!raw)
|
|
178
|
+
return null;
|
|
179
|
+
visiting.add(declaration);
|
|
180
|
+
const base = layout.base === null ? null : classes.get(layout.base);
|
|
181
|
+
const inherited = layout.base === null ? [] : (visit(layout.base)?.fields ?? (base ? rawFields(base) : null));
|
|
182
|
+
if (inherited === null)
|
|
183
|
+
return null;
|
|
184
|
+
const inheritedKeys = new Set(inherited.map((field) => field.key));
|
|
185
|
+
const ancestorDeclarations = new Map();
|
|
186
|
+
const walked = new Set();
|
|
187
|
+
for (let current = layout.base; current !== null && !walked.has(current);) {
|
|
188
|
+
walked.add(current);
|
|
189
|
+
const ancestor = classes.get(current);
|
|
190
|
+
if (!ancestor)
|
|
191
|
+
break;
|
|
192
|
+
for (const field of ancestor.fields)
|
|
193
|
+
if (!ancestorDeclarations.has(field.key))
|
|
194
|
+
ancestorDeclarations.set(field.key, field);
|
|
195
|
+
current = ancestor.base;
|
|
196
|
+
}
|
|
197
|
+
const declared = new Map(layout.fields.map((field) => [field.key, field]));
|
|
198
|
+
const omittedOverlays = [];
|
|
199
|
+
const own = raw.filter((field) => {
|
|
200
|
+
if (inheritedKeys.has(field.key))
|
|
201
|
+
return false;
|
|
202
|
+
const evidence = declared.get(field.key);
|
|
203
|
+
if (evidence?.syntheticSubclassMemberOverlay && !uses.get(declaration)?.has(field.key)) {
|
|
204
|
+
omittedOverlays.push(field.key);
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
if (evidence !== undefined || !ancestorDeclarations.has(field.key))
|
|
208
|
+
return true;
|
|
209
|
+
return ancestorDeclarations.get(field.key)?.syntheticSubclassMemberOverlay === true && uses.get(declaration)?.has(field.key) === true;
|
|
210
|
+
});
|
|
211
|
+
// A retained overlay reserves a typed slot for a base-view access; it does
|
|
212
|
+
// not create a JavaScript own property. Only a real write makes it present.
|
|
213
|
+
const storage = {
|
|
214
|
+
fields: [
|
|
215
|
+
...inherited,
|
|
216
|
+
...own.map((selected) => {
|
|
217
|
+
// A post-lowering ownership publication moves the slot but does
|
|
218
|
+
// not change its already-lowered value ABI. All loads and stores
|
|
219
|
+
// keep the carrier the original storage census selected.
|
|
220
|
+
const held = layout.nativeStorage?.fields.find((field) => field.key === selected.key);
|
|
221
|
+
const field = held ? { ...selected, value: held.value, required: held.required } : selected;
|
|
222
|
+
return (declared.get(field.key) ?? ancestorDeclarations.get(field.key))?.syntheticSubclassMemberOverlay
|
|
223
|
+
? { ...field, required: false }
|
|
224
|
+
: field;
|
|
225
|
+
})
|
|
226
|
+
],
|
|
227
|
+
omittedOverlays
|
|
228
|
+
};
|
|
229
|
+
planned.set(declaration, storage);
|
|
230
|
+
visiting.delete(declaration);
|
|
231
|
+
return storage;
|
|
232
|
+
};
|
|
233
|
+
for (const declaration of classes.keys())
|
|
234
|
+
visit(declaration);
|
|
235
|
+
return planned;
|
|
236
|
+
};
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import type { DeclarationId, FunctionId, StructuralTypeId } from '../identity/ids.js';
|
|
2
|
+
import { type CallableAbi, type RecordField, type Representation } from '../representation/model.js';
|
|
3
|
+
import type { SealedRepresentationPlan } from '../representation/plan.js';
|
|
4
|
+
import type { RepresentationDeriver } from '../representation/derive.js';
|
|
5
|
+
import type { SemanticGraph } from '../semantics/model/graph.js';
|
|
6
|
+
import { type StructuralType } from '../semantics/model/structural-types.js';
|
|
7
|
+
import type { NativeClassStorage } from './class-storage.js';
|
|
8
|
+
/**
|
|
9
|
+
* What each class is made of, assembled from the events its evaluation
|
|
10
|
+
* published.
|
|
11
|
+
*
|
|
12
|
+
* A class is not one operation. `ClassDefinitionEvaluation` creates the
|
|
13
|
+
* constructor object, then installs each method, then records each field --
|
|
14
|
+
* and the target needs all of them at once to emit a construction. Recovering
|
|
15
|
+
* that set by walking syntax would make this file a second authority over
|
|
16
|
+
* which members a class has; reading the events keeps the graph the only one.
|
|
17
|
+
*
|
|
18
|
+
* Order is the order the events were published, which is the order class
|
|
19
|
+
* evaluation runs them. A field initializer runs in field-declaration order at
|
|
20
|
+
* every construction, so reordering here would change what the program does.
|
|
21
|
+
*/
|
|
22
|
+
export interface ClassField {
|
|
23
|
+
readonly declaration: DeclarationId;
|
|
24
|
+
/** The written property key, from the definition's own key operand. */
|
|
25
|
+
readonly key: string;
|
|
26
|
+
/** The function that computes this field's initial value, or `null` for a field declared without one. */
|
|
27
|
+
readonly initializer: FunctionId | null;
|
|
28
|
+
/** The field's declared carrier, when its definition published one. */
|
|
29
|
+
readonly representation: Representation | null;
|
|
30
|
+
/** The field exists only to type a base-typed duck-property read; it was not declared by the program's class. */
|
|
31
|
+
readonly syntheticSubclassMemberOverlay: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The storage census for one synthetic subclass-member-overlay field.
|
|
35
|
+
*
|
|
36
|
+
* `evidenceOwner` is the class whose published field makes a base-typed
|
|
37
|
+
* access type-check. It is deliberately separate from `physicalOwners`: an
|
|
38
|
+
* overlay is evidence about the family surface, not a declaration that the
|
|
39
|
+
* ancestor owns a slot. Each physical owner is a real field declaration in a
|
|
40
|
+
* descendant and carries the representation that its storage uses. This is
|
|
41
|
+
* published before target lowering so targets do not have to infer ownership
|
|
42
|
+
* from flattened record shapes.
|
|
43
|
+
*/
|
|
44
|
+
export interface ClassFieldOwnership {
|
|
45
|
+
readonly key: string;
|
|
46
|
+
readonly evidenceOwner: DeclarationId;
|
|
47
|
+
readonly evidence: ClassField;
|
|
48
|
+
readonly physicalOwners: readonly {
|
|
49
|
+
readonly declaration: DeclarationId;
|
|
50
|
+
readonly field: ClassField;
|
|
51
|
+
}[];
|
|
52
|
+
}
|
|
53
|
+
/** One prototype method, and the body that implements it. */
|
|
54
|
+
export interface ClassMethod {
|
|
55
|
+
readonly key: string;
|
|
56
|
+
readonly callable: FunctionId | null;
|
|
57
|
+
/** Convention of the installed method object, including its implicit receiver. */
|
|
58
|
+
readonly representation?: Representation;
|
|
59
|
+
/** Public mutable member frame, distinct from the original implementation's frame. */
|
|
60
|
+
readonly storageRepresentation?: Representation;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* One accessor-backed member: the property a reader spells, and the functions
|
|
64
|
+
* that implement reading and writing it.
|
|
65
|
+
*
|
|
66
|
+
* Kept apart from `methods` because a reader of `box.value` is not taking a
|
|
67
|
+
* function object -- it is *calling* one, and the two lower to different C++.
|
|
68
|
+
* Either half can be absent: a get-only accessor really has no setter, and
|
|
69
|
+
* writing through it is a defect the target refuses by name rather than a
|
|
70
|
+
* lookup that quietly finds a field.
|
|
71
|
+
*/
|
|
72
|
+
export interface ClassAccessor {
|
|
73
|
+
readonly key: string;
|
|
74
|
+
readonly getter: FunctionId | null;
|
|
75
|
+
readonly setter: FunctionId | null;
|
|
76
|
+
/**
|
|
77
|
+
* The getter's own callable carrier, whose `abi.result` is what reading the
|
|
78
|
+
* member yields.
|
|
79
|
+
*
|
|
80
|
+
* A class's accessors are NOT members of the instance shape the deriver
|
|
81
|
+
* lays out -- that shape enumerates storage, and an accessor has none -- so
|
|
82
|
+
* `record.accessors` is empty for every class body and there is nowhere
|
|
83
|
+
* else to ask what a class getter publishes. Carried here, from the same
|
|
84
|
+
* selected representation `ClassMethod.representation` comes from, so the
|
|
85
|
+
* two halves of "what does this class member hold" have one source.
|
|
86
|
+
*/
|
|
87
|
+
readonly representation?: Representation;
|
|
88
|
+
}
|
|
89
|
+
export interface ClassLayout {
|
|
90
|
+
/** Proven layout demand with no reachable class evaluation/construction. */
|
|
91
|
+
readonly layoutOnly?: boolean;
|
|
92
|
+
readonly nativeStorage?: NativeClassStorage;
|
|
93
|
+
/** Typed own-property shadows, initially absent; prototype methods remain methods. */
|
|
94
|
+
readonly methodOverrides?: readonly RecordField[];
|
|
95
|
+
/** Methods replaced on this prototype, rather than on ordinary instances. */
|
|
96
|
+
readonly prototypeMethodMutations?: readonly string[];
|
|
97
|
+
/** Uses outside the currently supported typed method-only prototype protocol. */
|
|
98
|
+
readonly prototypeUnsupportedUses?: readonly string[];
|
|
99
|
+
readonly declaration: DeclarationId;
|
|
100
|
+
/**
|
|
101
|
+
* The class this one extends, or `null` for a base class.
|
|
102
|
+
*
|
|
103
|
+
* A derived class shares its base's storage and bodies: the base's fields are
|
|
104
|
+
* its fields, the base's methods accept its instances, and its construction
|
|
105
|
+
* runs the base's initialization first. None of that is derivable from this
|
|
106
|
+
* class's own members, so the link is carried rather than rediscovered -- and
|
|
107
|
+
* without it an inherited member reads a struct field nothing initialized.
|
|
108
|
+
*/
|
|
109
|
+
readonly base: DeclarationId | null;
|
|
110
|
+
/**
|
|
111
|
+
* `base` was linked by a modelled `Object.setPrototypeOf(C.prototype,
|
|
112
|
+
* B.prototype)` rather than by `extends`: layout and dispatch inherit from
|
|
113
|
+
* it, but this class's construction never runs the base's -- there is no
|
|
114
|
+
* `super()` to run it (`semantics/prototype-reparenting.ts`).
|
|
115
|
+
*/
|
|
116
|
+
readonly prototypeBase?: true;
|
|
117
|
+
/** No evaluation can produce an instance of this class (`semantics/uninstantiable-classes.ts`). */
|
|
118
|
+
readonly uninstantiable?: true;
|
|
119
|
+
/** A built-in native class extended directly; currently the intrinsic Error family. */
|
|
120
|
+
readonly nativeBase: {
|
|
121
|
+
readonly protocol: string;
|
|
122
|
+
readonly instance: Extract<Representation, {
|
|
123
|
+
readonly kind: 'native-record-ref';
|
|
124
|
+
}>;
|
|
125
|
+
} | null;
|
|
126
|
+
/** The convention `new` invokes, from the constructor object's own carrier. */
|
|
127
|
+
readonly construct: CallableAbi | null;
|
|
128
|
+
/** The carrier of an instance, which is what that convention returns. */
|
|
129
|
+
readonly instance: Representation | null;
|
|
130
|
+
/** The written constructor's body, or `null` when the class relies on the implicit one. */
|
|
131
|
+
readonly constructor: FunctionId | null;
|
|
132
|
+
readonly fields: readonly ClassField[];
|
|
133
|
+
/** Ownership facts for synthetic overlay evidence declared by this class. */
|
|
134
|
+
readonly fieldOwnership: readonly ClassFieldOwnership[];
|
|
135
|
+
readonly methods: readonly ClassMethod[];
|
|
136
|
+
readonly accessors: readonly ClassAccessor[];
|
|
137
|
+
/**
|
|
138
|
+
* The class's own *static* members -- kept apart from `fields`/`methods`/
|
|
139
|
+
* `accessors` because a static lives on the constructor object, not on an
|
|
140
|
+
* instance, and is read through a `constructor-family` receiver
|
|
141
|
+
* (`Quaternion.fromEuler`) rather than a `class-ref` one
|
|
142
|
+
* (`someQuaternion.multiply`). TypeScript allows a class to declare an
|
|
143
|
+
* instance and a static member with the same key, so folding both into one
|
|
144
|
+
* bucket (as this file did before) let a lookup silently return whichever
|
|
145
|
+
* one the census happened to publish first, for either receiver kind.
|
|
146
|
+
* `class-lifecycle`'s events already carry which is which
|
|
147
|
+
* (`descriptor.placement`); these three lists are that fact, kept.
|
|
148
|
+
*/
|
|
149
|
+
readonly staticFields: readonly ClassField[];
|
|
150
|
+
readonly staticMethods: readonly ClassMethod[];
|
|
151
|
+
readonly staticAccessors: readonly ClassAccessor[];
|
|
152
|
+
/**
|
|
153
|
+
* The class's `[[Name]]` -- `C.name` when no static member shadows it --
|
|
154
|
+
* as the constructor-object allocation stated it (`functionName`, the same
|
|
155
|
+
* field a function allocation fills), or `null` when no allocation of this
|
|
156
|
+
* class's constructor object was censused.
|
|
157
|
+
*/
|
|
158
|
+
readonly name: string | null;
|
|
159
|
+
/** The class's `Function.prototype.length` (`functionLength` on the same allocation), or `null` beside a `null` name. */
|
|
160
|
+
readonly length: number | null;
|
|
161
|
+
/**
|
|
162
|
+
* The census copy ids this physical class was published from (`decl|f0|36@0`,
|
|
163
|
+
* `decl|f0|36@2`), when it is a generic's; absent for a class that was never
|
|
164
|
+
* copied. A consumer holding a copy id from a class-lifecycle event resolves
|
|
165
|
+
* its layout through `classLayoutOfCopy`, never by stripping the suffix --
|
|
166
|
+
* a generic instantiated at two layouts has two physical classes, and the
|
|
167
|
+
* root names neither.
|
|
168
|
+
*/
|
|
169
|
+
readonly copies?: readonly DeclarationId[];
|
|
170
|
+
/**
|
|
171
|
+
* The class whose STATIC storage and static members this one shares -- the
|
|
172
|
+
* generic root, for one physical layout of a generic instantiated at
|
|
173
|
+
* several. Absent for a class that owns its own statics.
|
|
174
|
+
*
|
|
175
|
+
* A generic class is several structs and ONE constructor object: `Box` is
|
|
176
|
+
* one binding, `Box.count` is one cell every layout's constructor
|
|
177
|
+
* increments, and `Box.create` is one function. The layouts split what an
|
|
178
|
+
* INSTANCE is, never what the class value is, so every physical class of
|
|
179
|
+
* one root carries the same static members and they all resolve to one
|
|
180
|
+
* storage owner (`ir/class-static-fields.ts`'s `staticFieldOwnerOf`).
|
|
181
|
+
*/
|
|
182
|
+
readonly staticOwner?: DeclarationId;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* The one class that owns the static storage behind these constructor-family
|
|
186
|
+
* members, or `null` when they disagree -- which for a family of genuinely
|
|
187
|
+
* different classes (a base's slot the program stores subclasses into) they
|
|
188
|
+
* do, and for the layouts of ONE generic they never do.
|
|
189
|
+
*/
|
|
190
|
+
export declare const sharedStaticOwnerOf: (classes: ReadonlyMap<DeclarationId, ClassLayout>, members: readonly DeclarationId[]) => DeclarationId | null;
|
|
191
|
+
/**
|
|
192
|
+
* The physical class a census copy id belongs to.
|
|
193
|
+
*
|
|
194
|
+
* Exact id first (a physical id IS the copy id of its group's lowest copy,
|
|
195
|
+
* and a non-generic class is its own only copy); then the class that lists
|
|
196
|
+
* the copy among its `copies`; then the generic root, which is where a copy
|
|
197
|
+
* with no constructor-object carrier of its own was published.
|
|
198
|
+
*/
|
|
199
|
+
export declare const classLayoutOfCopy: (classes: ReadonlyMap<DeclarationId, ClassLayout>, copy: DeclarationId) => ClassLayout | undefined;
|
|
200
|
+
/** Runtime class candidates exclude definitions retained solely for type layout. */
|
|
201
|
+
/** The class whose construction this class's construction runs first, which a prototype-only base is not. */
|
|
202
|
+
export declare const constructedBaseOf: (layout: Pick<ClassLayout, "base" | "prototypeBase">) => DeclarationId | null;
|
|
203
|
+
export declare const runtimeClassLayoutsOf: (classes: ReadonlyMap<DeclarationId, ClassLayout>) => readonly ClassLayout[];
|
|
204
|
+
/**
|
|
205
|
+
* The physical facts needed to lay out a class reference. This deliberately
|
|
206
|
+
* has no constructor, method, accessor, or field-initializer members: a
|
|
207
|
+
* class-ref can be retained because a value is typed by the class even when
|
|
208
|
+
* no class-lifecycle event survived reachability. Treating that evidence as
|
|
209
|
+
* a full ClassLayout would invent callable bodies and make the target believe
|
|
210
|
+
* an implicit constructor was emitted.
|
|
211
|
+
*/
|
|
212
|
+
export interface PhysicalClassLayout {
|
|
213
|
+
readonly nativeStorage?: NativeClassStorage;
|
|
214
|
+
readonly declaration: DeclarationId;
|
|
215
|
+
/** The nearest authenticated base, or null for a root class. */
|
|
216
|
+
readonly base: DeclarationId | null;
|
|
217
|
+
/** The exact class-ref carrier whose shape supplies this struct's fields. */
|
|
218
|
+
readonly instance: Extract<Representation, {
|
|
219
|
+
readonly kind: 'class-ref';
|
|
220
|
+
}>;
|
|
221
|
+
/** Native base facts are preserved for ordinary projected classes. */
|
|
222
|
+
readonly nativeBase: ClassLayout['nativeBase'];
|
|
223
|
+
}
|
|
224
|
+
export interface PhysicalClassLayoutPublication {
|
|
225
|
+
readonly layouts: ReadonlyMap<DeclarationId, PhysicalClassLayout>;
|
|
226
|
+
/** A missing direct base prevents a sound derived layout and must fail closed. */
|
|
227
|
+
readonly complete: boolean;
|
|
228
|
+
readonly missingBases: readonly DeclarationId[];
|
|
229
|
+
}
|
|
230
|
+
export type PhysicalClassRefResolver = (declaration: DeclarationId) => Extract<Representation, {
|
|
231
|
+
readonly kind: 'class-ref';
|
|
232
|
+
}> | null;
|
|
233
|
+
/**
|
|
234
|
+
* Build the sealed class-ref authority used to close physical ancestry.
|
|
235
|
+
* Existing runtime class layouts win because their instance carrier is the
|
|
236
|
+
* projection's canonical shape. For type-only declarations, every
|
|
237
|
+
* class-instance structural anchor is derived and grouped by declaration;
|
|
238
|
+
* more than one distinct carrier is ambiguous and therefore resolves to null.
|
|
239
|
+
*/
|
|
240
|
+
export declare const physicalClassInstanceResolverOf: (classes: ReadonlyMap<DeclarationId, ClassLayout>, structuralTypes: ReadonlyMap<StructuralTypeId, StructuralType>, deriver: RepresentationDeriver) => PhysicalClassRefResolver;
|
|
241
|
+
export interface ClassProjectionInput {
|
|
242
|
+
readonly graph: SemanticGraph;
|
|
243
|
+
readonly plan: SealedRepresentationPlan;
|
|
244
|
+
readonly deriver: RepresentationDeriver;
|
|
245
|
+
/** Classes no evaluation can instantiate (`semantics/uninstantiable-classes.ts`). */
|
|
246
|
+
readonly uninstantiable?: ReadonlySet<DeclarationId>;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Publish synthetic overlay ownership after specialization collapse.
|
|
250
|
+
*
|
|
251
|
+
* This pass records evidence and physical owners without changing `fields`.
|
|
252
|
+
* Keeping the existing field list intact is intentional: access recipes and
|
|
253
|
+
* the target layout must consume this census before any storage can be
|
|
254
|
+
* removed. A missing representation remains visible as an owner but cannot
|
|
255
|
+
* be treated as a typed storage recipe by a later consumer.
|
|
256
|
+
*/
|
|
257
|
+
export declare const publishClassFieldOwnership: (layouts: ReadonlyMap<DeclarationId, ClassLayout>) => ReadonlyMap<DeclarationId, ClassLayout>;
|
|
258
|
+
/**
|
|
259
|
+
* Publish physical class ancestry for the final carrier set.
|
|
260
|
+
*
|
|
261
|
+
* `projectClasses` is intentionally event-driven: it describes executable
|
|
262
|
+
* class lifecycle, so a class used only as a retained field type may have no
|
|
263
|
+
* entry there. The target still needs its authenticated base link to avoid
|
|
264
|
+
* flattening inherited storage into the derived struct. This pass publishes
|
|
265
|
+
* only that physical fact from the already-sealed class-ref carriers and
|
|
266
|
+
* reuses full projected layouts where they exist. It must run on the final
|
|
267
|
+
* emission carrier set, after shaking, so a dropped type-only value cannot
|
|
268
|
+
* root a class merely because it appeared in the plan.
|
|
269
|
+
*/
|
|
270
|
+
export declare const physicalClassLayoutsOf: (classes: ReadonlyMap<DeclarationId, ClassLayout>, representations: readonly Representation[], resolveClassRef?: PhysicalClassRefResolver | null) => PhysicalClassLayoutPublication;
|
|
271
|
+
export declare const projectClasses: (input: ClassProjectionInput) => ReadonlyMap<DeclarationId, ClassLayout>;
|
|
272
|
+
/**
|
|
273
|
+
* Whether a runtime property key held in `carrier` can never be a Symbol.
|
|
274
|
+
*
|
|
275
|
+
* ToPropertyKey (ECMA-262 7.1.19) returns a Symbol only for a Symbol, or for
|
|
276
|
+
* an object whose ToPrimitive answers one. Every other primitive becomes its
|
|
277
|
+
* string. So a key carried as a string, a number, a boolean or an absence --
|
|
278
|
+
* or a union of only those -- spells string keys alone; an object, a symbol
|
|
279
|
+
* or a dynamic key may spell either and answers `false`.
|
|
280
|
+
*/
|
|
281
|
+
export declare const keyExcludesSymbols: (carrier: Representation) => boolean;
|
|
282
|
+
/** A write creates an own callable property without replacing its prototype declaration. */
|
|
283
|
+
export declare const publishClassMethodOverrides: (layouts: ReadonlyMap<DeclarationId, ClassLayout>, input: ClassProjectionInput) => ReadonlyMap<DeclarationId, ClassLayout>;
|