@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,426 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { declarationId, functionId, nodeId } from '../../identity/ids.js';
|
|
3
|
+
import { isAmbientDeclaration } from '../ambient.js';
|
|
4
|
+
import { emptySpecializationCensus, genericSubjectOf } from './specialization.js';
|
|
5
|
+
import { createPathSubstitution } from './structural-generics.js';
|
|
6
|
+
export const rootSpecialization = [];
|
|
7
|
+
/**
|
|
8
|
+
* The identity suffix for a path: the ordinals alone.
|
|
9
|
+
*
|
|
10
|
+
* The owner is deliberately left out. A node's own identity already pins where
|
|
11
|
+
* it is, so which generics enclose it is not in question -- only which copy is,
|
|
12
|
+
* and that is what the ordinals say. Putting the owner in as well would make the
|
|
13
|
+
* suffix longer without making any two copies more distinguishable.
|
|
14
|
+
*/
|
|
15
|
+
export const specializationKey = (path) => path.map((step) => step.ordinal).join('.');
|
|
16
|
+
/**
|
|
17
|
+
* Ordinals for every node of a file, in one deterministic order.
|
|
18
|
+
*
|
|
19
|
+
* Two passes, and the second one is not an afterthought: `ts.forEachChild` does
|
|
20
|
+
* not descend into a node's attached JSDoc, and in a JavaScript source **JSDoc
|
|
21
|
+
* is the type syntax**. `/** @type {{start:number,count:number}} *\/` parses to a
|
|
22
|
+
* real `TypeLiteral` -- the declaration of an anonymous object type, exactly
|
|
23
|
+
* what `const x: { start: number }` declares in TypeScript -- and the checker
|
|
24
|
+
* hands that node back as a declaration like any other. Reached only through
|
|
25
|
+
* `node.jsDoc`, it never entered the map, so `declarationIdOf` threw and every
|
|
26
|
+
* producer that touched the type reported a failure instead of a type. That was
|
|
27
|
+
* 3291 of the three.js app's 6492 diagnostics: three.js is compiled from source, so its
|
|
28
|
+
* JSDoc is load-bearing.
|
|
29
|
+
*
|
|
30
|
+
* The JSDoc pass runs *after* the whole child walk rather than inline with it,
|
|
31
|
+
* so every ordinal a program already had keeps the value it had: JSDoc
|
|
32
|
+
* identities are appended past the end, and nothing that did not need this
|
|
33
|
+
* moves. Determinism is unaffected -- the second pass repeats the first pass's
|
|
34
|
+
* order and visits each node's tags in source order.
|
|
35
|
+
*/
|
|
36
|
+
const walkOrdinals = (file) => {
|
|
37
|
+
const ordinals = new Map();
|
|
38
|
+
let next = 0;
|
|
39
|
+
const assign = (node) => {
|
|
40
|
+
if (ordinals.has(node))
|
|
41
|
+
return;
|
|
42
|
+
ordinals.set(node, next);
|
|
43
|
+
next += 1;
|
|
44
|
+
};
|
|
45
|
+
const visit = (node) => {
|
|
46
|
+
assign(node);
|
|
47
|
+
ts.forEachChild(node, visit);
|
|
48
|
+
};
|
|
49
|
+
visit(file);
|
|
50
|
+
// The attached comments themselves, which `forEachChild` skips and no public
|
|
51
|
+
// accessor reports in full: `ts.getJSDocTags` was tried first and drops whole
|
|
52
|
+
// blocks -- a host carrying three comments, one of them a `@callback`, hands
|
|
53
|
+
// back only the tags of the other two, so every `JSDocSignature` in
|
|
54
|
+
// `three/src/loaders/Loader.js` stayed unreachable. `node.jsDoc` is the
|
|
55
|
+
// parser's own list and is complete; it is `@internal` in the shipped
|
|
56
|
+
// declarations, so the field is named here in a structural type rather than
|
|
57
|
+
// reached through `any`. `forEachChild` DOES descend once inside a JSDoc node,
|
|
58
|
+
// so one walk from each comment reaches every tag, type expression and
|
|
59
|
+
// literal under it.
|
|
60
|
+
const visitJsDoc = (node) => {
|
|
61
|
+
for (const comment of node.jsDoc ?? [])
|
|
62
|
+
visit(comment);
|
|
63
|
+
ts.forEachChild(node, visitJsDoc);
|
|
64
|
+
};
|
|
65
|
+
visitJsDoc(file);
|
|
66
|
+
return ordinals;
|
|
67
|
+
};
|
|
68
|
+
export const createIdentityTable = (program, checker, specializations = emptySpecializationCensus) => {
|
|
69
|
+
// Sorting by the program's own file names gives a deterministic index without
|
|
70
|
+
// that name ever reaching an identity: only the index does.
|
|
71
|
+
//
|
|
72
|
+
// Ambient declaration files are indexed too. They are not compiled, but every
|
|
73
|
+
// program references declarations that live in them -- `Array`, `Promise`,
|
|
74
|
+
// `Record` -- and a declaration the compiler can reach must have an identity
|
|
75
|
+
// wherever it was declared. Excluding them makes `declarationIdOf` throw the
|
|
76
|
+
// first time any real program mentions a library type.
|
|
77
|
+
const files = program
|
|
78
|
+
.getSourceFiles()
|
|
79
|
+
.slice()
|
|
80
|
+
.sort((left, right) => (left.fileName < right.fileName ? -1 : left.fileName > right.fileName ? 1 : 0));
|
|
81
|
+
const fileIndex = new Map();
|
|
82
|
+
files.forEach((file, index) => fileIndex.set(file, `f${index}`));
|
|
83
|
+
const ordinalsByFile = new Map();
|
|
84
|
+
const ordinalOf = (node) => {
|
|
85
|
+
const file = node.getSourceFile();
|
|
86
|
+
const identity = fileIndex.get(file);
|
|
87
|
+
if (identity === undefined)
|
|
88
|
+
throw new Error('node belongs to a source file outside the compiled program');
|
|
89
|
+
let ordinals = ordinalsByFile.get(file);
|
|
90
|
+
if (!ordinals) {
|
|
91
|
+
ordinals = walkOrdinals(file);
|
|
92
|
+
ordinalsByFile.set(file, ordinals);
|
|
93
|
+
}
|
|
94
|
+
const ordinal = ordinals.get(node);
|
|
95
|
+
if (ordinal === undefined)
|
|
96
|
+
throw new Error('node was not reached by the deterministic walk of its source file');
|
|
97
|
+
return { file: identity, ordinal };
|
|
98
|
+
};
|
|
99
|
+
const fileIdentityOf = (file) => {
|
|
100
|
+
const identity = fileIndex.get(file);
|
|
101
|
+
if (identity === undefined)
|
|
102
|
+
throw new Error('source file is outside the compiled program');
|
|
103
|
+
return identity;
|
|
104
|
+
};
|
|
105
|
+
const sourceFileNames = new Map(files.map((file) => [fileIdentityOf(file), file.fileName]));
|
|
106
|
+
const nodeIdOf = (node, path = rootSpecialization) => {
|
|
107
|
+
const { file, ordinal } = ordinalOf(node);
|
|
108
|
+
const id = nodeId(file, ts.SyntaxKind[node.kind], ordinal, specializationKey(path));
|
|
109
|
+
return id;
|
|
110
|
+
};
|
|
111
|
+
const declarationIdOf = (declaration, path = rootSpecialization) => {
|
|
112
|
+
const { file, ordinal } = ordinalOf(declaration);
|
|
113
|
+
const id = declarationId(file, ordinal, specializationKey(path));
|
|
114
|
+
return id;
|
|
115
|
+
};
|
|
116
|
+
const functionIdOf = (declaration, path = rootSpecialization) => functionId(declarationIdOf(declaration, path));
|
|
117
|
+
/**
|
|
118
|
+
* The symbol a reference denotes once import aliases are followed.
|
|
119
|
+
*
|
|
120
|
+
* `import { f } from './m'` and a direct reference to `f` are the same
|
|
121
|
+
* binding, and treating them as two would let one operation acquire two
|
|
122
|
+
* identities. Checked JavaScript's `const f = require('./m')` is ALSO an
|
|
123
|
+
* alias to the checker -- that is how it types `f.x` from the target's
|
|
124
|
+
* `module.exports` -- but at run time it is a local cell the loader's
|
|
125
|
+
* result is stored into, and its declaration is the variable, not the
|
|
126
|
+
* target module's `module.exports = ...` assignment. Following it named a
|
|
127
|
+
* declaration the program never introduces (`native-boundary:external-
|
|
128
|
+
* binding` on fastify's `const AjvCompiler = require(...)`). An alias whose
|
|
129
|
+
* own declaration is a variable or a binding element is that cell.
|
|
130
|
+
*/
|
|
131
|
+
const aliasTargetOf = (symbol) => {
|
|
132
|
+
if ((symbol.flags & ts.SymbolFlags.Alias) === 0)
|
|
133
|
+
return symbol;
|
|
134
|
+
if ((symbol.declarations ?? []).some((declaration) => ts.isVariableDeclaration(declaration) || ts.isBindingElement(declaration)))
|
|
135
|
+
return symbol;
|
|
136
|
+
return checker.getAliasedSymbol(symbol);
|
|
137
|
+
};
|
|
138
|
+
const declarationOfSymbol = (symbol) => {
|
|
139
|
+
const resolved = aliasTargetOf(symbol);
|
|
140
|
+
// A merged ambient global -- `interface Error {}` for the type plus
|
|
141
|
+
// `declare var Error: ErrorConstructor` for the value -- is one symbol with
|
|
142
|
+
// two declarations, and this returns the first. For a *value* reference
|
|
143
|
+
// that is the wrong one whenever the interface sorts earlier: the name then
|
|
144
|
+
// anchors on a type-space declaration that has no constructor, which is why
|
|
145
|
+
// `new Error(...)` finds no callable.
|
|
146
|
+
//
|
|
147
|
+
// Preferring `valueDeclaration` here is NOT the fix, and it was measured:
|
|
148
|
+
// both the unconditional form and one narrowed to the interface-first merge
|
|
149
|
+
// sent a whole family of corpus programs into unbounded recursion.
|
|
150
|
+
// The reason is that this one function answers two questions. The same
|
|
151
|
+
// declaration is the nominal ANCHOR the structural walk interns a shape
|
|
152
|
+
// under, and moving `Error`'s anchor onto its `var` makes that anchor's type
|
|
153
|
+
// `ErrorConstructor`, whose `prototype: Error` closes the cycle the anchor
|
|
154
|
+
// existed to break.
|
|
155
|
+
//
|
|
156
|
+
// So the value declaration belongs to the caller that is resolving a value,
|
|
157
|
+
// not to this shared resolution. Splitting the two is the fix, and it is not
|
|
158
|
+
// a one-line one.
|
|
159
|
+
const declarations = resolved.getDeclarations();
|
|
160
|
+
return declarations && declarations.length > 0 ? (declarations[0] ?? null) : null;
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* The value half of the question `declarationOfSymbol` answers.
|
|
164
|
+
*
|
|
165
|
+
* The body of an overloaded function creates its one runtime binding;
|
|
166
|
+
* otherwise `valueDeclaration` is TypeScript's answer to which declaration
|
|
167
|
+
* holds the value. The fallback matters: a symbol with no
|
|
168
|
+
* value declaration at all -- a pure type -- keeps the anchor's answer, which
|
|
169
|
+
* is what every caller that is *not* resolving a value already relies on.
|
|
170
|
+
*/
|
|
171
|
+
const valueDeclarationOfSymbol = (symbol) => {
|
|
172
|
+
const resolved = aliasTargetOf(symbol);
|
|
173
|
+
// Overload signatures introduce no function object. TypeScript's value
|
|
174
|
+
// declaration can be the first signature, but every read must name the
|
|
175
|
+
// implementation binding that FunctionDeclarationInstantiation creates.
|
|
176
|
+
const implementation = resolved
|
|
177
|
+
.getDeclarations()
|
|
178
|
+
?.find((declaration) => ts.isFunctionDeclaration(declaration) && declaration.body !== undefined);
|
|
179
|
+
if (implementation)
|
|
180
|
+
return implementation;
|
|
181
|
+
return resolved.valueDeclaration ?? declarationOfSymbol(resolved);
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* `genericSubjectOf` with the checker bound in, and memoized.
|
|
185
|
+
*
|
|
186
|
+
* Memoized because `prefixFor` asks it once per step per node -- the hottest
|
|
187
|
+
* path in the whole table -- and the identifier case costs a symbol
|
|
188
|
+
* resolution. The answer is a pure function of the node, so caching it is
|
|
189
|
+
* caching a fact rather than a decision.
|
|
190
|
+
*/
|
|
191
|
+
const subjects = new Map();
|
|
192
|
+
const targetOfName = (name) => {
|
|
193
|
+
const symbol = checker.getSymbolAtLocation(name);
|
|
194
|
+
return symbol ? valueDeclarationOfSymbol(symbol) : null;
|
|
195
|
+
};
|
|
196
|
+
const subjectOf = (declaration) => {
|
|
197
|
+
const known = subjects.get(declaration);
|
|
198
|
+
if (known !== undefined)
|
|
199
|
+
return known;
|
|
200
|
+
const subject = genericSubjectOf(declaration, targetOfName);
|
|
201
|
+
subjects.set(declaration, subject);
|
|
202
|
+
return subject;
|
|
203
|
+
};
|
|
204
|
+
/**
|
|
205
|
+
* Which copy a use site reaches, when the thing it names is a generic this
|
|
206
|
+
* program instantiates.
|
|
207
|
+
*
|
|
208
|
+
* The site recorded by the specialization census is the call or the type
|
|
209
|
+
* reference itself, so a name in callee position asks about its parent. A
|
|
210
|
+
* name that reaches no instantiation answers `null` and falls back to the
|
|
211
|
+
* lexical rule, which is what every non-generic reference wants.
|
|
212
|
+
*
|
|
213
|
+
* `substitute` is what the copy doing the naming binds a type parameter to. A
|
|
214
|
+
* site inside a generic is routinely written with that generic's own
|
|
215
|
+
* parameter -- `extends Component<Root>` -- and its arguments are concrete
|
|
216
|
+
* only once they have been substituted for this copy. Without it such a site
|
|
217
|
+
* reads as "no instantiation" and the name falls back to the unspecialized
|
|
218
|
+
* declaration, which is a class the census never published.
|
|
219
|
+
*/
|
|
220
|
+
const useSitePath = (declaration, at, substitute) => {
|
|
221
|
+
// The node the census keys copies on, which for `const f = <T>...` is the
|
|
222
|
+
// arrow rather than the declaration naming it -- see `genericSubjectOf`.
|
|
223
|
+
// Both the comparison and the path entry use it, so a name resolves to the
|
|
224
|
+
// very entry `census.ts` pushed when it forked.
|
|
225
|
+
const subject = subjectOf(declaration);
|
|
226
|
+
for (const node of [at, at?.parent]) {
|
|
227
|
+
const site = node ? specializations.specializationAt(node, substitute) : null;
|
|
228
|
+
if (site && site.declaration === subject)
|
|
229
|
+
return [{ owner: subject, ordinal: site.ordinal }];
|
|
230
|
+
}
|
|
231
|
+
// No site, and a `const f = <T>...` with exactly ONE copy: that copy is the
|
|
232
|
+
// only thing the name can mean. The root identity is not an alternative --
|
|
233
|
+
// `census.ts` records this declaration per copy and never at the root, so
|
|
234
|
+
// falling back to it names a declaration the program does not introduce,
|
|
235
|
+
// which the emitter then refuses by name at the read.
|
|
236
|
+
//
|
|
237
|
+
// This is `instantiation.ts`'s own rule one level up: a hole filled the
|
|
238
|
+
// same way everywhere has one answer, and taking it is exact rather than
|
|
239
|
+
// an approximation. Two or more copies has no single answer -- `const jsxs
|
|
240
|
+
// = jsx` genuinely denotes a template, which C++ has no value for -- and
|
|
241
|
+
// falls through to be refused rather than answered with a guess.
|
|
242
|
+
//
|
|
243
|
+
// ⛔ NARROW ON PURPOSE -- but the line is AMBIENT, not the spelling.
|
|
244
|
+
//
|
|
245
|
+
// The first cut of this rule was `if (subject === declaration) return
|
|
246
|
+
// null`, which admitted only the `const f = <T>...` spelling, where the
|
|
247
|
+
// subject is the arrow and the declaration the variable naming it.
|
|
248
|
+
// Applied to every generic instead, it re-keyed names that were resolving
|
|
249
|
+
// to the root correctly and had every right to: measured over the corpus,
|
|
250
|
+
// `image-demo` lost its certificate to a `return-conversion:
|
|
251
|
+
// native-handle(GeaEmbeddedImage) -> native-record-ref` that did not
|
|
252
|
+
// exist before, `e-reader` stopped emitting on a `SetConstructor` handle
|
|
253
|
+
// that "carries no [[Construct]] convention", and `dialer` stopped
|
|
254
|
+
// compiling.
|
|
255
|
+
//
|
|
256
|
+
// Every one of those is a declaration a HOST owns: `Set`, `Map`,
|
|
257
|
+
// `GeaEmbeddedImage`. A host's protocol is keyed on the root, because the
|
|
258
|
+
// host implements the thing once and this program never forks it, so
|
|
259
|
+
// answering a copy for one breaks the binding rather than fixing one.
|
|
260
|
+
// That is the real line, and `semantics/ambient.ts` already draws it --
|
|
261
|
+
// "declared, never defined" is exactly "the root is the only id there
|
|
262
|
+
// is".
|
|
263
|
+
//
|
|
264
|
+
// A generic this program DEFINES is the other side: `census.ts` records
|
|
265
|
+
// it per copy and never at the root, so a name that falls back to the
|
|
266
|
+
// root names a declaration the program does not introduce, which the
|
|
267
|
+
// emitter then refuses by name at the read. hono reaches this with
|
|
268
|
+
// `new HonoRequest(...)` (introduced as `decl|f77|148@0`, read as
|
|
269
|
+
// `decl|f77|148`) and with a plain generic function declaration called
|
|
270
|
+
// from one of its own copies.
|
|
271
|
+
if (isAmbientDeclaration(declaration))
|
|
272
|
+
return null;
|
|
273
|
+
const copies = specializations.specializationsOf(subject);
|
|
274
|
+
const only = copies.length === 1 ? copies[0] : undefined;
|
|
275
|
+
if (only)
|
|
276
|
+
return [{ owner: subject, ordinal: only.ordinal }];
|
|
277
|
+
return null;
|
|
278
|
+
};
|
|
279
|
+
const symbolDeclarationId = (symbol, at) => {
|
|
280
|
+
const declaration = declarationOfSymbol(symbol);
|
|
281
|
+
if (!declaration)
|
|
282
|
+
return null;
|
|
283
|
+
return declarationIdOf(declaration, useSitePath(declaration, at) ?? rootSpecialization);
|
|
284
|
+
};
|
|
285
|
+
const symbolValueDeclarationId = (symbol, at) => {
|
|
286
|
+
const declaration = valueDeclarationOfSymbol(symbol);
|
|
287
|
+
if (!declaration)
|
|
288
|
+
return null;
|
|
289
|
+
return declarationIdOf(declaration, useSitePath(declaration, at) ?? rootSpecialization);
|
|
290
|
+
};
|
|
291
|
+
/**
|
|
292
|
+
* How much of a copy's path applies to one node.
|
|
293
|
+
*
|
|
294
|
+
* A node is inside a generic when that generic is one of its ancestors. The
|
|
295
|
+
* path lists the copies enclosing the *candidate*, outermost first, so the
|
|
296
|
+
* answer for any other node is the longest prefix of that list whose owners
|
|
297
|
+
* are all ancestors of it -- full path for a node in the copy's own body,
|
|
298
|
+
* empty for one declared outside every enclosing generic, and a proper prefix
|
|
299
|
+
* for one in an outer generic but not an inner.
|
|
300
|
+
*/
|
|
301
|
+
const contains = (ancestor, node) => {
|
|
302
|
+
for (let current = node; current; current = current.parent)
|
|
303
|
+
if (current === ancestor)
|
|
304
|
+
return true;
|
|
305
|
+
return false;
|
|
306
|
+
};
|
|
307
|
+
/**
|
|
308
|
+
* Whether one copy's step applies to this node.
|
|
309
|
+
*
|
|
310
|
+
* Ancestry is the usual answer: a node inside a generic's body belongs to
|
|
311
|
+
* whichever copy of it is being walked. `const f = <T>(x: T) => x` is the one
|
|
312
|
+
* shape where the relation runs the other way -- the copy is keyed on the
|
|
313
|
+
* arrow, which is the declaration's CHILD, so ancestry says no for the
|
|
314
|
+
* declaration that names it while `census.ts` has already recorded that
|
|
315
|
+
* declaration under the copy's path. Two answers for one node, and the read
|
|
316
|
+
* then names an identity the program never introduces.
|
|
317
|
+
*/
|
|
318
|
+
/**
|
|
319
|
+
* Whether `node` sits in a variable declaration whose subject is this step's
|
|
320
|
+
* owner.
|
|
321
|
+
*
|
|
322
|
+
* `census.ts` walks a forked declaration's WHOLE subtree under the copy's
|
|
323
|
+
* path -- the name, the type annotation, and for `const jsxs = jsx` the
|
|
324
|
+
* initializer that names the subject. Agreeing only about the declaration
|
|
325
|
+
* node itself leaves every node under it minted at the root while the census
|
|
326
|
+
* recorded it in the copy, which is a dangling citation for any of them that
|
|
327
|
+
* produces a cited result: the alias's own initializer read is exactly that,
|
|
328
|
+
* and it withheld the declaration that cites it.
|
|
329
|
+
*
|
|
330
|
+
* The first enclosing variable declaration is the answer, not the first
|
|
331
|
+
* MATCHING one. A node inside a nested declaration belongs to that one; if it
|
|
332
|
+
* also belongs to this copy it is reached by ancestry below, which is the
|
|
333
|
+
* ordinary rule.
|
|
334
|
+
*/
|
|
335
|
+
const inDeclarationOf = (owner, node) => {
|
|
336
|
+
for (let current = node; current !== undefined; current = current.parent) {
|
|
337
|
+
if (ts.isVariableDeclaration(current))
|
|
338
|
+
return subjectOf(current) === owner;
|
|
339
|
+
if (ts.isSourceFile(current))
|
|
340
|
+
return false;
|
|
341
|
+
}
|
|
342
|
+
return false;
|
|
343
|
+
};
|
|
344
|
+
const stepApplies = (owner, node) => inDeclarationOf(owner, node) || contains(owner, node);
|
|
345
|
+
const prefixFor = (node, path) => {
|
|
346
|
+
let length = 0;
|
|
347
|
+
while (length < path.length) {
|
|
348
|
+
const step = path[length];
|
|
349
|
+
if (!step || !stepApplies(step.owner, node))
|
|
350
|
+
break;
|
|
351
|
+
length += 1;
|
|
352
|
+
}
|
|
353
|
+
return length === path.length ? path : path.slice(0, length);
|
|
354
|
+
};
|
|
355
|
+
const copyKeyOf = (path) => path.map((step) => `${nodeIdOf(step.owner)}#${step.ordinal}`).join('/');
|
|
356
|
+
const views = new Map();
|
|
357
|
+
const forSpecialization = (path) => {
|
|
358
|
+
const key = copyKeyOf(path);
|
|
359
|
+
const cached = views.get(key);
|
|
360
|
+
if (cached)
|
|
361
|
+
return cached;
|
|
362
|
+
// What this copy binds each type parameter to, which is what turns a site
|
|
363
|
+
// written with an enclosing generic's own parameter (`extends
|
|
364
|
+
// Component<Root>`) into the concrete arguments that name one copy. Built
|
|
365
|
+
// once per view, for the same reason the view itself exists.
|
|
366
|
+
const substituteInPath = createPathSubstitution(declarationOfSymbol, specializations, path);
|
|
367
|
+
// An INLINE generic callable -- `memoizeOne(<T extends JSDocType>(kind) =>
|
|
368
|
+
// ...)` -- is its own copy's subject, and the census records its
|
|
369
|
+
// allocation under that copy (`census.ts` forks at the arrow) while the
|
|
370
|
+
// call holding it asks from the enclosing path. The site the census keyed
|
|
371
|
+
// on the arrow itself (`specialization.ts`'s `fromValueUse`) names the
|
|
372
|
+
// copy, exactly as `useSitePath` resolves a NAME to one; without it the
|
|
373
|
+
// caller cited an allocation minted under a path it never spelled.
|
|
374
|
+
const pathOf = (node) => {
|
|
375
|
+
const prefix = prefixFor(node, path);
|
|
376
|
+
if (!(ts.isArrowFunction(node) || ts.isFunctionExpression(node)))
|
|
377
|
+
return prefix;
|
|
378
|
+
if (prefix.some((step) => step.owner === node))
|
|
379
|
+
return prefix;
|
|
380
|
+
const site = specializations.specializationAt(node, substituteInPath);
|
|
381
|
+
return site && site.declaration === node ? [...prefix, { owner: node, ordinal: site.ordinal }] : prefix;
|
|
382
|
+
};
|
|
383
|
+
const view = {
|
|
384
|
+
forSpecialization,
|
|
385
|
+
copyKeyOf,
|
|
386
|
+
prefixFor,
|
|
387
|
+
fileIdentityOf,
|
|
388
|
+
sourceFileNames,
|
|
389
|
+
nodeIdOf: (node, override) => nodeIdOf(node, override ?? pathOf(node)),
|
|
390
|
+
declarationIdOf: (declaration, override) => declarationIdOf(declaration, override ?? pathOf(declaration)),
|
|
391
|
+
functionIdOf: (declaration, override) => functionIdOf(declaration, override ?? pathOf(declaration)),
|
|
392
|
+
declarationOfSymbol,
|
|
393
|
+
valueDeclarationOfSymbol,
|
|
394
|
+
genericSubjectOf: subjectOf,
|
|
395
|
+
symbolDeclarationId: (symbol, at) => {
|
|
396
|
+
const declaration = declarationOfSymbol(symbol);
|
|
397
|
+
if (!declaration)
|
|
398
|
+
return null;
|
|
399
|
+
return declarationIdOf(declaration, useSitePath(declaration, at, substituteInPath) ?? prefixFor(declaration, path));
|
|
400
|
+
},
|
|
401
|
+
symbolValueDeclarationId: (symbol, at) => {
|
|
402
|
+
const declaration = valueDeclarationOfSymbol(symbol);
|
|
403
|
+
if (!declaration)
|
|
404
|
+
return null;
|
|
405
|
+
return declarationIdOf(declaration, useSitePath(declaration, at, substituteInPath) ?? prefixFor(declaration, path));
|
|
406
|
+
}
|
|
407
|
+
};
|
|
408
|
+
views.set(key, view);
|
|
409
|
+
return view;
|
|
410
|
+
};
|
|
411
|
+
return {
|
|
412
|
+
forSpecialization,
|
|
413
|
+
copyKeyOf,
|
|
414
|
+
prefixFor,
|
|
415
|
+
fileIdentityOf,
|
|
416
|
+
sourceFileNames,
|
|
417
|
+
nodeIdOf,
|
|
418
|
+
declarationIdOf,
|
|
419
|
+
functionIdOf,
|
|
420
|
+
declarationOfSymbol,
|
|
421
|
+
valueDeclarationOfSymbol,
|
|
422
|
+
genericSubjectOf: subjectOf,
|
|
423
|
+
symbolDeclarationId,
|
|
424
|
+
symbolValueDeclarationId
|
|
425
|
+
};
|
|
426
|
+
};
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { type ImplicitArgumentsSlot } from './implicit-arguments.js';
|
|
3
|
+
/**
|
|
4
|
+
* What the magic `arguments` frame of one source function holds, owned by the
|
|
5
|
+
* parameter census and read by every consumer of that frame: the structural
|
|
6
|
+
* mapper's phantom rest slot (`structural-parts.ts`), numeric reads of the
|
|
7
|
+
* object (`implicitArgumentsReadTypeAt`), and the positional expansion of a
|
|
8
|
+
* forwarded `...arguments` (`producers/spread-arguments.ts`).
|
|
9
|
+
*
|
|
10
|
+
* Two frames, chosen by how the body reads the object:
|
|
11
|
+
*
|
|
12
|
+
* - `tuple`: every read names a FIXED position -- a literal index, or a final
|
|
13
|
+
* `...arguments` spread into a callee convention with no rest formal, which
|
|
14
|
+
* reads positions `0..n-1` exactly. Each position is then its own fact,
|
|
15
|
+
* joined over the closed callers that fill it. This is the shape three's
|
|
16
|
+
* WebGL forwarding shims need: `texImage3D()` is called with numbers in its
|
|
17
|
+
* leading positions and `ArrayBufferView | null` in its last, and one element
|
|
18
|
+
* type over all ten positions could only be a union no caller wrote.
|
|
19
|
+
* Positions from `required` on are ones some closed caller omits, so they
|
|
20
|
+
* are optional: a read there is `T | undefined`, and the rest slot leaves
|
|
21
|
+
* the field absent rather than inventing a value.
|
|
22
|
+
* - `array`: the body reads a position only known at run time
|
|
23
|
+
* (`arguments[i]`, `arguments.length`), reads its own element back through
|
|
24
|
+
* a recursive call, or declares parameters in front of the phantom slot.
|
|
25
|
+
* The frame is then a runtime-sized Array of one element type joined over
|
|
26
|
+
* every supplied position -- the frame this fact published before positions
|
|
27
|
+
* existed.
|
|
28
|
+
*/
|
|
29
|
+
export type ImplicitArgumentsTuple = {
|
|
30
|
+
readonly frame: 'tuple';
|
|
31
|
+
readonly elements: readonly ts.Type[];
|
|
32
|
+
readonly required: number;
|
|
33
|
+
} | {
|
|
34
|
+
readonly frame: 'array';
|
|
35
|
+
readonly element: ts.Type;
|
|
36
|
+
};
|
|
37
|
+
/** The one convention fact the fixed-spread admission reads off a callee. */
|
|
38
|
+
export interface ArgumentsSpreadConvention {
|
|
39
|
+
/** The callee's rest formal, or `null` when it declares none. */
|
|
40
|
+
readonly restFrom: number | null;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Whether `args[index]` is a final magic-`arguments` spread into a callee
|
|
44
|
+
* with a static convention and no rest formal.
|
|
45
|
+
*
|
|
46
|
+
* Such a spread fills the callee's formals POSITIONALLY: the frame's values
|
|
47
|
+
* land at `0..n-1` exactly as a written argument list would, and a formal no
|
|
48
|
+
* value reaches binds `undefined` the way an omitted argument does. It must be
|
|
49
|
+
* the LAST argument, or a later written argument would land at a position only
|
|
50
|
+
* the frame's runtime length knows; the callee must declare no rest formal, or
|
|
51
|
+
* the split between named formals and the packed tail would be that same
|
|
52
|
+
* runtime fact. `convention === null` is a callee with no static convention at
|
|
53
|
+
* all, which states nothing to fill positionally.
|
|
54
|
+
*
|
|
55
|
+
* Shared by the census (which admits the spread as a read-only use of the
|
|
56
|
+
* frame) and the producer (which mints one read per position): the two
|
|
57
|
+
* deciding separately is how an admitted use would meet a refused expansion.
|
|
58
|
+
*/
|
|
59
|
+
export declare const isFixedArgumentsSpreadAt: (checker: ts.TypeChecker, args: readonly ts.Expression[], index: number, convention: ArgumentsSpreadConvention | null) => boolean;
|
|
60
|
+
export interface ImplicitArgumentsEvidence {
|
|
61
|
+
readonly checker: ts.TypeChecker;
|
|
62
|
+
readonly owner: ts.SignatureDeclaration;
|
|
63
|
+
readonly slot: ImplicitArgumentsSlot;
|
|
64
|
+
/** Every reference to the owner's own `arguments` frame. */
|
|
65
|
+
readonly uses: readonly ts.Identifier[];
|
|
66
|
+
/** The owner's closed call sites; the census has already proved the set closed. */
|
|
67
|
+
readonly calls: readonly (ts.CallExpression | ts.NewExpression)[];
|
|
68
|
+
/** The arguments a call site passes, after the census's explicit-`this` rewrite. */
|
|
69
|
+
readonly argumentsOf: (call: ts.CallExpression | ts.NewExpression) => readonly ts.Expression[];
|
|
70
|
+
/** Whether the shared write inventory names this node as a write target. */
|
|
71
|
+
readonly isWritten: (node: ts.Expression) => boolean;
|
|
72
|
+
readonly isRecursiveCall: (call: ts.CallExpression | ts.NewExpression) => boolean;
|
|
73
|
+
/** The settled type an argument holds, or `null` when it states nothing usable. */
|
|
74
|
+
readonly argumentTypeOf: (argument: ts.Expression) => ts.Type | null;
|
|
75
|
+
/** The owner's own declared parameter types that state a usable upper bound. */
|
|
76
|
+
readonly statedElements: readonly ts.Type[];
|
|
77
|
+
}
|
|
78
|
+
export type ImplicitArgumentsInference = {
|
|
79
|
+
readonly tuple: ImplicitArgumentsTuple;
|
|
80
|
+
} | {
|
|
81
|
+
readonly refused: string;
|
|
82
|
+
readonly evidence?: ts.Node;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* The frame fact for one owner, from its uses and its closed callers.
|
|
86
|
+
*
|
|
87
|
+
* Never inferred from only the callers that happened to type: one caller
|
|
88
|
+
* whose argument states nothing refuses the whole frame, because the frame is
|
|
89
|
+
* what EVERY caller fills.
|
|
90
|
+
*/
|
|
91
|
+
export declare const inferImplicitArgumentsTuple: (evidence: ImplicitArgumentsEvidence) => ImplicitArgumentsInference;
|
|
92
|
+
/** One element read's type out of a settled frame: `index === null` is a position only known at run time. */
|
|
93
|
+
export declare const implicitArgumentsElementTypeOf: (checker: ts.TypeChecker, tuple: ImplicitArgumentsTuple, index: number | null) => ts.Type | null;
|
|
94
|
+
/** Every numeric read consumes the owning frame's fact, including reads published to sibling censuses. */
|
|
95
|
+
export declare const implicitArgumentsReadTypeAt: (checker: ts.TypeChecker, node: ts.Node, tupleAt: (owner: ts.Node) => ImplicitArgumentsTuple | null) => ts.Type | null;
|
|
96
|
+
/** Two settled frame facts state the same frame: the fixpoint's identity test for this query. */
|
|
97
|
+
export declare const sameImplicitArgumentsTuple: (left: ImplicitArgumentsTuple, right: ImplicitArgumentsTuple) => boolean;
|