@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,99 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { implementationSignatureOf } from './structural-declarations.js';
|
|
3
|
+
/**
|
|
4
|
+
* What a call to an OVERLOAD SET whose one implementation is a GENERATOR
|
|
5
|
+
* physically produces.
|
|
6
|
+
*
|
|
7
|
+
* `implementationSignatureOf` (`structural-declarations.ts`) already states the
|
|
8
|
+
* rule for the callee: an overload set declares several ways to CALL a name and
|
|
9
|
+
* exactly one body, so the one signature that physically exists is the
|
|
10
|
+
* implementation's, and `valueTypeAt` publishes the function object from it.
|
|
11
|
+
* The CALL's result was left out of that, and for a generator the two answers
|
|
12
|
+
* are not interchangeable: a generator's body returns the generator object
|
|
13
|
+
* `EvaluateGeneratorBody` creates, which this compiler carries as `iterator`,
|
|
14
|
+
* while the overload signature above it is free to spell that object as any
|
|
15
|
+
* interface it satisfies. node-compat's `URLSearchParams`
|
|
16
|
+
* (`runtime/node/globals.ts`) spells it `IterableIterator<string>` over
|
|
17
|
+
* `*entries(): Generator<string>`, and an interface is a `native-record-ref` --
|
|
18
|
+
* so the call site asked for a record result from a callee whose convention
|
|
19
|
+
* returns an iterator, and cpp refused the conversion.
|
|
20
|
+
*
|
|
21
|
+
* BOTH halves of an invocation read this, which is why it lives in a module of
|
|
22
|
+
* its own rather than beside either: `structural.ts`'s `typeAt` publishes the
|
|
23
|
+
* call expression's own result through it, and `producers/invocations.ts`'s
|
|
24
|
+
* `buildSelectedSignature` publishes the selected signature's return type
|
|
25
|
+
* through it. Those two are compared by `validateInvocationResult`, which fails
|
|
26
|
+
* the producer closed on any disagreement it has no declared divergence for --
|
|
27
|
+
* correctly, because a producer that answers a question twice has published two
|
|
28
|
+
* answers for one operation. There is no divergence to declare here and there
|
|
29
|
+
* should not be one: this is not a case where the checker and this compiler
|
|
30
|
+
* know different things, it is one physical return type that both sides must
|
|
31
|
+
* read from the same place.
|
|
32
|
+
*
|
|
33
|
+
* Narrow on purpose, to the one disagreement a body can have with its own
|
|
34
|
+
* overloads that the overloads cannot express. The ordinary overload idiom --
|
|
35
|
+
* `f(x: string): string; f(x: number): number; f(x: any): any {...}` -- is the
|
|
36
|
+
* exact opposite case: there the implementation's `any` is the widened frame
|
|
37
|
+
* the several signatures share, and preferring it would box every call result
|
|
38
|
+
* in the program. A generator body states no such widening; `asteriskToken` is
|
|
39
|
+
* the whole gate.
|
|
40
|
+
*
|
|
41
|
+
* A generic implementation is refused rather than guessed at: its own return
|
|
42
|
+
* type still names its signature's type parameters, and this has no call-site
|
|
43
|
+
* instantiation to bind them with, so answering would trade a wrong carrier for
|
|
44
|
+
* an unresolved one. A call anywhere in an OPTIONAL CHAIN is refused for the
|
|
45
|
+
* mirror reason `presentReturnTypeOf` exists: `a?.b()` really is `T |
|
|
46
|
+
* undefined`, and that `undefined` is a fact about the call expression rather
|
|
47
|
+
* than about the callee, so replacing the whole expression's type with the
|
|
48
|
+
* callee's return would strip the absent branch the guard was written for.
|
|
49
|
+
* `ts.isOptionalChain` rather than the call's own `questionDotToken`, because
|
|
50
|
+
* `a?.b()` carries the `?.` on the property access and every later link of the
|
|
51
|
+
* chain publishes the same short circuit.
|
|
52
|
+
*
|
|
53
|
+
* Asked of the callee's SYMBOL rather than of `getResolvedSignature`, which is
|
|
54
|
+
* the answer this wants and the one thing that must not be asked from inside
|
|
55
|
+
* `typeAt`: `structural-callable.ts`'s own comment records resolving every
|
|
56
|
+
* arbitrary call there recursively instantiating hono's conditional route types
|
|
57
|
+
* until the host stack overflowed. Nothing is lost by not asking -- TypeScript
|
|
58
|
+
* never resolves a call to the implementation signature while overloads exist,
|
|
59
|
+
* so a symbol carrying both shapes resolves to a bodiless overload at every call
|
|
60
|
+
* site by construction.
|
|
61
|
+
*/
|
|
62
|
+
export const physicalGeneratorOverloadResultAt = (checker, node) => {
|
|
63
|
+
if (!ts.isCallExpression(node) || ts.isOptionalChain(node))
|
|
64
|
+
return null;
|
|
65
|
+
const callee = node.expression;
|
|
66
|
+
if (!ts.isIdentifier(callee) && !ts.isPropertyAccessExpression(callee))
|
|
67
|
+
return null;
|
|
68
|
+
const symbol = checker.getSymbolAtLocation(ts.isIdentifier(callee) ? callee : callee.name);
|
|
69
|
+
return physicalGeneratorOverloadReturnOf(checker, symbol?.getDeclarations() ?? []);
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* The same answer for a MEMBER SYMBOL rather than a call site.
|
|
73
|
+
*
|
|
74
|
+
* `producers/iteration-yield.ts`'s `iteratorRecordTypesOf` reads what a
|
|
75
|
+
* resolved `[Symbol.iterator]` returns straight off the member symbol's own
|
|
76
|
+
* callable type, and TypeScript shows an overload set's bodiless signatures
|
|
77
|
+
* there and never its implementation -- so `*[Symbol.iterator](): Generator<T>`
|
|
78
|
+
* behind an `[Symbol.iterator](): IterableIterator<T>` overload read back as
|
|
79
|
+
* the interface. `producers/protocol.ts`'s `generatorRecordTypeOf` then failed
|
|
80
|
+
* its `isGeneratorType` test and published the synthetic ECMA-262 `{ next() }`
|
|
81
|
+
* record for a method whose body hands back a native cursor, which is the
|
|
82
|
+
* `method "..." body convention cannot fill its published bound-method
|
|
83
|
+
* convention` refusal (`emit-class-properties.ts`) -- the same one fact
|
|
84
|
+
* disagreeing with itself, one authority over from the call result above.
|
|
85
|
+
*/
|
|
86
|
+
export const physicalGeneratorOverloadReturnOf = (checker, declarations) => {
|
|
87
|
+
const generator = declarations.find((declaration) => (ts.isMethodDeclaration(declaration) || ts.isFunctionDeclaration(declaration)) &&
|
|
88
|
+
declaration.asteriskToken !== undefined &&
|
|
89
|
+
declaration.body !== undefined);
|
|
90
|
+
if (!generator)
|
|
91
|
+
return null;
|
|
92
|
+
// `implementationSignatureOf` is what makes this an OVERLOAD set rather than
|
|
93
|
+
// a lone generator: it answers only when some declaration of the same symbol
|
|
94
|
+
// is bodiless, and a lone generator's call result already is its own.
|
|
95
|
+
const implementation = implementationSignatureOf(checker, generator);
|
|
96
|
+
if (!implementation || (implementation.getTypeParameters()?.length ?? 0) > 0)
|
|
97
|
+
return null;
|
|
98
|
+
return checker.getReturnTypeOfSignature(implementation);
|
|
99
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import type { StructuralTypeId } from '../../identity/ids.js';
|
|
3
|
+
import type { ProducerContext } from './producer-context.js';
|
|
4
|
+
type AbsenceContext = Pick<ProducerContext, 'checker' | 'identities' | 'table' | 'globalHostMutationTaint' | 'isStandardLibraryDeclaration'>;
|
|
5
|
+
/**
|
|
6
|
+
* A primitive wrapper has no own extension storage. A missing named member
|
|
7
|
+
* therefore returns undefined only while its intrinsic prototype chain is
|
|
8
|
+
* authenticated and unmodified. Missing checker properties alone do not prove
|
|
9
|
+
* this: a program can install a property through a prototype alias.
|
|
10
|
+
*/
|
|
11
|
+
export declare const primitivePropertyIsAbsent: (receiver: ts.Expression, receiverType: StructuralTypeId, name: string, context: AbsenceContext) => boolean;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { objectPrototypeMemberNames } from '../../representation/record-fields.js';
|
|
2
|
+
import { intactIntrinsicPrototypeKeysType } from './intrinsic-prototype.js';
|
|
3
|
+
/**
|
|
4
|
+
* A primitive wrapper has no own extension storage. A missing named member
|
|
5
|
+
* therefore returns undefined only while its intrinsic prototype chain is
|
|
6
|
+
* authenticated and unmodified. Missing checker properties alone do not prove
|
|
7
|
+
* this: a program can install a property through a prototype alias.
|
|
8
|
+
*/
|
|
9
|
+
export const primitivePropertyIsAbsent = (receiver, receiverType, name, context) => {
|
|
10
|
+
const { checker, globalHostMutationTaint: mutations } = context;
|
|
11
|
+
if (objectPrototypeMemberNames.has(name))
|
|
12
|
+
return false;
|
|
13
|
+
if (mutations.has('*') || !context.isStandardLibraryDeclaration)
|
|
14
|
+
return false;
|
|
15
|
+
// Read the same canonical receiver type that the property operation uses.
|
|
16
|
+
// rawTypeAt precedes structural rules such as local-union, so asking it
|
|
17
|
+
// here could recover checker `any` after those rules already proved the
|
|
18
|
+
// local holds only primitive configuration values.
|
|
19
|
+
const domains = new Set();
|
|
20
|
+
const collect = (id) => {
|
|
21
|
+
const shape = context.table.get(id).shape;
|
|
22
|
+
if (shape.kind === 'union')
|
|
23
|
+
return shape.members.every(collect);
|
|
24
|
+
if (shape.kind !== 'primitive' && shape.kind !== 'literal')
|
|
25
|
+
return false;
|
|
26
|
+
switch (shape.primitive) {
|
|
27
|
+
case 'undefined':
|
|
28
|
+
case 'null':
|
|
29
|
+
return true; // The proof describes normal completion, not throws.
|
|
30
|
+
case 'string':
|
|
31
|
+
case 'number':
|
|
32
|
+
case 'boolean':
|
|
33
|
+
case 'bigint':
|
|
34
|
+
case 'symbol':
|
|
35
|
+
domains.add(shape.primitive);
|
|
36
|
+
return true;
|
|
37
|
+
default:
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
if (!collect(receiverType) || domains.size === 0)
|
|
42
|
+
return false;
|
|
43
|
+
// The proof reads exactly one key from each prototype on the chain.
|
|
44
|
+
const intactPrototypeType = (intrinsic) => intactIntrinsicPrototypeKeysType(context, intrinsic, { names: [name] }, receiver);
|
|
45
|
+
const object = intactPrototypeType('Object');
|
|
46
|
+
if (!object || checker.getPropertyOfType(object, name))
|
|
47
|
+
return false;
|
|
48
|
+
const wrappers = { string: 'String', number: 'Number', boolean: 'Boolean', bigint: 'BigInt', symbol: 'Symbol' };
|
|
49
|
+
return [...domains].every((domain) => {
|
|
50
|
+
// Indexed string characters are own properties even though the checker
|
|
51
|
+
// does not publish an individual symbol for each possible character.
|
|
52
|
+
if (domain === 'string' && /^\d+$/.test(name))
|
|
53
|
+
return false;
|
|
54
|
+
const intrinsic = wrappers[domain];
|
|
55
|
+
// A lexical type alias named String/Number does not replace the runtime
|
|
56
|
+
// wrapper. Read the prototype of the authenticated VALUE declaration.
|
|
57
|
+
const prototype = intactPrototypeType(intrinsic);
|
|
58
|
+
return prototype !== null && !checker.getPropertyOfType(prototype, name);
|
|
59
|
+
});
|
|
60
|
+
};
|
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
import type { AbsentGlobalCensus } from './absent-globals.js';
|
|
2
|
+
import type { ArgumentsObjectCensus } from './arguments-objects.js';
|
|
3
|
+
import type { NamespacePathCensus } from './namespace-paths.js';
|
|
4
|
+
import type { CollectionBindingCensus } from './collection-bindings.js';
|
|
5
|
+
import type { ObjectBagCensus } from './object-bag-bindings.js';
|
|
6
|
+
import type { ParameterBindingCensus } from './parameter-bindings.js';
|
|
7
|
+
import type { UnresolvableNameCensus } from './unresolvable-names.js';
|
|
8
|
+
import type { GlobalHostMutationTaint } from './global-host-mutations.js';
|
|
9
|
+
import type { PrototypeReparentingCensus } from '../prototype-reparenting.js';
|
|
10
|
+
import type ts from 'typescript';
|
|
11
|
+
import type { DeclarationId, StructuralTypeId } from '../../identity/ids.js';
|
|
12
|
+
import type { StructuralTypeTable } from '../model/structural-type-table.js';
|
|
13
|
+
import type { HostProtocolBinding } from '../host-protocols.js';
|
|
14
|
+
import type { KeyedCollectionFamily } from '../../representation/policies.js';
|
|
15
|
+
import type { IdentityTable, SpecializationPath } from './identities.js';
|
|
16
|
+
import type { SpecializationCensus } from './specialization.js';
|
|
17
|
+
import type { StructuralMapper } from './structural.js';
|
|
18
|
+
import type { EvaluationOrdinals, OrdinalCounter } from './producers/mint.js';
|
|
19
|
+
import type { ReturnBindingCensus } from './return-bindings.js';
|
|
20
|
+
import type { ReassignedBindingCensus } from './reassigned-bindings.js';
|
|
21
|
+
import type { HostMethodBinding } from '../host-methods.js';
|
|
22
|
+
import type { CommonJsRequireCensus } from './commonjs-require.js';
|
|
23
|
+
import type { CommonJsModuleRecordCensus } from './commonjs-module-record.js';
|
|
24
|
+
/**
|
|
25
|
+
* What every family producer is given.
|
|
26
|
+
*
|
|
27
|
+
* The context is the complete set of questions a producer may ask. It is
|
|
28
|
+
* deliberately small: a producer that needs something not in here needs a new
|
|
29
|
+
* primitive, and having to widen this interface is the signal that says so.
|
|
30
|
+
*
|
|
31
|
+
* Both counters are shared across every producer on purpose, and they answer
|
|
32
|
+
* different questions. `ordinals` disambiguates the nth operation minted from
|
|
33
|
+
* one (node, family) pair -- it is how a compound assignment's get and set share
|
|
34
|
+
* one node and still get two identities.
|
|
35
|
+
*
|
|
36
|
+
* `evaluationOrdinals` is deliberately *not* the general answer to "when does
|
|
37
|
+
* this run": that is `CensusCandidate.evaluationOrdinal`, because only the walk
|
|
38
|
+
* sees document order, and a counter incremented as producers publish records
|
|
39
|
+
* which family ran first, not which operation runs first. This counter covers
|
|
40
|
+
* the one case the walk cannot: an operation a producer places in a caller it
|
|
41
|
+
* synthesized itself -- a class body, a module region -- where the census
|
|
42
|
+
* assigned no candidate and so no position exists to read.
|
|
43
|
+
*
|
|
44
|
+
* Either counter kept per producer would hand two different operations the same
|
|
45
|
+
* identity as soon as two families published for one caller, silently merging
|
|
46
|
+
* them into one.
|
|
47
|
+
*/
|
|
48
|
+
export interface ProducerContext {
|
|
49
|
+
/** Declaration provenance from the one ts.Program; callers must not infer library ownership from names or paths. */
|
|
50
|
+
readonly isStandardLibraryDeclaration?: (declaration: ts.Declaration) => boolean;
|
|
51
|
+
readonly hostMethodOf?: (node: ts.PropertyAccessExpression | ts.ElementAccessExpression) => HostMethodBinding | null;
|
|
52
|
+
/**
|
|
53
|
+
* The finite set of property-name texts a computed key can evaluate to,
|
|
54
|
+
* proven closed forward from every closed caller
|
|
55
|
+
* (`normalize/flow/computed-key-set.ts`'s `computedKeySetOf`) and verified
|
|
56
|
+
* against the SEALED host-mutation census's own obligations -- never the
|
|
57
|
+
* optimistic, mid-fixed-point answer that census's own re-run loop takes as
|
|
58
|
+
* a working assumption. `null` means "not proven" (the key stays fully
|
|
59
|
+
* dynamic), which a caller must treat exactly as if this hook did not
|
|
60
|
+
* exist: this is an upper-bound narrowing, and publishing an unproven guess
|
|
61
|
+
* to make a boxing number move would be the exact defect this field exists
|
|
62
|
+
* to avoid. See `producers/properties.ts`'s one call site.
|
|
63
|
+
*/
|
|
64
|
+
readonly computedKeyTextsOf?: (key: ts.Expression) => readonly string[] | null;
|
|
65
|
+
/** A settled proof that a numeric element read misses every reachable class-family slot. */
|
|
66
|
+
readonly numericIndexAbsenceProvenAt?: (receiver: ts.Expression, key: ts.Expression) => boolean;
|
|
67
|
+
/** A settled proof that a NAMED property read misses every instance of a closed object-literal record -- see `closedLiteralMemberAbsenceProven`. */
|
|
68
|
+
readonly closedLiteralMemberAbsenceProvenAt?: (receiver: ts.Expression, name: string) => boolean;
|
|
69
|
+
readonly checker: ts.TypeChecker;
|
|
70
|
+
readonly identities: IdentityTable;
|
|
71
|
+
readonly types: StructuralMapper;
|
|
72
|
+
/**
|
|
73
|
+
* Whether EVERY file in this build evaluates strict regardless of its own
|
|
74
|
+
* syntax. That is `alwaysStrict` (implied by `strict`), which makes tsc parse
|
|
75
|
+
* strict and emit a `'use strict'` prologue into each file -- and nothing
|
|
76
|
+
* else. The `module` setting is NOT this fact: under `module: ESNext` a file
|
|
77
|
+
* with no import and no export is a Script, not a Module, and is strict only
|
|
78
|
+
* if `alwaysStrict` or a prologue says so. `isStrictContext` decides the
|
|
79
|
+
* per-file half.
|
|
80
|
+
*/
|
|
81
|
+
readonly buildIsStrict: boolean;
|
|
82
|
+
readonly table: StructuralTypeTable;
|
|
83
|
+
readonly ordinals: OrdinalCounter;
|
|
84
|
+
readonly evaluationOrdinals: EvaluationOrdinals;
|
|
85
|
+
/**
|
|
86
|
+
* The specialization this producer instance is running under -- the same
|
|
87
|
+
* value `identities`/`types` were already narrowed to
|
|
88
|
+
* (`identities.forSpecialization(path)`/`types.forSpecialization(path)`,
|
|
89
|
+
* `frontend.ts`'s own per-candidate rebind), exposed as data because one
|
|
90
|
+
* question needs the raw path and not just a view already bound to it:
|
|
91
|
+
* `identities.prefixFor(declaration, path)`, asked about a declaration
|
|
92
|
+
* that is NOT the one this producer instance's candidate belongs to.
|
|
93
|
+
*
|
|
94
|
+
* `producers/shared.ts`'s `resolvedCalleeSignatureType` is the one caller
|
|
95
|
+
* today. A callee's own declared type is a property of the CALLEE's
|
|
96
|
+
* declaration, not the caller's -- resolving it through the caller's
|
|
97
|
+
* `types` unfiltered mints a nominal class reached inside it under the
|
|
98
|
+
* caller's own specialization frame whenever that class happens to be the
|
|
99
|
+
* SAME declaration as the frame's owner, purely because `identities.ts`'s
|
|
100
|
+
* `contains` is (correctly, and by design -- see `structural.ts`'s
|
|
101
|
+
* `isSelfReference`) self-inclusive. `parseBody(this, options)` inside
|
|
102
|
+
* `HonoRequest.parseBody`'s own body is the concrete case: `parseBody`'s
|
|
103
|
+
* declared parameter type names `HonoRequest`, which is not `HonoRequest`'s
|
|
104
|
+
* own body reaching itself, but `body.ts`'s unrelated parameter type
|
|
105
|
+
* happening to collide in NAME with the enclosing method's class while
|
|
106
|
+
* `this` walk is inside `HonoRequest`'s copy 0 -- and it must not mint
|
|
107
|
+
* `HonoRequest@0` for that reason alone.
|
|
108
|
+
*
|
|
109
|
+
* `producers/invocations.ts`'s `buildSelectedSignature` tried the same
|
|
110
|
+
* narrowing for a `SelectedSignature`'s `thisParameter`/`parameters`/
|
|
111
|
+
* `returnType` and it was reverted: `returnType` there must stay in
|
|
112
|
+
* lockstep with the call EXPRESSION's own separately-computed result type
|
|
113
|
+
* (`context.types.typeAt(node)` at that file's own call-expression
|
|
114
|
+
* producer), and narrowing only one of the two authorities produced a
|
|
115
|
+
* NEW disagreement `validateInvocationResult` correctly caught --
|
|
116
|
+
* one app's `index.tsx` stopped certifying. Do not reapply that
|
|
117
|
+
* change without also reconciling the invocation-result side.
|
|
118
|
+
*
|
|
119
|
+
* The deeper diagnosis, recorded for whoever reconciles it: the question
|
|
120
|
+
* `buildSelectedSignature` needs to ask is not "does the declaration sit
|
|
121
|
+
* inside the caller's frame" (what `prefixFor` alone answers). A resolved
|
|
122
|
+
* signature's RETURN type can carry real, call-dependent generic
|
|
123
|
+
* substitution that this collapse-to-canonical narrowing has no way to
|
|
124
|
+
* tell apart from the `HonoRequest.parseBody`-style name collision above.
|
|
125
|
+
* `hono-base.ts`'s `Object.assign(this, optionsWithoutStrict)`
|
|
126
|
+
* (`Object.assign<T, U>`, `T`/`U` inferred from the call's own arguments)
|
|
127
|
+
* and `this.router.match(method, path)` (`Router<T>.match`, `T` fixed by
|
|
128
|
+
* the RECEIVER `this.router`'s own concrete instantiation, not by
|
|
129
|
+
* anything `match`'s declaration itself states) are both cases where the
|
|
130
|
+
* substituted type arguments originate OUTSIDE the callee's declaration
|
|
131
|
+
* -- from the call site's arguments or receiver -- so interning the
|
|
132
|
+
* result through the callee's canonical frame mints a fresh identity for
|
|
133
|
+
* a class the caller's own frame already has a name for, instead of
|
|
134
|
+
* reusing it: the same disagreement shape as that regression, by a
|
|
135
|
+
* different route. The `HonoRequest.parseBody` case this field's own
|
|
136
|
+
* fix handles carries no substitution at all -- `HonoRequest | Request`
|
|
137
|
+
* is a plain, unconditional union annotation, not a generic instantiation
|
|
138
|
+
* -- which is exactly why narrowing is safe for a callee's own VALUE type
|
|
139
|
+
* (`resolvedCalleeSignatureType`'s `plain`) but is not, in general, safe
|
|
140
|
+
* for a RETURN type that a real substitution touched. A correct fix would
|
|
141
|
+
* have to tell "this signature was substituted from the call site" apart
|
|
142
|
+
* from "this declaration merely collides in name," not assume the second
|
|
143
|
+
* whenever `prefixFor` collapses -- and until someone builds and measures
|
|
144
|
+
* that test, `returnType` (and, by the same argument, any parameter type
|
|
145
|
+
* a real substitution reaches) should keep resolving through the
|
|
146
|
+
* caller's own `types`, unfiltered, exactly as this field's `path` was
|
|
147
|
+
* never threaded into `buildSelectedSignature` to begin with. (Verified
|
|
148
|
+
* 2026-09-03: on a fresh build of the live tree, `hono-base.ts:171`/`:419`
|
|
149
|
+
* raised zero producer failures, and `producers/invocations.ts` carried no
|
|
150
|
+
* uncommitted change -- the two disagreements this paragraph describes as
|
|
151
|
+
* a HAZARD were never actually observed at HEAD. The hypothesis, unconfirmed,
|
|
152
|
+
* is that `resolvedCalleeSignatureType`'s own fix above closed them as a
|
|
153
|
+
* side effect, by making the callee expression's own interning agree with
|
|
154
|
+
* the invocation-result side it used to diverge from. The reasoning above
|
|
155
|
+
* still holds as the reason not to reapply the `buildSelectedSignature`
|
|
156
|
+
* narrowing blind; it no longer describes an active symptom.)
|
|
157
|
+
*/
|
|
158
|
+
readonly path: SpecializationPath;
|
|
159
|
+
/**
|
|
160
|
+
* The whole-program census of which declarations are generic and what each
|
|
161
|
+
* is instantiated at. Whole-program by construction -- which declarations
|
|
162
|
+
* are generic and how many distinct type-argument tuples they are called
|
|
163
|
+
* with is a fact about the entire program, not about one copy of it -- so,
|
|
164
|
+
* unlike `identities`/`types`, this is never re-derived per specialization
|
|
165
|
+
* path; every producer instance, in every copy, shares the one census.
|
|
166
|
+
*/
|
|
167
|
+
readonly specializations: SpecializationCensus;
|
|
168
|
+
/**
|
|
169
|
+
* The ambient host-protocol census (`semantics/host-protocols.ts`): which
|
|
170
|
+
* declared types this program's own declarations say a host owns.
|
|
171
|
+
*
|
|
172
|
+
* Populated before any producer runs (`frontend.ts` calls
|
|
173
|
+
* `hostProtocolBindings`/`ambientHostBindings` before `normalizeProgram`),
|
|
174
|
+
* so every producer sees the complete, sealed census -- never a partial one
|
|
175
|
+
* that would depend on walk order. Needed by `calleeAwareTypeAt`
|
|
176
|
+
* (`producers/shared.ts`): a bound declaration's protocol identity must
|
|
177
|
+
* survive being read as a call's callee, the same way it survives being
|
|
178
|
+
* read anywhere else, or the callee and a plain member-access read of the
|
|
179
|
+
* same declaration select two representations for one cell.
|
|
180
|
+
*/
|
|
181
|
+
readonly hostProtocols: ReadonlyMap<DeclarationId, HostProtocolBinding>;
|
|
182
|
+
/** Ambient singleton bindings authenticated by complete host declaration identity. */
|
|
183
|
+
readonly hostSingletonBindings: ReadonlySet<DeclarationId>;
|
|
184
|
+
/** Ambient namespace roots authenticated by complete host declaration identity. */
|
|
185
|
+
readonly hostNamespaceBindings: ReadonlySet<DeclarationId>;
|
|
186
|
+
/** Host-global properties whose direct binding identity is invalidated by a whole-program write/delete/definition. */
|
|
187
|
+
readonly globalHostMutationTaint: GlobalHostMutationTaint;
|
|
188
|
+
/** The `Object.setPrototypeOf(C.prototype, B.prototype)` calls modelled as `C` inheriting from `B`. */
|
|
189
|
+
readonly prototypeReparentings: PrototypeReparentingCensus;
|
|
190
|
+
/**
|
|
191
|
+
* The structural types `--dynamic-fallback` boxes, sealed before any
|
|
192
|
+
* producer runs (`frontend.ts`'s `dynamicFallbackTypes`).
|
|
193
|
+
*
|
|
194
|
+
* Empty without the flag, which is the only state most producers ever see.
|
|
195
|
+
* It is here for the guards whose PREMISE is the native carrier: an instance
|
|
196
|
+
* of a pre-`class` constructor function has no prototype chain -- unless
|
|
197
|
+
* `prototypeMutatedConstructorTypes` marked it, in which case the instance
|
|
198
|
+
* is a real `DynamicObject` whose chain `Value::construct` links, and a
|
|
199
|
+
* prototype member read finds exactly what the language says it finds. A
|
|
200
|
+
* guard that fires there would refuse a capability this program HAS.
|
|
201
|
+
*/
|
|
202
|
+
readonly dynamicFallbackTypes: ReadonlySet<StructuralTypeId>;
|
|
203
|
+
/** Checker-authenticated CommonJS wrapper declarations. */
|
|
204
|
+
readonly commonJsBindings: ReadonlyMap<DeclarationId, 'require' | 'exports' | 'module'>;
|
|
205
|
+
/** Reserved wrapper declarations that failed exact host provenance verification. */
|
|
206
|
+
readonly commonJsProvenanceFailures: ReadonlySet<DeclarationId>;
|
|
207
|
+
/** The shared snapshot proof used by both program discovery and CommonJS invocation admission. */
|
|
208
|
+
readonly commonJsRequire: CommonJsRequireCensus;
|
|
209
|
+
/** Source-local proof for the one CommonJS record shape eligible for native lowering. */
|
|
210
|
+
readonly commonJsModuleRecords: CommonJsModuleRecordCensus;
|
|
211
|
+
/** A host build's exact loader-spelling to canonical builtin-registry mapping. */
|
|
212
|
+
readonly builtinModuleNameOf: (specifier: string) => string | null;
|
|
213
|
+
/** The host-stated implementation source for one canonical builtin registry name. */
|
|
214
|
+
readonly builtinModuleSourceOf: (name: string) => string | null;
|
|
215
|
+
/** The Program host's authoritative runtime-module resolver for static CommonJS specifiers. */
|
|
216
|
+
readonly runtimeModuleTargetOf: (specifier: string, containingFile: string, mode: 'import' | 'require') => string | null;
|
|
217
|
+
/** The Program's canonical source-file object for that resolver's target path. */
|
|
218
|
+
readonly sourceFileOf: (fileName: string) => ts.SourceFile | null;
|
|
219
|
+
/**
|
|
220
|
+
* Which ambient globals an installed host declares it does NOT provide.
|
|
221
|
+
*
|
|
222
|
+
* Read by `contributeVariableDeclaration` for one question: whether to mint
|
|
223
|
+
* an EXTERNAL binding. An ambient declaration is external because some host
|
|
224
|
+
* defines it, and a host that has said it does not is exactly the case where
|
|
225
|
+
* that stops being true -- emitting `extern` for it declares a symbol no
|
|
226
|
+
* object file defines, which compiles and never links.
|
|
227
|
+
*
|
|
228
|
+
* The same census the structural mapper answers the value's TYPE from, shared
|
|
229
|
+
* by reference rather than re-derived, so the cell's storage class and its
|
|
230
|
+
* carrier can never disagree about whether the value is there.
|
|
231
|
+
*/
|
|
232
|
+
readonly absentGlobals: AbsentGlobalCensus;
|
|
233
|
+
/**
|
|
234
|
+
* Which identifiers are the magic `arguments` binding, and the shape of
|
|
235
|
+
* each one's value (`normalize/arguments-objects.ts`).
|
|
236
|
+
*
|
|
237
|
+
* Two readers that must agree, which is why it is a census threaded from
|
|
238
|
+
* the frontend rather than a checker question asked twice: the reference
|
|
239
|
+
* producer PUBLISHES an `arguments` site's value from it, and
|
|
240
|
+
* `citeExpressionResult` PREDICTS the result that publication carries. A
|
|
241
|
+
* disagreement between the two is not an error anywhere -- it is a withheld
|
|
242
|
+
* citation, which silently takes the whole enclosing function's operations
|
|
243
|
+
* with it.
|
|
244
|
+
*/
|
|
245
|
+
readonly argumentsObjects: ArgumentsObjectCensus;
|
|
246
|
+
/**
|
|
247
|
+
* Which value-position names resolve to no binding at all
|
|
248
|
+
* (`normalize/unresolvable-names.ts`).
|
|
249
|
+
*
|
|
250
|
+
* The same two-readers-must-agree shape as `argumentsObjects` directly
|
|
251
|
+
* above, and threaded for the same reason: the reference producer PUBLISHES
|
|
252
|
+
* an unresolvable name's value and `citeExpressionResult` PREDICTS it, and a
|
|
253
|
+
* disagreement is a silent withholding rather than an error.
|
|
254
|
+
*/
|
|
255
|
+
readonly unresolvableNames: UnresolvableNameCensus;
|
|
256
|
+
/**
|
|
257
|
+
* Which module-local `function`/`class` bindings their declaring file
|
|
258
|
+
* writes to (`normalize/reassigned-bindings.ts`), walked once per file.
|
|
259
|
+
* The invocation producer reads it at every bare-identifier call to grant
|
|
260
|
+
* or withhold an `exact` target.
|
|
261
|
+
*/
|
|
262
|
+
readonly reassignedBindings: ReassignedBindingCensus;
|
|
263
|
+
/**
|
|
264
|
+
* Which property accesses are source-namespace paths (`Debug.log`) or
|
|
265
|
+
* namespace-qualified members (`Debug.assert`) -- `namespace-paths.ts`. The
|
|
266
|
+
* census, the reference producer, the write producers and the citation
|
|
267
|
+
* rule all read this one answer.
|
|
268
|
+
*/
|
|
269
|
+
readonly namespacePaths: NamespacePathCensus;
|
|
270
|
+
/**
|
|
271
|
+
* Which declarations are the standard `Map`/`Set`/`WeakMap`/`WeakSet`
|
|
272
|
+
* interfaces (`semantics/host-protocols.ts`'s
|
|
273
|
+
* `keyedCollectionDeclarationsOf`).
|
|
274
|
+
*
|
|
275
|
+
* Read by the iteration producers to decide whether a `for`-`of` source
|
|
276
|
+
* takes the native-cursor path -- the same question `isPlainArrayType`
|
|
277
|
+
* answers for an array, asked of a shape whose answer is a declaration
|
|
278
|
+
* identity rather than a shape kind. It has to come from the frontend
|
|
279
|
+
* rather than be re-resolved here for the reason every identity in this
|
|
280
|
+
* compiler is threaded rather than recomputed: `representation/derive.ts`
|
|
281
|
+
* selects the collection CARRIER from this same census, and a producer that
|
|
282
|
+
* resolved `Set` independently could skip the `@@iterator` lookup for a
|
|
283
|
+
* declaration the deriver did not recognise -- or the reverse, which is a
|
|
284
|
+
* silently unlowered loop.
|
|
285
|
+
*/
|
|
286
|
+
readonly keyedCollections: ReadonlyMap<DeclarationId, KeyedCollectionFamily>;
|
|
287
|
+
/**
|
|
288
|
+
* The whole-program census of what K/(V) a bare `new Map()`/`new Set()`/
|
|
289
|
+
* `new WeakMap()`/`new WeakSet()` allocation, owning declaration, or later
|
|
290
|
+
* read actually stores (`normalize/collection-bindings.ts`).
|
|
291
|
+
*
|
|
292
|
+
* Already the authority `structural.ts`'s `typeAt` substitutes into this
|
|
293
|
+
* call's own published result (`inferredCollectionTypeArgumentsAt`,
|
|
294
|
+
* `structural-array-element.ts`) -- threaded here as well so
|
|
295
|
+
* `producers/invocations.ts`'s `collectionConstructResultOverride` can ask
|
|
296
|
+
* the identical question `typeAt` just asked, rather than re-deriving "did
|
|
297
|
+
* this construct's K/V get narrowed" from a shape comparison. The two
|
|
298
|
+
* readers must agree for the same reason `argumentsObjects`/
|
|
299
|
+
* `unresolvableNames` above do: a call whose result this census bound and a
|
|
300
|
+
* call this census left alone must declare the divergence in lockstep, or
|
|
301
|
+
* `validateInvocationResult` fires for a disagreement neither reader
|
|
302
|
+
* caused.
|
|
303
|
+
*/
|
|
304
|
+
readonly collections: CollectionBindingCensus;
|
|
305
|
+
/**
|
|
306
|
+
* The object-bag census, for the one question only a producer can license:
|
|
307
|
+
* a call that RETURNS a bag.
|
|
308
|
+
*
|
|
309
|
+
* `structural.ts`'s `typeAt` publishes the bag as the call's own type
|
|
310
|
+
* (`bagShapeTypeAt` via `callResultShapeAt`), while `buildSelectedSignature`
|
|
311
|
+
* still derives the callee's declared return -- `any`, since nothing in the
|
|
312
|
+
* source states it. Two answers for one call is a WITHHOLDING unless a
|
|
313
|
+
* reason is declared, and `bagResultOverride` is where this one is.
|
|
314
|
+
*/
|
|
315
|
+
readonly bags: ObjectBagCensus;
|
|
316
|
+
/**
|
|
317
|
+
* The composed parameter-binding census, for the ONE producer that has to
|
|
318
|
+
* ask a parameter declaration what it holds rather than reading a type off
|
|
319
|
+
* a node the mapper already answered: `contributeDefaultedParameter`.
|
|
320
|
+
*
|
|
321
|
+
* `structural-parts.ts`'s `parameterOf` (the published ABI slot) opens with
|
|
322
|
+
* `parameters.typeAt(declaration)`, and `structural.ts`'s `typeAt` reaches
|
|
323
|
+
* the same answer for every body-side read through
|
|
324
|
+
* `structural-layout-type.ts`'s guarded census fallback. The binding that
|
|
325
|
+
* INITIALIZES the cell those two read through asked
|
|
326
|
+
* `checker.getTypeAtLocation` directly -- deliberately, so that the two
|
|
327
|
+
* spellings of an ANNOTATED default (`p: number | undefined = 0` versus
|
|
328
|
+
* `p = 0`) reach one shape -- and for an UNANNOTATED default that answer is
|
|
329
|
+
* the initializer's own type. `{}` for `options = {}`. Three authorities,
|
|
330
|
+
* one parameter, and the cell was the one holding `{}` while its slot and
|
|
331
|
+
* every read held the real record. This is the same three-authority shape
|
|
332
|
+
* `parameter-slot.ts`'s own header records for rest parameters, resolved
|
|
333
|
+
* the same way: give all three the same source.
|
|
334
|
+
*/
|
|
335
|
+
readonly parameters: ParameterBindingCensus;
|
|
336
|
+
/**
|
|
337
|
+
* The declaration identity of the standard `Generator<T, TReturn, TNext>`
|
|
338
|
+
* interface, or `null` when this compilation's `lib` installs none.
|
|
339
|
+
*
|
|
340
|
+
* Read by the iteration producers for exactly the reason `keyedCollections`
|
|
341
|
+
* above is: `representation/derive.ts`'s `GeneratorDeclarationPolicy`
|
|
342
|
+
* carries a value of that type as the native cursor `iterator(T)`, so a
|
|
343
|
+
* `for`-`of` over one must skip the `@@iterator` lookup -- and a producer
|
|
344
|
+
* that resolved `Generator` independently could disagree with the deriver
|
|
345
|
+
* about which declaration that is.
|
|
346
|
+
*/
|
|
347
|
+
readonly generatorDeclaration: DeclarationId | null;
|
|
348
|
+
/** The standard `AsyncGenerator<T, TReturn, TNext>` declaration -- the same cursor question one level out; see `asyncGeneratorDeclarationOf`. */
|
|
349
|
+
readonly asyncGeneratorDeclaration: DeclarationId | null;
|
|
350
|
+
/** The standard `MapIterator<T>` declaration returned by `Map.prototype.entries()`. */
|
|
351
|
+
readonly mapIteratorDeclaration: DeclarationId | null;
|
|
352
|
+
/**
|
|
353
|
+
* What every unannotated JS function actually returns (`return-bindings.ts`),
|
|
354
|
+
* for a producer that wants it directly rather than through
|
|
355
|
+
* `context.types.typeAt` -- see the "not yet the load-bearing seam" note
|
|
356
|
+
* below.
|
|
357
|
+
*
|
|
358
|
+
* Optional, and unlike every other whole-program census on this interface,
|
|
359
|
+
* NOT the primary way this census reaches a producer today. The primary
|
|
360
|
+
* seam is `return-bindings.ts`'s own `withReturnBindings`, which composes
|
|
361
|
+
* this census with the `ParameterBindingCensus` `structural.ts` already
|
|
362
|
+
* threads into `layoutTypeAt` (`structural-layout-type.ts`) -- the same
|
|
363
|
+
* path `parameters` (that census) already takes, so a call site this
|
|
364
|
+
* census resolves is answered through the SAME node `context.types.typeAt`
|
|
365
|
+
* already asks, with no producer needing to know this field exists. Wiring
|
|
366
|
+
* `withReturnBindings` in at its one call site is a `frontend.ts` change
|
|
367
|
+
* (`const parameters = censusParameterBindings(...)` becomes
|
|
368
|
+
* `withReturnBindings(checker, files, censusParameterBindings(...))`) that
|
|
369
|
+
* this module's own ownership boundary does not include, so this field is
|
|
370
|
+
* threaded here, populated, and left unconsumed until a producer or
|
|
371
|
+
* `frontend.ts` is edited to use one path or the other -- never both, or a
|
|
372
|
+
* call site the composed census resolves and a producer resolves
|
|
373
|
+
* independently could disagree about its own result's carrier.
|
|
374
|
+
*/
|
|
375
|
+
readonly returns?: ReturnBindingCensus;
|
|
376
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|