@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,13 @@
|
|
|
1
|
+
import type ts from 'typescript';
|
|
2
|
+
import type { ValueFlowIndex } from './flow/model.js';
|
|
3
|
+
/** Reassignment consumes the same settled writes as type inference and call attribution. */
|
|
4
|
+
export interface ReassignedBindingCensus {
|
|
5
|
+
readonly isReassignedIn: (file: ts.SourceFile, symbol: ts.Symbol) => boolean;
|
|
6
|
+
readonly isReassignedAnywhere: (symbol: ts.Symbol) => boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Being mentioned in a literal is a read, not a possible destructuring write.
|
|
10
|
+
* The flow index already distinguishes assignment-pattern targets from their
|
|
11
|
+
* keys, defaults and ordinary literal values, including shorthand targets.
|
|
12
|
+
*/
|
|
13
|
+
export declare const createReassignedBindingCensus: (checker: ts.TypeChecker, flow: ValueFlowIndex) => ReassignedBindingCensus;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const reassignmentEdges = new Set([
|
|
2
|
+
'identifier-assignment',
|
|
3
|
+
'property-assignment',
|
|
4
|
+
'index-assignment',
|
|
5
|
+
'compound-assignment',
|
|
6
|
+
'logical-assignment',
|
|
7
|
+
'destructuring',
|
|
8
|
+
'destructuring-default',
|
|
9
|
+
'iteration-binding',
|
|
10
|
+
'delete'
|
|
11
|
+
]);
|
|
12
|
+
/**
|
|
13
|
+
* Being mentioned in a literal is a read, not a possible destructuring write.
|
|
14
|
+
* The flow index already distinguishes assignment-pattern targets from their
|
|
15
|
+
* keys, defaults and ordinary literal values, including shorthand targets.
|
|
16
|
+
*/
|
|
17
|
+
export const createReassignedBindingCensus = (checker, flow) => {
|
|
18
|
+
const byFile = new Map();
|
|
19
|
+
const all = new Set();
|
|
20
|
+
for (const write of flow.allWrites) {
|
|
21
|
+
if (write.slot !== 'whole' || !reassignmentEdges.has(write.edge))
|
|
22
|
+
continue;
|
|
23
|
+
const file = write.site.getSourceFile();
|
|
24
|
+
const written = byFile.get(file) ?? new Set();
|
|
25
|
+
byFile.set(file, written);
|
|
26
|
+
for (const symbol of [write.target.symbol, write.target.nameSymbol]) {
|
|
27
|
+
if (!symbol)
|
|
28
|
+
continue;
|
|
29
|
+
// Local and exported namespace symbols name the same mutable cell.
|
|
30
|
+
for (const identity of [symbol, checker.getExportSymbolOfSymbol(symbol)]) {
|
|
31
|
+
written.add(identity);
|
|
32
|
+
all.add(identity);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const has = (written, symbol) => written?.has(symbol) === true || written?.has(checker.getExportSymbolOfSymbol(symbol)) === true;
|
|
37
|
+
return {
|
|
38
|
+
isReassignedAnywhere: (symbol) => has(all, symbol),
|
|
39
|
+
isReassignedIn: (file, symbol) => has(byFile.get(file), symbol)
|
|
40
|
+
};
|
|
41
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import type { ValueFlowIndex } from './flow/model.js';
|
|
3
|
+
import type { ParameterBindingCensus } from './parameter-bindings.js';
|
|
4
|
+
/**
|
|
5
|
+
* Assignment-connected structural records share storage, including records
|
|
6
|
+
* reached through array/tuple views. Select a declared wider shape only when
|
|
7
|
+
* it retains every source field and the checker proves assignability. This
|
|
8
|
+
* happens before layout; copying array elements at the store breaks aliases.
|
|
9
|
+
* The settled value-flow inventory is the only source of connection edges.
|
|
10
|
+
*/
|
|
11
|
+
export declare const recordStorageFamilies: (checker: ts.TypeChecker, flow: ValueFlowIndex | undefined, parameters: ParameterBindingCensus) => ((type: ts.Type) => ts.Type);
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { inheritedAccessorOfAssignment } from '../inherited-accessor.js';
|
|
3
|
+
/**
|
|
4
|
+
* Assignment-connected structural records share storage, including records
|
|
5
|
+
* reached through array/tuple views. Select a declared wider shape only when
|
|
6
|
+
* it retains every source field and the checker proves assignability. This
|
|
7
|
+
* happens before layout; copying array elements at the store breaks aliases.
|
|
8
|
+
* The settled value-flow inventory is the only source of connection edges.
|
|
9
|
+
*/
|
|
10
|
+
export const recordStorageFamilies = (checker, flow, parameters) => {
|
|
11
|
+
const parents = new Map();
|
|
12
|
+
// Fresh and widened views of a literal share its symbol, although the
|
|
13
|
+
// checker gives them distinct Type objects. They still name one allocation.
|
|
14
|
+
const symbolParents = new Map();
|
|
15
|
+
const root = (type) => {
|
|
16
|
+
const symbol = type.getSymbol();
|
|
17
|
+
const parent = parents.get(type) ?? (symbol ? symbolParents.get(symbol) : undefined);
|
|
18
|
+
if (!parent || parent === type)
|
|
19
|
+
return type;
|
|
20
|
+
const result = root(parent);
|
|
21
|
+
parents.set(type, result);
|
|
22
|
+
return result;
|
|
23
|
+
};
|
|
24
|
+
const plain = (type) => {
|
|
25
|
+
if (type.aliasTypeArguments?.length || (type.objectFlags & ts.ObjectFlags.Reference) !== 0)
|
|
26
|
+
return false;
|
|
27
|
+
if (!(type.flags & ts.TypeFlags.Object) || type.isClassOrInterface() || checker.isArrayType(type) || checker.isTupleType(type))
|
|
28
|
+
return false;
|
|
29
|
+
if (type.getCallSignatures().length || type.getConstructSignatures().length || checker.getIndexInfosOfType(type).length)
|
|
30
|
+
return false;
|
|
31
|
+
const properties = type.getProperties();
|
|
32
|
+
return properties.length > 0 && properties.every((p) => (p.flags & ts.SymbolFlags.Property) !== 0);
|
|
33
|
+
};
|
|
34
|
+
const elements = (type) => checker.isTupleType(type)
|
|
35
|
+
? checker.getTypeArguments(type)
|
|
36
|
+
: checker.isArrayType(type)
|
|
37
|
+
? [checker.getIndexTypeOfType(type, ts.IndexKind.Number)]
|
|
38
|
+
: null;
|
|
39
|
+
const pairs = new Map();
|
|
40
|
+
const connect = (source, target, depth = 0) => {
|
|
41
|
+
source = root(source);
|
|
42
|
+
target = root(target);
|
|
43
|
+
if (source === target || depth > 8)
|
|
44
|
+
return;
|
|
45
|
+
const seen = pairs.get(source) ?? new Set();
|
|
46
|
+
if (seen.has(target))
|
|
47
|
+
return;
|
|
48
|
+
seen.add(target);
|
|
49
|
+
pairs.set(source, seen);
|
|
50
|
+
if (source.isUnion()) {
|
|
51
|
+
for (const arm of source.types)
|
|
52
|
+
connect(arm, target, depth + 1);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (target.isUnion()) {
|
|
56
|
+
const array = elements(source) !== null;
|
|
57
|
+
const matches = target.types.filter((arm) => (elements(arm) !== null) === array && checker.isTypeAssignableTo(source, arm));
|
|
58
|
+
if (matches.length === 1)
|
|
59
|
+
connect(source, matches[0], depth + 1);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const fromElements = elements(source), toElements = elements(target);
|
|
63
|
+
if (fromElements && toElements) {
|
|
64
|
+
for (const from of fromElements)
|
|
65
|
+
for (const to of toElements)
|
|
66
|
+
connect(from, to, depth + 1);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (!plain(source) || !plain(target))
|
|
70
|
+
return;
|
|
71
|
+
const retains = (from, to) => {
|
|
72
|
+
const keys = new Set(to.getProperties().map((p) => p.name));
|
|
73
|
+
return from.getProperties().every((p) => keys.has(p.name)) && checker.isTypeAssignableTo(from, to);
|
|
74
|
+
};
|
|
75
|
+
const adopt = (from, to) => {
|
|
76
|
+
parents.set(from, to);
|
|
77
|
+
const symbol = from.getSymbol();
|
|
78
|
+
if (symbol && symbol !== to.getSymbol())
|
|
79
|
+
symbolParents.set(symbol, to);
|
|
80
|
+
};
|
|
81
|
+
if (retains(source, target))
|
|
82
|
+
adopt(source, target);
|
|
83
|
+
// A return or narrowed read can describe a stricter view of an already
|
|
84
|
+
// wider physical holder. Keep that holder; do not drop its optional slots.
|
|
85
|
+
else if (retains(target, source))
|
|
86
|
+
adopt(target, source);
|
|
87
|
+
};
|
|
88
|
+
const typeAt = (node) => parameters.typeAt(node) ?? checker.getTypeAtLocation(node);
|
|
89
|
+
for (const write of flow?.allWrites ?? []) {
|
|
90
|
+
if (!write.value || write.slot !== 'whole')
|
|
91
|
+
continue;
|
|
92
|
+
const declaration = write.target.declaration;
|
|
93
|
+
let target = null;
|
|
94
|
+
if (write.edge === 'return' && declaration && ts.isFunctionLike(declaration)) {
|
|
95
|
+
const signature = checker.getSignatureFromDeclaration(declaration);
|
|
96
|
+
if (signature)
|
|
97
|
+
target = checker.getReturnTypeOfSignature(signature);
|
|
98
|
+
}
|
|
99
|
+
else if (write.naming) {
|
|
100
|
+
const symbol = write.target.nameSymbol ?? write.target.symbol;
|
|
101
|
+
const member = symbol ? (inheritedAccessorOfAssignment(checker, symbol) ?? symbol) : null;
|
|
102
|
+
const setter = member?.declarations?.find(ts.isSetAccessorDeclaration);
|
|
103
|
+
target = setter?.parameters[0] ? typeAt(setter.parameters[0]) : typeAt(write.naming);
|
|
104
|
+
}
|
|
105
|
+
if (target)
|
|
106
|
+
connect(typeAt(write.value), target);
|
|
107
|
+
}
|
|
108
|
+
return root;
|
|
109
|
+
};
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { type ParameterBindingCensus } from './parameter-bindings.js';
|
|
3
|
+
import { type CollectionBindingCensus } from './collection-bindings.js';
|
|
4
|
+
import { type ObjectBagCensus } from './object-bag-bindings.js';
|
|
5
|
+
import type { ValueFlowIndex } from './flow/model.js';
|
|
6
|
+
import { type ProgramReachability } from './reachability.js';
|
|
7
|
+
import { type CensusRefusal } from './census-refusal.js';
|
|
8
|
+
/**
|
|
9
|
+
* The type an unannotated JavaScript function actually RETURNS.
|
|
10
|
+
*
|
|
11
|
+
* The mirror of `parameter-bindings.ts`, one direction over. An unannotated
|
|
12
|
+
* parameter is typed `any` because TypeScript infers a parameter's type from
|
|
13
|
+
* its annotation alone; an unannotated function's return type is typed `any`
|
|
14
|
+
* for a related but distinct reason -- the checker DOES infer an unannotated
|
|
15
|
+
* return type from the function's own `return` statements, and usually
|
|
16
|
+
* succeeds, but for a function complicated enough (mutually recursive with
|
|
17
|
+
* its own return, too large a body, a shape the inferencer's heuristics give
|
|
18
|
+
* up on) it bails to `any` rather than reporting nothing. `properties.get(
|
|
19
|
+
* object)` in three.js's `WebGLProperties.js` returns `materialProperties`,
|
|
20
|
+
* an object literal the checker can type exactly -- the declared/inferred
|
|
21
|
+
* return of the enclosing factory is simply `any`, and every call to it reads
|
|
22
|
+
* as a dynamic value even though the object it hands back has a real shape.
|
|
23
|
+
*
|
|
24
|
+
* Every type this module produces comes out of the checker, read at a
|
|
25
|
+
* `return` statement's own expression or at one of its members -- never
|
|
26
|
+
* invented. What this module contributes is attributing that answer to the
|
|
27
|
+
* DECLARATION so a later call site can ask for it, and to a CALL EXPRESSION
|
|
28
|
+
* whose resolved signature names that declaration.
|
|
29
|
+
*
|
|
30
|
+
* ## Composing with the parameter census
|
|
31
|
+
*
|
|
32
|
+
* The two censuses answer questions in opposite directions over the same
|
|
33
|
+
* program -- what a PARAMETER holds, and what a RETURN produces -- and each
|
|
34
|
+
* can be the other's evidence: `provider(gl).getExtension(name)` inside a
|
|
35
|
+
* function whose own `gl` parameter this compiler bound from its callers
|
|
36
|
+
* needs that binding to type the receiver before this module can resolve
|
|
37
|
+
* what the call returns.
|
|
38
|
+
*
|
|
39
|
+
* The reverse direction -- a return type this module discovers feeding back
|
|
40
|
+
* into a parameter binding upstream -- is NOT re-run here. This module is a
|
|
41
|
+
* SINGLE ORDERED PASS: it is built from an already-settled
|
|
42
|
+
* `ParameterBindingCensus` (the caller runs `censusParameterBindings` to a
|
|
43
|
+
* fixpoint first, exactly as `structural.ts` already does) and never asks
|
|
44
|
+
* that census to reconsider anything. A true fixpoint over both censuses
|
|
45
|
+
* together was considered and rejected for this module: `parameter-bindings.
|
|
46
|
+
* ts` already runs its OWN fixpoint to convergence before this module ever
|
|
47
|
+
* sees it, and re-opening that fixpoint here would mean either mutating a
|
|
48
|
+
* module this compiler does not own or re-implementing its 12-round
|
|
49
|
+
* convergence loop wholesale duplicating ~700 lines this file would then have
|
|
50
|
+
* to keep in lockstep. What this single pass therefore cannot see: a
|
|
51
|
+
* parameter whose ONLY call-site evidence is the result of a function this
|
|
52
|
+
* module resolves stays exactly as unbound as it is today, because
|
|
53
|
+
* `censusParameterBindings` already finished before this module ran and does
|
|
54
|
+
* not get a second look. `parameter-bindings.ts`'s own `resolvedReturnTypeOf`
|
|
55
|
+
* covers the common case of that direction already -- it is a looser,
|
|
56
|
+
* un-refusal-counted version of this module's algorithm, reached from inside
|
|
57
|
+
* that fixpoint's own argument resolution -- so the gap this single pass
|
|
58
|
+
* leaves is narrower than it first appears: only the return shapes THIS
|
|
59
|
+
* module resolves and that looser one does not (a stricter cast rule, a
|
|
60
|
+
* disagreement this module refuses that the other one guessed past, explicit
|
|
61
|
+
* recursion detection) are invisible to a parameter bound upstream of it.
|
|
62
|
+
*
|
|
63
|
+
* ## What it refuses
|
|
64
|
+
*
|
|
65
|
+
* Every refusal below leaves the function's return exactly as the checker
|
|
66
|
+
* already reports it -- `any`, boxed -- because a wrong type is far worse
|
|
67
|
+
* than a boxed one:
|
|
68
|
+
*
|
|
69
|
+
* - a generator (`function*`): its `return` value is not what a caller
|
|
70
|
+
* observes at all, `Generator<T, TReturn, TNext>` is, and this module makes
|
|
71
|
+
* no claim about that protocol.
|
|
72
|
+
* - an `async` function: what a caller of an async function observes is
|
|
73
|
+
* whatever `await`ing its `Promise` produces, one more layer removed from
|
|
74
|
+
* any `return` statement's own type than this module reaches for.
|
|
75
|
+
* - a function with no `return` statement at all, or a bare `return;` among
|
|
76
|
+
* its returns: the first always evaluates to `undefined` and the second
|
|
77
|
+
* sometimes does, and `void`/`undefined` are exactly the unusable evidence
|
|
78
|
+
* `isUnusableEvidence` already refuses everywhere else in this compiler.
|
|
79
|
+
* - a function whose closing brace is reachable on some path that never hits
|
|
80
|
+
* a `return` -- `T | undefined`, unless the checker itself already reports
|
|
81
|
+
* that at some return's own expression, which it will not, so this is
|
|
82
|
+
* refused rather than guessed at from source shape.
|
|
83
|
+
* - a `return` whose own expression is an `as`/`<T>` cast: the program is
|
|
84
|
+
* making a statement, honoured exactly as `parameter-bindings.ts` honours a
|
|
85
|
+
* parameter declared `: any` -- taken at the checker's own face value for
|
|
86
|
+
* that expression, and not read PAST, because a cast is precisely where the
|
|
87
|
+
* checker's answer stops being derived from anything else.
|
|
88
|
+
* - a `return` that (directly, or through a chain this module can resolve)
|
|
89
|
+
* calls the function's own declaration, or a declaration already being
|
|
90
|
+
* resolved on the same call stack: two functions calling each other's
|
|
91
|
+
* return value to determine their own is exactly the circularity the
|
|
92
|
+
* checker itself bails to `any` over, and this module bails the same way
|
|
93
|
+
* rather than looping.
|
|
94
|
+
* - two or more `return`s whose types disagree, tested by the shared
|
|
95
|
+
* `widestOf` (`derived-expression-type.ts`) -- the identical join
|
|
96
|
+
* `parameter-bindings.ts` uses for two call sites: agreement is never
|
|
97
|
+
* spelling, and a union of this compiler's own making is a guess nobody
|
|
98
|
+
* wrote.
|
|
99
|
+
*/
|
|
100
|
+
export interface ReturnBindingCensus {
|
|
101
|
+
/**
|
|
102
|
+
* The type this node's evaluation actually produces, once an unannotated
|
|
103
|
+
* function's inferred `any` return is replaced by what its `return`
|
|
104
|
+
* statements produce -- or `null` when nothing here improves on the
|
|
105
|
+
* checker's own answer.
|
|
106
|
+
*
|
|
107
|
+
* Answers exactly two shapes of node: the function-like declaration itself
|
|
108
|
+
* (the same declaration a `resolvedSignature.declaration` points at), and a
|
|
109
|
+
* call or `new` expression whose resolved signature names one of those
|
|
110
|
+
* declarations. Anything else -- a bare identifier, a property access --
|
|
111
|
+
* is `null` here; a consumer that needs a settled type at one of those
|
|
112
|
+
* reaches it through the call or declaration this module already answers,
|
|
113
|
+
* the same way `parameter-bindings.ts`'s own internal resolver does.
|
|
114
|
+
*/
|
|
115
|
+
readonly typeAt: (node: ts.Node) => ts.Type | null;
|
|
116
|
+
/** The member list for a SYNTHESIZED disjoint-union carrier at this node -- see `ParameterBindingCensus.unionArmsAt`, the same rule asked of a function's `return`s instead of a parameter's argument set. */
|
|
117
|
+
readonly unionArmsAt: (node: ts.Node) => readonly ts.Type[] | null;
|
|
118
|
+
/**
|
|
119
|
+
* The narrowed return type of a declaration whose ANNOTATION this census
|
|
120
|
+
* read as an upper bound -- the return form of
|
|
121
|
+
* `ParameterBindingCensus.statedTypeAt`, needed for the identical reason its
|
|
122
|
+
* own doc gives: the checker's answer there is a perfectly good structure,
|
|
123
|
+
* so the guarded census fallback never fires.
|
|
124
|
+
*/
|
|
125
|
+
readonly statedTypeAt: (node: ts.Node) => ts.Type | null;
|
|
126
|
+
/** How many declarations this census bound a return type for, for measurement. */
|
|
127
|
+
readonly boundCount: number;
|
|
128
|
+
/** Why each declaration this census could not bind was refused, one entry per declaration and each carrying its own owner -- see `census-refusal.ts`. */
|
|
129
|
+
readonly refusals: readonly CensusRefusal[];
|
|
130
|
+
/** Why this particular declaration was not bound, for attributing one declaration rather than a total. */
|
|
131
|
+
readonly refusalOf: (declaration: ts.SignatureDeclaration) => string | null;
|
|
132
|
+
}
|
|
133
|
+
/** A census that binds nothing, for callers that state no program. */
|
|
134
|
+
export declare const emptyReturnBindingCensus: ReturnBindingCensus;
|
|
135
|
+
/**
|
|
136
|
+
* Whether a type is, or is built from, a type parameter -- a hole rather than one layout.
|
|
137
|
+
*
|
|
138
|
+
* BOTH argument lists, always -- never chosen by the presence of `target`. An
|
|
139
|
+
* instantiated ANONYMOUS type -- a mapped alias like `Record<K, V>` or tsc's
|
|
140
|
+
* `Mutable<T>` -- has a `target` (the open anonymous type it was instantiated
|
|
141
|
+
* from) and NO `typeArguments`, so picking one list by whether `target` is set
|
|
142
|
+
* read `Record<string, WithCount<T>[]>` as mentioning nothing: `target` is
|
|
143
|
+
* defined (the mapped type's own open shape), so the old code took
|
|
144
|
+
* `typeArguments` (empty for a mapped instantiation) and never looked at
|
|
145
|
+
* `aliasTypeArguments`, where `T` actually lives. `specialization.ts`'s
|
|
146
|
+
* `containsHole` documents the identical gotcha and already combines both
|
|
147
|
+
* lists; this is the same fix; see its comment for the tsc self-compile
|
|
148
|
+
* regression that shape caused there.
|
|
149
|
+
*
|
|
150
|
+
* The consequence here was narrower but still wrong at the source:
|
|
151
|
+
* `producers/invocations.ts`'s `parameterShapeOf` asks this to decide whether
|
|
152
|
+
* a parameter's own resolved-signature TYPE has already closed a hole its
|
|
153
|
+
* DECLARATION still states open. For a generic class's constructor parameter
|
|
154
|
+
* typed `Record<string, WithCount<T>[]>`, the declared side read as "mentions
|
|
155
|
+
* nothing" (this bug), so `substituted` was false and the OPEN, unsubstituted
|
|
156
|
+
* declared type was published as the parameter's carrier for every call --
|
|
157
|
+
* identical for `new Box<number>(...)` and `new Box<string>(...)` alike, since
|
|
158
|
+
* both read the one shared, uninstantiated parameter declaration. That is
|
|
159
|
+
* `test/runtime/generic-function-composite-filling-in-class-copy.ts`'s
|
|
160
|
+
* `array-object@<hash>` refusal: an unresolved composite masquerading as a
|
|
161
|
+
* structural type because nothing upstream believed it still had a hole.
|
|
162
|
+
*/
|
|
163
|
+
export declare const mentionsTypeParameter: (type: ts.Type, depth?: number) => boolean;
|
|
164
|
+
/**
|
|
165
|
+
* Whole-program census of what every unannotated function actually returns.
|
|
166
|
+
*
|
|
167
|
+
* `parameters` is the ALREADY-SETTLED output of `censusParameterBindings`
|
|
168
|
+
* (or `emptyParameterBindingCensus` when none is available) -- settled
|
|
169
|
+
* before this runs, never re-opened by it. See this module's header comment
|
|
170
|
+
* for why a single ordered pass was chosen over re-deriving a joint
|
|
171
|
+
* fixpoint, and what that choice cannot see.
|
|
172
|
+
*/
|
|
173
|
+
export declare const censusReturnBindings: (checker: ts.TypeChecker, files: readonly ts.SourceFile[], reachable: ProgramReachability, parameters: ParameterBindingCensus | undefined,
|
|
174
|
+
/**
|
|
175
|
+
* The array/collection census for THIS SAME round -- see `frontend.ts`'s
|
|
176
|
+
* `compose`, which now computes `collections` from the prior round's
|
|
177
|
+
* settled parameter view and hands it to every census in the CURRENT
|
|
178
|
+
* round, this one included, rather than only to `createStructuralMapper`
|
|
179
|
+
* after the whole fixpoint has already finished with it.
|
|
180
|
+
*
|
|
181
|
+
* Consulted at exactly one point below (the element-access arm of
|
|
182
|
+
* `resolveExpr`), as `collections.arrayElementForRead` -- the element type
|
|
183
|
+
* of a tracked accumulator array, asked at the RECEIVER expression rather
|
|
184
|
+
* than the whole indexed read. `findLightProbeGrid( volumes, object )`
|
|
185
|
+
* (`WebGLRenderer.js`) is the exemplar: `return volumes[ 0 ]` where
|
|
186
|
+
* `volumes` is an unannotated parameter whose real evidence is a
|
|
187
|
+
* module-scope `const lightProbeGridArray = []` filled by `.push` calls
|
|
188
|
+
* elsewhere -- exactly what `collection-bindings.ts`'s array census exists
|
|
189
|
+
* to type, and exactly the shape this module's own resolvers could not
|
|
190
|
+
* reach before, because that census ran only after this whole fixpoint
|
|
191
|
+
* settled. `emptyCollectionBindingCensus` (every caller before this
|
|
192
|
+
* change) makes this identical to the previous behaviour.
|
|
193
|
+
*/
|
|
194
|
+
collections: CollectionBindingCensus | undefined,
|
|
195
|
+
/**
|
|
196
|
+
* The whole-program value-flow index -- the ONE walk that states where every
|
|
197
|
+
* write is. This module's own two private write-discovery walks
|
|
198
|
+
* (`assignmentsBySymbol`, `containerSetsBySymbol`) read their edges from it
|
|
199
|
+
* rather than re-deriving them; see `flow/model.ts`. An edge-SOURCE swap: the
|
|
200
|
+
* policy below (which writes are evidence, how they join) is unchanged.
|
|
201
|
+
*/
|
|
202
|
+
flow: ValueFlowIndex,
|
|
203
|
+
/**
|
|
204
|
+
* The same-round property-bag census. Consulted at exactly one point below
|
|
205
|
+
* (the element/property-access arm of `resolveExpr`), as `slotTypeAt` --
|
|
206
|
+
* the ONE question about a bag this module can consume, since a slot's own
|
|
207
|
+
* type is a plain `ts.Type` even though the bag's shape is not. See that
|
|
208
|
+
* accessor's own header for the refusal it removes.
|
|
209
|
+
*/
|
|
210
|
+
bags?: ObjectBagCensus) => ReturnBindingCensus;
|
|
211
|
+
/**
|
|
212
|
+
* A `ParameterBindingCensus`-shaped view that answers from BOTH censuses:
|
|
213
|
+
* `parameters`'s own answer first (a parameter binding is the more direct
|
|
214
|
+
* fact), the return census otherwise.
|
|
215
|
+
*
|
|
216
|
+
* This is the seam meant for `frontend.ts`, which is the one place that
|
|
217
|
+
* builds `ParameterBindingCensus` and hands it to `createStructuralMapper`
|
|
218
|
+
* (`structural.ts`) -- neither of which this module owns or edits. Composed
|
|
219
|
+
* this way, `structural-layout-type.ts`'s existing `parameters.typeAt(node)`
|
|
220
|
+
* fallback (already-landed code, untouched by this module) starts answering
|
|
221
|
+
* for a call site this census resolves too, with NO edit needed to either
|
|
222
|
+
* file: swap `frontend.ts`'s
|
|
223
|
+
*
|
|
224
|
+
* const parameters = censusParameterBindings(compiled.checker, compiled.sourceFiles)
|
|
225
|
+
*
|
|
226
|
+
* for
|
|
227
|
+
*
|
|
228
|
+
* const parameters = withReturnBindings(
|
|
229
|
+
* compiled.checker,
|
|
230
|
+
* compiled.sourceFiles,
|
|
231
|
+
* censusParameterBindings(compiled.checker, compiled.sourceFiles)
|
|
232
|
+
* )
|
|
233
|
+
*
|
|
234
|
+
* and the rest of the pipeline is unchanged. Exported so that edit, when
|
|
235
|
+
* made by whoever owns `frontend.ts`, is one line.
|
|
236
|
+
*/
|
|
237
|
+
/**
|
|
238
|
+
* The composed view AND the census inside it, for the one caller that needs
|
|
239
|
+
* both halves to be the SAME instance.
|
|
240
|
+
*
|
|
241
|
+
* `withReturnBindings` builds a census and hides it, which is right for every
|
|
242
|
+
* consumer that only ever asks a node. It is wrong for a consumer that has to
|
|
243
|
+
* agree with one: `producers/invocations.ts` reads a call's RESULT through the
|
|
244
|
+
* composed view (`context.types.typeAt(node)`) and needs this census's answer
|
|
245
|
+
* for the same call's CALLEE, and building a second census to ask would
|
|
246
|
+
* reintroduce exactly the two-authority split it is there to close -- two
|
|
247
|
+
* fixpoints over the same program can settle differently, and the one that
|
|
248
|
+
* answers the result would not be the one that answers the signature.
|
|
249
|
+
*
|
|
250
|
+
* So the instance is handed out rather than reconstructed. `withReturnBindings`
|
|
251
|
+
* stays the seam for everyone else and is now this function's `view`.
|
|
252
|
+
*/
|
|
253
|
+
export declare const composeReturnBindings: (checker: ts.TypeChecker, files: readonly ts.SourceFile[], reachable: ProgramReachability, parameters: ParameterBindingCensus, collections: CollectionBindingCensus | undefined,
|
|
254
|
+
/** The whole-program value-flow index -- see `censusReturnBindings`'s own parameter. */
|
|
255
|
+
flow: ValueFlowIndex,
|
|
256
|
+
/** The same-round property-bag census -- see `censusReturnBindings`'s own parameter. */
|
|
257
|
+
bags?: ObjectBagCensus) => {
|
|
258
|
+
readonly view: ParameterBindingCensus;
|
|
259
|
+
readonly returns: ReturnBindingCensus;
|
|
260
|
+
};
|