@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,172 @@
|
|
|
1
|
+
import type { RecordIndexSidecar, Representation } from '../../representation/model.js';
|
|
2
|
+
import type { DeclarationId } from '../../identity/ids.js';
|
|
3
|
+
import type { RepresentationDeriver } from '../../representation/derive.js';
|
|
4
|
+
import type { SealedRepresentationPlan } from '../../representation/plan.js';
|
|
5
|
+
import type { SemanticGraph } from '../../semantics/model/graph.js';
|
|
6
|
+
import type { SemanticOperation } from '../../semantics/model/operations.js';
|
|
7
|
+
import { callableBuiltinResolution } from '../../semantics/callable-origins.js';
|
|
8
|
+
/**
|
|
9
|
+
* The receiver-side vocabulary of the `property-access` capability family:
|
|
10
|
+
* which carrier an access reads through, and the per-site refinements a flat
|
|
11
|
+
* manifest claim cannot express on its own (`record-with-index` field-vs-
|
|
12
|
+
* sidecar, `native-record-ref` index sidecar, callable builtin members,
|
|
13
|
+
* `constructor-family` census). `ir/certify/property-access.ts` spells the
|
|
14
|
+
* demands; this module answers the questions each spelling depends on.
|
|
15
|
+
*
|
|
16
|
+
* Moved from `preflight/property-access.ts` when the plan-side obligation builder that
|
|
17
|
+
* used to sit beside these was deleted: the questions survived the builder
|
|
18
|
+
* because they are about representations, not about the plan's edges.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Whether the receiver this access reads through has a semantic type that is
|
|
22
|
+
* `never` -- so the access is on a branch flow analysis proved unreachable.
|
|
23
|
+
*
|
|
24
|
+
* The same fact `deadTypeofGuards.isDeadOperation` states for one specific
|
|
25
|
+
* source of dead code, asked generally. mongodb's `execute_operation.ts:198`
|
|
26
|
+
* is the case that needed it: `tryOperation<T extends AbstractOperation>`
|
|
27
|
+
* narrows `operation` with `instanceof AggregateOperation`, monomorphization
|
|
28
|
+
* mints one copy per concrete `T`, and in every copy whose `T` is a DIFFERENT
|
|
29
|
+
* operation class the narrowed type is two unrelated classes intersected --
|
|
30
|
+
* uninhabited, so nothing is ever read there (`derive.ts`'s
|
|
31
|
+
* `isUninhabitedNominalIntersection`). Asking for a property recipe anyway
|
|
32
|
+
* reported a gap for a load the program never performs.
|
|
33
|
+
*
|
|
34
|
+
* The SEMANTIC type, not the carrier: `never` and a genuine `undefined` share
|
|
35
|
+
* one carrier (`representation/primitives.ts` gives both no storage) and only
|
|
36
|
+
* one of them is unreachable -- the identical distinction
|
|
37
|
+
* `buildBindingReadObligations` states for its own `never` skip.
|
|
38
|
+
*/
|
|
39
|
+
export declare const receiverIsUnreachable: (graph: SemanticGraph, operation: SemanticOperation, deriver: RepresentationDeriver) => boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Every class declaration `class-lifecycle` published at least one event for.
|
|
42
|
+
*
|
|
43
|
+
* `constructor-family`'s emitter (`emit-properties.ts`'s
|
|
44
|
+
* `classConstructorStaticMemberText`) resolves a static member by walking
|
|
45
|
+
* the `ClassLayout` `projectClasses` builds from these same events -- and an
|
|
46
|
+
* ambient `declare class` (an Apple/ObjC or three.js binding shipped as a
|
|
47
|
+
* `.d.ts`, e.g. `UIColor`) publishes none, because `semantics/program.ts`
|
|
48
|
+
* deliberately keeps declaration files out of the census
|
|
49
|
+
* (`!file.isDeclarationFile`). A flat manifest claim cannot see that
|
|
50
|
+
* distinction -- it only knows the carrier kind, not which class -- so a
|
|
51
|
+
* `constructor-family` receiver's obligation is additionally checked here,
|
|
52
|
+
* per declaration, against the set this computes once per compile. Without
|
|
53
|
+
* it, claiming the recipe generically would certify a program whose
|
|
54
|
+
* `UIColor.whiteColor` site can never actually resolve, discovering the gap
|
|
55
|
+
* only at emission instead of at preflight -- the exact "manifest claims
|
|
56
|
+
* more than the emitter can render" failure this census exists to prevent.
|
|
57
|
+
*/
|
|
58
|
+
export declare const classDeclarationsWithLifecycleEvents: (graph: SemanticGraph) => ReadonlySet<DeclarationId>;
|
|
59
|
+
/**
|
|
60
|
+
* Whether a `native-record-ref` receiver's named shape derives an index
|
|
61
|
+
* sidecar, licensing a computed `get` to route into it. Unlike
|
|
62
|
+
* `record-with-index`, whose every instance *by construction* has one,
|
|
63
|
+
* `native-record-ref` only names a shape by id -- it can equally well name
|
|
64
|
+
* an ordinary interface with none, so an unconditional claim would
|
|
65
|
+
* over-claim. Checked per site, like `recordWithIndexKeyNamesAField` and
|
|
66
|
+
* `constructorFamilyIsCensused`. Asks the deriver directly rather than
|
|
67
|
+
* going through `targets/cpp/records.ts`, which preflight must stay
|
|
68
|
+
* agnostic of.
|
|
69
|
+
*/
|
|
70
|
+
export declare const nativeRecordRefHasIndexSidecar: (representation: Representation | undefined, deriver: RepresentationDeriver) => boolean;
|
|
71
|
+
export declare const recordIndexesOf: (representation: Representation | undefined, deriver: RepresentationDeriver) => readonly RecordIndexSidecar[];
|
|
72
|
+
/**
|
|
73
|
+
* Whether every arm of a `tagged-union` receiver is a typed array.
|
|
74
|
+
*
|
|
75
|
+
* The mirror of `recordWithIndexKeyNamesAField` and
|
|
76
|
+
* `nativeRecordRefHasIndexSidecar`: a per-site fact the flat manifest cannot
|
|
77
|
+
* state, except that this one WIDENS what is claimed rather than narrowing
|
|
78
|
+
* it. `manifest/capabilities.ts` withholds `tagged-union:get:true` because a
|
|
79
|
+
* per-arm dispatch of a runtime-only key would have to reconcile
|
|
80
|
+
* `array-object`- and `dictionary`-shaped arms; a union whose every arm is a
|
|
81
|
+
* typed array owes no such reconciliation, because `TypedArray::elementAt`
|
|
82
|
+
* answers `double` for all eight element domains. `TypedArray` -- nine views
|
|
83
|
+
* that differ only in element width -- is exactly that shape, and it is why
|
|
84
|
+
* `array[ i ]` on a `BufferAttribute`'s array had no recipe.
|
|
85
|
+
*/
|
|
86
|
+
export declare const taggedUnionArmsAreAllTypedArrays: (representation: Representation | undefined) => boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Whether every arm of a `tagged-union` receiver is a `dictionary` -- the
|
|
89
|
+
* second shape (besides "every arm a typed array") a COMPUTED `get` owes no
|
|
90
|
+
* per-arm-KIND reconciliation for, only the ordinary per-arm VALUE
|
|
91
|
+
* reconciliation `emit-union-properties.ts`'s `dictionaryArmReadText`
|
|
92
|
+
* already performs. `Record<string, number> | Record<string, string>`
|
|
93
|
+
* (hono's route param table, narrowed vs. unresolved) and
|
|
94
|
+
* `Record<string, string> | Record<string, string[]>` (its query-string
|
|
95
|
+
* result, single vs. multi-value) are both this.
|
|
96
|
+
*/
|
|
97
|
+
export declare const taggedUnionArmsAreAllDictionaries: (representation: Representation | undefined) => boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Whether every arm of a `tagged-union` receiver is an `array-object` -- the
|
|
100
|
+
* third shape (besides "every arm a typed array" and "every arm a
|
|
101
|
+
* dictionary") a COMPUTED `get` owes no per-arm-KIND reconciliation for, only
|
|
102
|
+
* the ordinary per-arm VALUE reconciliation `emit-union-properties.ts`'s
|
|
103
|
+
* `arrayArmReadText` already performs. `[T, ParamIndexMap][] | [T, Params][]`
|
|
104
|
+
* (hono's router match result's first slot, indexed by `routeIndex`) is
|
|
105
|
+
* exactly this.
|
|
106
|
+
*/
|
|
107
|
+
export declare const taggedUnionArmsAreAllArrayObjects: (representation: Representation | undefined) => boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Whether every live arm can perform a computed ordinary-property lookup
|
|
110
|
+
* through an existing native sidecar.
|
|
111
|
+
*
|
|
112
|
+
* This is deliberately narrower than "every arm is an object". A native
|
|
113
|
+
* sidecar is identity-keyed, so a by-value record has nowhere stable to keep
|
|
114
|
+
* an expando; a host-native record may also expose members only through its
|
|
115
|
+
* host protocol. The admitted generated records and classes already render
|
|
116
|
+
* their fixed fields, typed index entries, and expando table through
|
|
117
|
+
* `nativeDynamicGet`; a dynamic arm owns the same operation outright.
|
|
118
|
+
*/
|
|
119
|
+
export declare const taggedUnionArmsHaveNativeSidecar: (representation: Representation | undefined) => boolean;
|
|
120
|
+
/**
|
|
121
|
+
* Whether a native callable carrier's non-computed `get` names
|
|
122
|
+
* `Function.prototype.call`.
|
|
123
|
+
*
|
|
124
|
+
* A flat manifest claim cannot say WHICH member name a site reads, only that
|
|
125
|
+
* a `function-value-dispatch:get:false` recipe exists somewhere -- the same
|
|
126
|
+
* gap `constructorFamilyIsCensused` and its siblings above answer for their
|
|
127
|
+
* own receivers. Unrefined, claiming the bare kind would certify `.name`,
|
|
128
|
+
* `.length`, `.prototype`, `.apply`/`.bind` and every other
|
|
129
|
+
* `Function.prototype` member equally, none of which
|
|
130
|
+
* `ir/lower-invocation.ts`'s `deferredFunctionCallCalleeOf` -- the only place
|
|
131
|
+
* a claim under this key is ever actually redeemed -- recognizes: it rewrites
|
|
132
|
+
* the *invocation* that reads `.call` to call the underlying receiver
|
|
133
|
+
* directly, with the read's own value never materialized, so there is no
|
|
134
|
+
* recipe here for any OTHER member to fall back on.
|
|
135
|
+
*/
|
|
136
|
+
/** A Function builtin member is deferred only when every use immediately invokes that exact read. */
|
|
137
|
+
export declare const isDirectCallableBuiltinRead: (graph: SemanticGraph, operation: SemanticOperation, member: "call" | "apply" | "bind") => boolean;
|
|
138
|
+
/**
|
|
139
|
+
* The direct native bind lowering is valid only while no admitted callable
|
|
140
|
+
* write can shadow Function.prototype.bind with an own property. Redefining
|
|
141
|
+
* `name` or `length` is valid and no longer belongs in this proof:
|
|
142
|
+
* `bindCallable` snapshots those properties from the target's shared Function
|
|
143
|
+
* identity through ordinary [[Get]]. This remains deliberately whole-program
|
|
144
|
+
* and fail-closed for the one mutation that changes WHICH function is called.
|
|
145
|
+
*/
|
|
146
|
+
export declare const callableBuiltinResolutionAt: (graph: SemanticGraph, plan: SealedRepresentationPlan, operation: SemanticOperation, member: "call" | "apply" | "bind") => ReturnType<typeof callableBuiltinResolution> | null;
|
|
147
|
+
export declare const callableBuiltinRecipeKey: (graph: SemanticGraph, plan: SealedRepresentationPlan, operation: SemanticOperation, access: {
|
|
148
|
+
readonly receiver: string;
|
|
149
|
+
readonly method: string;
|
|
150
|
+
readonly computed: boolean;
|
|
151
|
+
}) => string | null;
|
|
152
|
+
/**
|
|
153
|
+
* A callable's ordinary own-property write.
|
|
154
|
+
*
|
|
155
|
+
* The callable carrier keeps its invocation ABI, while its stable function
|
|
156
|
+
* identity owns a separate dynamic-property table. Unlike the named reads
|
|
157
|
+
* above, assignment does not need a member-name refinement: every key either
|
|
158
|
+
* updates an existing writable own property or creates an ordinary expando in
|
|
159
|
+
* that one table.
|
|
160
|
+
*/
|
|
161
|
+
export declare const functionValueOwnPropertyWrite: (access: {
|
|
162
|
+
readonly method: string;
|
|
163
|
+
readonly computed: boolean;
|
|
164
|
+
}) => boolean;
|
|
165
|
+
/**
|
|
166
|
+
* The Function names a native callable may NOT mistake for an ordinary own
|
|
167
|
+
* expando. Each has either a separate implementation (`call`, `apply`, direct
|
|
168
|
+
* `toString`) or no implementation at all (`bind`, legacy poison pills, and
|
|
169
|
+
* `constructor`); admitting one through a sidecar would turn an unsupported
|
|
170
|
+
* Function-prototype operation into a plausible `undefined` read.
|
|
171
|
+
*/
|
|
172
|
+
export declare const nonExpandoFunctionMemberNames: Set<string>;
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import { withoutSpecialization } from '../../identity/ids.js';
|
|
2
|
+
import { operandOf } from '../../semantics/model/operands.js';
|
|
3
|
+
import { callableBuiltinResolution, callableMutationFactsOf, callableOriginsOf } from '../../semantics/callable-origins.js';
|
|
4
|
+
/**
|
|
5
|
+
* The receiver-side vocabulary of the `property-access` capability family:
|
|
6
|
+
* which carrier an access reads through, and the per-site refinements a flat
|
|
7
|
+
* manifest claim cannot express on its own (`record-with-index` field-vs-
|
|
8
|
+
* sidecar, `native-record-ref` index sidecar, callable builtin members,
|
|
9
|
+
* `constructor-family` census). `ir/certify/property-access.ts` spells the
|
|
10
|
+
* demands; this module answers the questions each spelling depends on.
|
|
11
|
+
*
|
|
12
|
+
* Moved from `preflight/property-access.ts` when the plan-side obligation builder that
|
|
13
|
+
* used to sit beside these was deleted: the questions survived the builder
|
|
14
|
+
* because they are about representations, not about the plan's edges.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Whether the receiver this access reads through has a semantic type that is
|
|
18
|
+
* `never` -- so the access is on a branch flow analysis proved unreachable.
|
|
19
|
+
*
|
|
20
|
+
* The same fact `deadTypeofGuards.isDeadOperation` states for one specific
|
|
21
|
+
* source of dead code, asked generally. mongodb's `execute_operation.ts:198`
|
|
22
|
+
* is the case that needed it: `tryOperation<T extends AbstractOperation>`
|
|
23
|
+
* narrows `operation` with `instanceof AggregateOperation`, monomorphization
|
|
24
|
+
* mints one copy per concrete `T`, and in every copy whose `T` is a DIFFERENT
|
|
25
|
+
* operation class the narrowed type is two unrelated classes intersected --
|
|
26
|
+
* uninhabited, so nothing is ever read there (`derive.ts`'s
|
|
27
|
+
* `isUninhabitedNominalIntersection`). Asking for a property recipe anyway
|
|
28
|
+
* reported a gap for a load the program never performs.
|
|
29
|
+
*
|
|
30
|
+
* The SEMANTIC type, not the carrier: `never` and a genuine `undefined` share
|
|
31
|
+
* one carrier (`representation/primitives.ts` gives both no storage) and only
|
|
32
|
+
* one of them is unreachable -- the identical distinction
|
|
33
|
+
* `buildBindingReadObligations` states for its own `never` skip.
|
|
34
|
+
*/
|
|
35
|
+
export const receiverIsUnreachable = (graph, operation, deriver) => ['receiver', 'base'].some((role) => {
|
|
36
|
+
const receiver = operandOf(operation, role);
|
|
37
|
+
if (!receiver || receiver.source.kind !== 'result')
|
|
38
|
+
return false;
|
|
39
|
+
const resultId = receiver.source.result;
|
|
40
|
+
const producerId = graph.results.get(resultId);
|
|
41
|
+
const producer = producerId === undefined ? undefined : graph.operations.get(producerId);
|
|
42
|
+
const published = producer?.results.find((candidate) => candidate.id === resultId);
|
|
43
|
+
return published !== undefined && deriver.isNeverType(published.type);
|
|
44
|
+
});
|
|
45
|
+
/**
|
|
46
|
+
* Every class declaration `class-lifecycle` published at least one event for.
|
|
47
|
+
*
|
|
48
|
+
* `constructor-family`'s emitter (`emit-properties.ts`'s
|
|
49
|
+
* `classConstructorStaticMemberText`) resolves a static member by walking
|
|
50
|
+
* the `ClassLayout` `projectClasses` builds from these same events -- and an
|
|
51
|
+
* ambient `declare class` (an Apple/ObjC or three.js binding shipped as a
|
|
52
|
+
* `.d.ts`, e.g. `UIColor`) publishes none, because `semantics/program.ts`
|
|
53
|
+
* deliberately keeps declaration files out of the census
|
|
54
|
+
* (`!file.isDeclarationFile`). A flat manifest claim cannot see that
|
|
55
|
+
* distinction -- it only knows the carrier kind, not which class -- so a
|
|
56
|
+
* `constructor-family` receiver's obligation is additionally checked here,
|
|
57
|
+
* per declaration, against the set this computes once per compile. Without
|
|
58
|
+
* it, claiming the recipe generically would certify a program whose
|
|
59
|
+
* `UIColor.whiteColor` site can never actually resolve, discovering the gap
|
|
60
|
+
* only at emission instead of at preflight -- the exact "manifest claims
|
|
61
|
+
* more than the emitter can render" failure this census exists to prevent.
|
|
62
|
+
*/
|
|
63
|
+
export const classDeclarationsWithLifecycleEvents = (graph) => {
|
|
64
|
+
const declarations = new Set();
|
|
65
|
+
// A generic class's lifecycle events name the monomorphized COPY
|
|
66
|
+
// (`decl|f168|1@0`) while its constructor-family carrier names the
|
|
67
|
+
// declaration itself (`decl|f168|1`): one class, two spellings. Both are
|
|
68
|
+
// recorded, so `IdentifierNameMap.toKey(...)` on a generic class reads as
|
|
69
|
+
// censused -- measured on tsc's `transformers/utilities.ts`, where every
|
|
70
|
+
// static call on a generic class was refused `constructor-family
|
|
71
|
+
// (uncensused)` for exactly this.
|
|
72
|
+
const record = (declaration) => {
|
|
73
|
+
declarations.add(declaration);
|
|
74
|
+
declarations.add(withoutSpecialization(declaration));
|
|
75
|
+
};
|
|
76
|
+
for (const operation of graph.operations.values()) {
|
|
77
|
+
if (operation.family === 'class-lifecycle')
|
|
78
|
+
record(operation.classDeclaration);
|
|
79
|
+
// A memberless class expression (`const E = class {}`) publishes no
|
|
80
|
+
// lifecycle event, but its constructor-object allocation names the class
|
|
81
|
+
// it evaluated -- the same census, stated by the one event it does have.
|
|
82
|
+
if (operation.family === 'allocation' &&
|
|
83
|
+
operation.allocated === 'class-constructor-object' &&
|
|
84
|
+
operation.classDeclaration !== undefined) {
|
|
85
|
+
record(operation.classDeclaration);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return declarations;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Whether a `native-record-ref` receiver's named shape derives an index
|
|
92
|
+
* sidecar, licensing a computed `get` to route into it. Unlike
|
|
93
|
+
* `record-with-index`, whose every instance *by construction* has one,
|
|
94
|
+
* `native-record-ref` only names a shape by id -- it can equally well name
|
|
95
|
+
* an ordinary interface with none, so an unconditional claim would
|
|
96
|
+
* over-claim. Checked per site, like `recordWithIndexKeyNamesAField` and
|
|
97
|
+
* `constructorFamilyIsCensused`. Asks the deriver directly rather than
|
|
98
|
+
* going through `targets/cpp/records.ts`, which preflight must stay
|
|
99
|
+
* agnostic of.
|
|
100
|
+
*/
|
|
101
|
+
export const nativeRecordRefHasIndexSidecar = (representation, deriver) => {
|
|
102
|
+
if (representation?.kind !== 'native-record-ref')
|
|
103
|
+
return false;
|
|
104
|
+
return deriver.layoutOf(representation.shapeId).kind === 'record-with-index';
|
|
105
|
+
};
|
|
106
|
+
export const recordIndexesOf = (representation, deriver) => {
|
|
107
|
+
if (representation?.kind === 'record-with-index')
|
|
108
|
+
return representation.indexes;
|
|
109
|
+
if (representation?.kind !== 'native-record-ref' || representation.native !== null)
|
|
110
|
+
return [];
|
|
111
|
+
const layout = deriver.layoutOf(representation.shapeId);
|
|
112
|
+
return layout.kind === 'record-with-index' ? layout.indexes : [];
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Whether every arm of a `tagged-union` receiver is a typed array.
|
|
116
|
+
*
|
|
117
|
+
* The mirror of `recordWithIndexKeyNamesAField` and
|
|
118
|
+
* `nativeRecordRefHasIndexSidecar`: a per-site fact the flat manifest cannot
|
|
119
|
+
* state, except that this one WIDENS what is claimed rather than narrowing
|
|
120
|
+
* it. `manifest/capabilities.ts` withholds `tagged-union:get:true` because a
|
|
121
|
+
* per-arm dispatch of a runtime-only key would have to reconcile
|
|
122
|
+
* `array-object`- and `dictionary`-shaped arms; a union whose every arm is a
|
|
123
|
+
* typed array owes no such reconciliation, because `TypedArray::elementAt`
|
|
124
|
+
* answers `double` for all eight element domains. `TypedArray` -- nine views
|
|
125
|
+
* that differ only in element width -- is exactly that shape, and it is why
|
|
126
|
+
* `array[ i ]` on a `BufferAttribute`'s array had no recipe.
|
|
127
|
+
*/
|
|
128
|
+
export const taggedUnionArmsAreAllTypedArrays = (representation) => {
|
|
129
|
+
if (representation?.kind !== 'tagged-union')
|
|
130
|
+
return false;
|
|
131
|
+
return representation.arms.every((arm) => arm.value.kind === 'typed-array');
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* Whether every arm of a `tagged-union` receiver is a `dictionary` -- the
|
|
135
|
+
* second shape (besides "every arm a typed array") a COMPUTED `get` owes no
|
|
136
|
+
* per-arm-KIND reconciliation for, only the ordinary per-arm VALUE
|
|
137
|
+
* reconciliation `emit-union-properties.ts`'s `dictionaryArmReadText`
|
|
138
|
+
* already performs. `Record<string, number> | Record<string, string>`
|
|
139
|
+
* (hono's route param table, narrowed vs. unresolved) and
|
|
140
|
+
* `Record<string, string> | Record<string, string[]>` (its query-string
|
|
141
|
+
* result, single vs. multi-value) are both this.
|
|
142
|
+
*/
|
|
143
|
+
export const taggedUnionArmsAreAllDictionaries = (representation) => {
|
|
144
|
+
if (representation?.kind !== 'tagged-union')
|
|
145
|
+
return false;
|
|
146
|
+
return representation.arms.every((arm) => arm.value.kind === 'dictionary');
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* Whether every arm of a `tagged-union` receiver is an `array-object` -- the
|
|
150
|
+
* third shape (besides "every arm a typed array" and "every arm a
|
|
151
|
+
* dictionary") a COMPUTED `get` owes no per-arm-KIND reconciliation for, only
|
|
152
|
+
* the ordinary per-arm VALUE reconciliation `emit-union-properties.ts`'s
|
|
153
|
+
* `arrayArmReadText` already performs. `[T, ParamIndexMap][] | [T, Params][]`
|
|
154
|
+
* (hono's router match result's first slot, indexed by `routeIndex`) is
|
|
155
|
+
* exactly this.
|
|
156
|
+
*/
|
|
157
|
+
export const taggedUnionArmsAreAllArrayObjects = (representation) => {
|
|
158
|
+
if (representation?.kind !== 'tagged-union')
|
|
159
|
+
return false;
|
|
160
|
+
return representation.arms.every((arm) => arm.value.kind === 'array-object');
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Whether every live arm can perform a computed ordinary-property lookup
|
|
164
|
+
* through an existing native sidecar.
|
|
165
|
+
*
|
|
166
|
+
* This is deliberately narrower than "every arm is an object". A native
|
|
167
|
+
* sidecar is identity-keyed, so a by-value record has nowhere stable to keep
|
|
168
|
+
* an expando; a host-native record may also expose members only through its
|
|
169
|
+
* host protocol. The admitted generated records and classes already render
|
|
170
|
+
* their fixed fields, typed index entries, and expando table through
|
|
171
|
+
* `nativeDynamicGet`; a dynamic arm owns the same operation outright.
|
|
172
|
+
*/
|
|
173
|
+
export const taggedUnionArmsHaveNativeSidecar = (representation) => {
|
|
174
|
+
const answers = (value) => {
|
|
175
|
+
if (value.kind === 'tagged-union')
|
|
176
|
+
return value.arms.every((arm) => answers(arm.value));
|
|
177
|
+
if (value.kind === 'optional')
|
|
178
|
+
return answers(value.payload);
|
|
179
|
+
if (value.kind === 'dynamic' || value.kind === 'null' || value.kind === 'undefined')
|
|
180
|
+
return true;
|
|
181
|
+
if (value.kind === 'native-record-ref' && value.native !== null)
|
|
182
|
+
return false;
|
|
183
|
+
return ((value.kind === 'record' || value.kind === 'record-with-index' || value.kind === 'native-record-ref' || value.kind === 'class-ref') &&
|
|
184
|
+
value.ownership === 'shared-refcount');
|
|
185
|
+
};
|
|
186
|
+
return representation?.kind === 'tagged-union' && representation.arms.every((arm) => answers(arm.value));
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* Whether a native callable carrier's non-computed `get` names
|
|
190
|
+
* `Function.prototype.call`.
|
|
191
|
+
*
|
|
192
|
+
* A flat manifest claim cannot say WHICH member name a site reads, only that
|
|
193
|
+
* a `function-value-dispatch:get:false` recipe exists somewhere -- the same
|
|
194
|
+
* gap `constructorFamilyIsCensused` and its siblings above answer for their
|
|
195
|
+
* own receivers. Unrefined, claiming the bare kind would certify `.name`,
|
|
196
|
+
* `.length`, `.prototype`, `.apply`/`.bind` and every other
|
|
197
|
+
* `Function.prototype` member equally, none of which
|
|
198
|
+
* `ir/lower-invocation.ts`'s `deferredFunctionCallCalleeOf` -- the only place
|
|
199
|
+
* a claim under this key is ever actually redeemed -- recognizes: it rewrites
|
|
200
|
+
* the *invocation* that reads `.call` to call the underlying receiver
|
|
201
|
+
* directly, with the read's own value never materialized, so there is no
|
|
202
|
+
* recipe here for any OTHER member to fall back on.
|
|
203
|
+
*/
|
|
204
|
+
/** A Function builtin member is deferred only when every use immediately invokes that exact read. */
|
|
205
|
+
export const isDirectCallableBuiltinRead = (graph, operation, member) => {
|
|
206
|
+
if (operation.family !== 'property' || operation.internalMethod !== 'get' || operation.keyIsComputed)
|
|
207
|
+
return false;
|
|
208
|
+
const key = operandOf(operation, 'key');
|
|
209
|
+
if (key?.source.kind !== 'constant' || key.source.text !== member)
|
|
210
|
+
return false;
|
|
211
|
+
const result = operation.results.find((candidate) => candidate.role === 'value');
|
|
212
|
+
if (!result)
|
|
213
|
+
return false;
|
|
214
|
+
let calls = 0;
|
|
215
|
+
for (const edge of graph.edges) {
|
|
216
|
+
if (edge.kind !== 'value' || edge.result !== result.id)
|
|
217
|
+
continue;
|
|
218
|
+
const user = graph.operations.get(edge.to);
|
|
219
|
+
if (edge.role !== 'callee' || user?.family !== 'invocation' || user.internalMethod !== 'call' || user.optionalChain)
|
|
220
|
+
return false;
|
|
221
|
+
if (member === 'bind' && user.operands.some((operand) => operand.role === 'spread-argument'))
|
|
222
|
+
return false;
|
|
223
|
+
calls++;
|
|
224
|
+
}
|
|
225
|
+
return calls > 0;
|
|
226
|
+
};
|
|
227
|
+
/**
|
|
228
|
+
* The direct native bind lowering is valid only while no admitted callable
|
|
229
|
+
* write can shadow Function.prototype.bind with an own property. Redefining
|
|
230
|
+
* `name` or `length` is valid and no longer belongs in this proof:
|
|
231
|
+
* `bindCallable` snapshots those properties from the target's shared Function
|
|
232
|
+
* identity through ordinary [[Get]]. This remains deliberately whole-program
|
|
233
|
+
* and fail-closed for the one mutation that changes WHICH function is called.
|
|
234
|
+
*/
|
|
235
|
+
export const callableBuiltinResolutionAt = (graph, plan, operation, member) => {
|
|
236
|
+
const receiver = operandOf(operation, 'receiver');
|
|
237
|
+
if (receiver?.source.kind !== 'result')
|
|
238
|
+
return null;
|
|
239
|
+
const origins = callableOriginsOf(graph);
|
|
240
|
+
const facts = callableMutationFactsOf(graph, plan, origins);
|
|
241
|
+
return callableBuiltinResolution(facts, origins.get(receiver.source.result) ?? null, member);
|
|
242
|
+
};
|
|
243
|
+
export const callableBuiltinRecipeKey = (graph, plan, operation, access) => {
|
|
244
|
+
if (access.method !== 'get' || access.computed)
|
|
245
|
+
return null;
|
|
246
|
+
const key = operandOf(operation, 'key');
|
|
247
|
+
if (key?.source.kind !== 'constant')
|
|
248
|
+
return null;
|
|
249
|
+
const member = key.source.text;
|
|
250
|
+
if (member !== 'call' && member !== 'apply' && member !== 'bind')
|
|
251
|
+
return null;
|
|
252
|
+
const callableReceivers = new Set([
|
|
253
|
+
'function',
|
|
254
|
+
'function-family',
|
|
255
|
+
'function-value-family',
|
|
256
|
+
'function-value-dispatch',
|
|
257
|
+
'function-and-constructor'
|
|
258
|
+
]);
|
|
259
|
+
if (!callableReceivers.has(access.receiver))
|
|
260
|
+
return null;
|
|
261
|
+
const resolution = callableBuiltinResolutionAt(graph, plan, operation, member);
|
|
262
|
+
if (resolution === null || resolution === 'prototype-mutated')
|
|
263
|
+
return null;
|
|
264
|
+
if (resolution === 'ordinary-property')
|
|
265
|
+
return `${access.receiver}(prototype-dynamic)`;
|
|
266
|
+
if (!isDirectCallableBuiltinRead(graph, operation, member))
|
|
267
|
+
return `${access.receiver}(prototype-dynamic)`;
|
|
268
|
+
if (member === 'bind' && access.receiver === 'function-and-constructor')
|
|
269
|
+
return null;
|
|
270
|
+
return `${access.receiver}(${member === 'bind' ? 'bind-direct' : member})`;
|
|
271
|
+
};
|
|
272
|
+
/**
|
|
273
|
+
* A callable's ordinary own-property write.
|
|
274
|
+
*
|
|
275
|
+
* The callable carrier keeps its invocation ABI, while its stable function
|
|
276
|
+
* identity owns a separate dynamic-property table. Unlike the named reads
|
|
277
|
+
* above, assignment does not need a member-name refinement: every key either
|
|
278
|
+
* updates an existing writable own property or creates an ordinary expando in
|
|
279
|
+
* that one table.
|
|
280
|
+
*/
|
|
281
|
+
export const functionValueOwnPropertyWrite = (access) => {
|
|
282
|
+
return access.method === 'set' && !access.computed;
|
|
283
|
+
};
|
|
284
|
+
/**
|
|
285
|
+
* The Function names a native callable may NOT mistake for an ordinary own
|
|
286
|
+
* expando. Each has either a separate implementation (`call`, `apply`, direct
|
|
287
|
+
* `toString`) or no implementation at all (`bind`, legacy poison pills, and
|
|
288
|
+
* `constructor`); admitting one through a sidecar would turn an unsupported
|
|
289
|
+
* Function-prototype operation into a plausible `undefined` read.
|
|
290
|
+
*/
|
|
291
|
+
export const nonExpandoFunctionMemberNames = new Set(['call', 'apply', 'bind', 'toString', 'constructor', 'caller', 'arguments']);
|