@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
package/dist/ir/model.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const irBlockId = (owner, ordinal) => `irblock|${owner}|${ordinal}`;
|
|
2
|
+
/** Every operation kind that may terminate a block. Used to keep the "terminator is last" invariant checkable. */
|
|
3
|
+
export const terminatorKinds = ['branch', 'jump', 'return', 'throw', 'switch'];
|
|
4
|
+
export const isTerminatorOperation = (operation) => terminatorKinds.includes(operation.kind);
|
|
5
|
+
/** Every operation in a block, in execution order, terminator last. */
|
|
6
|
+
export const allOperationsOf = (block) => [...block.operations, block.terminator];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** The sealed absence proof eliminates lookup, while native references still require a null check. */
|
|
2
|
+
export const nativeAbsentPropertyReadOf = (operation) => {
|
|
3
|
+
if (operation.kind !== 'get' ||
|
|
4
|
+
operation.normalResult !== 'undefined' ||
|
|
5
|
+
operation.result.representation.kind !== 'undefined' ||
|
|
6
|
+
operation.key.representation.kind !== 'scalar' ||
|
|
7
|
+
operation.key.representation.domain !== 'number')
|
|
8
|
+
return null;
|
|
9
|
+
const receiver = operation.receiver.representation;
|
|
10
|
+
if (receiver.kind === 'class-ref' && receiver.ownership === 'shared-refcount')
|
|
11
|
+
return 'checked-reference';
|
|
12
|
+
return receiver.kind === 'scalar' || receiver.kind === 'string' || receiver.kind === 'symbol' ? 'primitive' : null;
|
|
13
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IrOperation } from './model.js';
|
|
2
|
+
/**
|
|
3
|
+
* Native array transport does not publish the fields of its elements. This
|
|
4
|
+
* proves absence of reflection effects, not admission of an array operation:
|
|
5
|
+
* lowering and conversion guards still own whether it can be performed.
|
|
6
|
+
*/
|
|
7
|
+
export declare const nativeArrayTransportOf: (operation: IrOperation, constantKey: string | null) => boolean;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { canonicalIndexLiteral } from '../representation/array-index.js';
|
|
2
|
+
import { representationKey } from '../representation/model.js';
|
|
3
|
+
/**
|
|
4
|
+
* Native array transport does not publish the fields of its elements. This
|
|
5
|
+
* proves absence of reflection effects, not admission of an array operation:
|
|
6
|
+
* lowering and conversion guards still own whether it can be performed.
|
|
7
|
+
*/
|
|
8
|
+
export const nativeArrayTransportOf = (operation, constantKey) => {
|
|
9
|
+
if (operation.kind === 'allocate-array-object') {
|
|
10
|
+
const target = operation.result.representation;
|
|
11
|
+
if (target.kind !== 'array-object' || target.ownership !== 'shared-refcount')
|
|
12
|
+
return false;
|
|
13
|
+
const element = representationKey(target.element);
|
|
14
|
+
return operation.elements.every((slot) => {
|
|
15
|
+
if (slot.kind === 'hole')
|
|
16
|
+
return true;
|
|
17
|
+
if (slot.kind === 'element')
|
|
18
|
+
return representationKey(slot.value.representation) === element;
|
|
19
|
+
if (slot.kind !== 'spread' || slot.element !== undefined)
|
|
20
|
+
return false;
|
|
21
|
+
const source = slot.value.representation;
|
|
22
|
+
return source.kind === 'array-object' && representationKey(source.element) === element;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
if (operation.kind !== 'get' && operation.kind !== 'set')
|
|
26
|
+
return false;
|
|
27
|
+
const receiver = operation.receiver.representation;
|
|
28
|
+
if (receiver.kind !== 'array-object')
|
|
29
|
+
return false;
|
|
30
|
+
const value = operation.kind === 'get' ? operation.result.representation : operation.value.representation;
|
|
31
|
+
if (constantKey === 'length')
|
|
32
|
+
return value.kind === 'scalar' && value.domain === 'number';
|
|
33
|
+
// A string-shaped runtime key can name an ordinary property or method.
|
|
34
|
+
// Only a known canonical index or an already numeric key enters this path.
|
|
35
|
+
const indexed = constantKey !== null
|
|
36
|
+
? canonicalIndexLiteral(constantKey) !== null
|
|
37
|
+
: operation.key.representation.kind === 'scalar' && operation.key.representation.domain === 'number';
|
|
38
|
+
if (!indexed)
|
|
39
|
+
return false;
|
|
40
|
+
const element = representationKey(receiver.element);
|
|
41
|
+
if (representationKey(value) === element)
|
|
42
|
+
return true;
|
|
43
|
+
// A checked indexed read represents a hole/out-of-bounds access separately
|
|
44
|
+
// from its existing native payload. It does not adapt or expose that payload.
|
|
45
|
+
return (operation.kind === 'get' && value.kind === 'optional' && value.absence === 'undefined' && representationKey(value.payload) === element);
|
|
46
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IrOperation } from './model.js';
|
|
2
|
+
/**
|
|
3
|
+
* A native bind captures an already-converted prefix; it neither reads object
|
|
4
|
+
* properties nor invokes the callable. An eventual dynamic publication or
|
|
5
|
+
* callable adapter is analyzed at that operation, not invented at allocation.
|
|
6
|
+
* Match the complete source frame and remaining result frame before claiming
|
|
7
|
+
* native transport. Boxed sources and mismatched frames keep boundary demand.
|
|
8
|
+
*/
|
|
9
|
+
export declare const nativeCallableBindTransportOf: (operation: IrOperation) => boolean;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { abiOfCallee } from '../projection/callee.js';
|
|
2
|
+
import { abiKey, representationKey } from '../representation/model.js';
|
|
3
|
+
/**
|
|
4
|
+
* A native bind captures an already-converted prefix; it neither reads object
|
|
5
|
+
* properties nor invokes the callable. An eventual dynamic publication or
|
|
6
|
+
* callable adapter is analyzed at that operation, not invented at allocation.
|
|
7
|
+
* Match the complete source frame and remaining result frame before claiming
|
|
8
|
+
* native transport. Boxed sources and mismatched frames keep boundary demand.
|
|
9
|
+
*/
|
|
10
|
+
export const nativeCallableBindTransportOf = (operation) => {
|
|
11
|
+
if (operation.kind !== 'bind-callable' || operation.source.representation.kind === 'dynamic')
|
|
12
|
+
return false;
|
|
13
|
+
const source = abiOfCallee(operation.source.representation);
|
|
14
|
+
const result = abiOfCallee(operation.result.representation);
|
|
15
|
+
if (!source || !result || abiKey(source) !== abiKey(operation.sourceAbi))
|
|
16
|
+
return false;
|
|
17
|
+
if (source.restFrom !== null || result.restFrom !== null || result.receiver !== null)
|
|
18
|
+
return false;
|
|
19
|
+
if (source.receiver === null
|
|
20
|
+
? operation.receiver !== null
|
|
21
|
+
: operation.receiver === null || representationKey(source.receiver) !== representationKey(operation.receiver.representation))
|
|
22
|
+
return false;
|
|
23
|
+
if (operation.bound.length > source.parameters.length ||
|
|
24
|
+
operation.bound.some((value, index) => representationKey(value.representation) !== representationKey(source.parameters[index].value)))
|
|
25
|
+
return false;
|
|
26
|
+
const remaining = source.parameters.slice(operation.bound.length);
|
|
27
|
+
return (remaining.length === result.parameters.length &&
|
|
28
|
+
representationKey(source.result) === representationKey(result.result) &&
|
|
29
|
+
remaining.every((parameter, index) => representationKey(parameter.value) === representationKey(result.parameters[index].value)));
|
|
30
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { IrOperation } from './model.js';
|
|
2
|
+
/**
|
|
3
|
+
* A call that reads its argument's CARRIER and nothing inside it.
|
|
4
|
+
*
|
|
5
|
+
* `Array.isArray(v)` -- ECMA-262 23.1.2.2 -- answers whether the value is an
|
|
6
|
+
* Array exotic object. It reads no property, runs no getter, invokes no
|
|
7
|
+
* method: nothing about the argument's contents can be observed through it.
|
|
8
|
+
* So an argument passed to one is not exposed to the dynamic protocol, and a
|
|
9
|
+
* class or record reaching one keeps its native field surface.
|
|
10
|
+
*
|
|
11
|
+
* Without this the reflection census saw an ordinary call whose ambient
|
|
12
|
+
* parameter is `any`, concluded it "may inspect or mutate every native
|
|
13
|
+
* receiver/argument", and gave every class reachable through the argument the
|
|
14
|
+
* full boxed reflection protocol -- `gea_readOwnField`, `gea_ownFieldDescriptor`
|
|
15
|
+
* and the `gea::Value::box` calls inside them. The printer had already decided
|
|
16
|
+
* otherwise: `emit-host-invoke.ts`'s `isArrayText` renders the whole call as
|
|
17
|
+
* the argument's own discriminant (`v.is<0>() ? false : true`), so the call it
|
|
18
|
+
* emits reads exactly the tag. Two authorities disagreed about one call, and
|
|
19
|
+
* the census's answer -- the pessimistic one -- shaped the emitted struct.
|
|
20
|
+
*
|
|
21
|
+
* The authentication is the semantic layer's, not this file's: the same guards
|
|
22
|
+
* that authenticate `Object.keys` (`producers/invocations.ts`'s
|
|
23
|
+
* `intrinsicPropertyCallOf` -- standard-library provenance for both the owner
|
|
24
|
+
* and the member, no global host-mutation taint) stamp
|
|
25
|
+
* `intrinsicCarrierPredicate`, and this reads that fact. That is the
|
|
26
|
+
* `intrinsicOwnKeys`/`nativeKeyQueryOf` arrangement exactly.
|
|
27
|
+
*
|
|
28
|
+
* A `proxy-object` argument is excluded. `IsArray` walks a proxy to its target
|
|
29
|
+
* rather than invoking a trap, so the exclusion is not required by the spec --
|
|
30
|
+
* it is here because `native-key-query.ts` draws the same line for the same
|
|
31
|
+
* reason, and a carrier whose behaviour is another object's is not one this
|
|
32
|
+
* claim should be the first to speak for.
|
|
33
|
+
*/
|
|
34
|
+
export declare const nativeCarrierPredicateOf: (operation: IrOperation) => boolean;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A call that reads its argument's CARRIER and nothing inside it.
|
|
3
|
+
*
|
|
4
|
+
* `Array.isArray(v)` -- ECMA-262 23.1.2.2 -- answers whether the value is an
|
|
5
|
+
* Array exotic object. It reads no property, runs no getter, invokes no
|
|
6
|
+
* method: nothing about the argument's contents can be observed through it.
|
|
7
|
+
* So an argument passed to one is not exposed to the dynamic protocol, and a
|
|
8
|
+
* class or record reaching one keeps its native field surface.
|
|
9
|
+
*
|
|
10
|
+
* Without this the reflection census saw an ordinary call whose ambient
|
|
11
|
+
* parameter is `any`, concluded it "may inspect or mutate every native
|
|
12
|
+
* receiver/argument", and gave every class reachable through the argument the
|
|
13
|
+
* full boxed reflection protocol -- `gea_readOwnField`, `gea_ownFieldDescriptor`
|
|
14
|
+
* and the `gea::Value::box` calls inside them. The printer had already decided
|
|
15
|
+
* otherwise: `emit-host-invoke.ts`'s `isArrayText` renders the whole call as
|
|
16
|
+
* the argument's own discriminant (`v.is<0>() ? false : true`), so the call it
|
|
17
|
+
* emits reads exactly the tag. Two authorities disagreed about one call, and
|
|
18
|
+
* the census's answer -- the pessimistic one -- shaped the emitted struct.
|
|
19
|
+
*
|
|
20
|
+
* The authentication is the semantic layer's, not this file's: the same guards
|
|
21
|
+
* that authenticate `Object.keys` (`producers/invocations.ts`'s
|
|
22
|
+
* `intrinsicPropertyCallOf` -- standard-library provenance for both the owner
|
|
23
|
+
* and the member, no global host-mutation taint) stamp
|
|
24
|
+
* `intrinsicCarrierPredicate`, and this reads that fact. That is the
|
|
25
|
+
* `intrinsicOwnKeys`/`nativeKeyQueryOf` arrangement exactly.
|
|
26
|
+
*
|
|
27
|
+
* A `proxy-object` argument is excluded. `IsArray` walks a proxy to its target
|
|
28
|
+
* rather than invoking a trap, so the exclusion is not required by the spec --
|
|
29
|
+
* it is here because `native-key-query.ts` draws the same line for the same
|
|
30
|
+
* reason, and a carrier whose behaviour is another object's is not one this
|
|
31
|
+
* claim should be the first to speak for.
|
|
32
|
+
*/
|
|
33
|
+
export const nativeCarrierPredicateOf = (operation) => {
|
|
34
|
+
if (operation.kind !== 'call' || !operation.intrinsicCarrierPredicate || operation.argumentsAreSpread)
|
|
35
|
+
return false;
|
|
36
|
+
const queried = operation.arguments[0]?.representation;
|
|
37
|
+
if (queried === undefined || operation.arguments.length !== 1)
|
|
38
|
+
return false;
|
|
39
|
+
const carrierOnly = (value) => {
|
|
40
|
+
if (value.kind === 'optional')
|
|
41
|
+
return carrierOnly(value.payload);
|
|
42
|
+
if (value.kind === 'borrowed-ref')
|
|
43
|
+
return carrierOnly(value.referent);
|
|
44
|
+
if (value.kind === 'tagged-union')
|
|
45
|
+
return value.arms.length > 0 && value.arms.every((arm) => carrierOnly(arm.value));
|
|
46
|
+
return value.kind !== 'proxy-object';
|
|
47
|
+
};
|
|
48
|
+
return carrierOnly(queried);
|
|
49
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { DeclarationId, FunctionId } from '../identity/ids.js';
|
|
2
|
+
import type { ConversionCensus } from '../conversion/nodes.js';
|
|
3
|
+
import type { ClassLayout } from '../projection/classes.js';
|
|
4
|
+
import type { IrBody, IrOperation, IrOperand } from './model.js';
|
|
5
|
+
/** A direct native accessor is an ordinary body entry on the same receiver.
|
|
6
|
+
* Overridden families and adapting frames remain with the dispatch census;
|
|
7
|
+
* matching one implementation never authenticates the others.
|
|
8
|
+
*
|
|
9
|
+
* A setter argument may also reach its formal through the conversion the
|
|
10
|
+
* emitter applies there (`emit-properties.ts` aligns the value to the
|
|
11
|
+
* setter's parameter through the census node): only a node that is itself
|
|
12
|
+
* certified as a payload-preserving, field-protocol-free native transfer
|
|
13
|
+
* (`nativePayloadTransportMatches`) qualifies, so the formal holds the very
|
|
14
|
+
* payload the store wrote. Without the census no conversion is admitted. */
|
|
15
|
+
export declare const nativeClassAccessorEntryOf: (operation: IrOperation, key: string | null, classes: ReadonlyMap<DeclarationId, ClassLayout>, bodyOf: (id: FunctionId) => IrBody | null | undefined, conversions?: Pick<ConversionCensus, "nodeById">) => {
|
|
16
|
+
readonly functionId: FunctionId;
|
|
17
|
+
readonly arguments: readonly IrOperand[];
|
|
18
|
+
} | null;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { conversionNodeIdOf } from '../conversion/nodes.js';
|
|
2
|
+
import { nativePayloadTransportMatches } from '../conversion/native-payload-transport.js';
|
|
3
|
+
import { classMemberOf } from '../projection/fields.js';
|
|
4
|
+
import { classFamilyOverridesOf } from '../projection/dispatch.js';
|
|
5
|
+
import { representationKey } from '../representation/model.js';
|
|
6
|
+
/** A direct native accessor is an ordinary body entry on the same receiver.
|
|
7
|
+
* Overridden families and adapting frames remain with the dispatch census;
|
|
8
|
+
* matching one implementation never authenticates the others.
|
|
9
|
+
*
|
|
10
|
+
* A setter argument may also reach its formal through the conversion the
|
|
11
|
+
* emitter applies there (`emit-properties.ts` aligns the value to the
|
|
12
|
+
* setter's parameter through the census node): only a node that is itself
|
|
13
|
+
* certified as a payload-preserving, field-protocol-free native transfer
|
|
14
|
+
* (`nativePayloadTransportMatches`) qualifies, so the formal holds the very
|
|
15
|
+
* payload the store wrote. Without the census no conversion is admitted. */
|
|
16
|
+
export const nativeClassAccessorEntryOf = (operation, key, classes, bodyOf, conversions) => {
|
|
17
|
+
if ((operation.kind !== 'get' && operation.kind !== 'set') || key === null)
|
|
18
|
+
return null;
|
|
19
|
+
const receiver = operation.receiver.representation;
|
|
20
|
+
if (receiver.kind !== 'class-ref' || receiver.ownership !== 'shared-refcount')
|
|
21
|
+
return null;
|
|
22
|
+
const layout = classes.get(receiver.declaration);
|
|
23
|
+
if (!layout || layout.nativeBase !== null || classFamilyOverridesOf(classes, receiver.declaration, key).length > 0)
|
|
24
|
+
return null;
|
|
25
|
+
const member = classMemberOf(classes, receiver.declaration, key);
|
|
26
|
+
if (member?.kind !== 'accessor')
|
|
27
|
+
return null;
|
|
28
|
+
const functionId = operation.kind === 'get' ? member.accessor.getter : member.accessor.setter;
|
|
29
|
+
const frame = functionId === null ? null : bodyOf(functionId)?.abi;
|
|
30
|
+
const owner = classes.get(member.owner);
|
|
31
|
+
if (!functionId ||
|
|
32
|
+
!frame ||
|
|
33
|
+
!owner?.instance ||
|
|
34
|
+
owner.nativeBase !== null ||
|
|
35
|
+
frame.receiver === null ||
|
|
36
|
+
representationKey(frame.receiver) !== representationKey(owner.instance) ||
|
|
37
|
+
frame.restFrom !== null)
|
|
38
|
+
return null;
|
|
39
|
+
if (operation.kind === 'get') {
|
|
40
|
+
if (frame.parameters.length !== 0 || representationKey(frame.result) !== representationKey(operation.result.representation))
|
|
41
|
+
return null;
|
|
42
|
+
return { functionId, arguments: [] };
|
|
43
|
+
}
|
|
44
|
+
if (frame.result.kind !== 'void' || frame.parameters.length !== 1)
|
|
45
|
+
return null;
|
|
46
|
+
const formal = frame.parameters[0].value;
|
|
47
|
+
const written = operation.value.representation;
|
|
48
|
+
if (representationKey(formal) !== representationKey(written) &&
|
|
49
|
+
!nativePayloadTransportMatches(written, formal, conversions?.nodeById(conversionNodeIdOf(written, formal))))
|
|
50
|
+
return null;
|
|
51
|
+
return { functionId, arguments: [operation.value] };
|
|
52
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { DeclarationId, FunctionId } from '../identity/ids.js';
|
|
2
|
+
import type { ClassLayout } from '../projection/classes.js';
|
|
3
|
+
import { type Representation } from '../representation/model.js';
|
|
4
|
+
import { type ConversionCensus } from '../conversion/nodes.js';
|
|
5
|
+
import type { ConstructOperation, IrBody } from './model.js';
|
|
6
|
+
import { type NativeInitializationEntry } from './native-class-initialization.js';
|
|
7
|
+
export interface NativeClassConstructionBranch {
|
|
8
|
+
readonly declaration: DeclarationId;
|
|
9
|
+
readonly instance: Representation;
|
|
10
|
+
readonly entries: readonly NativeInitializationEntry[];
|
|
11
|
+
}
|
|
12
|
+
/** A constructor-family names implementations, unlike a constructor-value-
|
|
13
|
+
* dispatch carrier, which states only a signature. Each native sum arm keeps
|
|
14
|
+
* its own frame. Consume those identities and the conversion census rather
|
|
15
|
+
* than treating a non-direct semantic target as an unknown implementation. */
|
|
16
|
+
export declare const nativeClassConstructionOf: (operation: ConstructOperation, classes: ReadonlyMap<DeclarationId, ClassLayout>, bodyOf: (id: FunctionId) => IrBody | null | undefined, conversions?: Pick<ConversionCensus, "nodeById">) => readonly NativeClassConstructionBranch[] | null;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { abiKey, representationKey } from '../representation/model.js';
|
|
2
|
+
import { conversionNodeIdOf } from '../conversion/nodes.js';
|
|
3
|
+
import { nativePayloadTransportMatches } from '../conversion/native-payload-transport.js';
|
|
4
|
+
import { receivableArguments } from './call-entry.js';
|
|
5
|
+
import { nativeClassInitializationOf } from './native-class-initialization.js';
|
|
6
|
+
/** A constructor-family names implementations, unlike a constructor-value-
|
|
7
|
+
* dispatch carrier, which states only a signature. Each native sum arm keeps
|
|
8
|
+
* its own frame. Consume those identities and the conversion census rather
|
|
9
|
+
* than treating a non-direct semantic target as an unknown implementation. */
|
|
10
|
+
export const nativeClassConstructionOf = (operation, classes, bodyOf, conversions) => {
|
|
11
|
+
if (operation.callee.value !== operation.newTarget.value)
|
|
12
|
+
return null;
|
|
13
|
+
const callee = operation.callee.representation;
|
|
14
|
+
const alternatives = callee.kind === 'tagged-union' ? callee.arms.map((arm) => arm.value) : [callee];
|
|
15
|
+
if (alternatives.length === 0)
|
|
16
|
+
return null;
|
|
17
|
+
const branches = [];
|
|
18
|
+
for (const alternative of alternatives) {
|
|
19
|
+
if (alternative.kind !== 'constructor-family' || alternative.members.length === 0)
|
|
20
|
+
return null;
|
|
21
|
+
const abi = alternative.abi;
|
|
22
|
+
if (abi.receiver !== null || abi.restFrom !== null)
|
|
23
|
+
return null;
|
|
24
|
+
const received = receivableArguments(abi, operation.arguments);
|
|
25
|
+
// These are frame views after the cited, payload-preserving conversions,
|
|
26
|
+
// not new SSA values or permission to reinterpret an emitted operand.
|
|
27
|
+
const frame = [];
|
|
28
|
+
for (let index = 0; index < received.length; index++) {
|
|
29
|
+
const source = received[index];
|
|
30
|
+
const target = abi.parameters[index]?.value;
|
|
31
|
+
if (!target)
|
|
32
|
+
return null;
|
|
33
|
+
const node = conversions?.nodeById(conversionNodeIdOf(source.representation, target));
|
|
34
|
+
if (representationKey(source.representation) !== representationKey(target) &&
|
|
35
|
+
!nativePayloadTransportMatches(source.representation, target, node))
|
|
36
|
+
return null;
|
|
37
|
+
frame.push({ value: source.value, representation: target });
|
|
38
|
+
}
|
|
39
|
+
const result = operation.result.representation;
|
|
40
|
+
if (representationKey(abi.result) !== representationKey(result) &&
|
|
41
|
+
!nativePayloadTransportMatches(abi.result, result, conversions?.nodeById(conversionNodeIdOf(abi.result, result))))
|
|
42
|
+
return null;
|
|
43
|
+
for (const declaration of alternative.members) {
|
|
44
|
+
const layout = classes.get(declaration);
|
|
45
|
+
if (!layout?.construct || !layout.instance || abiKey(layout.construct) !== abiKey(abi))
|
|
46
|
+
return null;
|
|
47
|
+
const entries = nativeClassInitializationOf(layout, frame, classes, bodyOf, conversions);
|
|
48
|
+
if (entries === null)
|
|
49
|
+
return null;
|
|
50
|
+
branches.push({ declaration, instance: layout.instance, entries });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const targets = operation.target.kind === 'exact'
|
|
54
|
+
? [operation.target.target]
|
|
55
|
+
: operation.target.kind === 'closed-family'
|
|
56
|
+
? operation.target.targets
|
|
57
|
+
: null;
|
|
58
|
+
const matches = (branch, target) => {
|
|
59
|
+
const layout = classes.get(branch.declaration);
|
|
60
|
+
return target.kind === 'function'
|
|
61
|
+
? target.constructable && target.functionId === layout.constructor
|
|
62
|
+
: layout.constructor === null && target.classDeclaration === branch.declaration;
|
|
63
|
+
};
|
|
64
|
+
// A later family proof may refine an open target, but cannot overrule a
|
|
65
|
+
// contradictory implementation identity already published by semantics.
|
|
66
|
+
if (targets &&
|
|
67
|
+
(!branches.every((branch) => targets.some((target) => matches(branch, target))) ||
|
|
68
|
+
!targets.every((target) => branches.some((branch) => matches(branch, target)))))
|
|
69
|
+
return null;
|
|
70
|
+
return branches;
|
|
71
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { DeclarationId, FunctionId } from '../identity/ids.js';
|
|
2
|
+
import { type ClassLayout } from '../projection/classes.js';
|
|
3
|
+
import type { ConversionCensus } from '../conversion/nodes.js';
|
|
4
|
+
import type { IrBody, IrOperand, SuperInitializeOperation } from './model.js';
|
|
5
|
+
export interface NativeInitializationEntry {
|
|
6
|
+
readonly functionId: FunctionId;
|
|
7
|
+
readonly arguments: readonly IrOperand[];
|
|
8
|
+
}
|
|
9
|
+
/** Existing-receiver initialization follows the projected class lifecycle.
|
|
10
|
+
* An implicit derived constructor forwards its received frame to its base;
|
|
11
|
+
* a written constructor enters its body, whose super operation owns that edge.
|
|
12
|
+
* No instance is published merely by traversing this native call chain. */
|
|
13
|
+
export declare const nativeClassInitializationOf: (layout: ClassLayout, args: readonly IrOperand[], classes: ReadonlyMap<DeclarationId, ClassLayout>, bodyOf: (id: FunctionId) => IrBody | null | undefined, conversions?: Pick<ConversionCensus, "nodeById">, visiting?: Set<DeclarationId>) => readonly NativeInitializationEntry[] | null;
|
|
14
|
+
/** The owning constructor authenticates the implicit this passed by super(). */
|
|
15
|
+
export declare const nativeSuperInitializationOf: (operation: SuperInitializeOperation, owner: IrBody | null | undefined, classes: ReadonlyMap<DeclarationId, ClassLayout>, bodyOf: (id: FunctionId) => IrBody | null | undefined, conversions?: Pick<ConversionCensus, "nodeById">) => readonly NativeInitializationEntry[] | null;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { constructedBaseOf } from '../projection/classes.js';
|
|
2
|
+
import { representationKey } from '../representation/model.js';
|
|
3
|
+
import { nativeArgumentsMatch, receivableArguments } from './call-entry.js';
|
|
4
|
+
import { classConstructorBodyMatches } from './construct-entry.js';
|
|
5
|
+
/** Existing-receiver initialization follows the projected class lifecycle.
|
|
6
|
+
* An implicit derived constructor forwards its received frame to its base;
|
|
7
|
+
* a written constructor enters its body, whose super operation owns that edge.
|
|
8
|
+
* No instance is published merely by traversing this native call chain. */
|
|
9
|
+
export const nativeClassInitializationOf = (layout, args, classes, bodyOf, conversions, visiting = new Set()) => {
|
|
10
|
+
if (visiting.has(layout.declaration) ||
|
|
11
|
+
layout.nativeBase !== null ||
|
|
12
|
+
layout.instance === null ||
|
|
13
|
+
layout.construct === null ||
|
|
14
|
+
!nativeArgumentsMatch(layout.construct, args, conversions))
|
|
15
|
+
return null;
|
|
16
|
+
visiting.add(layout.declaration);
|
|
17
|
+
const entries = [];
|
|
18
|
+
const received = receivableArguments(layout.construct, args);
|
|
19
|
+
if (layout.constructor !== null) {
|
|
20
|
+
const body = bodyOf(layout.constructor);
|
|
21
|
+
if (!body || !classConstructorBodyMatches(layout, body))
|
|
22
|
+
return null;
|
|
23
|
+
entries.push({ functionId: layout.constructor, arguments: received });
|
|
24
|
+
}
|
|
25
|
+
else if (constructedBaseOf(layout) !== null) {
|
|
26
|
+
const base = classes.get(constructedBaseOf(layout));
|
|
27
|
+
const inherited = base ? nativeClassInitializationOf(base, received, classes, bodyOf, conversions, visiting) : null;
|
|
28
|
+
if (inherited === null)
|
|
29
|
+
return null;
|
|
30
|
+
entries.push(...inherited);
|
|
31
|
+
}
|
|
32
|
+
for (const field of layout.fields) {
|
|
33
|
+
if (field.initializer === null)
|
|
34
|
+
continue;
|
|
35
|
+
const frame = bodyOf(field.initializer)?.abi;
|
|
36
|
+
if (!frame ||
|
|
37
|
+
frame.receiver === null ||
|
|
38
|
+
representationKey(frame.receiver) !== representationKey(layout.instance) ||
|
|
39
|
+
frame.parameters.length !== 0 ||
|
|
40
|
+
frame.restFrom !== null)
|
|
41
|
+
return null;
|
|
42
|
+
entries.push({ functionId: field.initializer, arguments: [] });
|
|
43
|
+
}
|
|
44
|
+
return entries;
|
|
45
|
+
};
|
|
46
|
+
/** The owning constructor authenticates the implicit this passed by super(). */
|
|
47
|
+
export const nativeSuperInitializationOf = (operation, owner, classes, bodyOf, conversions) => {
|
|
48
|
+
if (!owner)
|
|
49
|
+
return null;
|
|
50
|
+
const owners = [...classes.values()].filter((layout) => layout.constructor === owner.sourceOwner);
|
|
51
|
+
const layout = owners.length === 1 ? owners[0] : undefined;
|
|
52
|
+
if (!layout || layout.nativeBase !== null || layout.base === null || !classConstructorBodyMatches(layout, owner))
|
|
53
|
+
return null;
|
|
54
|
+
const base = classes.get(layout.base);
|
|
55
|
+
return base ? nativeClassInitializationOf(base, operation.arguments, classes, bodyOf, conversions) : null;
|
|
56
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DeclarationId, FunctionId, IrValueId } from '../identity/ids.js';
|
|
2
|
+
import type { BindingPlacement } from '../projection/bindings.js';
|
|
3
|
+
import type { ClassLayout } from '../projection/classes.js';
|
|
4
|
+
import type { ConversionCensus } from '../conversion/nodes.js';
|
|
5
|
+
import type { IrBody, IrOperand, IrOperation } from './model.js';
|
|
6
|
+
/** Allocation provenance is distinct from reflection demand: native callback
|
|
7
|
+
* inputs can have closed layouts without originating in this program. */
|
|
8
|
+
export declare const nativeClassOriginsOf: (bodies: readonly IrBody[], operations: readonly IrOperation[], producers: ReadonlyMap<IrValueId, IrOperation>, placements: ReadonlyMap<DeclarationId, BindingPlacement>, classes: ReadonlyMap<DeclarationId, ClassLayout>, fieldSources: (operation: Extract<IrOperation, {
|
|
9
|
+
kind: "get";
|
|
10
|
+
}>) => readonly IrOperand[] | null, conversions?: Pick<ConversionCensus, "nodeById">) => {
|
|
11
|
+
readonly owned: (id: IrValueId) => boolean;
|
|
12
|
+
readonly closedInitializer: (id: FunctionId) => boolean;
|
|
13
|
+
};
|