@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,118 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import type { FlowTarget, ValueFlowIndex } from './model.js';
|
|
3
|
+
import type { ProgramReachability } from '../reachability.js';
|
|
4
|
+
/** Export-list aliases do not appear as expression references in value flow.
|
|
5
|
+
* Ask the module's resolved export identities before claiming local closure. */
|
|
6
|
+
export declare const isModuleExportedDeclaration: (checker: ts.TypeChecker, declaration: ts.Declaration, symbol: ts.Symbol | null) => boolean;
|
|
7
|
+
/** An immutable module-namespace selection, authenticated by the import
|
|
8
|
+
* binding and the module's export symbol. A mutable object with the same
|
|
9
|
+
* checker shape is deliberately not a namespace authority. */
|
|
10
|
+
export declare const namespaceMemberDeclarationOf: (checker: ts.TypeChecker, expression: ts.Expression) => ts.Declaration | null;
|
|
11
|
+
/** Parentheses and `!` name the same storage the expression inside them does. */
|
|
12
|
+
export declare const unwrapNaming: (expression: ts.Expression) => ts.Expression;
|
|
13
|
+
/**
|
|
14
|
+
* The cell `expression` names, or `null` when it names none this layer can
|
|
15
|
+
* resolve. A plain identifier, a property access, and a bracket access with a
|
|
16
|
+
* LITERAL key (a named member spelled the other way) are the three shapes;
|
|
17
|
+
* anything else -- a call result, a computed index, a literal -- names no
|
|
18
|
+
* persistent storage location and is deliberately not guessed at.
|
|
19
|
+
*/
|
|
20
|
+
export declare const flowTargetOf: (checker: ts.TypeChecker, expression: ts.Expression) => FlowTarget | null;
|
|
21
|
+
/**
|
|
22
|
+
* The function-like declaration whose return cell a `return` statement fills
|
|
23
|
+
* -- the nearest enclosing one, stopping at the boundary every census that
|
|
24
|
+
* reads returns already stops at (a class body owns no returns, and a nested
|
|
25
|
+
* function owns its own).
|
|
26
|
+
*/
|
|
27
|
+
export declare const returnOwnerOf: (statement: ts.ReturnStatement) => ts.SignatureDeclaration | null;
|
|
28
|
+
/**
|
|
29
|
+
* The callee declaration a call reaches, when the checker resolves it to one
|
|
30
|
+
* -- the same resolution `parameter-bindings.ts` records as
|
|
31
|
+
* `checkerAttribution`. `null` for an unresolvable or ambient callee, whose
|
|
32
|
+
* parameter slots are a host-boundary question, not this layer's.
|
|
33
|
+
*/
|
|
34
|
+
export declare const calleeDeclarationOf: (checker: ts.TypeChecker, call: ts.CallExpression | ts.NewExpression) => ts.SignatureDeclaration | null;
|
|
35
|
+
/** The source callable named by a value, independent of invocation syntax. */
|
|
36
|
+
export declare const callableDeclarationOfExpression: (checker: ts.TypeChecker, callee: ts.Expression) => ts.SignatureDeclaration | null;
|
|
37
|
+
/**
|
|
38
|
+
* An imported name and the function it names are ONE callable, so a call
|
|
39
|
+
* through the import must reach the same parameter slots a call in the
|
|
40
|
+
* declaring module does.
|
|
41
|
+
*
|
|
42
|
+
* Without this, `checker.getSymbolAtLocation` at a cross-module call site
|
|
43
|
+
* answers with the local ALIAS symbol, whose only declaration is the
|
|
44
|
+
* `ImportSpecifier` -- not a callable, so the callee resolved to nothing and
|
|
45
|
+
* every argument written at that call reached no slot. Measured on the three.js app:
|
|
46
|
+
* 32 unannotated parameters were refused for want of exactly these edges,
|
|
47
|
+
* with the argument types sitting right there at the call. `getAliasedSymbol`
|
|
48
|
+
* THROWS for a non-alias rather than answering, so the flag is tested first.
|
|
49
|
+
*/
|
|
50
|
+
declare const resolveAlias: (checker: ts.TypeChecker, symbol: ts.Symbol | undefined) => ts.Symbol | undefined;
|
|
51
|
+
export { resolveAlias as resolveFlowSymbolAlias };
|
|
52
|
+
/** The syntactic function forms whose parameters are real, named slots. */
|
|
53
|
+
export declare const isRealCallableDeclaration: (node: ts.Node) => node is ts.SignatureDeclaration;
|
|
54
|
+
/**
|
|
55
|
+
* Whether a reference to a callable's name stands in a TYPE position, where
|
|
56
|
+
* nothing can call or construct through it.
|
|
57
|
+
*
|
|
58
|
+
* A class is named by its constructor's own name, so every `x: Foo`
|
|
59
|
+
* annotation is a reference to the same symbol `new Foo(...)` reaches --
|
|
60
|
+
* and the escape test, which asks "does anything hold this function as a
|
|
61
|
+
* VALUE", counted those annotations as holders. hono's `HonoRequest` is the
|
|
62
|
+
* case: `#req: HonoRequest<P, I['out']> | undefined` made its constructor's
|
|
63
|
+
* parameters unbindable, which left `matchResult: Result<[unknown,
|
|
64
|
+
* RouterRoute]>` at its annotation while the only caller passes a
|
|
65
|
+
* `Result<[H, RouterRoute]>` -- two carriers for one cell, reconcilable
|
|
66
|
+
* only by rebuilding the arrays inside it.
|
|
67
|
+
*
|
|
68
|
+
* A type annotation constructs nothing. Anything that does needs a VALUE
|
|
69
|
+
* reference, and every one of those is still counted here -- an `extends`
|
|
70
|
+
* clause included, whose reference is an expression and not a type node.
|
|
71
|
+
*/
|
|
72
|
+
export declare const isTypePositionReference: (reference: ts.Node) => boolean;
|
|
73
|
+
/**
|
|
74
|
+
* The application's complete module set, as the CALLER stated it by compiling
|
|
75
|
+
* a module graph (`ProgramInput.statedModuleSet`). A project's `include` glob
|
|
76
|
+
* says what a typechecker may look at, not what the application is, so
|
|
77
|
+
* without this statement no export can be claimed unimported.
|
|
78
|
+
*/
|
|
79
|
+
export interface StatedModuleSet {
|
|
80
|
+
/** Every implementation module of the program. */
|
|
81
|
+
readonly files: readonly ts.SourceFile[];
|
|
82
|
+
/** Modules evaluated from outside the program; their exports are its public surface. */
|
|
83
|
+
readonly entries: readonly ts.SourceFile[];
|
|
84
|
+
/**
|
|
85
|
+
* What of `files` the program actually runs. `files` is every module the
|
|
86
|
+
* checker loaded; a mention outside this reads nothing. Absent, every
|
|
87
|
+
* statement counts.
|
|
88
|
+
*/
|
|
89
|
+
readonly reachable?: ProgramReachability;
|
|
90
|
+
}
|
|
91
|
+
export declare const attachStatedModuleSet: (flow: ValueFlowIndex, modules: StatedModuleSet) => void;
|
|
92
|
+
/** The module set the caller stated for this flow round, or null when none was. */
|
|
93
|
+
export declare const statedModuleSetOf: (flow: ValueFlowIndex) => StatedModuleSet | null;
|
|
94
|
+
/** Caller-stated complete classic-script lexical realm, independent of ESM exports. */
|
|
95
|
+
export interface ClosedScriptScope {
|
|
96
|
+
readonly files: ReadonlySet<ts.SourceFile>;
|
|
97
|
+
}
|
|
98
|
+
export declare const attachClosedScriptScope: (flow: ValueFlowIndex, scope: ClosedScriptScope) => void;
|
|
99
|
+
export declare const closedScriptScopeOf: (flow: ValueFlowIndex) => ClosedScriptScope | null;
|
|
100
|
+
/**
|
|
101
|
+
* Whether NOTHING in the program imports this export.
|
|
102
|
+
*
|
|
103
|
+
* `export { WebGLRenderLists, WebGLRenderList }` closes three's
|
|
104
|
+
* `WebGLRenderLists.js`, but only `WebGLRenderer.js` imports anything from
|
|
105
|
+
* it, and only `WebGLRenderLists`. An export list is not an expression, so
|
|
106
|
+
* value flow records no use for it, and `isModuleExportedDeclaration` has to
|
|
107
|
+
* treat every exported declaration as published to unknown code. Inside a
|
|
108
|
+
* stated module set that is too coarse: an export no import, re-export,
|
|
109
|
+
* namespace, dynamic `import()`/`require`, or entry surface reaches is
|
|
110
|
+
* unreachable from any code at all.
|
|
111
|
+
*
|
|
112
|
+
* True only when the module set is stated, the file is an ES module of that
|
|
113
|
+
* set and not an entry, and every module reference in the program resolved;
|
|
114
|
+
* anything else answers false.
|
|
115
|
+
*/
|
|
116
|
+
export declare const exportIsUnimported: (checker: ts.TypeChecker, flow: ValueFlowIndex, specifierOrDeclaration: ts.ExportSpecifier | ts.Declaration) => boolean;
|
|
117
|
+
/** Executable argument positions exclude the erased TypeScript receiver declaration. */
|
|
118
|
+
export declare const runtimeParametersOf: (declaration: ts.Node) => readonly ts.ParameterDeclaration[];
|
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { literalMemberNameOf } from '../derived-expression-type.js';
|
|
3
|
+
/**
|
|
4
|
+
* Resolving an expression to the storage cell it NAMES -- the one place that
|
|
5
|
+
* question is answered.
|
|
6
|
+
*
|
|
7
|
+
* Before this, each census carried its own copy: `collection-bindings.ts`'s
|
|
8
|
+
* `ownerDeclOfExpr`, `object-bag-bindings.ts`'s same-named twin,
|
|
9
|
+
* `field-bindings.ts`'s inline `checker.getSymbolAtLocation(node.left)`,
|
|
10
|
+
* `local-bindings.ts`'s `declarationOf`. They disagreed in ways nobody
|
|
11
|
+
* intended: two of them read a property access's `.name`, one read the access
|
|
12
|
+
* itself, and those are not the same symbol (see `FlowTarget`).
|
|
13
|
+
*/
|
|
14
|
+
/** The stable, reference-independent key: a symbol's first declaration node. */
|
|
15
|
+
const declarationOf = (symbol) => symbol?.getDeclarations()?.[0] ?? null;
|
|
16
|
+
/** Export-list aliases do not appear as expression references in value flow.
|
|
17
|
+
* Ask the module's resolved export identities before claiming local closure. */
|
|
18
|
+
export const isModuleExportedDeclaration = (checker, declaration, symbol) => {
|
|
19
|
+
const module = checker.getSymbolAtLocation(declaration.getSourceFile());
|
|
20
|
+
if (!module)
|
|
21
|
+
return false;
|
|
22
|
+
return checker.getExportsOfModule(module).some((exported) => {
|
|
23
|
+
const target = (exported.flags & ts.SymbolFlags.Alias) !== 0 ? checker.getAliasedSymbol(exported) : exported;
|
|
24
|
+
return target === symbol || (target.declarations?.includes(declaration) ?? false);
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
/** An immutable module-namespace selection, authenticated by the import
|
|
28
|
+
* binding and the module's export symbol. A mutable object with the same
|
|
29
|
+
* checker shape is deliberately not a namespace authority. */
|
|
30
|
+
export const namespaceMemberDeclarationOf = (checker, expression) => {
|
|
31
|
+
const selected = unwrapNaming(expression);
|
|
32
|
+
if (!ts.isPropertyAccessExpression(selected) && !ts.isElementAccessExpression(selected))
|
|
33
|
+
return null;
|
|
34
|
+
const receiver = unwrapNaming(selected.expression);
|
|
35
|
+
if (!ts.isIdentifier(receiver))
|
|
36
|
+
return null;
|
|
37
|
+
const binding = checker.getSymbolAtLocation(receiver);
|
|
38
|
+
if (!binding?.declarations?.some(ts.isNamespaceImport))
|
|
39
|
+
return null;
|
|
40
|
+
const module = resolveAlias(checker, binding);
|
|
41
|
+
if (!module)
|
|
42
|
+
return null;
|
|
43
|
+
const key = ts.isPropertyAccessExpression(selected)
|
|
44
|
+
? selected.name.text
|
|
45
|
+
: ts.isStringLiteral(selected.argumentExpression)
|
|
46
|
+
? selected.argumentExpression.text
|
|
47
|
+
: null;
|
|
48
|
+
if (key === null)
|
|
49
|
+
return null;
|
|
50
|
+
const exported = checker.getExportsOfModule(module).find((symbol) => symbol.name === key);
|
|
51
|
+
const named = checker.getPropertyOfType(checker.getTypeAtLocation(receiver), key);
|
|
52
|
+
const target = exported ? resolveAlias(checker, exported) : null;
|
|
53
|
+
if (!target || !named || resolveAlias(checker, named) !== target)
|
|
54
|
+
return null;
|
|
55
|
+
return target.valueDeclaration ?? target.declarations?.[0] ?? null;
|
|
56
|
+
};
|
|
57
|
+
/** Parentheses and `!` name the same storage the expression inside them does. */
|
|
58
|
+
export const unwrapNaming = (expression) => {
|
|
59
|
+
let current = expression;
|
|
60
|
+
while (ts.isParenthesizedExpression(current) || ts.isNonNullExpression(current))
|
|
61
|
+
current = current.expression;
|
|
62
|
+
return current;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* The cell `expression` names, or `null` when it names none this layer can
|
|
66
|
+
* resolve. A plain identifier, a property access, and a bracket access with a
|
|
67
|
+
* LITERAL key (a named member spelled the other way) are the three shapes;
|
|
68
|
+
* anything else -- a call result, a computed index, a literal -- names no
|
|
69
|
+
* persistent storage location and is deliberately not guessed at.
|
|
70
|
+
*/
|
|
71
|
+
export const flowTargetOf = (checker, expression) => {
|
|
72
|
+
const current = unwrapNaming(expression);
|
|
73
|
+
if (ts.isIdentifier(current)) {
|
|
74
|
+
// `{ a }` -- as a shorthand object-literal VALUE (`{ val: { a } }`) or as
|
|
75
|
+
// a shorthand assignment-pattern TARGET (`({ a } = source)`) -- names the
|
|
76
|
+
// cell `a` reads or writes, not a property of the literal. Ordinary
|
|
77
|
+
// `getSymbolAtLocation` on the shorthand's own name resolves a distinct,
|
|
78
|
+
// synthetic PROPERTY symbol whose declaration happens to print the same
|
|
79
|
+
// text but is not `===` the variable's own symbol object -- confirmed
|
|
80
|
+
// empirically: `var a; ({ a } = ...)` gives two different `ts.Symbol`s
|
|
81
|
+
// for `a`'s `VariableDeclaration` name and the shorthand's name, even
|
|
82
|
+
// though `checker.getShorthandAssignmentValueSymbol` (the API TypeScript
|
|
83
|
+
// ships for exactly this) returns the variable's own symbol for both.
|
|
84
|
+
// Without this, a destructuring-assignment write to a shorthand target
|
|
85
|
+
// is filed under a symbol `writesToSymbol` never sees queried, and the
|
|
86
|
+
// cell looks unwritten to every consumer of this index.
|
|
87
|
+
if (ts.isShorthandPropertyAssignment(current.parent) && current.parent.name === current) {
|
|
88
|
+
const symbol = checker.getShorthandAssignmentValueSymbol(current.parent) ?? null;
|
|
89
|
+
if (!symbol)
|
|
90
|
+
return null;
|
|
91
|
+
return { symbol, nameSymbol: symbol, declaration: declarationOf(symbol) };
|
|
92
|
+
}
|
|
93
|
+
const symbol = checker.getSymbolAtLocation(current) ?? null;
|
|
94
|
+
if (!symbol)
|
|
95
|
+
return null;
|
|
96
|
+
return { symbol, nameSymbol: symbol, declaration: declarationOf(symbol) };
|
|
97
|
+
}
|
|
98
|
+
if (ts.isPropertyAccessExpression(current)) {
|
|
99
|
+
const symbol = checker.getSymbolAtLocation(current) ?? null;
|
|
100
|
+
const nameSymbol = checker.getSymbolAtLocation(current.name) ?? null;
|
|
101
|
+
if (!symbol && !nameSymbol)
|
|
102
|
+
return null;
|
|
103
|
+
return { symbol, nameSymbol, declaration: declarationOf(nameSymbol ?? symbol) };
|
|
104
|
+
}
|
|
105
|
+
if (ts.isElementAccessExpression(current)) {
|
|
106
|
+
const key = literalMemberNameOf(current);
|
|
107
|
+
if (key === null)
|
|
108
|
+
return null;
|
|
109
|
+
// The checker can leave the whole bracket expression symbol-less while
|
|
110
|
+
// resolving its literal member on the receiver. Keep that write attached
|
|
111
|
+
// to the same cell as `object.member`, including namespace exports.
|
|
112
|
+
const symbol = checker.getSymbolAtLocation(current) ?? checker.getPropertyOfType(checker.getTypeAtLocation(current.expression), key) ?? null;
|
|
113
|
+
if (!symbol)
|
|
114
|
+
return null;
|
|
115
|
+
return { symbol, nameSymbol: symbol, declaration: declarationOf(symbol) };
|
|
116
|
+
}
|
|
117
|
+
return null;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* The function-like declaration whose return cell a `return` statement fills
|
|
121
|
+
* -- the nearest enclosing one, stopping at the boundary every census that
|
|
122
|
+
* reads returns already stops at (a class body owns no returns, and a nested
|
|
123
|
+
* function owns its own).
|
|
124
|
+
*/
|
|
125
|
+
export const returnOwnerOf = (statement) => {
|
|
126
|
+
for (let current = statement.parent; current; current = current.parent) {
|
|
127
|
+
if (ts.isClassDeclaration(current) || ts.isClassExpression(current) || ts.isSourceFile(current))
|
|
128
|
+
return null;
|
|
129
|
+
if (ts.isFunctionLike(current))
|
|
130
|
+
return current;
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* The callee declaration a call reaches, when the checker resolves it to one
|
|
136
|
+
* -- the same resolution `parameter-bindings.ts` records as
|
|
137
|
+
* `checkerAttribution`. `null` for an unresolvable or ambient callee, whose
|
|
138
|
+
* parameter slots are a host-boundary question, not this layer's.
|
|
139
|
+
*/
|
|
140
|
+
export const calleeDeclarationOf = (checker, call) => {
|
|
141
|
+
return callableDeclarationOfExpression(checker, call.expression);
|
|
142
|
+
};
|
|
143
|
+
/** The source callable named by a value, independent of invocation syntax. */
|
|
144
|
+
export const callableDeclarationOfExpression = (checker, callee) => {
|
|
145
|
+
const name = ts.isPropertyAccessExpression(callee) ? callee.name : callee;
|
|
146
|
+
const symbol = resolveAlias(checker, checker.getSymbolAtLocation(name));
|
|
147
|
+
const declaration = symbol?.valueDeclaration ?? symbol?.getDeclarations()?.[0];
|
|
148
|
+
if (!declaration)
|
|
149
|
+
return null;
|
|
150
|
+
const callable = callableValueOf(declaration);
|
|
151
|
+
// ⛔ `ts.isFunctionLike` is not the test. It admits a `JSDocFunctionType`
|
|
152
|
+
// (`@param {function(string): void}`) and a `JSDocSignature`, whose
|
|
153
|
+
// "parameters" are `ParameterDeclaration` nodes with NO `name` at all --
|
|
154
|
+
// a shape `ts.isIdentifier` crashes on rather than rejecting, and a slot
|
|
155
|
+
// with no name is no slot. Measured: three's `FileLoader.js` carries one.
|
|
156
|
+
if (!callable)
|
|
157
|
+
return null;
|
|
158
|
+
return callable.getSourceFile().isDeclarationFile ? null : callable;
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* An imported name and the function it names are ONE callable, so a call
|
|
162
|
+
* through the import must reach the same parameter slots a call in the
|
|
163
|
+
* declaring module does.
|
|
164
|
+
*
|
|
165
|
+
* Without this, `checker.getSymbolAtLocation` at a cross-module call site
|
|
166
|
+
* answers with the local ALIAS symbol, whose only declaration is the
|
|
167
|
+
* `ImportSpecifier` -- not a callable, so the callee resolved to nothing and
|
|
168
|
+
* every argument written at that call reached no slot. Measured on the three.js app:
|
|
169
|
+
* 32 unannotated parameters were refused for want of exactly these edges,
|
|
170
|
+
* with the argument types sitting right there at the call. `getAliasedSymbol`
|
|
171
|
+
* THROWS for a non-alias rather than answering, so the flag is tested first.
|
|
172
|
+
*/
|
|
173
|
+
const resolveAlias = (checker, symbol) => {
|
|
174
|
+
let current = symbol;
|
|
175
|
+
for (let depth = 0; current && (current.flags & ts.SymbolFlags.Alias) !== 0 && depth < 8; depth += 1) {
|
|
176
|
+
const aliased = checker.getAliasedSymbol(current);
|
|
177
|
+
if (!aliased || aliased === current)
|
|
178
|
+
return current;
|
|
179
|
+
current = aliased;
|
|
180
|
+
}
|
|
181
|
+
return current;
|
|
182
|
+
};
|
|
183
|
+
export { resolveAlias as resolveFlowSymbolAlias };
|
|
184
|
+
/**
|
|
185
|
+
* The callable a declaration node's VALUE is, following the one hop that
|
|
186
|
+
* separates a name from the function it holds.
|
|
187
|
+
*
|
|
188
|
+
* `function f() {}` declares the callable directly, but `const f = ( x ) =>
|
|
189
|
+
* ...`, `{ f: function ( x ) { ... } }` and `class C { f = ( x ) => ... }`
|
|
190
|
+
* declare a CELL whose initializer is the callable -- and the cell's own
|
|
191
|
+
* declaration node is not a signature, so a resolution stopping there reports
|
|
192
|
+
* no callee at all. Measured on the three.js app: 14 unannotated parameters refused
|
|
193
|
+
* purely because their callback was passed to a function spelled the second
|
|
194
|
+
* way. `nameOfCallable` (`derived-expression-type.ts`) already draws the same
|
|
195
|
+
* equivalence from the other direction -- it names a function expression by
|
|
196
|
+
* the variable or property that holds it -- so this is that fact asked
|
|
197
|
+
* forwards rather than a new one.
|
|
198
|
+
*
|
|
199
|
+
* Only an initializer written IN PLACE qualifies. A cell filled from
|
|
200
|
+
* elsewhere (`const f = pick( ... )`, a later assignment) can hold different
|
|
201
|
+
* callables at different times, and picking one would be a guess; those are
|
|
202
|
+
* the transitive question `callable-reach.ts` answers with a closure proof,
|
|
203
|
+
* not something to settle here.
|
|
204
|
+
*/
|
|
205
|
+
const callableValueOf = (declaration) => {
|
|
206
|
+
if (isRealCallableDeclaration(declaration))
|
|
207
|
+
return declaration;
|
|
208
|
+
const initializer = ts.isVariableDeclaration(declaration) || ts.isPropertyDeclaration(declaration) || ts.isPropertyAssignment(declaration)
|
|
209
|
+
? declaration.initializer
|
|
210
|
+
: undefined;
|
|
211
|
+
if (initializer && (ts.isFunctionExpression(initializer) || ts.isArrowFunction(initializer)))
|
|
212
|
+
return initializer;
|
|
213
|
+
return null;
|
|
214
|
+
};
|
|
215
|
+
/** The syntactic function forms whose parameters are real, named slots. */
|
|
216
|
+
export const isRealCallableDeclaration = (node) => ts.isFunctionDeclaration(node) ||
|
|
217
|
+
ts.isFunctionExpression(node) ||
|
|
218
|
+
ts.isArrowFunction(node) ||
|
|
219
|
+
ts.isMethodDeclaration(node) ||
|
|
220
|
+
ts.isConstructorDeclaration(node) ||
|
|
221
|
+
ts.isGetAccessorDeclaration(node) ||
|
|
222
|
+
ts.isSetAccessorDeclaration(node) ||
|
|
223
|
+
ts.isFunctionTypeNode(node) ||
|
|
224
|
+
ts.isConstructorTypeNode(node) ||
|
|
225
|
+
ts.isMethodSignature(node) ||
|
|
226
|
+
ts.isConstructSignatureDeclaration(node) ||
|
|
227
|
+
ts.isCallSignatureDeclaration(node);
|
|
228
|
+
/**
|
|
229
|
+
* Whether a reference to a callable's name stands in a TYPE position, where
|
|
230
|
+
* nothing can call or construct through it.
|
|
231
|
+
*
|
|
232
|
+
* A class is named by its constructor's own name, so every `x: Foo`
|
|
233
|
+
* annotation is a reference to the same symbol `new Foo(...)` reaches --
|
|
234
|
+
* and the escape test, which asks "does anything hold this function as a
|
|
235
|
+
* VALUE", counted those annotations as holders. hono's `HonoRequest` is the
|
|
236
|
+
* case: `#req: HonoRequest<P, I['out']> | undefined` made its constructor's
|
|
237
|
+
* parameters unbindable, which left `matchResult: Result<[unknown,
|
|
238
|
+
* RouterRoute]>` at its annotation while the only caller passes a
|
|
239
|
+
* `Result<[H, RouterRoute]>` -- two carriers for one cell, reconcilable
|
|
240
|
+
* only by rebuilding the arrays inside it.
|
|
241
|
+
*
|
|
242
|
+
* A type annotation constructs nothing. Anything that does needs a VALUE
|
|
243
|
+
* reference, and every one of those is still counted here -- an `extends`
|
|
244
|
+
* clause included, whose reference is an expression and not a type node.
|
|
245
|
+
*/
|
|
246
|
+
export const isTypePositionReference = (reference) => {
|
|
247
|
+
const parent = reference.parent;
|
|
248
|
+
if (!parent)
|
|
249
|
+
return false;
|
|
250
|
+
if (ts.isTypeReferenceNode(parent))
|
|
251
|
+
return parent.typeName === reference;
|
|
252
|
+
if (ts.isQualifiedName(parent))
|
|
253
|
+
return isTypePositionReference(parent);
|
|
254
|
+
return false;
|
|
255
|
+
};
|
|
256
|
+
const statedModuleSets = new WeakMap();
|
|
257
|
+
export const attachStatedModuleSet = (flow, modules) => {
|
|
258
|
+
statedModuleSets.set(flow, modules);
|
|
259
|
+
};
|
|
260
|
+
/** The module set the caller stated for this flow round, or null when none was. */
|
|
261
|
+
export const statedModuleSetOf = (flow) => statedModuleSets.get(flow) ?? null;
|
|
262
|
+
const closedScriptScopes = new WeakMap();
|
|
263
|
+
export const attachClosedScriptScope = (flow, scope) => {
|
|
264
|
+
const known = closedScriptScopes.get(flow);
|
|
265
|
+
if (known !== undefined && known !== scope)
|
|
266
|
+
throw new Error('A value-flow round cannot change its script lexical boundary');
|
|
267
|
+
closedScriptScopes.set(flow, scope);
|
|
268
|
+
};
|
|
269
|
+
export const closedScriptScopeOf = (flow) => closedScriptScopes.get(flow) ?? null;
|
|
270
|
+
const exposures = new WeakMap();
|
|
271
|
+
const lastSegment = (path) => path.replace(/^.*[\\/]/, '').replace(/\.[^.]*$/, '');
|
|
272
|
+
const DYNAMIC_MODULE_REFERENCE = /\bimport\s*\(|\brequire\s*\(/;
|
|
273
|
+
/** One pass over every module's import surface, shared by every flow round
|
|
274
|
+
* that carries the same stated module set. */
|
|
275
|
+
const moduleExposureOf = (checker, modules) => {
|
|
276
|
+
const known = exposures.get(modules);
|
|
277
|
+
if (known)
|
|
278
|
+
return known;
|
|
279
|
+
const exposed = new Set();
|
|
280
|
+
const unresolved = new Set();
|
|
281
|
+
let opaque = false;
|
|
282
|
+
const expose = (symbol) => {
|
|
283
|
+
const target = resolveAlias(checker, symbol);
|
|
284
|
+
// An alias chain that does not bottom out within the depth bound is not
|
|
285
|
+
// an answer; nothing can be claimed unimported against it.
|
|
286
|
+
if (!target || (target.flags & ts.SymbolFlags.Alias) !== 0)
|
|
287
|
+
opaque = true;
|
|
288
|
+
else
|
|
289
|
+
exposed.add(target);
|
|
290
|
+
};
|
|
291
|
+
const exposeModule = (module) => {
|
|
292
|
+
if (!module)
|
|
293
|
+
return;
|
|
294
|
+
for (const exported of checker.getExportsOfModule(module))
|
|
295
|
+
expose(exported);
|
|
296
|
+
};
|
|
297
|
+
// A namespace import, `export *`, `import()` or `require` exposes the whole
|
|
298
|
+
// module object. A specifier that resolves to nothing is remembered by its
|
|
299
|
+
// last segment, and an unwritten one is opaque.
|
|
300
|
+
const exposeModuleAt = (specifier) => {
|
|
301
|
+
if (!specifier || !ts.isStringLiteralLike(specifier)) {
|
|
302
|
+
opaque = true;
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
const module = checker.getSymbolAtLocation(specifier);
|
|
306
|
+
if (module)
|
|
307
|
+
exposeModule(module);
|
|
308
|
+
else
|
|
309
|
+
unresolved.add(lastSegment(specifier.text));
|
|
310
|
+
};
|
|
311
|
+
const dynamic = (node) => {
|
|
312
|
+
if (ts.isCallExpression(node) &&
|
|
313
|
+
(node.expression.kind === ts.SyntaxKind.ImportKeyword || (ts.isIdentifier(node.expression) && node.expression.text === 'require')))
|
|
314
|
+
exposeModuleAt(node.arguments[0]);
|
|
315
|
+
ts.forEachChild(node, dynamic);
|
|
316
|
+
};
|
|
317
|
+
for (const file of modules.files) {
|
|
318
|
+
if (file.isDeclarationFile)
|
|
319
|
+
continue;
|
|
320
|
+
for (const statement of file.statements) {
|
|
321
|
+
if (ts.isImportDeclaration(statement)) {
|
|
322
|
+
const clause = statement.importClause;
|
|
323
|
+
if (!clause || clause.isTypeOnly)
|
|
324
|
+
continue;
|
|
325
|
+
if (clause.name)
|
|
326
|
+
expose(checker.getSymbolAtLocation(clause.name));
|
|
327
|
+
const bindings = clause.namedBindings;
|
|
328
|
+
if (bindings && ts.isNamespaceImport(bindings))
|
|
329
|
+
exposeModuleAt(statement.moduleSpecifier);
|
|
330
|
+
else if (bindings)
|
|
331
|
+
for (const element of bindings.elements)
|
|
332
|
+
if (!element.isTypeOnly)
|
|
333
|
+
expose(checker.getSymbolAtLocation(element.name));
|
|
334
|
+
}
|
|
335
|
+
else if (ts.isExportDeclaration(statement)) {
|
|
336
|
+
// A local export list is the export itself, not a use of it.
|
|
337
|
+
if (!statement.moduleSpecifier || statement.isTypeOnly)
|
|
338
|
+
continue;
|
|
339
|
+
const clause = statement.exportClause;
|
|
340
|
+
if (!clause || ts.isNamespaceExport(clause))
|
|
341
|
+
exposeModuleAt(statement.moduleSpecifier);
|
|
342
|
+
else
|
|
343
|
+
for (const element of clause.elements)
|
|
344
|
+
if (!element.isTypeOnly)
|
|
345
|
+
expose(checker.getExportSpecifierLocalTargetSymbol(element));
|
|
346
|
+
}
|
|
347
|
+
else if (ts.isImportEqualsDeclaration(statement) && ts.isExternalModuleReference(statement.moduleReference)) {
|
|
348
|
+
exposeModuleAt(statement.moduleReference.expression);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
if (DYNAMIC_MODULE_REFERENCE.test(file.text))
|
|
352
|
+
ts.forEachChild(file, dynamic);
|
|
353
|
+
}
|
|
354
|
+
for (const entry of modules.entries)
|
|
355
|
+
exposeModule(checker.getSymbolAtLocation(entry));
|
|
356
|
+
const exposure = { opaque, exposed, unresolved, files: new Set(modules.files), entries: new Set(modules.entries) };
|
|
357
|
+
exposures.set(modules, exposure);
|
|
358
|
+
return exposure;
|
|
359
|
+
};
|
|
360
|
+
/**
|
|
361
|
+
* Whether NOTHING in the program imports this export.
|
|
362
|
+
*
|
|
363
|
+
* `export { WebGLRenderLists, WebGLRenderList }` closes three's
|
|
364
|
+
* `WebGLRenderLists.js`, but only `WebGLRenderer.js` imports anything from
|
|
365
|
+
* it, and only `WebGLRenderLists`. An export list is not an expression, so
|
|
366
|
+
* value flow records no use for it, and `isModuleExportedDeclaration` has to
|
|
367
|
+
* treat every exported declaration as published to unknown code. Inside a
|
|
368
|
+
* stated module set that is too coarse: an export no import, re-export,
|
|
369
|
+
* namespace, dynamic `import()`/`require`, or entry surface reaches is
|
|
370
|
+
* unreachable from any code at all.
|
|
371
|
+
*
|
|
372
|
+
* True only when the module set is stated, the file is an ES module of that
|
|
373
|
+
* set and not an entry, and every module reference in the program resolved;
|
|
374
|
+
* anything else answers false.
|
|
375
|
+
*/
|
|
376
|
+
export const exportIsUnimported = (checker, flow, specifierOrDeclaration) => {
|
|
377
|
+
const modules = statedModuleSets.get(flow);
|
|
378
|
+
if (!modules)
|
|
379
|
+
return false;
|
|
380
|
+
const file = specifierOrDeclaration.getSourceFile();
|
|
381
|
+
// A file that also assigns `module.exports` publishes through CommonJS too.
|
|
382
|
+
if (file.isDeclarationFile || !ts.isExternalModule(file) || file.commonJsModuleIndicator)
|
|
383
|
+
return false;
|
|
384
|
+
const exposure = moduleExposureOf(checker, modules);
|
|
385
|
+
if (exposure.opaque || !exposure.files.has(file) || exposure.entries.has(file))
|
|
386
|
+
return false;
|
|
387
|
+
const segment = lastSegment(file.fileName);
|
|
388
|
+
if (exposure.unresolved.has(segment) ||
|
|
389
|
+
(segment === 'index' && exposure.unresolved.has(lastSegment(file.fileName.replace(/[\\/][^\\/]*$/, '')))))
|
|
390
|
+
return false;
|
|
391
|
+
const name = ts.isExportSpecifier(specifierOrDeclaration) ? null : ts.getNameOfDeclaration(specifierOrDeclaration);
|
|
392
|
+
const symbol = ts.isExportSpecifier(specifierOrDeclaration)
|
|
393
|
+
? checker.getExportSpecifierLocalTargetSymbol(specifierOrDeclaration)
|
|
394
|
+
: name
|
|
395
|
+
? checker.getSymbolAtLocation(name)
|
|
396
|
+
: undefined;
|
|
397
|
+
const target = resolveAlias(checker, symbol);
|
|
398
|
+
if (!target || (target.flags & ts.SymbolFlags.Alias) !== 0)
|
|
399
|
+
return false;
|
|
400
|
+
return !exposure.exposed.has(target);
|
|
401
|
+
};
|
|
402
|
+
/** Executable argument positions exclude the erased TypeScript receiver declaration. */
|
|
403
|
+
export const runtimeParametersOf = (declaration) => isRealCallableDeclaration(declaration)
|
|
404
|
+
? declaration.parameters.filter((parameter) => !ts.isIdentifier(parameter.name) || parameter.name.text !== 'this')
|
|
405
|
+
: [];
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { type ExplicitThisCallFrame, type ValueFlowIndex } from './model.js';
|
|
3
|
+
import { type ProgramReachability } from '../reachability.js';
|
|
4
|
+
/** Whether this call is `Object.assign(...)` on the real global, resolved by DECLARATION IDENTITY (`isGlobalObjectConstructor`) rather than by the spelling `'ObjectConstructor'`. */
|
|
5
|
+
export declare const isGlobalObjectAssign: (checker: ts.TypeChecker, call: ts.CallExpression) => boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Index every write edge in the program.
|
|
8
|
+
*
|
|
9
|
+
* The initial index uses checker identities. Later rounds add receiver and
|
|
10
|
+
* call facts supplied by the preceding census, retaining the original edges.
|
|
11
|
+
* Call attribution and its argument edges must enter together: publishing a
|
|
12
|
+
* callee without its inputs would hide mutations performed by that body.
|
|
13
|
+
*/
|
|
14
|
+
export declare const indexValueFlow: (checker: ts.TypeChecker, files: readonly ts.SourceFile[], reachable: ProgramReachability,
|
|
15
|
+
/**
|
|
16
|
+
* The round's settled census view of an expression's type, for the ONE
|
|
17
|
+
* question this index cannot answer from the checker alone: a receiver the
|
|
18
|
+
* checker types `any`. Absent it (round one, and every caller that has no
|
|
19
|
+
* census yet) this index is byte-identical to the one it replaced.
|
|
20
|
+
*
|
|
21
|
+
* It is what makes rule 1 above conditional rather than absolute: an `any`
|
|
22
|
+
* receiver has no member symbols and no array/collection identity, so
|
|
23
|
+
* `container.seq.push(x)` -- three's `WebGLUniforms.addUniform`, with
|
|
24
|
+
* `container` unannotated -- names no cell and records no append, and the
|
|
25
|
+
* `seq` it fills is refused `array:no-writes` while every element it holds
|
|
26
|
+
* sits at that push. The checker's answer is used whenever it HAS one; the
|
|
27
|
+
* census is consulted only where the checker said `any`, so no edge this
|
|
28
|
+
* index already stated can change.
|
|
29
|
+
*/
|
|
30
|
+
censusTypeOf?: (expression: ts.Expression) => ts.Type | null,
|
|
31
|
+
/** Existing call-attribution census, not a new resolver in the flow index. */
|
|
32
|
+
censusCallDeclarationOf?: (call: ts.CallExpression | ts.NewExpression) => ts.SignatureDeclaration | ts.JSDocSignature | null, censusCallTargetsOf?: (call: ts.CallExpression | ts.NewExpression) => readonly ts.SignatureDeclaration[] | null,
|
|
33
|
+
/** A compiler option, not a type/closure result; retained identically in every round. */
|
|
34
|
+
buildIsStrict?: boolean,
|
|
35
|
+
/** Existing `.call`/`.apply` census, not a new resolver in the flow index -- see `invocationOperandsOf`'s own doc. */
|
|
36
|
+
censusExplicitThisAt?: (call: ts.CallExpression) => ExplicitThisCallFrame | null) => ValueFlowIndex;
|