@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,390 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { operationId, regionId } from '../../../identity/ids.js';
|
|
3
|
+
import { normalCompletion, throwingCompletion } from '../../model/operands.js';
|
|
4
|
+
import { mintOperationId, mintResult, operand } from './mint.js';
|
|
5
|
+
import { asBlocked, resultEdge } from './shared.js';
|
|
6
|
+
import { citeExpressionResult } from './references.js';
|
|
7
|
+
/**
|
|
8
|
+
* The module a specifier expression resolves to, as a checker declaration.
|
|
9
|
+
*
|
|
10
|
+
* `getSymbolAtLocation` on an import/export module specifier returns the
|
|
11
|
+
* target module's own symbol; this is the only path to module identity the
|
|
12
|
+
* absolute rules allow -- the specifier's own string text is display evidence,
|
|
13
|
+
* never identity, because two specifiers can name one module through different
|
|
14
|
+
* resolution paths (a relative path and a package alias) and one specifier can
|
|
15
|
+
* fail to resolve at all.
|
|
16
|
+
*/
|
|
17
|
+
const moduleSymbolOf = (checker, specifier) => checker.getSymbolAtLocation(specifier);
|
|
18
|
+
/**
|
|
19
|
+
* Whether a symbol names something with runtime existence -- a variable,
|
|
20
|
+
* function, class, enum member, and so on -- rather than a pure type
|
|
21
|
+
* (`interface`, `type` alias) or a namespace merge with no value member.
|
|
22
|
+
*
|
|
23
|
+
* `export * from './m'` re-exports every name `./m` exports, both kinds
|
|
24
|
+
* alike, because ECMAScript's own `export *` has no such distinction at the
|
|
25
|
+
* syntax level the way `import type`/`export type` do. But a type has no
|
|
26
|
+
* runtime binding to link or initialize -- `interface Foo {}` and `type Bar =
|
|
27
|
+
* ...` emit nothing at all -- so minting a `module-link`/`initialize` pair
|
|
28
|
+
* for one asserts a binding that does not exist. Worse, `checker.getTypeOfSymbol`
|
|
29
|
+
* on a symbol with no value declaration is a category error the checker
|
|
30
|
+
* answers with `any`: it is being asked for the type of a value that was
|
|
31
|
+
* never there. That `any` is an artifact of asking the wrong question, not a
|
|
32
|
+
* fact about the program, and must never be mistaken for the program having
|
|
33
|
+
* declared something `any`/`unknown` itself -- the one legitimate source of
|
|
34
|
+
* `Representation.dynamic`.
|
|
35
|
+
*
|
|
36
|
+
* The single alias hop mirrors `identities.ts`'s own `declarationOfSymbol`,
|
|
37
|
+
* the same resolution this compiler already trusts to find the real
|
|
38
|
+
* declaration `export *` re-exports names from.
|
|
39
|
+
*/
|
|
40
|
+
const denotesValue = (checker, symbol) => {
|
|
41
|
+
const resolved = symbol.flags & ts.SymbolFlags.Alias ? checker.getAliasedSymbol(symbol) : symbol;
|
|
42
|
+
return (resolved.flags & ts.SymbolFlags.Value) !== 0;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Whether `declaration` is a generic -- one whose NAME, on its own, denotes no
|
|
46
|
+
* value.
|
|
47
|
+
*
|
|
48
|
+
* `census.ts`'s own walk already elides the uninstantiated case for the
|
|
49
|
+
* *direct* declaration site: `mount<RootComponent extends Component>`'s body
|
|
50
|
+
* is walked zero times in a program that never calls it, because "there is no
|
|
51
|
+
* such function in this program, so nothing is recorded for it". An import or
|
|
52
|
+
* export binding reaches the identical declaration through a second syntactic
|
|
53
|
+
* site this producer visits on its own -- `export * from './m'`,
|
|
54
|
+
* `export { mount } from './m'` -- and asking the checker for *that*
|
|
55
|
+
* reference's type hands back the raw generic signature, because an
|
|
56
|
+
* export/import specifier is not a call and supplies no argument to fill the
|
|
57
|
+
* hole with. `RootComponent` then reaches `representation/derive.ts` still a
|
|
58
|
+
* type parameter, and the guard there refuses it correctly -- but the defect
|
|
59
|
+
* is this site minting an operation at all for a binding nothing in the
|
|
60
|
+
* program ever gives a value.
|
|
61
|
+
*
|
|
62
|
+
* Whether the program instantiates the generic SOMEWHERE ELSE has nothing to
|
|
63
|
+
* do with that argument, and the check used to require it -- `.length === 0`.
|
|
64
|
+
* A specifier supplies no argument either way; a template is not a value in
|
|
65
|
+
* the target language either way; and the copies a call site names are reached
|
|
66
|
+
* through the call, never through this binding. mongodb imports
|
|
67
|
+
* `executeOperation<T extends AbstractOperation<TResult>, TResult>` into
|
|
68
|
+
* twelve modules and instantiates it 38 times, and every one of those imports
|
|
69
|
+
* was minting a binding carried by the open `T`: 96 of the probe's mandatory
|
|
70
|
+
* obligations, all of them at an `ImportSpecifier`.
|
|
71
|
+
*/
|
|
72
|
+
const namesUninstantiatedGeneric = (specializations, declaration) => declaration !== null && specializations.isGeneric(declaration);
|
|
73
|
+
export const createDeclarationLifecycleProducer = (context) => {
|
|
74
|
+
const voidType = context.table.intern({ kind: 'primitive', primitive: 'void' });
|
|
75
|
+
// A module's evaluation is memoized once per module graph node, not once per
|
|
76
|
+
// import site (ECMA-262 16.2.1.5.2 Evaluate). Two import/export declarations
|
|
77
|
+
// naming the same resolved module must therefore share one `module-evaluate`
|
|
78
|
+
// operation; this map is what makes the second site reuse it instead of
|
|
79
|
+
// re-mining a duplicate the graph would reject as published twice.
|
|
80
|
+
const moduleEvaluateIds = new Map();
|
|
81
|
+
const buildOperation = (id, caller, evaluationOrdinal, event, declaration, operands, completion, effects, results) => ({
|
|
82
|
+
id,
|
|
83
|
+
caller,
|
|
84
|
+
operands,
|
|
85
|
+
results,
|
|
86
|
+
completion,
|
|
87
|
+
effects,
|
|
88
|
+
evaluationOrdinal,
|
|
89
|
+
family: 'declaration-lifecycle',
|
|
90
|
+
event,
|
|
91
|
+
declaration
|
|
92
|
+
});
|
|
93
|
+
/**
|
|
94
|
+
* The (deduplicated) `module-evaluate` operation for a resolved module.
|
|
95
|
+
*
|
|
96
|
+
* Sourced at the module's own declaration, never at whichever import site
|
|
97
|
+
* happens to reference it first -- otherwise the operation's identity would
|
|
98
|
+
* depend on import order, which two equivalent programs can differ in.
|
|
99
|
+
* Returns `operation: null` on a cache hit so the caller does not re-publish it.
|
|
100
|
+
*/
|
|
101
|
+
const moduleEvaluateOperation = (moduleDeclaration) => {
|
|
102
|
+
const declarationId = context.identities.declarationIdOf(moduleDeclaration);
|
|
103
|
+
const existing = moduleEvaluateIds.get(declarationId);
|
|
104
|
+
if (existing)
|
|
105
|
+
return { id: existing, operation: null };
|
|
106
|
+
const source = context.identities.nodeIdOf(moduleDeclaration);
|
|
107
|
+
const id = operationId(source, 'declaration-lifecycle', 0);
|
|
108
|
+
const caller = { kind: 'region', regionId: regionId(source, 'module-body') };
|
|
109
|
+
const operation = buildOperation(id, caller, context.evaluationOrdinals.next(caller), 'module-evaluate', declarationId, [],
|
|
110
|
+
// Arbitrary top-level module code runs here and can throw; a circular
|
|
111
|
+
// import observes this operation as not-yet-run, not as never-run.
|
|
112
|
+
throwingCompletion, { readsMutableState: true, writesMutableState: true, allocates: true, callsUserCode: true }, [mintResult(id, 'completion', voidType)]);
|
|
113
|
+
moduleEvaluateIds.set(declarationId, id);
|
|
114
|
+
return { id, operation };
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* One imported/exported local binding, modelled as two operations rather
|
|
118
|
+
* than one: `module-link` creates the binding (a live view of the exporting
|
|
119
|
+
* module's own binding, per CreateImportBinding), and `initialize` is the
|
|
120
|
+
* separate later point at which reading it stops being a TDZ throw. Fusing
|
|
121
|
+
* these into a single event would make a circular import's before-evaluation
|
|
122
|
+
* read indistinguishable from an ordinary read, which is exactly the state
|
|
123
|
+
* the task calls out as needing to stay explicit.
|
|
124
|
+
*/
|
|
125
|
+
const bindingPair = (candidate, localDeclarationNode, typeSite, moduleEvaluateId) => {
|
|
126
|
+
// A binding that names a generic the program never instantiates has no
|
|
127
|
+
// value to link -- see `namesUninstantiatedGeneric`. Checked against the
|
|
128
|
+
// *use site*'s own symbol, resolved through `declarationOfSymbol`'s
|
|
129
|
+
// existing alias hop, so a renamed specifier (`import { mount as m }`)
|
|
130
|
+
// and a direct reference resolve to the identical declaration.
|
|
131
|
+
const targetSymbol = context.checker.getSymbolAtLocation(typeSite);
|
|
132
|
+
const targetDeclaration = targetSymbol ? context.identities.declarationOfSymbol(targetSymbol) : null;
|
|
133
|
+
if (namesUninstantiatedGeneric(context.specializations, targetDeclaration))
|
|
134
|
+
return { operations: [], edges: [] };
|
|
135
|
+
// A binding that names a pure type (`interface`, `type` alias) has no
|
|
136
|
+
// runtime value to link or initialize either -- see `denotesValue`'s own
|
|
137
|
+
// doc comment above. `getSymbolAtLocation` on such a name still resolves
|
|
138
|
+
// (the symbol exists, it just carries no `SymbolFlags.Value`), so without
|
|
139
|
+
// this check `context.types.typeAt(typeSite)` below asks the checker for
|
|
140
|
+
// "the type of this value" about a value that is not there, and the
|
|
141
|
+
// checker's category-error `any` answer is minted as this binding's
|
|
142
|
+
// structural type -- exactly the trap that comment warns against, and
|
|
143
|
+
// exactly what the `export * from` enumeration already guards against at
|
|
144
|
+
// its own call site. `import { folders, notes, Note }` where `Note` is an
|
|
145
|
+
// interface is all it takes, and the cost was two boxed carriers in an
|
|
146
|
+
// otherwise fully native program.
|
|
147
|
+
if (targetSymbol && !denotesValue(context.checker, targetSymbol))
|
|
148
|
+
return { operations: [], edges: [] };
|
|
149
|
+
const source = context.identities.nodeIdOf(localDeclarationNode);
|
|
150
|
+
const declaration = context.identities.declarationIdOf(localDeclarationNode);
|
|
151
|
+
const valueType = context.types.typeAt(typeSite);
|
|
152
|
+
const linkId = mintOperationId(context.ordinals, source, 'declaration-lifecycle');
|
|
153
|
+
const linkOperation = buildOperation(linkId, candidate.caller, context.evaluationOrdinals.next(candidate.caller), 'module-link', declaration, [], normalCompletion, { readsMutableState: false, writesMutableState: true, allocates: false, callsUserCode: false }, [mintResult(linkId, 'reference', valueType)]);
|
|
154
|
+
const initId = mintOperationId(context.ordinals, source, 'declaration-lifecycle');
|
|
155
|
+
const initOperation = buildOperation(initId, candidate.caller, context.evaluationOrdinals.next(candidate.caller), 'initialize', declaration, [], normalCompletion, { readsMutableState: true, writesMutableState: false, allocates: false, callsUserCode: false }, [mintResult(initId, 'value', valueType)]);
|
|
156
|
+
return {
|
|
157
|
+
operations: [linkOperation, initOperation],
|
|
158
|
+
edges: [
|
|
159
|
+
{ kind: 'evaluation', from: linkOperation.id, to: initOperation.id },
|
|
160
|
+
{ kind: 'evaluation', from: moduleEvaluateId, to: initOperation.id }
|
|
161
|
+
]
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
const contributeImport = (candidate, node) => {
|
|
165
|
+
if (node.importClause?.isTypeOnly)
|
|
166
|
+
return { kind: 'operations', operations: [], edges: [] };
|
|
167
|
+
if (!ts.isStringLiteralLike(node.moduleSpecifier)) {
|
|
168
|
+
return asBlocked(candidate.id, 'declaration-lifecycle', 'non-literal module specifier on a static import is not modelled', null);
|
|
169
|
+
}
|
|
170
|
+
const moduleSymbol = moduleSymbolOf(context.checker, node.moduleSpecifier);
|
|
171
|
+
const moduleDeclaration = moduleSymbol ? context.identities.declarationOfSymbol(moduleSymbol) : null;
|
|
172
|
+
if (!moduleDeclaration) {
|
|
173
|
+
return asBlocked(candidate.id, 'declaration-lifecycle', 'import module specifier did not resolve to a checker module declaration', null);
|
|
174
|
+
}
|
|
175
|
+
const { id: moduleEvaluateId, operation: freshModuleEvaluate } = moduleEvaluateOperation(moduleDeclaration);
|
|
176
|
+
const operations = freshModuleEvaluate ? [freshModuleEvaluate] : [];
|
|
177
|
+
const edges = [];
|
|
178
|
+
const clause = node.importClause;
|
|
179
|
+
// A side-effect-only import (`import './m'`) still forces evaluation but
|
|
180
|
+
// creates no local binding; a type-only clause creates no runtime binding
|
|
181
|
+
// at all (fully erased), so both correctly publish zero further operations.
|
|
182
|
+
if (!clause)
|
|
183
|
+
return { kind: 'operations', operations, edges };
|
|
184
|
+
if (clause.name) {
|
|
185
|
+
const pair = bindingPair(candidate, clause, clause.name, moduleEvaluateId);
|
|
186
|
+
operations.push(...pair.operations);
|
|
187
|
+
edges.push(...pair.edges);
|
|
188
|
+
}
|
|
189
|
+
const namedBindings = clause.namedBindings;
|
|
190
|
+
if (namedBindings && ts.isNamespaceImport(namedBindings)) {
|
|
191
|
+
// The namespace import's own binding IS the module namespace object.
|
|
192
|
+
const pair = bindingPair(candidate, namedBindings, namedBindings.name, moduleEvaluateId);
|
|
193
|
+
operations.push(...pair.operations);
|
|
194
|
+
edges.push(...pair.edges);
|
|
195
|
+
}
|
|
196
|
+
else if (namedBindings && ts.isNamedImports(namedBindings)) {
|
|
197
|
+
for (const specifier of namedBindings.elements) {
|
|
198
|
+
if (specifier.isTypeOnly)
|
|
199
|
+
continue;
|
|
200
|
+
const pair = bindingPair(candidate, specifier, specifier.name, moduleEvaluateId);
|
|
201
|
+
operations.push(...pair.operations);
|
|
202
|
+
edges.push(...pair.edges);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return { kind: 'operations', operations, edges };
|
|
206
|
+
};
|
|
207
|
+
const contributeExportDeclaration = (candidate, node) => {
|
|
208
|
+
if (node.isTypeOnly)
|
|
209
|
+
return { kind: 'operations', operations: [], edges: [] };
|
|
210
|
+
// Resolve and validate everything blocking-worthy before minting the
|
|
211
|
+
// deduplicated, side-effecting `module-evaluate` operation: a block
|
|
212
|
+
// discovered after that mint would leave a dangling reference for a
|
|
213
|
+
// sibling export candidate that already observed it as minted.
|
|
214
|
+
let moduleSymbol;
|
|
215
|
+
let moduleDeclaration = null;
|
|
216
|
+
if (node.moduleSpecifier) {
|
|
217
|
+
if (!ts.isStringLiteralLike(node.moduleSpecifier)) {
|
|
218
|
+
return asBlocked(candidate.id, 'declaration-lifecycle', 'non-literal module specifier on a static export is not modelled', null);
|
|
219
|
+
}
|
|
220
|
+
moduleSymbol = moduleSymbolOf(context.checker, node.moduleSpecifier);
|
|
221
|
+
if (!moduleSymbol) {
|
|
222
|
+
return asBlocked(candidate.id, 'declaration-lifecycle', 'export module specifier did not resolve to a checker module symbol', null);
|
|
223
|
+
}
|
|
224
|
+
moduleDeclaration = context.identities.declarationOfSymbol(moduleSymbol);
|
|
225
|
+
if (!moduleDeclaration) {
|
|
226
|
+
return asBlocked(candidate.id, 'declaration-lifecycle', 'resolved export module symbol has no checker declaration', null);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
const exportClause = node.exportClause;
|
|
230
|
+
if (!exportClause && !moduleSymbol) {
|
|
231
|
+
return asBlocked(candidate.id, 'declaration-lifecycle', 'export * requires a resolved module to enumerate', null);
|
|
232
|
+
}
|
|
233
|
+
const operations = [];
|
|
234
|
+
const edges = [];
|
|
235
|
+
let moduleEvaluateId = null;
|
|
236
|
+
if (moduleDeclaration) {
|
|
237
|
+
const evalResult = moduleEvaluateOperation(moduleDeclaration);
|
|
238
|
+
moduleEvaluateId = evalResult.id;
|
|
239
|
+
if (evalResult.operation)
|
|
240
|
+
operations.push(evalResult.operation);
|
|
241
|
+
}
|
|
242
|
+
if (!exportClause) {
|
|
243
|
+
// Guaranteed non-null: `!exportClause` implies `node.moduleSpecifier` was
|
|
244
|
+
// present (no bare `export *;` exists), so the resolution block above ran.
|
|
245
|
+
if (!moduleEvaluateId || !moduleSymbol) {
|
|
246
|
+
return asBlocked(candidate.id, 'declaration-lifecycle', 'export * requires a resolved module to enumerate', null);
|
|
247
|
+
}
|
|
248
|
+
const resolvedModuleEvaluateId = moduleEvaluateId;
|
|
249
|
+
// `export * from './m'`: every own-exported name but `default` becomes
|
|
250
|
+
// an export of this module too (GetExportedNames), with no local
|
|
251
|
+
// specifier node to anchor a binding to -- so the checker's exports list
|
|
252
|
+
// is the only source of the re-exported names, not this file's syntax.
|
|
253
|
+
for (const exported of context.checker.getExportsOfModule(moduleSymbol)) {
|
|
254
|
+
if (exported.getName() === 'default')
|
|
255
|
+
continue;
|
|
256
|
+
if (!denotesValue(context.checker, exported))
|
|
257
|
+
continue;
|
|
258
|
+
const targetDeclaration = context.identities.declarationOfSymbol(exported);
|
|
259
|
+
if (!targetDeclaration)
|
|
260
|
+
continue;
|
|
261
|
+
if (namesUninstantiatedGeneric(context.specializations, targetDeclaration))
|
|
262
|
+
continue;
|
|
263
|
+
const source = context.identities.nodeIdOf(node);
|
|
264
|
+
const declaration = context.identities.declarationIdOf(targetDeclaration);
|
|
265
|
+
// HOLDS, not stated: the re-exported binding's own value, read the
|
|
266
|
+
// same census-aware way every other declaration's value is
|
|
267
|
+
// (`context.types.valueTypeAt`, already the established path in
|
|
268
|
+
// `allocations.ts`/`class-lifecycle.ts`) rather than the checker's
|
|
269
|
+
// raw `getTypeOfSymbol`, which bypasses every producer census.
|
|
270
|
+
const valueType = context.types.valueTypeAt(targetDeclaration);
|
|
271
|
+
const linkId = mintOperationId(context.ordinals, source, 'declaration-lifecycle');
|
|
272
|
+
const linkOperation = buildOperation(linkId, candidate.caller, context.evaluationOrdinals.next(candidate.caller), 'module-link', declaration, [], normalCompletion, { readsMutableState: false, writesMutableState: true, allocates: false, callsUserCode: false }, [mintResult(linkId, 'reference', valueType)]);
|
|
273
|
+
const initId = mintOperationId(context.ordinals, source, 'declaration-lifecycle');
|
|
274
|
+
const initOperation = buildOperation(initId, candidate.caller, context.evaluationOrdinals.next(candidate.caller), 'initialize', declaration, [], normalCompletion, { readsMutableState: true, writesMutableState: false, allocates: false, callsUserCode: false }, [mintResult(initId, 'value', valueType)]);
|
|
275
|
+
operations.push(linkOperation, initOperation);
|
|
276
|
+
edges.push({ kind: 'evaluation', from: linkOperation.id, to: initOperation.id });
|
|
277
|
+
edges.push({ kind: 'evaluation', from: resolvedModuleEvaluateId, to: initOperation.id });
|
|
278
|
+
}
|
|
279
|
+
return { kind: 'operations', operations, edges };
|
|
280
|
+
}
|
|
281
|
+
if (ts.isNamespaceExport(exportClause)) {
|
|
282
|
+
// Grammar guarantees `export * as ns` always carries `from`, so
|
|
283
|
+
// `moduleEvaluateId` is set; failing closed instead of asserting it.
|
|
284
|
+
if (!moduleEvaluateId) {
|
|
285
|
+
return asBlocked(candidate.id, 'declaration-lifecycle', 'export * as ns requires a resolved source module', null);
|
|
286
|
+
}
|
|
287
|
+
const pair = bindingPair(candidate, exportClause, exportClause.name, moduleEvaluateId);
|
|
288
|
+
operations.push(...pair.operations);
|
|
289
|
+
edges.push(...pair.edges);
|
|
290
|
+
return { kind: 'operations', operations, edges };
|
|
291
|
+
}
|
|
292
|
+
for (const specifier of exportClause.elements) {
|
|
293
|
+
if (specifier.isTypeOnly)
|
|
294
|
+
continue;
|
|
295
|
+
if (moduleEvaluateId) {
|
|
296
|
+
const pair = bindingPair(candidate, specifier, specifier.name, moduleEvaluateId);
|
|
297
|
+
operations.push(...pair.operations);
|
|
298
|
+
edges.push(...pair.edges);
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
// A local export (`export { a }`, no `from`) republishes an existing
|
|
302
|
+
// local binding under this export name: no new module to evaluate or
|
|
303
|
+
// wait on, so only the export-name binding link applies, not a pair.
|
|
304
|
+
const localTargetSymbol = context.checker.getSymbolAtLocation(specifier.name);
|
|
305
|
+
const localTargetDeclaration = localTargetSymbol ? context.identities.declarationOfSymbol(localTargetSymbol) : null;
|
|
306
|
+
if (namesUninstantiatedGeneric(context.specializations, localTargetDeclaration))
|
|
307
|
+
continue;
|
|
308
|
+
const source = context.identities.nodeIdOf(specifier);
|
|
309
|
+
const declaration = context.identities.declarationIdOf(specifier);
|
|
310
|
+
const valueType = context.types.typeAt(specifier.name);
|
|
311
|
+
const linkId = mintOperationId(context.ordinals, source, 'declaration-lifecycle');
|
|
312
|
+
operations.push(buildOperation(linkId, candidate.caller, context.evaluationOrdinals.next(candidate.caller), 'module-link', declaration, [], normalCompletion, { readsMutableState: false, writesMutableState: true, allocates: false, callsUserCode: false }, [mintResult(linkId, 'reference', valueType)]));
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
return { kind: 'operations', operations, edges };
|
|
316
|
+
};
|
|
317
|
+
const contributeExportAssignment = (candidate, node) => {
|
|
318
|
+
const cited = citeExpressionResult(node.expression, context);
|
|
319
|
+
if (cited.kind === 'unmodelled')
|
|
320
|
+
return asBlocked(candidate.id, 'declaration-lifecycle', `export value expression ${cited.reason}`, null);
|
|
321
|
+
const source = candidate.id;
|
|
322
|
+
const declaration = context.identities.declarationIdOf(node);
|
|
323
|
+
const valueType = context.types.typeAt(node.expression);
|
|
324
|
+
const id = mintOperationId(context.ordinals, source, 'declaration-lifecycle');
|
|
325
|
+
// `export default expr` and TS's CJS-interop `export = expr` both bind one
|
|
326
|
+
// module-level value; distinguishing the two is a target/emission concern,
|
|
327
|
+
// not a semantic one this family's fixed event vocabulary needs to carry.
|
|
328
|
+
//
|
|
329
|
+
// This is minted as a `binding`/`initialize` operation, NOT a
|
|
330
|
+
// `declaration-lifecycle`/`module-link` one, even though census routes the
|
|
331
|
+
// `ts.ExportAssignment` candidate to this file's producer. The two are not
|
|
332
|
+
// interchangeable: `ir/lower.ts`'s `declaration-lifecycle` case is a
|
|
333
|
+
// deliberate no-op ("linking and initializing a module binding are not
|
|
334
|
+
// runtime steps... the value result an `initialize` publishes is
|
|
335
|
+
// deliberately left unregistered"), by design, because for every OTHER
|
|
336
|
+
// introduction that family models -- an import's own local binding, a
|
|
337
|
+
// re-export -- the value already has a real definition elsewhere: the
|
|
338
|
+
// binding this alias resolves to, once `identities.declarationOfSymbol`
|
|
339
|
+
// follows it, is introduced by an ordinary `binding`/`initialize`
|
|
340
|
+
// operation on the *original* declaration (`createBindingProducer`,
|
|
341
|
+
// `bindings.ts`, for a plain `export const x = ...`). `export default
|
|
342
|
+
// <expr>` (and `export = <expr>`) is the one export shape with no such
|
|
343
|
+
// separate declaration to fall back on -- the `ts.ExportAssignment` node
|
|
344
|
+
// *is* the original declaration -- so if this family's own operation for
|
|
345
|
+
// it lowers as a no-op too, the value is never stored anywhere: a reader
|
|
346
|
+
// in another file resolves (correctly) straight to this declaration's
|
|
347
|
+
// placement, finds a cell the emitter declared, and never finds a write.
|
|
348
|
+
// Minting an ordinary `BindingOperation` here instead reuses the exact,
|
|
349
|
+
// already-working `lowerBinding`/`initialize` path a plain top-level
|
|
350
|
+
// `const` relies on, so this declaration gets a real store the same way
|
|
351
|
+
// any other module-level value does. Nothing downstream ties an
|
|
352
|
+
// operation's `family` to which census family routed its candidate here
|
|
353
|
+
// (`contribution.ts`'s own doc comment: "producers cite each other across
|
|
354
|
+
// families"), and grepping every reader of the `'module-link'` event
|
|
355
|
+
// (`projection/bindings.ts`) shows it treats a `binding`/`initialize`
|
|
356
|
+
// introduction identically to a `declaration-lifecycle` one -- so no
|
|
357
|
+
// placement or ordering behavior changes for this declaration, only
|
|
358
|
+
// whether its value actually gets written.
|
|
359
|
+
const operation = {
|
|
360
|
+
id,
|
|
361
|
+
family: 'binding',
|
|
362
|
+
action: 'initialize',
|
|
363
|
+
declaration,
|
|
364
|
+
mutable: false,
|
|
365
|
+
temporalDeadZone: false,
|
|
366
|
+
caller: candidate.caller,
|
|
367
|
+
operands: [operand('initializer', 0, cited.source, valueType)],
|
|
368
|
+
results: [mintResult(id, 'value', valueType)],
|
|
369
|
+
completion: normalCompletion,
|
|
370
|
+
effects: { readsMutableState: false, writesMutableState: true, allocates: false, callsUserCode: false },
|
|
371
|
+
evaluationOrdinal: context.evaluationOrdinals.next(candidate.caller)
|
|
372
|
+
};
|
|
373
|
+
const edges = [];
|
|
374
|
+
const valueEdge = resultEdge(cited.source, id, 'initializer', 0);
|
|
375
|
+
if (valueEdge)
|
|
376
|
+
edges.push(valueEdge);
|
|
377
|
+
return { kind: 'operations', operations: [operation], edges };
|
|
378
|
+
};
|
|
379
|
+
const contribute = (candidate) => {
|
|
380
|
+
const { node } = candidate;
|
|
381
|
+
if (ts.isImportDeclaration(node))
|
|
382
|
+
return contributeImport(candidate, node);
|
|
383
|
+
if (ts.isExportDeclaration(node))
|
|
384
|
+
return contributeExportDeclaration(candidate, node);
|
|
385
|
+
if (ts.isExportAssignment(node))
|
|
386
|
+
return contributeExportAssignment(candidate, node);
|
|
387
|
+
return asBlocked(candidate.id, 'declaration-lifecycle', 'census produced a declaration-lifecycle candidate of an unmodelled node kind', null);
|
|
388
|
+
};
|
|
389
|
+
return { family: 'declaration-lifecycle', contribute };
|
|
390
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import type { SemanticResultId, StructuralTypeId } from '../../../identity/ids.js';
|
|
3
|
+
import type { OperandSource } from '../../model/operands.js';
|
|
4
|
+
import type { IdentityTable } from '../identities.js';
|
|
5
|
+
import type { FamilyProducer } from '../contribution.js';
|
|
6
|
+
import type { ProducerContext } from '../producer-context.js';
|
|
7
|
+
/**
|
|
8
|
+
* The result carrying the value a binding element finally receives.
|
|
9
|
+
*
|
|
10
|
+
* The binding family introduces the name, this family extracts the value, and
|
|
11
|
+
* neither may guess at the other's work -- so the two meet the way every other
|
|
12
|
+
* cross-family citation does: by recomputing the identity the other side
|
|
13
|
+
* independently mints. That recomputation is only sound because each element's
|
|
14
|
+
* operations are keyed on the *element's* own node, and because the ordinal is
|
|
15
|
+
* fixed by a property of the element rather than by its position in the walk: a
|
|
16
|
+
* defaulted element publishes its extraction first and its `default-value`
|
|
17
|
+
* second, and the second is the one the name is bound to.
|
|
18
|
+
*/
|
|
19
|
+
export declare const citeBoundElementValue: (element: ts.BindingElement, identities: IdentityTable) => OperandSource;
|
|
20
|
+
/**
|
|
21
|
+
* The EXTRACTION's result for a binding element -- always ordinal 0, whether or
|
|
22
|
+
* not the element is defaulted.
|
|
23
|
+
*
|
|
24
|
+
* `citeBoundElementValue` answers "what is the name bound to", which for a
|
|
25
|
+
* defaulted element is the `default-value` step. This answers "what did the
|
|
26
|
+
* pattern actually read out of the source", which is what that step tests for
|
|
27
|
+
* absence and what `gating.ts` names as the guard over the initializer. Two
|
|
28
|
+
* questions, two ordinals, recomputed the same way rather than looked up.
|
|
29
|
+
*/
|
|
30
|
+
export declare const citeExtractedElementValue: (element: ts.BindingElement, identities: IdentityTable) => SemanticResultId;
|
|
31
|
+
/**
|
|
32
|
+
* The type an object rest element and the binding it initializes must share.
|
|
33
|
+
*
|
|
34
|
+
* TypeScript narrows `Document` through a predicate such as `value is
|
|
35
|
+
* DBRefLike` and then types `{ known, ...rest }` as a closed `{}` when every
|
|
36
|
+
* named member of the predicate was excluded. That answer loses the index
|
|
37
|
+
* signature the runtime object still has: CopyDataProperties must retain all
|
|
38
|
+
* of the source's other keys. A binding read physically cites its declaration's
|
|
39
|
+
* published cell, so recover that storage type and preserve it when it is a
|
|
40
|
+
* members-free string dictionary. Both producer families call this function;
|
|
41
|
+
* otherwise the extraction would publish a dictionary and the introduced name
|
|
42
|
+
* would immediately demand a dictionary-to-empty-record conversion.
|
|
43
|
+
*/
|
|
44
|
+
export declare const boundElementType: (element: ts.BindingElement, context: ProducerContext) => StructuralTypeId;
|
|
45
|
+
export declare const createDestructuringProducer: (context: ProducerContext) => FamilyProducer;
|