@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,496 @@
|
|
|
1
|
+
import type { DeclarationId, FunctionId, OperationId, RegionId, StructuralTypeId } from '../../identity/ids.js';
|
|
2
|
+
import type { SemanticOperationBase } from './operands.js';
|
|
3
|
+
import type { InvocationResultDivergence, SelectedSignature } from './selected-signature.js';
|
|
4
|
+
import type { HostMethodBinding } from '../host-methods.js';
|
|
5
|
+
/**
|
|
6
|
+
* The declared storage a value operand enters.
|
|
7
|
+
*
|
|
8
|
+
* An operation's result is often unrelated to where one of its operands is
|
|
9
|
+
* stored: an invocation returns its callee's result, an array literal returns
|
|
10
|
+
* the array, and a property definition returns its receiver. A conversion
|
|
11
|
+
* census must therefore not try to recover the destination from that result.
|
|
12
|
+
* The producer that owns the language operation publishes the exact slot type
|
|
13
|
+
* instead. `type` retains the complete structural identity so the later
|
|
14
|
+
* stored-position derivation selects the same ownership and `void` storage
|
|
15
|
+
* carrier as the ABI, record, or tuple slot.
|
|
16
|
+
*/
|
|
17
|
+
export interface ConversionRoleTarget {
|
|
18
|
+
readonly role: string;
|
|
19
|
+
readonly ordinal: number;
|
|
20
|
+
readonly owner: 'parameter-slot' | 'array-element' | 'declared-field';
|
|
21
|
+
readonly type: StructuralTypeId;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The normalized operation union.
|
|
25
|
+
*
|
|
26
|
+
* These are ECMAScript operations, not source shapes. `C.m()`, `const f = C.m;
|
|
27
|
+
* f()`, and `(0, C.m)()` differ in their operations and edges because they
|
|
28
|
+
* differ in JavaScript, not because they differ in spelling. Conversely two
|
|
29
|
+
* spellings of one operation must produce one member of this union.
|
|
30
|
+
*
|
|
31
|
+
* Nothing here names a framework, a helper, a fixture, or an application. A
|
|
32
|
+
* discriminant such as `proxy-wrap` or `direct-map` would be a source shape
|
|
33
|
+
* promoted to semantics, which is the defect this union exists to prevent.
|
|
34
|
+
*/
|
|
35
|
+
/** ECMAScript Reference: the thing `GetValue` and `PutValue` operate on. */
|
|
36
|
+
export interface ReferenceOperation extends SemanticOperationBase {
|
|
37
|
+
readonly family: 'reference';
|
|
38
|
+
/**
|
|
39
|
+
* `this` is the one form that publishes a `value` result rather than a
|
|
40
|
+
* `reference` one. `ResolveThisBinding` returns the value itself -- there is
|
|
41
|
+
* no Reference Record to take `GetValue` of, and no way to assign through it
|
|
42
|
+
* -- so a consumer cites its value directly instead of the read that every
|
|
43
|
+
* other form needs.
|
|
44
|
+
*
|
|
45
|
+
* `parameter-value` is the same shape for a different reason: it is the raw
|
|
46
|
+
* value the caller's frame supplied for one argument slot, *before*
|
|
47
|
+
* `FunctionDeclarationInstantiation`'s default-value semantics run over it
|
|
48
|
+
* (ECMA-262 9.2.10). Nothing in the language lets a program read or assign
|
|
49
|
+
* this exact value a second way -- the named binding a default parameter
|
|
50
|
+
* introduces is a later, separate value (`binding` family, citing the
|
|
51
|
+
* `destructuring` family's `default-value` step) -- so this form exists only
|
|
52
|
+
* so the raw argument can be a guard's own citable result, the same way an
|
|
53
|
+
* `if` condition or a `??` left side already is.
|
|
54
|
+
*/
|
|
55
|
+
readonly form: 'identifier' | 'property' | 'super-property' | 'private-name' | 'this' | 'parameter-value' | 'global-this';
|
|
56
|
+
readonly strict: boolean;
|
|
57
|
+
/** Reference resolution can throw before any value is produced. */
|
|
58
|
+
readonly unresolvableThrows: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* An `identifier` form naming no symbol anywhere in the program -- ECMA-262
|
|
61
|
+
* 6.2.5.6 `ResolveBinding` finds no environment record for it. A NAME fact,
|
|
62
|
+
* not a behavior one: it is what makes `buildReference`
|
|
63
|
+
* (`producers/references.ts`) publish this operation's `value` result
|
|
64
|
+
* directly (there is no cell a `binding` read could ever be minted
|
|
65
|
+
* against), independent of whether reading it actually throws.
|
|
66
|
+
*
|
|
67
|
+
* `unresolvableThrows` is the behavior that USUALLY follows from this --
|
|
68
|
+
* `GetValue` throws before a Reference Record's usual read would even apply
|
|
69
|
+
* -- except for `typeof`, whose ECMA-262 13.5.1.2 carve-out returns
|
|
70
|
+
* `"undefined"` for exactly this shape without ever calling `GetValue`.
|
|
71
|
+
* `ir/lower.ts` needs both facts kept apart: `hasNoCell` says whether a
|
|
72
|
+
* `value` result exists to lower here at all (the same `binding`-read gap
|
|
73
|
+
* `unresolvableThrows`'s own citation-side comment explains), and
|
|
74
|
+
* `unresolvableThrows` says whether that lowering is a throw or the
|
|
75
|
+
* constant `undefined` the `typeof` exemption produces instead.
|
|
76
|
+
*/
|
|
77
|
+
readonly hasNoCell: boolean;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Object internal methods.
|
|
81
|
+
*
|
|
82
|
+
* This is the single property spine. There is no second route from a property
|
|
83
|
+
* expression to a runtime operation: records, arrays, maps, class instances,
|
|
84
|
+
* host objects, and proxies all implement these same internal methods over
|
|
85
|
+
* their own native carriers.
|
|
86
|
+
*/
|
|
87
|
+
export interface PropertyOperation extends SemanticOperationBase {
|
|
88
|
+
/** The checker-resolved ambient member's implementation, independent of the receiver's storage layout. */
|
|
89
|
+
readonly hostMethod?: HostMethodBinding;
|
|
90
|
+
/**
|
|
91
|
+
* The finite set of property-name texts a COMPUTED key can evaluate to,
|
|
92
|
+
* proven closed forward from every closed caller
|
|
93
|
+
* (`normalize/flow/computed-key-set.ts`) and checked against the sealed
|
|
94
|
+
* host-mutation census's own obligations
|
|
95
|
+
* (`ProducerContext.computedKeyTextsOf`). Absent for a static key -- it
|
|
96
|
+
* would be redundant with the key operand's own constant text -- and absent
|
|
97
|
+
* whenever the proof refused or one of its intrinsic assumptions did not
|
|
98
|
+
* survive the final census: this is an UPPER bound on an otherwise-unknown
|
|
99
|
+
* key, never evidence to invent where none was proven.
|
|
100
|
+
*
|
|
101
|
+
* Only askable here, while the semantic graph is still open: the key set is
|
|
102
|
+
* a fact about the checked PROGRAM (which callers can reach this write with
|
|
103
|
+
* which options literal), not about the emitted C++, where the key has
|
|
104
|
+
* already become an opaque `std::string` and the question can no longer be
|
|
105
|
+
* asked. `ir/lower-property.ts` copies it onto the IR `get`/`set` operation
|
|
106
|
+
* for exactly that reason -- see `GetOperation.provenKeyTexts` there.
|
|
107
|
+
*/
|
|
108
|
+
readonly provenKeyTexts?: readonly string[];
|
|
109
|
+
/**
|
|
110
|
+
* The existing cell a read through an ESM namespace object or the intrinsic
|
|
111
|
+
* global object names.
|
|
112
|
+
*
|
|
113
|
+
* `import * as ns from './m'; ns.x` performs a namespace `[[Get]]`, but its
|
|
114
|
+
* answer is the live value of `m`'s exported binding `x`. Keeping that
|
|
115
|
+
* declaration identity lets lowering read the exporting cell directly;
|
|
116
|
+
* materializing a second object would lose the live-binding semantics. An
|
|
117
|
+
* authenticated `globalThis.process` likewise names the same host singleton
|
|
118
|
+
* binding as bare `process`, never a boxed copy in the expando dictionary.
|
|
119
|
+
*/
|
|
120
|
+
readonly resolvedBinding?: DeclarationId;
|
|
121
|
+
/** The optional-chain guard is proven present and the expression result is the same value as this read. */
|
|
122
|
+
readonly shortCircuitAlwaysPresent?: true;
|
|
123
|
+
/** This resolved binding came through the intrinsic global object rather than an ESM namespace. */
|
|
124
|
+
readonly resolvedGlobalBinding?: true;
|
|
125
|
+
/** This read produces the authenticated global Function.prototype object. */
|
|
126
|
+
readonly intrinsicValue?: 'function-prototype';
|
|
127
|
+
readonly family: 'property';
|
|
128
|
+
readonly internalMethod: 'get' | 'set' | 'delete' | 'has-property' | 'own-property-keys' | 'define-own-property';
|
|
129
|
+
/** `PutValue` throws when this `[[Set]]` answers false in strict code. */
|
|
130
|
+
readonly strict: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Whether the key required a `ToPropertyKey` conversion at runtime. A static
|
|
133
|
+
* key is an optimization opportunity; it is not a different operation.
|
|
134
|
+
*/
|
|
135
|
+
readonly keyIsComputed: boolean;
|
|
136
|
+
/** Normal completion is known to return absence; receiver evaluation may still throw. */
|
|
137
|
+
readonly normalResult?: 'undefined';
|
|
138
|
+
/**
|
|
139
|
+
* The attributes `define-own-property` installs. `[[Set]]` and `[[Get]]` do
|
|
140
|
+
* not carry one -- they consult whatever descriptor is already there -- so
|
|
141
|
+
* this is `null` for every method but `define-own-property`, where it is
|
|
142
|
+
* mandatory: a definition with no stated attributes is not a weaker
|
|
143
|
+
* definition, it is an unanswerable question.
|
|
144
|
+
*/
|
|
145
|
+
readonly descriptor: PropertyDescriptorShape | null;
|
|
146
|
+
}
|
|
147
|
+
/** Binding cells: the lexical environment as an explicit value, not an emitter detail. */
|
|
148
|
+
export interface BindingOperation extends SemanticOperationBase {
|
|
149
|
+
readonly family: 'binding';
|
|
150
|
+
readonly action: 'initialize' | 'read' | 'write' | 'declare';
|
|
151
|
+
readonly declaration: DeclarationId;
|
|
152
|
+
readonly mutable: boolean;
|
|
153
|
+
/** A read before initialization is a TDZ throw, which is observable behavior. */
|
|
154
|
+
readonly temporalDeadZone: boolean;
|
|
155
|
+
/** This initializes a formal parameter before the enclosing body's declarations and statements. */
|
|
156
|
+
readonly parameterInitialization?: boolean;
|
|
157
|
+
/** This initializes a direct body-level function declaration during FunctionDeclarationInstantiation. */
|
|
158
|
+
readonly hoistedFunctionInitialization?: boolean;
|
|
159
|
+
/**
|
|
160
|
+
* Set only on the 'declare' introduction of an ambient value declaration: a
|
|
161
|
+
* cell this program names but never writes, because a host supplies the
|
|
162
|
+
* value from outside it. `linkageName` is the ABI contract with that host,
|
|
163
|
+
* spelled exactly as the declaration names it -- the one place in this
|
|
164
|
+
* compiler a declaration's own text is authoritative, the same way a C++
|
|
165
|
+
* `extern` declaration's own spelling is the contract it makes with a
|
|
166
|
+
* definition elsewhere. Every other introduction leaves this unset;
|
|
167
|
+
* `projectBindingPlacements` (projection/bindings.ts) is the only reader,
|
|
168
|
+
* and it is what turns this introduction into `BindingStorage.kind ===
|
|
169
|
+
* 'external'` instead of an ordinary run-once-region global that nothing in
|
|
170
|
+
* the program ever assigns.
|
|
171
|
+
*/
|
|
172
|
+
readonly external?: {
|
|
173
|
+
readonly linkageName: string;
|
|
174
|
+
};
|
|
175
|
+
/** A checker-authenticated CommonJS wrapper binding, scoped to its source module. */
|
|
176
|
+
readonly commonJs?: {
|
|
177
|
+
readonly global: 'require' | 'exports' | 'module';
|
|
178
|
+
readonly owner: RegionId;
|
|
179
|
+
/** This read belongs to a source-proven exact native module record, not merely a matching ambient shape. */
|
|
180
|
+
readonly nativeRecord?: true;
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
/** Evaluated `[[Call]]` and `[[Construct]]`, plus tagged-template application. */
|
|
184
|
+
export interface InvocationOperation extends SemanticOperationBase {
|
|
185
|
+
readonly family: 'invocation';
|
|
186
|
+
readonly internalMethod: 'call' | 'construct';
|
|
187
|
+
readonly optionalChain: boolean;
|
|
188
|
+
readonly selectedSignature: SelectedSignature | null;
|
|
189
|
+
readonly resultDivergence: InvocationResultDivergence;
|
|
190
|
+
readonly target: SemanticTargetProof;
|
|
191
|
+
/**
|
|
192
|
+
* A checker-authenticated, statically resolved CommonJS require. The
|
|
193
|
+
* module identities, not the specifier text, are the runtime route.
|
|
194
|
+
*/
|
|
195
|
+
readonly commonJsRequire?: {
|
|
196
|
+
readonly owner: RegionId;
|
|
197
|
+
readonly target: RegionId;
|
|
198
|
+
readonly builtinModule: string | null;
|
|
199
|
+
/** The target source proved one exact native exports carrier. */
|
|
200
|
+
readonly nativeRecord?: true;
|
|
201
|
+
};
|
|
202
|
+
/** A literal host builtin lookup whose ModuleRecord must be retained. */
|
|
203
|
+
readonly builtinModuleLookup?: {
|
|
204
|
+
readonly target: RegionId;
|
|
205
|
+
readonly builtinModule: string;
|
|
206
|
+
};
|
|
207
|
+
/** A checker-authenticated intrinsic that mutates its first argument. */
|
|
208
|
+
readonly intrinsicMutation?: 'object-assign' | 'reflect-set' | 'object-define-property' | 'object-define-properties';
|
|
209
|
+
/** A checker-authenticated intrinsic that only queries its first argument's own keys. */
|
|
210
|
+
readonly intrinsicOwnKeys?: true;
|
|
211
|
+
/** Authenticated Reflect operation: a native ABI still observes this property protocol. */
|
|
212
|
+
readonly intrinsicReflection?: 'get' | 'set' | 'has' | 'deleteProperty' | 'getOwnPropertyDescriptor';
|
|
213
|
+
/** Unmodified standard Object.defineProperty, authenticated by the host mutation census. */
|
|
214
|
+
readonly intrinsicDataDefinition?: true;
|
|
215
|
+
/**
|
|
216
|
+
* A checker-authenticated intrinsic whose whole answer is its argument's
|
|
217
|
+
* CARRIER: `Array.isArray(v)`, ECMA-262 23.1.2.2, which asks whether the
|
|
218
|
+
* value is an Array exotic object and reads nothing else -- no property, no
|
|
219
|
+
* getter, no method. The sibling of `intrinsicOwnKeys`, and authenticated by
|
|
220
|
+
* the same rule.
|
|
221
|
+
*/
|
|
222
|
+
readonly intrinsicCarrierPredicate?: true;
|
|
223
|
+
}
|
|
224
|
+
/** A runtime target an invocation can reach. */
|
|
225
|
+
export type SemanticRuntimeTarget = {
|
|
226
|
+
readonly kind: 'function';
|
|
227
|
+
readonly functionId: FunctionId;
|
|
228
|
+
/** Whether the source creates an ordinary ECMAScript function object with [[Construct]], rather than an arrow, method, async function, or generator. */
|
|
229
|
+
readonly constructable: boolean;
|
|
230
|
+
/**
|
|
231
|
+
* The generic source function this target is a copy of, when the call
|
|
232
|
+
* dispatches over a `generic-function-set` callee: the set's tag
|
|
233
|
+
* indexes its members by this id, and this is what pairs the target
|
|
234
|
+
* with the arm it runs for.
|
|
235
|
+
*/
|
|
236
|
+
readonly member?: DeclarationId;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* A class with no written constructor has no source function to identify.
|
|
240
|
+
* Fabricating a `FunctionId` for it would invent authority, so the union
|
|
241
|
+
* preserves the absence instead.
|
|
242
|
+
*/
|
|
243
|
+
| {
|
|
244
|
+
readonly kind: 'implicit-source-constructor';
|
|
245
|
+
readonly classDeclaration: DeclarationId;
|
|
246
|
+
};
|
|
247
|
+
/**
|
|
248
|
+
* What the compiler can prove about the runtime target set.
|
|
249
|
+
*
|
|
250
|
+
* `open` is a complete, correct answer: it selects the generic call path. It is
|
|
251
|
+
* not a failure, and it must never be repaired by guessing from callee syntax.
|
|
252
|
+
*
|
|
253
|
+
* @semanticCategory generic-primitive
|
|
254
|
+
*/
|
|
255
|
+
export type SemanticTargetProof = {
|
|
256
|
+
readonly kind: 'exact';
|
|
257
|
+
readonly target: SemanticRuntimeTarget;
|
|
258
|
+
readonly evidence: readonly string[];
|
|
259
|
+
} | {
|
|
260
|
+
readonly kind: 'closed-family';
|
|
261
|
+
readonly targets: readonly SemanticRuntimeTarget[];
|
|
262
|
+
readonly evidence: readonly string[];
|
|
263
|
+
} | {
|
|
264
|
+
readonly kind: 'open';
|
|
265
|
+
readonly evidence: readonly string[];
|
|
266
|
+
};
|
|
267
|
+
/**
|
|
268
|
+
* The allocation kinds that create a fresh object identity -- and the one that
|
|
269
|
+
* deliberately does not.
|
|
270
|
+
*
|
|
271
|
+
* `'template-object'` is the exception, and it is an exception the language
|
|
272
|
+
* itself makes: ECMA-262 13.2.8.3 `GetTemplateObject` caches its result per
|
|
273
|
+
* Parse Node, so a tagged template hands the *same* object to its tag on every
|
|
274
|
+
* evaluation of that site. It is an allocation in this family because it is
|
|
275
|
+
* where the object comes from; what it is not is a fresh identity per
|
|
276
|
+
* evaluation, and every consumer that reads this kind has to honour that.
|
|
277
|
+
*/
|
|
278
|
+
export interface AllocationOperation extends SemanticOperationBase {
|
|
279
|
+
readonly family: 'allocation';
|
|
280
|
+
readonly allocated: 'object-literal' | 'array-literal' | 'function-object' | 'class-constructor-object' | 'regexp-object' | 'construction-result' | 'template-object';
|
|
281
|
+
readonly shape: StructuralTypeId;
|
|
282
|
+
/** A direct body-level function declaration allocated before executable body statements. */
|
|
283
|
+
readonly hoistedFunctionInitialization?: boolean;
|
|
284
|
+
/**
|
|
285
|
+
* The source function a `function-object` allocation makes a callable for,
|
|
286
|
+
* and `null` for every other allocated kind.
|
|
287
|
+
*
|
|
288
|
+
* The shape cannot answer this. Structural types intern by structure, so two
|
|
289
|
+
* unrelated functions with the same signature share one `signature` shape --
|
|
290
|
+
* allocating a closure for `f` and one for `g` would then be the same
|
|
291
|
+
* operation. The identity has to be carried, not recovered.
|
|
292
|
+
*/
|
|
293
|
+
readonly callable: FunctionId | null;
|
|
294
|
+
/** [[SourceText]] for a source-defined callable; absent for runtime-created allocations. */
|
|
295
|
+
readonly functionSource?: string;
|
|
296
|
+
/**
|
|
297
|
+
* `[[Name]]` for a source-defined callable -- its own declared name, or the
|
|
298
|
+
* `NamedEvaluation` name from where an anonymous function/arrow expression
|
|
299
|
+
* was defined, or `''` when neither applies. Absent alongside
|
|
300
|
+
* `functionSource` for every non-callable allocation.
|
|
301
|
+
*/
|
|
302
|
+
readonly functionName?: string;
|
|
303
|
+
/** `Function.prototype.length` for a source-defined callable: the written parameters before the first default/rest one. */
|
|
304
|
+
readonly functionLength?: number;
|
|
305
|
+
/**
|
|
306
|
+
* Whether the source-defined callable is a `function*` / `async function*`
|
|
307
|
+
* -- a fact of the DECLARATION, carried because nothing downstream can
|
|
308
|
+
* recover it: the callable's type is `Generator<...>` whether the body is a
|
|
309
|
+
* generator or an ordinary function that returns one it obtained elsewhere,
|
|
310
|
+
* so a consumer keying on the result carrier confuses the two. Present under
|
|
311
|
+
* the same condition as `functionSource`.
|
|
312
|
+
*/
|
|
313
|
+
readonly generatorFunction?: boolean;
|
|
314
|
+
/**
|
|
315
|
+
* Whether the declaration performs ECMA-262 10.2.5 `MakeConstructor` and so
|
|
316
|
+
* owns a `prototype` object -- true for an ordinary `function` declaration
|
|
317
|
+
* or expression, false for an arrow, a method, an accessor and an `async
|
|
318
|
+
* function`, and ABSENT for a generator, whose `prototype` exists but
|
|
319
|
+
* inherits `%GeneratorFunction.prototype.prototype%` this runtime does not
|
|
320
|
+
* model.
|
|
321
|
+
*
|
|
322
|
+
* Carried for the same reason `generatorFunction` is: the CARRIER cannot
|
|
323
|
+
* answer it. `function-and-constructor` owns a prototype and
|
|
324
|
+
* `function-value-dispatch` was read as owning none, which made one
|
|
325
|
+
* authority -- whether the checker gave the value a construct signature --
|
|
326
|
+
* answer two different questions: how the value is invoked, and whether the
|
|
327
|
+
* declaration behind it has a `prototype`. An ordinary `function` asserted
|
|
328
|
+
* call-only is exactly where the two answers differ.
|
|
329
|
+
*
|
|
330
|
+
* The absent third state is deliberate: an unanswered read fails closed at
|
|
331
|
+
* certification rather than reporting `undefined` for a property that
|
|
332
|
+
* exists.
|
|
333
|
+
*/
|
|
334
|
+
readonly ownPrototypeProperty?: boolean;
|
|
335
|
+
/**
|
|
336
|
+
* For a `class-constructor-object` allocation, the class whose constructor
|
|
337
|
+
* object this is. A memberless class expression publishes no
|
|
338
|
+
* `class-lifecycle` event at all, so without this the graph could not say
|
|
339
|
+
* the class was evaluated, and its `[[Name]]` (`functionName`, the same
|
|
340
|
+
* field a function allocation fills) would have no class to attach to.
|
|
341
|
+
*/
|
|
342
|
+
readonly classDeclaration?: DeclarationId;
|
|
343
|
+
/** The class whose written constructor body this function allocation implements. */
|
|
344
|
+
readonly classConstructorBodyOf?: DeclarationId;
|
|
345
|
+
}
|
|
346
|
+
/** The one role target an operation published, if this producer owns one. */
|
|
347
|
+
export declare const conversionRoleTargetOf: (operation: SemanticOperationBase, role: string, ordinal: number, owner: ConversionRoleTarget["owner"]) => ConversionRoleTarget | undefined;
|
|
348
|
+
/** Class definition and instance lifecycle events. */
|
|
349
|
+
export interface ClassLifecycleOperation extends SemanticOperationBase {
|
|
350
|
+
readonly family: 'class-lifecycle';
|
|
351
|
+
readonly event: 'evaluate-heritage' | 'define-method' | 'define-getter' | 'define-setter' | 'define-field' | 'run-static-block' | 'install-private-brand' | 'bind-class-value' | 'reparent-prototype';
|
|
352
|
+
readonly declaration: DeclarationId;
|
|
353
|
+
/**
|
|
354
|
+
* The class whose evaluation this event belongs to.
|
|
355
|
+
*
|
|
356
|
+
* `declaration` names the member, which is what the event acts on; without
|
|
357
|
+
* the class as well, a consumer assembling a class's layout would have to
|
|
358
|
+
* recover it by walking syntax, and the walk and the graph would then be two
|
|
359
|
+
* authorities over which members a class has.
|
|
360
|
+
*/
|
|
361
|
+
readonly classDeclaration: DeclarationId;
|
|
362
|
+
/**
|
|
363
|
+
* The descriptor a prototype installation publishes. Runtime `[[Get]]` stays
|
|
364
|
+
* authoritative for the value a call site selects; this records what was
|
|
365
|
+
* installed, so deletion, replacement, and revocation can win over it.
|
|
366
|
+
*/
|
|
367
|
+
readonly descriptor: PropertyDescriptorShape | null;
|
|
368
|
+
/**
|
|
369
|
+
* Where a `define-*` event installs its member: on each instance (`own`),
|
|
370
|
+
* on the prototype, or on the constructor (`static`). `null` for every
|
|
371
|
+
* event that installs no member.
|
|
372
|
+
*
|
|
373
|
+
* A fact of the event, not of the descriptor: a private element has no
|
|
374
|
+
* property descriptor at all (no `[[DefineOwnProperty]]` happens for it),
|
|
375
|
+
* and while placement rode on the descriptor a `static #m()` had nowhere to
|
|
376
|
+
* say it was static -- `projection/classes.ts` would have filed it among the
|
|
377
|
+
* instance members, so the producer refused every static private member
|
|
378
|
+
* instead. Placement here is what lets a private member be static.
|
|
379
|
+
*/
|
|
380
|
+
readonly placement: 'own' | 'prototype' | 'static' | null;
|
|
381
|
+
/** True only for a field synthesized onto an ancestor by the subclass-member overlay. */
|
|
382
|
+
readonly syntheticSubclassMemberOverlay?: boolean;
|
|
383
|
+
/** A layout demand, not evaluation or allocation of this class's constructor. */
|
|
384
|
+
readonly classLayoutOnly?: boolean;
|
|
385
|
+
}
|
|
386
|
+
/** A property descriptor as the language defines it. */
|
|
387
|
+
export interface PropertyDescriptorShape {
|
|
388
|
+
readonly writable: boolean;
|
|
389
|
+
readonly enumerable: boolean;
|
|
390
|
+
readonly configurable: boolean;
|
|
391
|
+
}
|
|
392
|
+
/** Operators and coercions. */
|
|
393
|
+
export interface ComputationOperation extends SemanticOperationBase {
|
|
394
|
+
readonly family: 'computation';
|
|
395
|
+
readonly form: 'unary' | 'binary' | 'logical' | 'assignment' | 'update' | 'conditional' | 'template' | 'comma' | 'coercion' | 'equality' | 'typeof' | 'instanceof' | 'in';
|
|
396
|
+
/** The exact operator token, as a language operator, not as source text. */
|
|
397
|
+
readonly operator: string;
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Control effects: the CFG as explicit operations rather than emitter structure.
|
|
401
|
+
*
|
|
402
|
+
* `'loop'` is head-tested -- the condition decides whether the body runs at
|
|
403
|
+
* all, so the body sits on the truthy side of that decision. `'loop-tail'` is
|
|
404
|
+
* the other order, which `do`/`while` is the only spelling of: the body runs
|
|
405
|
+
* first and unconditionally, and the condition decides only whether to run it
|
|
406
|
+
* *again*. That is a different block shape, not a different rendering of one
|
|
407
|
+
* shape, so it is a distinct form rather than a flag -- a consumer that treats
|
|
408
|
+
* a tail-tested loop as head-tested skips the guaranteed first iteration, and
|
|
409
|
+
* a consumer that treats a head-tested one as tail-tested runs a body the
|
|
410
|
+
* source program never enters.
|
|
411
|
+
*/
|
|
412
|
+
export interface ControlOperation extends SemanticOperationBase {
|
|
413
|
+
readonly family: 'control';
|
|
414
|
+
readonly form: 'branch' | 'loop' | 'loop-tail' | 'switch' | 'return' | 'throw' | 'try' | 'label' | 'break' | 'continue' | 'await' | 'yield' | 'debugger';
|
|
415
|
+
/** The cleanup protocol operation owned by a synchronous dynamic `for`-`of` loop. */
|
|
416
|
+
readonly iteratorClose?: OperationId | null;
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Iterator, spread, enumeration, and disposal protocols.
|
|
420
|
+
*
|
|
421
|
+
* A `protocol: 'spread'` operation (object spread's `CopyDataProperties`,
|
|
422
|
+
* `producers/protocol.ts`'s `contributeObjectSpread`) carries a `source`
|
|
423
|
+
* operand (the value being spread) and a `receiver` operand (`{ kind:
|
|
424
|
+
* 'provenance' }`, naming the object literal it copies into -- the same
|
|
425
|
+
* identity `producers/allocations.ts`'s `AllocationOperation` for that
|
|
426
|
+
* literal already publishes, cited rather than re-minted). `ir/lower-protocol.ts`
|
|
427
|
+
* needs both: the source to walk and the receiver to write into.
|
|
428
|
+
*/
|
|
429
|
+
export interface ProtocolOperation extends SemanticOperationBase {
|
|
430
|
+
readonly family: 'protocol';
|
|
431
|
+
readonly protocol: 'iterator' | 'async-iterator' | 'spread' | 'enumerate' | 'dispose' | 'async-dispose';
|
|
432
|
+
readonly step: 'get-method' | 'get-iterator' | 'next' | 'close' | 'return' | 'throw';
|
|
433
|
+
}
|
|
434
|
+
/** Exception regions, labelled targets, and generator/async resume channels. */
|
|
435
|
+
export interface BoundaryOperation extends SemanticOperationBase {
|
|
436
|
+
readonly family: 'boundary';
|
|
437
|
+
readonly boundary: 'exception-region' | 'finally-region' | 'label-target' | 'generator-resume' | 'async-resume';
|
|
438
|
+
}
|
|
439
|
+
/** Declaration order, module links, initializer flow, resource disposal. */
|
|
440
|
+
export interface DeclarationLifecycleOperation extends SemanticOperationBase {
|
|
441
|
+
readonly family: 'declaration-lifecycle';
|
|
442
|
+
readonly event: 'hoist' | 'module-link' | 'module-evaluate' | 'initialize' | 'dispose';
|
|
443
|
+
readonly declaration: DeclarationId;
|
|
444
|
+
}
|
|
445
|
+
/** Destructuring, modelled as its constituent reads, writes, and defaults. */
|
|
446
|
+
export interface DestructuringOperation extends SemanticOperationBase {
|
|
447
|
+
readonly family: 'destructuring';
|
|
448
|
+
readonly form: 'object-source' | 'object-pattern' | 'array-pattern' | 'array-pattern-close' | 'rest-element' | 'default-value';
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* JSX element construction.
|
|
452
|
+
*
|
|
453
|
+
* JSX is a language surface with no meaning of its own: what `<div id="x">y</div>`
|
|
454
|
+
* constructs is decided entirely by the declarations the checked program's JSX
|
|
455
|
+
* namespace supplies. So this operation states the *shape* of the construction --
|
|
456
|
+
* a tag, a props object, an ordered child list -- and nothing about what the
|
|
457
|
+
* result is or how it renders, which is the framework's answer to give.
|
|
458
|
+
*
|
|
459
|
+
* Props are one operand, not many, because JSX props are an object literal in
|
|
460
|
+
* the language's own terms: `<div a={x} b={y}/>` evaluates `{a: x, b: y}` and
|
|
461
|
+
* hands it over whole. Modelling each attribute as its own operand here would
|
|
462
|
+
* be a second, weaker copy of the record machinery that already exists, and the
|
|
463
|
+
* two would eventually disagree about evaluation order.
|
|
464
|
+
*/
|
|
465
|
+
export interface ElementOperation extends SemanticOperationBase {
|
|
466
|
+
readonly family: 'element';
|
|
467
|
+
/**
|
|
468
|
+
* `intrinsic` names a tag the JSX namespace declares; `value` names a value
|
|
469
|
+
* the program declared; `fragment` groups children with no tag at all. They
|
|
470
|
+
* are three different constructions and nothing downstream may collapse
|
|
471
|
+
* them: an intrinsic tag is data, and a value tag is whatever the library
|
|
472
|
+
* that declared it says it is -- which is why this compiler answers only the
|
|
473
|
+
* first and leaves the other two to whoever installed the library.
|
|
474
|
+
*/
|
|
475
|
+
readonly form: 'intrinsic' | 'value' | 'fragment';
|
|
476
|
+
/**
|
|
477
|
+
* The property a component's props object carries its children under, as the
|
|
478
|
+
* program's own `JSX.ElementChildrenAttribute` declares it, or `null` when
|
|
479
|
+
* the JSX namespace declares none.
|
|
480
|
+
*
|
|
481
|
+
* This is the one spelling in this operation that comes from a declaration,
|
|
482
|
+
* and it is admissible for the same reason an ambient declaration's linkage
|
|
483
|
+
* name is: the JSX namespace states it *as data* -- the whole purpose of
|
|
484
|
+
* `ElementChildrenAttribute` is to name the key -- so reading it is consuming
|
|
485
|
+
* the language's own answer, not inferring one from source shape. Hard-coding
|
|
486
|
+
* `children` here would be the compiler answering a question the checked
|
|
487
|
+
* program is entitled to answer differently.
|
|
488
|
+
*/
|
|
489
|
+
readonly childrenKey: string | null;
|
|
490
|
+
}
|
|
491
|
+
/** Dynamic import and direct eval: open runtime semantics, stated explicitly. */
|
|
492
|
+
export interface DynamicLanguageOperation extends SemanticOperationBase {
|
|
493
|
+
readonly family: 'dynamic-language';
|
|
494
|
+
readonly form: 'dynamic-import' | 'direct-eval';
|
|
495
|
+
}
|
|
496
|
+
export type SemanticOperation = ReferenceOperation | PropertyOperation | BindingOperation | InvocationOperation | AllocationOperation | ClassLifecycleOperation | ComputationOperation | ControlOperation | ProtocolOperation | ElementOperation | BoundaryOperation | DeclarationLifecycleOperation | DestructuringOperation | DynamicLanguageOperation;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { StructuralTypeId } from '../../identity/ids.js';
|
|
2
|
+
import type { StructuralShape } from './structural-types.js';
|
|
3
|
+
/**
|
|
4
|
+
* The one primitive every value of a shape belongs to, or `null`.
|
|
5
|
+
*
|
|
6
|
+
* Literal and unique-symbol shapes are single values of their primitive,
|
|
7
|
+
* and a primitive shape is that primitive. An object, an
|
|
8
|
+
* array or a handle is not a primitive value however few of them there are.
|
|
9
|
+
*
|
|
10
|
+
* The one authority for this question. `representation/union.ts` decides a
|
|
11
|
+
* union of literals of one primitive IS that primitive, because the arms differ
|
|
12
|
+
* in value and not in carrier; `representation/value-records.ts` asks the same
|
|
13
|
+
* question of a record's field, because a field that is a primitive value is
|
|
14
|
+
* one a copy of the record cannot share. Answering it twice is how the two come
|
|
15
|
+
* apart -- a field the deriver carries as `std::string` being judged a
|
|
16
|
+
* reference, or the reverse.
|
|
17
|
+
*/
|
|
18
|
+
export declare const primitiveDomainOf: (shape: StructuralShape | null | undefined) => string | null;
|
|
19
|
+
/**
|
|
20
|
+
* The domain every member of a union shares, or `null` when they share none.
|
|
21
|
+
*
|
|
22
|
+
* `'front' | 'back' | 'external'` is one `std::string`; `string | number` is
|
|
23
|
+
* two carriers and a real sum. A non-union shape answers for itself, so a
|
|
24
|
+
* caller with a field of unknown shape needs only this.
|
|
25
|
+
*/
|
|
26
|
+
export declare const sharedPrimitiveDomainOf: (shapeOf: (id: StructuralTypeId) => StructuralShape | null | undefined, shape: StructuralShape | null | undefined) => string | null;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one primitive every value of a shape belongs to, or `null`.
|
|
3
|
+
*
|
|
4
|
+
* Literal and unique-symbol shapes are single values of their primitive,
|
|
5
|
+
* and a primitive shape is that primitive. An object, an
|
|
6
|
+
* array or a handle is not a primitive value however few of them there are.
|
|
7
|
+
*
|
|
8
|
+
* The one authority for this question. `representation/union.ts` decides a
|
|
9
|
+
* union of literals of one primitive IS that primitive, because the arms differ
|
|
10
|
+
* in value and not in carrier; `representation/value-records.ts` asks the same
|
|
11
|
+
* question of a record's field, because a field that is a primitive value is
|
|
12
|
+
* one a copy of the record cannot share. Answering it twice is how the two come
|
|
13
|
+
* apart -- a field the deriver carries as `std::string` being judged a
|
|
14
|
+
* reference, or the reverse.
|
|
15
|
+
*/
|
|
16
|
+
export const primitiveDomainOf = (shape) => shape?.kind === 'unique-symbol'
|
|
17
|
+
? 'symbol'
|
|
18
|
+
: shape?.kind === 'literal'
|
|
19
|
+
? shape.primitive
|
|
20
|
+
: shape?.kind === 'primitive'
|
|
21
|
+
? shape.primitive
|
|
22
|
+
: null;
|
|
23
|
+
/**
|
|
24
|
+
* The domain every member of a union shares, or `null` when they share none.
|
|
25
|
+
*
|
|
26
|
+
* `'front' | 'back' | 'external'` is one `std::string`; `string | number` is
|
|
27
|
+
* two carriers and a real sum. A non-union shape answers for itself, so a
|
|
28
|
+
* caller with a field of unknown shape needs only this.
|
|
29
|
+
*/
|
|
30
|
+
export const sharedPrimitiveDomainOf = (shapeOf, shape) => {
|
|
31
|
+
if (shape?.kind !== 'union')
|
|
32
|
+
return primitiveDomainOf(shape);
|
|
33
|
+
const domains = new Set(shape.members.map((member) => primitiveDomainOf(shapeOf(member))));
|
|
34
|
+
if (domains.size !== 1 || domains.has(null))
|
|
35
|
+
return null;
|
|
36
|
+
const [domain] = [...domains];
|
|
37
|
+
return domain ?? null;
|
|
38
|
+
};
|