@geastack/compiler 1.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +149 -0
- package/dist/cli-analyze.d.ts +1 -0
- package/dist/cli-analyze.js +61 -0
- package/dist/cli-coverage.d.ts +1 -0
- package/dist/cli-coverage.js +329 -0
- package/dist/cli-emit.d.ts +10 -0
- package/dist/cli-emit.js +398 -0
- package/dist/cli-module-graph.d.ts +18 -0
- package/dist/cli-module-graph.js +123 -0
- package/dist/cli-package-source.d.ts +5 -0
- package/dist/cli-package-source.js +116 -0
- package/dist/cli-project.d.ts +2 -0
- package/dist/cli-project.js +60 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +199 -0
- package/dist/compiler.d.ts +228 -0
- package/dist/compiler.js +1029 -0
- package/dist/conversion/algebra.d.ts +218 -0
- package/dist/conversion/algebra.js +155 -0
- package/dist/conversion/build.d.ts +67 -0
- package/dist/conversion/build.js +1378 -0
- package/dist/conversion/derive.d.ts +37 -0
- package/dist/conversion/derive.js +260 -0
- package/dist/conversion/graph-validation.d.ts +8 -0
- package/dist/conversion/graph-validation.js +97 -0
- package/dist/conversion/native-callable-adapter.d.ts +13 -0
- package/dist/conversion/native-callable-adapter.js +53 -0
- package/dist/conversion/native-class-reference.d.ts +12 -0
- package/dist/conversion/native-class-reference.js +39 -0
- package/dist/conversion/native-payload-transport.d.ts +25 -0
- package/dist/conversion/native-payload-transport.js +33 -0
- package/dist/conversion/native-selection.d.ts +49 -0
- package/dist/conversion/native-selection.js +135 -0
- package/dist/conversion/native-sum.d.ts +42 -0
- package/dist/conversion/native-sum.js +115 -0
- package/dist/conversion/nodes.d.ts +55 -0
- package/dist/conversion/nodes.js +91 -0
- package/dist/conversion/operand-view.d.ts +14 -0
- package/dist/conversion/operand-view.js +20 -0
- package/dist/conversion/record-view.d.ts +157 -0
- package/dist/conversion/record-view.js +273 -0
- package/dist/conversion/registry.d.ts +217 -0
- package/dist/conversion/registry.js +1 -0
- package/dist/diagnostics/model.d.ts +76 -0
- package/dist/diagnostics/model.js +60 -0
- package/dist/diagnostics/sweep.d.ts +31 -0
- package/dist/diagnostics/sweep.js +112 -0
- package/dist/identity/ids.d.ts +179 -0
- package/dist/identity/ids.js +212 -0
- package/dist/ir/absent-class-arm.d.ts +48 -0
- package/dist/ir/absent-class-arm.js +157 -0
- package/dist/ir/borrow-effects.d.ts +23 -0
- package/dist/ir/borrow-effects.js +151 -0
- package/dist/ir/borrowed-call-arguments.d.ts +40 -0
- package/dist/ir/borrowed-call-arguments.js +117 -0
- package/dist/ir/build.d.ts +168 -0
- package/dist/ir/build.js +459 -0
- package/dist/ir/call-dispatch.d.ts +38 -0
- package/dist/ir/call-dispatch.js +502 -0
- package/dist/ir/call-entry.d.ts +142 -0
- package/dist/ir/call-entry.js +386 -0
- package/dist/ir/callable-class-flow.d.ts +27 -0
- package/dist/ir/callable-class-flow.js +1386 -0
- package/dist/ir/callable-field-slots.d.ts +22 -0
- package/dist/ir/callable-field-slots.js +166 -0
- package/dist/ir/callable-identity-demand.d.ts +52 -0
- package/dist/ir/callable-identity-demand.js +460 -0
- package/dist/ir/callable-member-candidates.d.ts +9 -0
- package/dist/ir/callable-member-candidates.js +39 -0
- package/dist/ir/callable-records.d.ts +21 -0
- package/dist/ir/callable-records.js +411 -0
- package/dist/ir/captures.d.ts +26 -0
- package/dist/ir/captures.js +335 -0
- package/dist/ir/certificate.d.ts +45 -0
- package/dist/ir/certificate.js +47 -0
- package/dist/ir/certify/carrier-keys.d.ts +73 -0
- package/dist/ir/certify/carrier-keys.js +221 -0
- package/dist/ir/certify/function-source.d.ts +4 -0
- package/dist/ir/certify/function-source.js +28 -0
- package/dist/ir/certify/has-property-key.d.ts +88 -0
- package/dist/ir/certify/has-property-key.js +116 -0
- package/dist/ir/certify/instanceof-key.d.ts +24 -0
- package/dist/ir/certify/instanceof-key.js +35 -0
- package/dist/ir/certify/property-access-keys.d.ts +172 -0
- package/dist/ir/certify/property-access-keys.js +291 -0
- package/dist/ir/certify/property-access.d.ts +3 -0
- package/dist/ir/certify/property-access.js +597 -0
- package/dist/ir/certify/runtime-helper.d.ts +3 -0
- package/dist/ir/certify/runtime-helper.js +326 -0
- package/dist/ir/certify/typeof-operand.d.ts +14 -0
- package/dist/ir/certify/typeof-operand.js +16 -0
- package/dist/ir/certify.d.ts +123 -0
- package/dist/ir/certify.js +481 -0
- package/dist/ir/class-evaluation.d.ts +26 -0
- package/dist/ir/class-evaluation.js +50 -0
- package/dist/ir/class-static-fields.d.ts +60 -0
- package/dist/ir/class-static-fields.js +108 -0
- package/dist/ir/construct-entry.d.ts +26 -0
- package/dist/ir/construct-entry.js +117 -0
- package/dist/ir/dead-values.d.ts +90 -0
- package/dist/ir/dead-values.js +184 -0
- package/dist/ir/deferral.d.ts +99 -0
- package/dist/ir/deferral.js +409 -0
- package/dist/ir/dense-loops.d.ts +230 -0
- package/dist/ir/dense-loops.js +697 -0
- package/dist/ir/dominance.d.ts +82 -0
- package/dist/ir/dominance.js +268 -0
- package/dist/ir/emission-representations.d.ts +71 -0
- package/dist/ir/emission-representations.js +350 -0
- package/dist/ir/facts.d.ts +218 -0
- package/dist/ir/facts.js +181 -0
- package/dist/ir/fixed-data-definition.d.ts +19 -0
- package/dist/ir/fixed-data-definition.js +49 -0
- package/dist/ir/generator-split.d.ts +38 -0
- package/dist/ir/generator-split.js +329 -0
- package/dist/ir/hoist.d.ts +55 -0
- package/dist/ir/hoist.js +375 -0
- package/dist/ir/instantiation.d.ts +61 -0
- package/dist/ir/instantiation.js +137 -0
- package/dist/ir/integer-storage.d.ts +170 -0
- package/dist/ir/integer-storage.js +822 -0
- package/dist/ir/integers.d.ts +161 -0
- package/dist/ir/integers.js +539 -0
- package/dist/ir/integrity-restrictions.d.ts +50 -0
- package/dist/ir/integrity-restrictions.js +118 -0
- package/dist/ir/local-iterators.d.ts +4 -0
- package/dist/ir/local-iterators.js +27 -0
- package/dist/ir/lower-allocation.d.ts +4 -0
- package/dist/ir/lower-allocation.js +325 -0
- package/dist/ir/lower-completion.d.ts +15 -0
- package/dist/ir/lower-completion.js +25 -0
- package/dist/ir/lower-destructuring.d.ts +5 -0
- package/dist/ir/lower-destructuring.js +693 -0
- package/dist/ir/lower-element.d.ts +29 -0
- package/dist/ir/lower-element.js +111 -0
- package/dist/ir/lower-exceptions.d.ts +47 -0
- package/dist/ir/lower-exceptions.js +92 -0
- package/dist/ir/lower-flow.d.ts +137 -0
- package/dist/ir/lower-flow.js +600 -0
- package/dist/ir/lower-graph.d.ts +218 -0
- package/dist/ir/lower-graph.js +687 -0
- package/dist/ir/lower-invocation.d.ts +4 -0
- package/dist/ir/lower-invocation.js +514 -0
- package/dist/ir/lower-narrow.d.ts +53 -0
- package/dist/ir/lower-narrow.js +320 -0
- package/dist/ir/lower-operands.d.ts +272 -0
- package/dist/ir/lower-operands.js +461 -0
- package/dist/ir/lower-property.d.ts +21 -0
- package/dist/ir/lower-property.js +132 -0
- package/dist/ir/lower-protocol.d.ts +11 -0
- package/dist/ir/lower-protocol.js +118 -0
- package/dist/ir/lower-short-circuit.d.ts +41 -0
- package/dist/ir/lower-short-circuit.js +63 -0
- package/dist/ir/lower.d.ts +82 -0
- package/dist/ir/lower.js +1346 -0
- package/dist/ir/model.d.ts +1474 -0
- package/dist/ir/model.js +6 -0
- package/dist/ir/native-absent-property.d.ts +3 -0
- package/dist/ir/native-absent-property.js +13 -0
- package/dist/ir/native-array-transport.d.ts +7 -0
- package/dist/ir/native-array-transport.js +46 -0
- package/dist/ir/native-callable-bind.d.ts +9 -0
- package/dist/ir/native-callable-bind.js +30 -0
- package/dist/ir/native-carrier-predicate.d.ts +34 -0
- package/dist/ir/native-carrier-predicate.js +49 -0
- package/dist/ir/native-class-accessor.d.ts +18 -0
- package/dist/ir/native-class-accessor.js +52 -0
- package/dist/ir/native-class-construction.d.ts +16 -0
- package/dist/ir/native-class-construction.js +71 -0
- package/dist/ir/native-class-initialization.d.ts +15 -0
- package/dist/ir/native-class-initialization.js +56 -0
- package/dist/ir/native-class-origins.d.ts +13 -0
- package/dist/ir/native-class-origins.js +237 -0
- package/dist/ir/native-dictionary-transport.d.ts +6 -0
- package/dist/ir/native-dictionary-transport.js +37 -0
- package/dist/ir/native-enumeration.d.ts +14 -0
- package/dist/ir/native-enumeration.js +26 -0
- package/dist/ir/native-equality.d.ts +10 -0
- package/dist/ir/native-equality.js +18 -0
- package/dist/ir/native-field-owner.d.ts +37 -0
- package/dist/ir/native-field-owner.js +183 -0
- package/dist/ir/native-fixed-layout.d.ts +41 -0
- package/dist/ir/native-fixed-layout.js +232 -0
- package/dist/ir/native-host-construction.d.ts +53 -0
- package/dist/ir/native-host-construction.js +62 -0
- package/dist/ir/native-key-query.d.ts +4 -0
- package/dist/ir/native-key-query.js +38 -0
- package/dist/ir/native-merge-transport.d.ts +25 -0
- package/dist/ir/native-merge-transport.js +71 -0
- package/dist/ir/native-record-index-transport.d.ts +11 -0
- package/dist/ir/native-record-index-transport.js +34 -0
- package/dist/ir/native-record-index.d.ts +12 -0
- package/dist/ir/native-record-index.js +27 -0
- package/dist/ir/native-reflect-field.d.ts +5 -0
- package/dist/ir/native-reflect-field.js +33 -0
- package/dist/ir/native-sequence-transport.d.ts +7 -0
- package/dist/ir/native-sequence-transport.js +53 -0
- package/dist/ir/numeric-intrinsics.d.ts +13 -0
- package/dist/ir/numeric-intrinsics.js +57 -0
- package/dist/ir/object-value-conversions.d.ts +20 -0
- package/dist/ir/object-value-conversions.js +50 -0
- package/dist/ir/physical-class-reflection.d.ts +9 -0
- package/dist/ir/physical-class-reflection.js +57 -0
- package/dist/ir/presence-proof.d.ts +42 -0
- package/dist/ir/presence-proof.js +490 -0
- package/dist/ir/program-facts.d.ts +106 -0
- package/dist/ir/program-facts.js +319 -0
- package/dist/ir/proven-branches.d.ts +16 -0
- package/dist/ir/proven-branches.js +219 -0
- package/dist/ir/queries.d.ts +41 -0
- package/dist/ir/queries.js +213 -0
- package/dist/ir/reflection-demand.d.ts +64 -0
- package/dist/ir/reflection-demand.js +1394 -0
- package/dist/ir/refusal.d.ts +43 -0
- package/dist/ir/refusal.js +28 -0
- package/dist/ir/shake.d.ts +37 -0
- package/dist/ir/shake.js +1078 -0
- package/dist/ir/static-callables.d.ts +11 -0
- package/dist/ir/static-callables.js +163 -0
- package/dist/ir/string-layout-reuse.d.ts +13 -0
- package/dist/ir/string-layout-reuse.js +39 -0
- package/dist/ir/string-length-reuse.d.ts +8 -0
- package/dist/ir/string-length-reuse.js +47 -0
- package/dist/ir/transfer.d.ts +78 -0
- package/dist/ir/transfer.js +270 -0
- package/dist/ir/type-query-results.d.ts +25 -0
- package/dist/ir/type-query-results.js +96 -0
- package/dist/ir/typed-property-access.d.ts +100 -0
- package/dist/ir/typed-property-access.js +161 -0
- package/dist/ir/verify.d.ts +19 -0
- package/dist/ir/verify.js +355 -0
- package/dist/plugins/apple/constructors.d.ts +112 -0
- package/dist/plugins/apple/constructors.js +217 -0
- package/dist/plugins/apple/host.d.ts +181 -0
- package/dist/plugins/apple/host.js +262 -0
- package/dist/plugins/apple/jsx.d.ts +2 -0
- package/dist/plugins/apple/jsx.js +293 -0
- package/dist/plugins/apple/members.d.ts +16 -0
- package/dist/plugins/apple/members.js +190 -0
- package/dist/plugins/apple/plugin.d.ts +2 -0
- package/dist/plugins/apple/plugin.js +156 -0
- package/dist/plugins/gea/component-classes.d.ts +25 -0
- package/dist/plugins/gea/component-classes.js +162 -0
- package/dist/plugins/gea/component-inline.d.ts +13 -0
- package/dist/plugins/gea/component-inline.js +532 -0
- package/dist/plugins/gea/constructors.d.ts +23 -0
- package/dist/plugins/gea/constructors.js +100 -0
- package/dist/plugins/gea/contract.d.ts +150 -0
- package/dist/plugins/gea/contract.js +195 -0
- package/dist/plugins/gea/element-ref.d.ts +31 -0
- package/dist/plugins/gea/element-ref.js +45 -0
- package/dist/plugins/gea/host.d.ts +520 -0
- package/dist/plugins/gea/host.js +762 -0
- package/dist/plugins/gea/lower.d.ts +6 -0
- package/dist/plugins/gea/lower.js +195 -0
- package/dist/plugins/gea/members.d.ts +22 -0
- package/dist/plugins/gea/members.js +221 -0
- package/dist/plugins/gea/plugin.d.ts +22 -0
- package/dist/plugins/gea/plugin.js +307 -0
- package/dist/plugins/gea/prelude.d.ts +78 -0
- package/dist/plugins/gea/prelude.js +153 -0
- package/dist/plugins/gea/producer.d.ts +5 -0
- package/dist/plugins/gea/producer.js +52 -0
- package/dist/plugins/gea/reactive-slots.d.ts +49 -0
- package/dist/plugins/gea/reactive-slots.js +578 -0
- package/dist/plugins/gea/render-bridge.d.ts +6 -0
- package/dist/plugins/gea/render-bridge.js +281 -0
- package/dist/plugins/gea/slots.d.ts +15 -0
- package/dist/plugins/gea/slots.js +36 -0
- package/dist/plugins/gea/template-analysis.d.ts +151 -0
- package/dist/plugins/gea/template-analysis.js +346 -0
- package/dist/plugins/gea/user-agent-styles.d.ts +9 -0
- package/dist/plugins/gea/user-agent-styles.js +94 -0
- package/dist/plugins/installed.d.ts +19 -0
- package/dist/plugins/installed.js +21 -0
- package/dist/plugins/load.d.ts +7 -0
- package/dist/plugins/load.js +207 -0
- package/dist/plugins/model.d.ts +735 -0
- package/dist/plugins/model.js +47 -0
- package/dist/plugins/webgl/host.d.ts +77 -0
- package/dist/plugins/webgl/host.js +162 -0
- package/dist/plugins/webgl/plugin.d.ts +40 -0
- package/dist/plugins/webgl/plugin.js +99 -0
- package/dist/preflight/obligations.d.ts +206 -0
- package/dist/preflight/obligations.js +36 -0
- package/dist/preflight/report.d.ts +20 -0
- package/dist/preflight/report.js +61 -0
- package/dist/preflight/run.d.ts +39 -0
- package/dist/preflight/run.js +403 -0
- package/dist/project-preparation.d.ts +33 -0
- package/dist/project-preparation.js +314 -0
- package/dist/projection/abi.d.ts +82 -0
- package/dist/projection/abi.js +349 -0
- package/dist/projection/apply-arguments.d.ts +12 -0
- package/dist/projection/apply-arguments.js +20 -0
- package/dist/projection/bindings.d.ts +250 -0
- package/dist/projection/bindings.js +340 -0
- package/dist/projection/callee.d.ts +196 -0
- package/dist/projection/callee.js +444 -0
- package/dist/projection/class-property-presence.d.ts +28 -0
- package/dist/projection/class-property-presence.js +58 -0
- package/dist/projection/class-prototype.d.ts +5 -0
- package/dist/projection/class-prototype.js +23 -0
- package/dist/projection/class-storage.d.ts +26 -0
- package/dist/projection/class-storage.js +236 -0
- package/dist/projection/classes.d.ts +283 -0
- package/dist/projection/classes.js +944 -0
- package/dist/projection/coercions.d.ts +20 -0
- package/dist/projection/coercions.js +33 -0
- package/dist/projection/dispatch.d.ts +167 -0
- package/dist/projection/dispatch.js +379 -0
- package/dist/projection/fields.d.ts +123 -0
- package/dist/projection/fields.js +383 -0
- package/dist/projection/instance-test.d.ts +78 -0
- package/dist/projection/instance-test.js +156 -0
- package/dist/projection/slots.d.ts +146 -0
- package/dist/projection/slots.js +663 -0
- package/dist/projection/synthesized-abi.d.ts +61 -0
- package/dist/projection/synthesized-abi.js +94 -0
- package/dist/representation/array-index.d.ts +14 -0
- package/dist/representation/array-index.js +17 -0
- package/dist/representation/callable-object.d.ts +3 -0
- package/dist/representation/callable-object.js +6 -0
- package/dist/representation/collections.d.ts +84 -0
- package/dist/representation/collections.js +139 -0
- package/dist/representation/derive.d.ts +159 -0
- package/dist/representation/derive.js +2546 -0
- package/dist/representation/difference.d.ts +30 -0
- package/dist/representation/difference.js +240 -0
- package/dist/representation/field-descriptor-policy.d.ts +19 -0
- package/dist/representation/field-descriptor-policy.js +39 -0
- package/dist/representation/function-constructor.d.ts +13 -0
- package/dist/representation/function-constructor.js +9 -0
- package/dist/representation/host-abi.d.ts +32 -0
- package/dist/representation/host-abi.js +97 -0
- package/dist/representation/host-templates.d.ts +67 -0
- package/dist/representation/host-templates.js +94 -0
- package/dist/representation/intersection.d.ts +84 -0
- package/dist/representation/intersection.js +149 -0
- package/dist/representation/literal-destination.d.ts +43 -0
- package/dist/representation/literal-destination.js +133 -0
- package/dist/representation/merge.d.ts +18 -0
- package/dist/representation/merge.js +83 -0
- package/dist/representation/model.d.ts +1160 -0
- package/dist/representation/model.js +1019 -0
- package/dist/representation/numeric-index.d.ts +13 -0
- package/dist/representation/numeric-index.js +29 -0
- package/dist/representation/object-shape.d.ts +109 -0
- package/dist/representation/object-shape.js +123 -0
- package/dist/representation/optional.d.ts +12 -0
- package/dist/representation/optional.js +87 -0
- package/dist/representation/plan.d.ts +60 -0
- package/dist/representation/plan.js +78 -0
- package/dist/representation/policies.d.ts +589 -0
- package/dist/representation/policies.js +107 -0
- package/dist/representation/primitive-domain.d.ts +1 -0
- package/dist/representation/primitive-domain.js +1 -0
- package/dist/representation/primitives.d.ts +44 -0
- package/dist/representation/primitives.js +78 -0
- package/dist/representation/publish.d.ts +49 -0
- package/dist/representation/publish.js +648 -0
- package/dist/representation/record-fields.d.ts +96 -0
- package/dist/representation/record-fields.js +116 -0
- package/dist/representation/template-object.d.ts +11 -0
- package/dist/representation/template-object.js +26 -0
- package/dist/representation/union.d.ts +30 -0
- package/dist/representation/union.js +324 -0
- package/dist/representation/value-records.d.ts +3 -0
- package/dist/representation/value-records.js +307 -0
- package/dist/representation/verify.d.ts +17 -0
- package/dist/representation/verify.js +221 -0
- package/dist/semantics/alias-this-field-declaration-transform.d.ts +4 -0
- package/dist/semantics/alias-this-field-declaration-transform.js +207 -0
- package/dist/semantics/ambient-type-realization-transform.d.ts +62 -0
- package/dist/semantics/ambient-type-realization-transform.js +168 -0
- package/dist/semantics/ambient.d.ts +24 -0
- package/dist/semantics/ambient.js +119 -0
- package/dist/semantics/borrowed-builtin-call-bind-source-transform.d.ts +4 -0
- package/dist/semantics/borrowed-builtin-call-bind-source-transform.js +341 -0
- package/dist/semantics/callable-origins.d.ts +46 -0
- package/dist/semantics/callable-origins.js +354 -0
- package/dist/semantics/class-alias.d.ts +7 -0
- package/dist/semantics/class-alias.js +37 -0
- package/dist/semantics/class-heritage.d.ts +34 -0
- package/dist/semantics/class-heritage.js +104 -0
- package/dist/semantics/commonjs-wrapper.d.ts +69 -0
- package/dist/semantics/commonjs-wrapper.js +231 -0
- package/dist/semantics/constructor-slot-subclasses.d.ts +28 -0
- package/dist/semantics/constructor-slot-subclasses.js +112 -0
- package/dist/semantics/declaration-overlay-transform.d.ts +35 -0
- package/dist/semantics/declaration-overlay-transform.js +2157 -0
- package/dist/semantics/define-property-source-transform.d.ts +4 -0
- package/dist/semantics/define-property-source-transform.js +437 -0
- package/dist/semantics/diagnostic-source-preparation.d.ts +24 -0
- package/dist/semantics/diagnostic-source-preparation.js +82 -0
- package/dist/semantics/documentation-ranges.d.ts +22 -0
- package/dist/semantics/documentation-ranges.js +36 -0
- package/dist/semantics/dynamic-fallback.d.ts +86 -0
- package/dist/semantics/dynamic-fallback.js +249 -0
- package/dist/semantics/frontend-timing.d.ts +6 -0
- package/dist/semantics/frontend-timing.js +35 -0
- package/dist/semantics/frontend.d.ts +504 -0
- package/dist/semantics/frontend.js +1157 -0
- package/dist/semantics/host-declaration-provenance.d.ts +11 -0
- package/dist/semantics/host-declaration-provenance.js +18 -0
- package/dist/semantics/host-methods.d.ts +24 -0
- package/dist/semantics/host-methods.js +74 -0
- package/dist/semantics/host-protocols.d.ts +429 -0
- package/dist/semantics/host-protocols.js +1501 -0
- package/dist/semantics/inherited-accessor.d.ts +7 -0
- package/dist/semantics/inherited-accessor.js +48 -0
- package/dist/semantics/interface-families.d.ts +70 -0
- package/dist/semantics/interface-families.js +180 -0
- package/dist/semantics/interface-implementors.d.ts +53 -0
- package/dist/semantics/interface-implementors.js +87 -0
- package/dist/semantics/jsdoc-namepath-transform.d.ts +4 -0
- package/dist/semantics/jsdoc-namepath-transform.js +85 -0
- package/dist/semantics/model/coverage.d.ts +68 -0
- package/dist/semantics/model/coverage.js +73 -0
- package/dist/semantics/model/edges.d.ts +103 -0
- package/dist/semantics/model/edges.js +20 -0
- package/dist/semantics/model/graph.d.ts +55 -0
- package/dist/semantics/model/graph.js +129 -0
- package/dist/semantics/model/operands.d.ts +159 -0
- package/dist/semantics/model/operands.js +26 -0
- package/dist/semantics/model/operations.d.ts +496 -0
- package/dist/semantics/model/operations.js +2 -0
- package/dist/semantics/model/primitive-domain.d.ts +26 -0
- package/dist/semantics/model/primitive-domain.js +38 -0
- package/dist/semantics/model/selected-signature.d.ts +261 -0
- package/dist/semantics/model/selected-signature.js +55 -0
- package/dist/semantics/model/structural-type-table.d.ts +93 -0
- package/dist/semantics/model/structural-type-table.js +237 -0
- package/dist/semantics/model/structural-types.d.ts +367 -0
- package/dist/semantics/model/structural-types.js +200 -0
- package/dist/semantics/module-resolution.d.ts +23 -0
- package/dist/semantics/module-resolution.js +227 -0
- package/dist/semantics/new-callee-class-tag-source-transform.d.ts +4 -0
- package/dist/semantics/new-callee-class-tag-source-transform.js +64 -0
- package/dist/semantics/node-project.d.ts +13 -0
- package/dist/semantics/node-project.js +107 -0
- package/dist/semantics/node-source-hooks.d.ts +1 -0
- package/dist/semantics/node-source-hooks.js +63 -0
- package/dist/semantics/normalize/absent-globals.d.ts +143 -0
- package/dist/semantics/normalize/absent-globals.js +191 -0
- package/dist/semantics/normalize/arguments-objects.d.ts +43 -0
- package/dist/semantics/normalize/arguments-objects.js +60 -0
- package/dist/semantics/normalize/asserted-arm-absence.d.ts +28 -0
- package/dist/semantics/normalize/asserted-arm-absence.js +61 -0
- package/dist/semantics/normalize/assignment-patterns.d.ts +70 -0
- package/dist/semantics/normalize/assignment-patterns.js +147 -0
- package/dist/semantics/normalize/bag-absence.d.ts +8 -0
- package/dist/semantics/normalize/bag-absence.js +42 -0
- package/dist/semantics/normalize/binding-fixpoint.d.ts +36 -0
- package/dist/semantics/normalize/binding-fixpoint.js +140 -0
- package/dist/semantics/normalize/callback-parameter-contracts.d.ts +16 -0
- package/dist/semantics/normalize/callback-parameter-contracts.js +91 -0
- package/dist/semantics/normalize/cells/agreement.d.ts +46 -0
- package/dist/semantics/normalize/cells/agreement.js +34 -0
- package/dist/semantics/normalize/cells/candidates.d.ts +17 -0
- package/dist/semantics/normalize/cells/candidates.js +35 -0
- package/dist/semantics/normalize/cells/facts.d.ts +19 -0
- package/dist/semantics/normalize/cells/facts.js +90 -0
- package/dist/semantics/normalize/cells/index.d.ts +10 -0
- package/dist/semantics/normalize/cells/index.js +6 -0
- package/dist/semantics/normalize/cells/model.d.ts +98 -0
- package/dist/semantics/normalize/cells/model.js +2 -0
- package/dist/semantics/normalize/cells/policies/bag.d.ts +44 -0
- package/dist/semantics/normalize/cells/policies/bag.js +114 -0
- package/dist/semantics/normalize/cells/policies/collection.d.ts +42 -0
- package/dist/semantics/normalize/cells/policies/collection.js +218 -0
- package/dist/semantics/normalize/cells/policies/field.d.ts +28 -0
- package/dist/semantics/normalize/cells/policies/field.js +40 -0
- package/dist/semantics/normalize/cells/policies/index.d.ts +49 -0
- package/dist/semantics/normalize/cells/policies/index.js +58 -0
- package/dist/semantics/normalize/cells/policies/local.d.ts +18 -0
- package/dist/semantics/normalize/cells/policies/local.js +37 -0
- package/dist/semantics/normalize/cells/policies/parameter.d.ts +28 -0
- package/dist/semantics/normalize/cells/policies/parameter.js +39 -0
- package/dist/semantics/normalize/cells/policies/return.d.ts +26 -0
- package/dist/semantics/normalize/cells/policies/return.js +45 -0
- package/dist/semantics/normalize/cells/policies/shared.d.ts +33 -0
- package/dist/semantics/normalize/cells/policies/shared.js +45 -0
- package/dist/semantics/normalize/cells/policy.d.ts +72 -0
- package/dist/semantics/normalize/cells/policy.js +18 -0
- package/dist/semantics/normalize/cells/registry.d.ts +14 -0
- package/dist/semantics/normalize/cells/registry.js +17 -0
- package/dist/semantics/normalize/census-refusal.d.ts +62 -0
- package/dist/semantics/normalize/census-refusal.js +27 -0
- package/dist/semantics/normalize/census.d.ts +109 -0
- package/dist/semantics/normalize/census.js +667 -0
- package/dist/semantics/normalize/collection-bindings.d.ts +278 -0
- package/dist/semantics/normalize/collection-bindings.js +677 -0
- package/dist/semantics/normalize/commonjs-module-record.d.ts +21 -0
- package/dist/semantics/normalize/commonjs-module-record.js +289 -0
- package/dist/semantics/normalize/commonjs-require.d.ts +13 -0
- package/dist/semantics/normalize/commonjs-require.js +1527 -0
- package/dist/semantics/normalize/contribution.d.ts +63 -0
- package/dist/semantics/normalize/contribution.js +172 -0
- package/dist/semantics/normalize/dead-typeof-guards.d.ts +64 -0
- package/dist/semantics/normalize/dead-typeof-guards.js +152 -0
- package/dist/semantics/normalize/deferred-intrinsic-protocols.d.ts +57 -0
- package/dist/semantics/normalize/deferred-intrinsic-protocols.js +109 -0
- package/dist/semantics/normalize/derived-expression-type.d.ts +1070 -0
- package/dist/semantics/normalize/derived-expression-type.js +3463 -0
- package/dist/semantics/normalize/evaluation-order.d.ts +16 -0
- package/dist/semantics/normalize/evaluation-order.js +37 -0
- package/dist/semantics/normalize/field-bindings.d.ts +167 -0
- package/dist/semantics/normalize/field-bindings.js +1125 -0
- package/dist/semantics/normalize/flow/array-element-continuation.d.ts +27 -0
- package/dist/semantics/normalize/flow/array-element-continuation.js +1452 -0
- package/dist/semantics/normalize/flow/callable-array-origins.d.ts +42 -0
- package/dist/semantics/normalize/flow/callable-array-origins.js +318 -0
- package/dist/semantics/normalize/flow/callable-completions.d.ts +45 -0
- package/dist/semantics/normalize/flow/callable-completions.js +82 -0
- package/dist/semantics/normalize/flow/callable-reach.d.ts +237 -0
- package/dist/semantics/normalize/flow/callable-reach.js +7174 -0
- package/dist/semantics/normalize/flow/class-family-member-read.d.ts +16 -0
- package/dist/semantics/normalize/flow/class-family-member-read.js +992 -0
- package/dist/semantics/normalize/flow/collection-value-continuation.d.ts +21 -0
- package/dist/semantics/normalize/flow/collection-value-continuation.js +192 -0
- package/dist/semantics/normalize/flow/component-solver.d.ts +199 -0
- package/dist/semantics/normalize/flow/component-solver.js +587 -0
- package/dist/semantics/normalize/flow/computed-key-set.d.ts +84 -0
- package/dist/semantics/normalize/flow/computed-key-set.js +660 -0
- package/dist/semantics/normalize/flow/export-importers.d.ts +24 -0
- package/dist/semantics/normalize/flow/export-importers.js +269 -0
- package/dist/semantics/normalize/flow/host-text-sink.d.ts +25 -0
- package/dist/semantics/normalize/flow/host-text-sink.js +87 -0
- package/dist/semantics/normalize/flow/intrinsic-array-callback-frames.d.ts +84 -0
- package/dist/semantics/normalize/flow/intrinsic-array-callback-frames.js +180 -0
- package/dist/semantics/normalize/flow/intrinsic-data-definition.d.ts +35 -0
- package/dist/semantics/normalize/flow/intrinsic-data-definition.js +140 -0
- package/dist/semantics/normalize/flow/invocation-facts.d.ts +98 -0
- package/dist/semantics/normalize/flow/invocation-facts.js +257 -0
- package/dist/semantics/normalize/flow/member-call-forwarding.d.ts +122 -0
- package/dist/semantics/normalize/flow/member-call-forwarding.js +835 -0
- package/dist/semantics/normalize/flow/model.d.ts +357 -0
- package/dist/semantics/normalize/flow/model.js +177 -0
- package/dist/semantics/normalize/flow/native-collection-protocol.d.ts +24 -0
- package/dist/semantics/normalize/flow/native-collection-protocol.js +252 -0
- package/dist/semantics/normalize/flow/node-path-token.d.ts +3 -0
- package/dist/semantics/normalize/flow/node-path-token.js +53 -0
- package/dist/semantics/normalize/flow/object-binding-continuation.d.ts +11 -0
- package/dist/semantics/normalize/flow/object-binding-continuation.js +42 -0
- package/dist/semantics/normalize/flow/origin-authority.d.ts +56 -0
- package/dist/semantics/normalize/flow/origin-authority.js +2 -0
- package/dist/semantics/normalize/flow/owned-class-receivers.d.ts +35 -0
- package/dist/semantics/normalize/flow/owned-class-receivers.js +191 -0
- package/dist/semantics/normalize/flow/parameter-values.d.ts +27 -0
- package/dist/semantics/normalize/flow/parameter-values.js +251 -0
- package/dist/semantics/normalize/flow/proof-hypotheses.d.ts +66 -0
- package/dist/semantics/normalize/flow/proof-hypotheses.js +162 -0
- package/dist/semantics/normalize/flow/record-alias-closure.d.ts +27 -0
- package/dist/semantics/normalize/flow/record-alias-closure.js +298 -0
- package/dist/semantics/normalize/flow/seeded-origins.d.ts +43 -0
- package/dist/semantics/normalize/flow/seeded-origins.js +54 -0
- package/dist/semantics/normalize/flow/source-class-data.d.ts +132 -0
- package/dist/semantics/normalize/flow/source-class-data.js +838 -0
- package/dist/semantics/normalize/flow/source-class-instanceof.d.ts +13 -0
- package/dist/semantics/normalize/flow/source-class-instanceof.js +37 -0
- package/dist/semantics/normalize/flow/source-class-static-data.d.ts +16 -0
- package/dist/semantics/normalize/flow/source-class-static-data.js +47 -0
- package/dist/semantics/normalize/flow/source-construction-frames.d.ts +12 -0
- package/dist/semantics/normalize/flow/source-construction-frames.js +118 -0
- package/dist/semantics/normalize/flow/source-invocation-frame-layout.d.ts +34 -0
- package/dist/semantics/normalize/flow/source-invocation-frame-layout.js +78 -0
- package/dist/semantics/normalize/flow/source-invocation-receiver.d.ts +37 -0
- package/dist/semantics/normalize/flow/source-invocation-receiver.js +95 -0
- package/dist/semantics/normalize/flow/source-prototype-method-identity.d.ts +23 -0
- package/dist/semantics/normalize/flow/source-prototype-method-identity.js +81 -0
- package/dist/semantics/normalize/flow/source-record-data.d.ts +29 -0
- package/dist/semantics/normalize/flow/source-record-data.js +626 -0
- package/dist/semantics/normalize/flow/source-value-session.d.ts +77 -0
- package/dist/semantics/normalize/flow/source-value-session.js +3089 -0
- package/dist/semantics/normalize/flow/targets.d.ts +118 -0
- package/dist/semantics/normalize/flow/targets.js +405 -0
- package/dist/semantics/normalize/flow/value-flow.d.ts +36 -0
- package/dist/semantics/normalize/flow/value-flow.js +823 -0
- package/dist/semantics/normalize/flow/value-provenance.d.ts +31 -0
- package/dist/semantics/normalize/flow/value-provenance.js +112 -0
- package/dist/semantics/normalize/gating.d.ts +51 -0
- package/dist/semantics/normalize/gating.js +560 -0
- package/dist/semantics/normalize/generic-function-choice.d.ts +31 -0
- package/dist/semantics/normalize/generic-function-choice.js +115 -0
- package/dist/semantics/normalize/global-host-mutations.d.ts +51 -0
- package/dist/semantics/normalize/global-host-mutations.js +5989 -0
- package/dist/semantics/normalize/host-effect-contracts.d.ts +77 -0
- package/dist/semantics/normalize/host-effect-contracts.js +143 -0
- package/dist/semantics/normalize/host-mutation-computed-keys.d.ts +38 -0
- package/dist/semantics/normalize/host-mutation-computed-keys.js +26 -0
- package/dist/semantics/normalize/host-mutation-key-reader.d.ts +66 -0
- package/dist/semantics/normalize/host-mutation-key-reader.js +192 -0
- package/dist/semantics/normalize/host-mutation-keys.d.ts +114 -0
- package/dist/semantics/normalize/host-mutation-keys.js +183 -0
- package/dist/semantics/normalize/identities.d.ts +172 -0
- package/dist/semantics/normalize/identities.js +426 -0
- package/dist/semantics/normalize/implicit-arguments-tuple.d.ts +97 -0
- package/dist/semantics/normalize/implicit-arguments-tuple.js +197 -0
- package/dist/semantics/normalize/implicit-arguments.d.ts +11 -0
- package/dist/semantics/normalize/implicit-arguments.js +39 -0
- package/dist/semantics/normalize/instantiation.d.ts +73 -0
- package/dist/semantics/normalize/instantiation.js +399 -0
- package/dist/semantics/normalize/intrinsic-property-call.d.ts +18 -0
- package/dist/semantics/normalize/intrinsic-property-call.js +69 -0
- package/dist/semantics/normalize/intrinsic-prototype.d.ts +41 -0
- package/dist/semantics/normalize/intrinsic-prototype.js +87 -0
- package/dist/semantics/normalize/intrinsic-static-member.d.ts +14 -0
- package/dist/semantics/normalize/intrinsic-static-member.js +23 -0
- package/dist/semantics/normalize/jsdoc-type-names.d.ts +32 -0
- package/dist/semantics/normalize/jsdoc-type-names.js +512 -0
- package/dist/semantics/normalize/keyof.d.ts +32 -0
- package/dist/semantics/normalize/keyof.js +110 -0
- package/dist/semantics/normalize/local-bindings.d.ts +176 -0
- package/dist/semantics/normalize/local-bindings.js +1826 -0
- package/dist/semantics/normalize/logical-result-type.d.ts +16 -0
- package/dist/semantics/normalize/logical-result-type.js +102 -0
- package/dist/semantics/normalize/namespace-paths.d.ts +57 -0
- package/dist/semantics/normalize/namespace-paths.js +108 -0
- package/dist/semantics/normalize/normalize.d.ts +57 -0
- package/dist/semantics/normalize/normalize.js +68 -0
- package/dist/semantics/normalize/object-bag-bindings.d.ts +305 -0
- package/dist/semantics/normalize/object-bag-bindings.js +1290 -0
- package/dist/semantics/normalize/omitted-stated-parameter.d.ts +53 -0
- package/dist/semantics/normalize/omitted-stated-parameter.js +59 -0
- package/dist/semantics/normalize/open-type-form.d.ts +10 -0
- package/dist/semantics/normalize/open-type-form.js +32 -0
- package/dist/semantics/normalize/parameter-bindings.d.ts +361 -0
- package/dist/semantics/normalize/parameter-bindings.js +3339 -0
- package/dist/semantics/normalize/parameter-slot.d.ts +264 -0
- package/dist/semantics/normalize/parameter-slot.js +491 -0
- package/dist/semantics/normalize/physical-overload-result.d.ts +77 -0
- package/dist/semantics/normalize/physical-overload-result.js +99 -0
- package/dist/semantics/normalize/primitive-property-absence.d.ts +12 -0
- package/dist/semantics/normalize/primitive-property-absence.js +60 -0
- package/dist/semantics/normalize/producer-context.d.ts +376 -0
- package/dist/semantics/normalize/producer-context.js +1 -0
- package/dist/semantics/normalize/producers/allocations.d.ts +3 -0
- package/dist/semantics/normalize/producers/allocations.js +863 -0
- package/dist/semantics/normalize/producers/binding-kind.d.ts +37 -0
- package/dist/semantics/normalize/producers/binding-kind.js +36 -0
- package/dist/semantics/normalize/producers/bindings.d.ts +85 -0
- package/dist/semantics/normalize/producers/bindings.js +710 -0
- package/dist/semantics/normalize/producers/boundary.d.ts +34 -0
- package/dist/semantics/normalize/producers/boundary.js +123 -0
- package/dist/semantics/normalize/producers/class-lifecycle.d.ts +3 -0
- package/dist/semantics/normalize/producers/class-lifecycle.js +902 -0
- package/dist/semantics/normalize/producers/computations.d.ts +3 -0
- package/dist/semantics/normalize/producers/computations.js +613 -0
- package/dist/semantics/normalize/producers/control-loops.d.ts +30 -0
- package/dist/semantics/normalize/producers/control-loops.js +91 -0
- package/dist/semantics/normalize/producers/control.d.ts +30 -0
- package/dist/semantics/normalize/producers/control.js +923 -0
- package/dist/semantics/normalize/producers/declaration-lifecycle.d.ts +3 -0
- package/dist/semantics/normalize/producers/declaration-lifecycle.js +390 -0
- package/dist/semantics/normalize/producers/destructuring.d.ts +45 -0
- package/dist/semantics/normalize/producers/destructuring.js +1180 -0
- package/dist/semantics/normalize/producers/dynamic-language.d.ts +3 -0
- package/dist/semantics/normalize/producers/dynamic-language.js +70 -0
- package/dist/semantics/normalize/producers/erasure.d.ts +51 -0
- package/dist/semantics/normalize/producers/erasure.js +90 -0
- package/dist/semantics/normalize/producers/installed.d.ts +3 -0
- package/dist/semantics/normalize/producers/installed.js +55 -0
- package/dist/semantics/normalize/producers/invocations.d.ts +35 -0
- package/dist/semantics/normalize/producers/invocations.js +1796 -0
- package/dist/semantics/normalize/producers/iteration-yield.d.ts +59 -0
- package/dist/semantics/normalize/producers/iteration-yield.js +235 -0
- package/dist/semantics/normalize/producers/jsx.d.ts +3 -0
- package/dist/semantics/normalize/producers/jsx.js +360 -0
- package/dist/semantics/normalize/producers/mint.d.ts +39 -0
- package/dist/semantics/normalize/producers/mint.js +44 -0
- package/dist/semantics/normalize/producers/nullish.d.ts +16 -0
- package/dist/semantics/normalize/producers/nullish.js +27 -0
- package/dist/semantics/normalize/producers/object-assignment.d.ts +8 -0
- package/dist/semantics/normalize/producers/object-assignment.js +204 -0
- package/dist/semantics/normalize/producers/object-tag.d.ts +9 -0
- package/dist/semantics/normalize/producers/object-tag.js +119 -0
- package/dist/semantics/normalize/producers/optional-chain.d.ts +44 -0
- package/dist/semantics/normalize/producers/optional-chain.js +75 -0
- package/dist/semantics/normalize/producers/properties.d.ts +21 -0
- package/dist/semantics/normalize/producers/properties.js +1053 -0
- package/dist/semantics/normalize/producers/protocol.d.ts +67 -0
- package/dist/semantics/normalize/producers/protocol.js +695 -0
- package/dist/semantics/normalize/producers/references.d.ts +53 -0
- package/dist/semantics/normalize/producers/references.js +1027 -0
- package/dist/semantics/normalize/producers/shared.d.ts +561 -0
- package/dist/semantics/normalize/producers/shared.js +1683 -0
- package/dist/semantics/normalize/producers/spread-arguments.d.ts +72 -0
- package/dist/semantics/normalize/producers/spread-arguments.js +375 -0
- package/dist/semantics/normalize/producers/tagged-template.d.ts +5 -0
- package/dist/semantics/normalize/producers/tagged-template.js +307 -0
- package/dist/semantics/normalize/producers/tuple-spread.d.ts +189 -0
- package/dist/semantics/normalize/producers/tuple-spread.js +279 -0
- package/dist/semantics/normalize/property-key-domain.d.ts +36 -0
- package/dist/semantics/normalize/property-key-domain.js +150 -0
- package/dist/semantics/normalize/reachability.d.ts +189 -0
- package/dist/semantics/normalize/reachability.js +1057 -0
- package/dist/semantics/normalize/reassigned-bindings.d.ts +13 -0
- package/dist/semantics/normalize/reassigned-bindings.js +41 -0
- package/dist/semantics/normalize/record-storage-families.d.ts +11 -0
- package/dist/semantics/normalize/record-storage-families.js +109 -0
- package/dist/semantics/normalize/return-bindings.d.ts +260 -0
- package/dist/semantics/normalize/return-bindings.js +1311 -0
- package/dist/semantics/normalize/return-paths.d.ts +2 -0
- package/dist/semantics/normalize/return-paths.js +28 -0
- package/dist/semantics/normalize/script-global-redefinition.d.ts +44 -0
- package/dist/semantics/normalize/script-global-redefinition.js +75 -0
- package/dist/semantics/normalize/specialization.d.ts +201 -0
- package/dist/semantics/normalize/specialization.js +1824 -0
- package/dist/semantics/normalize/structural-array-element.d.ts +176 -0
- package/dist/semantics/normalize/structural-array-element.js +700 -0
- package/dist/semantics/normalize/structural-array-read.d.ts +13 -0
- package/dist/semantics/normalize/structural-array-read.js +124 -0
- package/dist/semantics/normalize/structural-callable.d.ts +12 -0
- package/dist/semantics/normalize/structural-callable.js +82 -0
- package/dist/semantics/normalize/structural-creation-order.d.ts +32 -0
- package/dist/semantics/normalize/structural-creation-order.js +111 -0
- package/dist/semantics/normalize/structural-declarations.d.ts +395 -0
- package/dist/semantics/normalize/structural-declarations.js +968 -0
- package/dist/semantics/normalize/structural-declared-body.d.ts +25 -0
- package/dist/semantics/normalize/structural-declared-body.js +147 -0
- package/dist/semantics/normalize/structural-generics.d.ts +56 -0
- package/dist/semantics/normalize/structural-generics.js +120 -0
- package/dist/semantics/normalize/structural-indexed-access.d.ts +11 -0
- package/dist/semantics/normalize/structural-indexed-access.js +126 -0
- package/dist/semantics/normalize/structural-instantiated-member.d.ts +64 -0
- package/dist/semantics/normalize/structural-instantiated-member.js +407 -0
- package/dist/semantics/normalize/structural-joins.d.ts +44 -0
- package/dist/semantics/normalize/structural-joins.js +143 -0
- package/dist/semantics/normalize/structural-layout-relevance.d.ts +29 -0
- package/dist/semantics/normalize/structural-layout-relevance.js +391 -0
- package/dist/semantics/normalize/structural-layout-type.d.ts +11 -0
- package/dist/semantics/normalize/structural-layout-type.js +1468 -0
- package/dist/semantics/normalize/structural-leaves.d.ts +49 -0
- package/dist/semantics/normalize/structural-leaves.js +125 -0
- package/dist/semantics/normalize/structural-local-union.d.ts +13 -0
- package/dist/semantics/normalize/structural-local-union.js +133 -0
- package/dist/semantics/normalize/structural-members.d.ts +26 -0
- package/dist/semantics/normalize/structural-members.js +84 -0
- package/dist/semantics/normalize/structural-mutable-method.d.ts +15 -0
- package/dist/semantics/normalize/structural-mutable-method.js +109 -0
- package/dist/semantics/normalize/structural-parts.d.ts +131 -0
- package/dist/semantics/normalize/structural-parts.js +737 -0
- package/dist/semantics/normalize/structural-receiver.d.ts +66 -0
- package/dist/semantics/normalize/structural-receiver.js +551 -0
- package/dist/semantics/normalize/structural-rules.d.ts +112 -0
- package/dist/semantics/normalize/structural-rules.js +93 -0
- package/dist/semantics/normalize/structural-self-reference.d.ts +150 -0
- package/dist/semantics/normalize/structural-self-reference.js +494 -0
- package/dist/semantics/normalize/structural.d.ts +202 -0
- package/dist/semantics/normalize/structural.js +4218 -0
- package/dist/semantics/normalize/unreduced-type-form.d.ts +41 -0
- package/dist/semantics/normalize/unreduced-type-form.js +53 -0
- package/dist/semantics/normalize/unresolvable-names.d.ts +56 -0
- package/dist/semantics/normalize/unresolvable-names.js +140 -0
- package/dist/semantics/package-sources.d.ts +16 -0
- package/dist/semantics/package-sources.js +365 -0
- package/dist/semantics/program.d.ts +151 -0
- package/dist/semantics/program.js +667 -0
- package/dist/semantics/prototype-install-source-transform.d.ts +4 -0
- package/dist/semantics/prototype-install-source-transform.js +341 -0
- package/dist/semantics/prototype-object-class-source-transform.d.ts +4 -0
- package/dist/semantics/prototype-object-class-source-transform.js +525 -0
- package/dist/semantics/prototype-reparenting.d.ts +50 -0
- package/dist/semantics/prototype-reparenting.js +317 -0
- package/dist/semantics/stable-checker.d.ts +10 -0
- package/dist/semantics/stable-checker.js +148 -0
- package/dist/semantics/subclass-member-overlay-transform.d.ts +35 -0
- package/dist/semantics/subclass-member-overlay-transform.js +1418 -0
- package/dist/semantics/symbol-keyed-expando-source-transform.d.ts +4 -0
- package/dist/semantics/symbol-keyed-expando-source-transform.js +66 -0
- package/dist/semantics/this-constructor-source-transform.d.ts +4 -0
- package/dist/semantics/this-constructor-source-transform.js +122 -0
- package/dist/semantics/uninstantiable-classes.d.ts +22 -0
- package/dist/semantics/uninstantiable-classes.js +75 -0
- package/dist/targets/cpp/balanced-units.d.ts +3 -0
- package/dist/targets/cpp/balanced-units.js +58 -0
- package/dist/targets/cpp/borrowed-call-entry.d.ts +30 -0
- package/dist/targets/cpp/borrowed-call-entry.js +68 -0
- package/dist/targets/cpp/captures.d.ts +68 -0
- package/dist/targets/cpp/captures.js +269 -0
- package/dist/targets/cpp/class-layout.d.ts +313 -0
- package/dist/targets/cpp/class-layout.js +483 -0
- package/dist/targets/cpp/class-properties/computed-method-value.d.ts +25 -0
- package/dist/targets/cpp/class-properties/computed-method-value.js +22 -0
- package/dist/targets/cpp/class-properties/emit-class-properties.d.ts +216 -0
- package/dist/targets/cpp/class-properties/emit-class-properties.js +917 -0
- package/dist/targets/cpp/class-properties/native-prototype.d.ts +11 -0
- package/dist/targets/cpp/class-properties/native-prototype.js +101 -0
- package/dist/targets/cpp/class-ref-transport.d.ts +12 -0
- package/dist/targets/cpp/class-ref-transport.js +32 -0
- package/dist/targets/cpp/conversions.d.ts +3 -0
- package/dist/targets/cpp/conversions.js +2027 -0
- package/dist/targets/cpp/deferral-safety.d.ts +82 -0
- package/dist/targets/cpp/deferral-safety.js +86 -0
- package/dist/targets/cpp/direct-call-receivers.d.ts +37 -0
- package/dist/targets/cpp/direct-call-receivers.js +79 -0
- package/dist/targets/cpp/document.d.ts +74 -0
- package/dist/targets/cpp/document.js +106 -0
- package/dist/targets/cpp/emit-allocation.d.ts +60 -0
- package/dist/targets/cpp/emit-allocation.js +573 -0
- package/dist/targets/cpp/emit-arrays.d.ts +119 -0
- package/dist/targets/cpp/emit-arrays.js +1047 -0
- package/dist/targets/cpp/emit-binding-reference.d.ts +17 -0
- package/dist/targets/cpp/emit-binding-reference.js +120 -0
- package/dist/targets/cpp/emit-bindings.d.ts +158 -0
- package/dist/targets/cpp/emit-bindings.js +769 -0
- package/dist/targets/cpp/emit-buffers.d.ts +156 -0
- package/dist/targets/cpp/emit-buffers.js +573 -0
- package/dist/targets/cpp/emit-callable.d.ts +230 -0
- package/dist/targets/cpp/emit-callable.js +2154 -0
- package/dist/targets/cpp/emit-carrier-members.d.ts +406 -0
- package/dist/targets/cpp/emit-carrier-members.js +1224 -0
- package/dist/targets/cpp/emit-coercion.d.ts +26 -0
- package/dist/targets/cpp/emit-coercion.js +39 -0
- package/dist/targets/cpp/emit-context.d.ts +1882 -0
- package/dist/targets/cpp/emit-context.js +904 -0
- package/dist/targets/cpp/emit-dynamic-properties.d.ts +174 -0
- package/dist/targets/cpp/emit-dynamic-properties.js +1249 -0
- package/dist/targets/cpp/emit-equality.d.ts +39 -0
- package/dist/targets/cpp/emit-equality.js +472 -0
- package/dist/targets/cpp/emit-exceptions.d.ts +104 -0
- package/dist/targets/cpp/emit-exceptions.js +513 -0
- package/dist/targets/cpp/emit-field-owner.d.ts +4 -0
- package/dist/targets/cpp/emit-field-owner.js +27 -0
- package/dist/targets/cpp/emit-in.d.ts +31 -0
- package/dist/targets/cpp/emit-in.js +426 -0
- package/dist/targets/cpp/emit-instanceof.d.ts +19 -0
- package/dist/targets/cpp/emit-instanceof.js +601 -0
- package/dist/targets/cpp/emit-integers.d.ts +68 -0
- package/dist/targets/cpp/emit-integers.js +184 -0
- package/dist/targets/cpp/emit-iterator.d.ts +100 -0
- package/dist/targets/cpp/emit-iterator.js +1137 -0
- package/dist/targets/cpp/emit-json.d.ts +73 -0
- package/dist/targets/cpp/emit-json.js +823 -0
- package/dist/targets/cpp/emit-jsx.d.ts +74 -0
- package/dist/targets/cpp/emit-jsx.js +806 -0
- package/dist/targets/cpp/emit-mixed-binary.d.ts +51 -0
- package/dist/targets/cpp/emit-mixed-binary.js +60 -0
- package/dist/targets/cpp/emit-namespaces.d.ts +101 -0
- package/dist/targets/cpp/emit-namespaces.js +133 -0
- package/dist/targets/cpp/emit-narrowing.d.ts +738 -0
- package/dist/targets/cpp/emit-narrowing.js +3967 -0
- package/dist/targets/cpp/emit-native-equality.d.ts +3 -0
- package/dist/targets/cpp/emit-native-equality.js +14 -0
- package/dist/targets/cpp/emit-native-selection.d.ts +5 -0
- package/dist/targets/cpp/emit-native-selection.js +37 -0
- package/dist/targets/cpp/emit-object-tag.d.ts +4 -0
- package/dist/targets/cpp/emit-object-tag.js +108 -0
- package/dist/targets/cpp/emit-owned-record.d.ts +2 -0
- package/dist/targets/cpp/emit-owned-record.js +15 -0
- package/dist/targets/cpp/emit-presence.d.ts +78 -0
- package/dist/targets/cpp/emit-presence.js +376 -0
- package/dist/targets/cpp/emit-properties.d.ts +105 -0
- package/dist/targets/cpp/emit-properties.js +1640 -0
- package/dist/targets/cpp/emit-record-view.d.ts +20 -0
- package/dist/targets/cpp/emit-record-view.js +354 -0
- package/dist/targets/cpp/emit-return.d.ts +5 -0
- package/dist/targets/cpp/emit-return.js +237 -0
- package/dist/targets/cpp/emit-sum-widening.d.ts +10 -0
- package/dist/targets/cpp/emit-sum-widening.js +69 -0
- package/dist/targets/cpp/emit-tonumber.d.ts +38 -0
- package/dist/targets/cpp/emit-tonumber.js +177 -0
- package/dist/targets/cpp/emit-tostring.d.ts +92 -0
- package/dist/targets/cpp/emit-tostring.js +556 -0
- package/dist/targets/cpp/emit-typeof.d.ts +49 -0
- package/dist/targets/cpp/emit-typeof.js +317 -0
- package/dist/targets/cpp/emit-union-properties.d.ts +181 -0
- package/dist/targets/cpp/emit-union-properties.js +1281 -0
- package/dist/targets/cpp/emit.d.ts +45 -0
- package/dist/targets/cpp/emit.js +2225 -0
- package/dist/targets/cpp/error-types.d.ts +4 -0
- package/dist/targets/cpp/error-types.js +11 -0
- package/dist/targets/cpp/function-source-reads.d.ts +72 -0
- package/dist/targets/cpp/function-source-reads.js +148 -0
- package/dist/targets/cpp/host/atomics.d.ts +25 -0
- package/dist/targets/cpp/host/atomics.js +63 -0
- package/dist/targets/cpp/host/core-globals.d.ts +108 -0
- package/dist/targets/cpp/host/core-globals.js +158 -0
- package/dist/targets/cpp/host/dynamic-argument-members.d.ts +42 -0
- package/dist/targets/cpp/host/dynamic-argument-members.js +61 -0
- package/dist/targets/cpp/host/emit-host-arity.d.ts +139 -0
- package/dist/targets/cpp/host/emit-host-arity.js +232 -0
- package/dist/targets/cpp/host/emit-host-invoke.d.ts +91 -0
- package/dist/targets/cpp/host/emit-host-invoke.js +1105 -0
- package/dist/targets/cpp/host/emit-host-object.d.ts +55 -0
- package/dist/targets/cpp/host/emit-host-object.js +2206 -0
- package/dist/targets/cpp/host/emit-host-properties.d.ts +69 -0
- package/dist/targets/cpp/host/emit-host-properties.js +533 -0
- package/dist/targets/cpp/host/emit-host-reflect.d.ts +4 -0
- package/dist/targets/cpp/host/emit-host-reflect.js +180 -0
- package/dist/targets/cpp/host/emit-host-value.d.ts +120 -0
- package/dist/targets/cpp/host/emit-host-value.js +392 -0
- package/dist/targets/cpp/host/host-members.d.ts +505 -0
- package/dist/targets/cpp/host/host-members.js +819 -0
- package/dist/targets/cpp/host/host-method-aliases.d.ts +30 -0
- package/dist/targets/cpp/host/host-method-aliases.js +76 -0
- package/dist/targets/cpp/host/native-protocols.d.ts +47 -0
- package/dist/targets/cpp/host/native-protocols.js +183 -0
- package/dist/targets/cpp/host/object-protocol.d.ts +351 -0
- package/dist/targets/cpp/host/object-protocol.js +671 -0
- package/dist/targets/cpp/host-namespace-reads.d.ts +83 -0
- package/dist/targets/cpp/host-namespace-reads.js +113 -0
- package/dist/targets/cpp/manifest/capabilities.d.ts +39 -0
- package/dist/targets/cpp/manifest/capabilities.js +1484 -0
- package/dist/targets/cpp/manifest.d.ts +23 -0
- package/dist/targets/cpp/manifest.js +113 -0
- package/dist/targets/cpp/native-error-base.d.ts +38 -0
- package/dist/targets/cpp/native-error-base.js +74 -0
- package/dist/targets/cpp/native-narrowing-transport.d.ts +12 -0
- package/dist/targets/cpp/native-narrowing-transport.js +151 -0
- package/dist/targets/cpp/native-selection-helpers.d.ts +11 -0
- package/dist/targets/cpp/native-selection-helpers.js +46 -0
- package/dist/targets/cpp/native-symbol-keys.d.ts +8 -0
- package/dist/targets/cpp/native-symbol-keys.js +34 -0
- package/dist/targets/cpp/ownership.d.ts +43 -0
- package/dist/targets/cpp/ownership.js +38 -0
- package/dist/targets/cpp/owning-conversion-input.d.ts +14 -0
- package/dist/targets/cpp/owning-conversion-input.js +12 -0
- package/dist/targets/cpp/property-read-claims.d.ts +62 -0
- package/dist/targets/cpp/property-read-claims.js +23 -0
- package/dist/targets/cpp/property-store-claims.d.ts +62 -0
- package/dist/targets/cpp/property-store-claims.js +26 -0
- package/dist/targets/cpp/prototype/emit-prototype-array.d.ts +111 -0
- package/dist/targets/cpp/prototype/emit-prototype-array.js +602 -0
- package/dist/targets/cpp/prototype/emit-prototype-date.d.ts +133 -0
- package/dist/targets/cpp/prototype/emit-prototype-date.js +515 -0
- package/dist/targets/cpp/prototype/emit-prototype-error.d.ts +13 -0
- package/dist/targets/cpp/prototype/emit-prototype-error.js +54 -0
- package/dist/targets/cpp/prototype/emit-prototype-invoke.d.ts +34 -0
- package/dist/targets/cpp/prototype/emit-prototype-invoke.js +1003 -0
- package/dist/targets/cpp/prototype/emit-prototype-iterator.d.ts +47 -0
- package/dist/targets/cpp/prototype/emit-prototype-iterator.js +250 -0
- package/dist/targets/cpp/prototype/emit-prototype-promise.d.ts +46 -0
- package/dist/targets/cpp/prototype/emit-prototype-promise.js +143 -0
- package/dist/targets/cpp/prototype/emit-prototype-regexp.d.ts +335 -0
- package/dist/targets/cpp/prototype/emit-prototype-regexp.js +853 -0
- package/dist/targets/cpp/prototype/emit-prototype-string.d.ts +42 -0
- package/dist/targets/cpp/prototype/emit-prototype-string.js +252 -0
- package/dist/targets/cpp/prototype/prototype-method-reads.d.ts +25 -0
- package/dist/targets/cpp/prototype/prototype-method-reads.js +182 -0
- package/dist/targets/cpp/reactive-dependencies.d.ts +140 -0
- package/dist/targets/cpp/reactive-dependencies.js +432 -0
- package/dist/targets/cpp/reactive-origins.d.ts +44 -0
- package/dist/targets/cpp/reactive-origins.js +82 -0
- package/dist/targets/cpp/records.d.ts +277 -0
- package/dist/targets/cpp/records.js +2427 -0
- package/dist/targets/cpp/recursive-containers.d.ts +43 -0
- package/dist/targets/cpp/recursive-containers.js +144 -0
- package/dist/targets/cpp/regexp-types.d.ts +56 -0
- package/dist/targets/cpp/regexp-types.js +59 -0
- package/dist/targets/cpp/substrate.d.ts +125 -0
- package/dist/targets/cpp/substrate.js +12 -0
- package/dist/targets/cpp/translation-unit.d.ts +219 -0
- package/dist/targets/cpp/translation-unit.js +2063 -0
- package/dist/targets/cpp/types.d.ts +280 -0
- package/dist/targets/cpp/types.js +1135 -0
- package/dist/targets/cpp/virtual-methods.d.ts +95 -0
- package/dist/targets/cpp/virtual-methods.js +264 -0
- package/package.json +95 -0
- package/src/targets/cpp/runtime/gea_dynamic_proxy.h +824 -0
- package/src/targets/cpp/runtime/gea_eval.h +1376 -0
- package/src/targets/cpp/runtime/gea_native_class_prototype.h +44 -0
- package/src/targets/cpp/runtime/gea_runtime.h +29222 -0
- package/src/targets/cpp/runtime/gea_runtime_builtins.cpp +55 -0
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
import { dictionaryKeyDomainOf } from '../../representation/model.js';
|
|
2
|
+
import { createCppEmitBlockedError, defineValue, isIntegerStorageValue, operandText, wellKnownSymbolMemberOf } from './emit-context.js';
|
|
3
|
+
import { keyedTableKeyText, memberAccessOperator } from './emit-carrier-members.js';
|
|
4
|
+
import { emitDynamicHasProperty, propertyKeyText } from './emit-dynamic-properties.js';
|
|
5
|
+
import { armAt, armIs } from './emit-union-properties.js';
|
|
6
|
+
import { objectPrototypeMemberNames } from '../../representation/record-fields.js';
|
|
7
|
+
import { cppRecordFieldPresenceName } from './types.js';
|
|
8
|
+
import { classPrototypeMemberIsPresent, symbolKeyedMemberIsDeclared } from '../../projection/class-property-presence.js';
|
|
9
|
+
import { binaryToStringTagText } from './emit-buffers.js';
|
|
10
|
+
import { regexpRoleOf } from './prototype/emit-prototype-regexp.js';
|
|
11
|
+
import { nativeRecordIndexHasPropertyOf } from '../../ir/native-record-index-transport.js';
|
|
12
|
+
/** A shape-named or inline record carrier's ownership, which decides whether its fields are reached through `.` or `->`. */
|
|
13
|
+
const ownershipOf = (carrier) => carrier.kind === 'record' || carrier.kind === 'record-with-index' || carrier.kind === 'class-ref' || carrier.kind === 'native-record-ref'
|
|
14
|
+
? carrier.ownership
|
|
15
|
+
: 'owned';
|
|
16
|
+
/**
|
|
17
|
+
* `[[HasProperty]]` -- ECMA-262 10.1.7, reached from `k in o` (13.10.1 step 7).
|
|
18
|
+
*
|
|
19
|
+
* Four answers:
|
|
20
|
+
*
|
|
21
|
+
* - a receiver that owns a **runtime property table** consults it. A genuinely
|
|
22
|
+
* dynamic value is that case, and `emit-dynamic-properties.ts` renders it
|
|
23
|
+
* through the same `gea::PropertyKey` conversion every other internal method
|
|
24
|
+
* on that table goes through, so `in` cannot disagree with `get`/`set`/
|
|
25
|
+
* `delete` about what a key is;
|
|
26
|
+
* - a **required own field** of a closed layout is present on every instance of
|
|
27
|
+
* that layout, so the answer is the constant `true`. The key had to be a
|
|
28
|
+
* static string for the field to be named at all;
|
|
29
|
+
* - a **dictionary** is a layout that IS a key table, so the answer is that
|
|
30
|
+
* container's own non-inserting lookup.
|
|
31
|
+
* - a compiler-owned object with shared identity asks its generated own-field
|
|
32
|
+
* dispatcher and dynamic-property sidecar, then combines that answer with
|
|
33
|
+
* prototype members known from the language and the class layout.
|
|
34
|
+
*
|
|
35
|
+
* The refusal is the load-bearing part. `in` walks the prototype chain, so the
|
|
36
|
+
* tempting inverse of the second rule -- "the struct has no such field, answer
|
|
37
|
+
* `false`" -- is wrong for every `Object.prototype` member (`'toString' in o`
|
|
38
|
+
* is `true` for any ordinary object), and wrong again for an optional field or
|
|
39
|
+
* an expando. Presence can be proven from a layout; absence is answered only
|
|
40
|
+
* by the runtime table on an identity-bearing generated object. Every carrier
|
|
41
|
+
* without that proof or table stays refused.
|
|
42
|
+
*
|
|
43
|
+
* `preflight/has-property-key.ts` computes the obligation key from exactly
|
|
44
|
+
* these cases, so a program reaching this file has already been certified
|
|
45
|
+
* against the one it lands on; the checks below are fail-closed re-checks of
|
|
46
|
+
* that, not a first opinion -- the same posture `emit-iterator.ts` takes.
|
|
47
|
+
*/
|
|
48
|
+
/** Presence bits belong to physical slots, never to flattened checker fields. */
|
|
49
|
+
const fieldsOf = (ctx, receiver) => {
|
|
50
|
+
if (receiver.kind === 'record' || receiver.kind === 'record-with-index')
|
|
51
|
+
return receiver.fields;
|
|
52
|
+
if (receiver.kind !== 'native-record-ref' && receiver.kind !== 'class-ref')
|
|
53
|
+
return null;
|
|
54
|
+
return ctx.layouts.forShape(receiver.shapeId);
|
|
55
|
+
};
|
|
56
|
+
/** Whether this is an ordinary object whose layout the compiler emits and whose identity can own an expando sidecar. */
|
|
57
|
+
const generatedSharedObjectCarrier = (carrier) => {
|
|
58
|
+
if (carrier.kind === 'record' || carrier.kind === 'record-with-index' || carrier.kind === 'class-ref') {
|
|
59
|
+
return carrier.ownership === 'shared-refcount';
|
|
60
|
+
}
|
|
61
|
+
return carrier.kind === 'native-record-ref' && carrier.native === null && carrier.ownership === 'shared-refcount';
|
|
62
|
+
};
|
|
63
|
+
/** A shared compiler-emitted record can answer a runtime string key without losing its native carrier. */
|
|
64
|
+
const generatedSharedRecordCarrier = (carrier) => (carrier.kind === 'record' || carrier.kind === 'record-with-index') && carrier.ownership === 'shared-refcount';
|
|
65
|
+
/** Whether this carrier has ordinary Object.prototype semantics, independent of whether it can own expandos. */
|
|
66
|
+
const generatedObjectCarrier = (carrier) => carrier.kind === 'record' ||
|
|
67
|
+
carrier.kind === 'record-with-index' ||
|
|
68
|
+
carrier.kind === 'class-ref' ||
|
|
69
|
+
(carrier.kind === 'native-record-ref' && carrier.native === null);
|
|
70
|
+
/**
|
|
71
|
+
* `k in u` over a `tagged-union` receiver -- decided PER ARM, and compiled to
|
|
72
|
+
* a discriminant dispatch rather than a runtime property probe.
|
|
73
|
+
*
|
|
74
|
+
* This is sound for exactly the reason the general single-receiver rule above
|
|
75
|
+
* stays this cautious about ever answering `false`: that worry is about the
|
|
76
|
+
* PROTOTYPE CHAIN adding a member no layout here names. A tagged union's arms
|
|
77
|
+
* are the checker's own closed set of alternatives, and TypeScript's `in`
|
|
78
|
+
* operator already narrows a union the identical way at the type level --
|
|
79
|
+
* `'respondWith' in this.#executionCtx` (`FetchEventLike | ExecutionContext`)
|
|
80
|
+
* only narrows to `FetchEventLike` because that is the one arm whose type
|
|
81
|
+
* declares the member, and the source only compiles under that same
|
|
82
|
+
* narrowing. Compiling the discriminant test that mirrors it is rendering the
|
|
83
|
+
* rule the checker already applied, not inventing a new one.
|
|
84
|
+
*
|
|
85
|
+
* Each arm answers from `fieldsOf` -- present (own field, required or
|
|
86
|
+
* optional; TypeScript's own `in`-narrowing does not distinguish the two, so
|
|
87
|
+
* this does not either) or absent -- except a `dictionary` arm, which is a
|
|
88
|
+
* real runtime key table and answers through its own non-inserting `has`,
|
|
89
|
+
* the identical primitive `layoutAnswerFor` already uses for a bare
|
|
90
|
+
* dictionary receiver. Any other arm kind (`scalar`, `string`,
|
|
91
|
+
* `array-object`, ...) structurally has no own-property table at all, so it
|
|
92
|
+
* answers the constant `false`.
|
|
93
|
+
*
|
|
94
|
+
* A COMPUTED key stays refused (`null`): a per-arm dispatch of a
|
|
95
|
+
* runtime-only key would need the identical per-arm reconciliation
|
|
96
|
+
* `emit-union-properties.ts`'s own comment already declines to guess at for
|
|
97
|
+
* `get`/`set`, and nothing in this task's evidence needed it for `in`.
|
|
98
|
+
*/
|
|
99
|
+
const taggedUnionInPropertyText = (ctx, union, receiverText, key) => {
|
|
100
|
+
// `in` dispatches per arm on whether the key IS a static name (2.3 invariant
|
|
101
|
+
// 1's slot question is moot here; this is the property-key claim), so it
|
|
102
|
+
// must ask `staticKeyTexts` -- a key `constantTexts` only later folds (a
|
|
103
|
+
// render-time `typeof` result) must never be treated as a name the program
|
|
104
|
+
// wrote, or a computed key would silently dispatch as a static one.
|
|
105
|
+
const staticKey = ctx.staticKeyTexts.get(key.value);
|
|
106
|
+
if (staticKey === undefined)
|
|
107
|
+
return null;
|
|
108
|
+
const receiver = receiverText();
|
|
109
|
+
const keyText = operandText(ctx, key);
|
|
110
|
+
const armTexts = union.arms.map((arm, index) => {
|
|
111
|
+
// A base class without this physical slot can still hold a descendant
|
|
112
|
+
// that owns it, or an instance with an expando. Use the same native
|
|
113
|
+
// presence route as a non-union receiver, rather than claiming absence.
|
|
114
|
+
if (arm.value.kind === 'class-ref')
|
|
115
|
+
return layoutAnswerFor(ctx, arm.value, () => armAt(receiver, index), key);
|
|
116
|
+
const fields = fieldsOf(ctx, arm.value);
|
|
117
|
+
if (fields !== null) {
|
|
118
|
+
const field = fields.find((candidate) => candidate.key === staticKey);
|
|
119
|
+
return field === undefined
|
|
120
|
+
? 'false'
|
|
121
|
+
: `${armAt(receiver, index)}${memberAccessOperator(ownershipOf(arm.value))}${cppRecordFieldPresenceName(field.key)}`;
|
|
122
|
+
}
|
|
123
|
+
if (arm.value.kind !== 'dictionary')
|
|
124
|
+
return 'false';
|
|
125
|
+
return `${armAt(receiver, index)}${memberAccessOperator(arm.value.ownership)}has(${keyText})`;
|
|
126
|
+
});
|
|
127
|
+
if (armTexts.some((text) => text === null))
|
|
128
|
+
return null;
|
|
129
|
+
const dispatched = armTexts.reduceRight((rest, text, index) => (rest === null ? text : `${armIs(receiver, index)} ? ${text} : (${rest})`), null);
|
|
130
|
+
if (dispatched === null)
|
|
131
|
+
return null;
|
|
132
|
+
// The key operand is rendered and discarded through a comma even on the
|
|
133
|
+
// constant-answer arms above, for the identical ECMA-262 13.10.1 reason
|
|
134
|
+
// the single-receiver `record(own-field)` branch below does: `in`
|
|
135
|
+
// evaluates its key operand regardless of what the receiver turns out to
|
|
136
|
+
// answer, and every branch here that skips reading it back would silently
|
|
137
|
+
// leave that evaluation unrendered.
|
|
138
|
+
return `((void)(${keyText}), ${armTexts.length > 1 ? `(${dispatched})` : dispatched})`;
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* The C++ expression for `key in receiver` over a carrier that answers from
|
|
142
|
+
* its layout (or from its OWN presence, for a carrier the checker left
|
|
143
|
+
* nullable), or `null` when none does.
|
|
144
|
+
*
|
|
145
|
+
* `receiverText` is a thunk rather than a materialized name for the identical
|
|
146
|
+
* reason `operandText` alone was not enough here: an `optional` receiver
|
|
147
|
+
* answers through its PAYLOAD, at the text `(*receiver)` -- a text this
|
|
148
|
+
* function itself builds, not one `operandText` (an SSA-name lookup) could
|
|
149
|
+
* ever produce. Every other branch still bottoms out at `operandText` for the
|
|
150
|
+
* receiver `IrOperand` it was handed.
|
|
151
|
+
*/
|
|
152
|
+
const layoutAnswerFor = (ctx, carrier, receiverText, key) => {
|
|
153
|
+
if (carrier.kind === 'optional') {
|
|
154
|
+
const payloadText = () => `(*${receiverText()})`;
|
|
155
|
+
const inner = layoutAnswerFor(ctx, carrier.payload, payloadText, key);
|
|
156
|
+
if (inner === null)
|
|
157
|
+
return null;
|
|
158
|
+
// `k in maybeNull` throws when the receiver is absent -- ECMA-262
|
|
159
|
+
// 13.10.1's own non-Object check, reached before `[[HasProperty]]` is
|
|
160
|
+
// ever consulted -- rendered here rather than guessed at as `false`,
|
|
161
|
+
// exactly as `emit-instanceof.ts`'s `undefined` right-hand side renders
|
|
162
|
+
// ITS spec-mandated throw instead of a fabricated answer.
|
|
163
|
+
return `(${receiverText()}.has_value() ? (${inner}) : (gea::host::throwInPropertyNonObject(), false))`;
|
|
164
|
+
}
|
|
165
|
+
if (carrier.kind === 'tagged-union')
|
|
166
|
+
return taggedUnionInPropertyText(ctx, carrier, receiverText, key);
|
|
167
|
+
// Same claim as above: whether this key names a field the layout declares
|
|
168
|
+
// must come from what the program wrote, not from anything render-time
|
|
169
|
+
// folding has since added to `constantTexts`.
|
|
170
|
+
const staticKey = ctx.staticKeyTexts.get(key.value) ?? null;
|
|
171
|
+
const wellKnownSymbol = wellKnownSymbolMemberOf(ctx, key);
|
|
172
|
+
if (wellKnownSymbol === 'toStringTag' && binaryToStringTagText(carrier) !== null) {
|
|
173
|
+
return `((void)(${operandText(ctx, key)}), (void)(${receiverText()}), true)`;
|
|
174
|
+
}
|
|
175
|
+
if (regexpRoleOf(carrier) === 'pattern') {
|
|
176
|
+
const receiver = receiverText();
|
|
177
|
+
const property = propertyKeyText(ctx, key, 'an "in" test on Pattern');
|
|
178
|
+
return `((void)(${operandText(ctx, key)}), ${receiver} ? gea::runtime::regex::dynamicHas(${receiver}, ${property}) : (gea::host::throwInPropertyNonObject(), false))`;
|
|
179
|
+
}
|
|
180
|
+
if (staticKey !== null && carrier.kind === 'class-ref' && classPrototypeMemberIsPresent(ctx.classes, carrier.declaration, staticKey)) {
|
|
181
|
+
const present = ownershipOf(carrier) === 'shared-refcount'
|
|
182
|
+
? `(${receiverText()} ? true : (gea::host::throwInPropertyNonObject(), false))`
|
|
183
|
+
: `((void)(${receiverText()}), true)`;
|
|
184
|
+
return `((void)(${operandText(ctx, key)}), ${present})`;
|
|
185
|
+
}
|
|
186
|
+
const fields = fieldsOf(ctx, carrier);
|
|
187
|
+
const field = staticKey === null ? undefined : fields?.find((candidate) => candidate.key === staticKey);
|
|
188
|
+
if (field !== undefined) {
|
|
189
|
+
// A fixed native slot can be removed by a configurable delete, including a
|
|
190
|
+
// TypeScript-required field. The generated presence bit is therefore the
|
|
191
|
+
// physical own-property answer for every declared field, not merely for
|
|
192
|
+
// `?:` fields. Both operands remain evaluated before that answer.
|
|
193
|
+
return `((void)(${operandText(ctx, key)}), ${receiverText()}${memberAccessOperator(ownershipOf(carrier))}${cppRecordFieldPresenceName(field.key)})`;
|
|
194
|
+
}
|
|
195
|
+
if (staticKey !== null && generatedObjectCarrier(carrier) && objectPrototypeMemberNames.has(staticKey)) {
|
|
196
|
+
const present = ownershipOf(carrier) === 'shared-refcount'
|
|
197
|
+
? `(${receiverText()} ? true : (gea::host::throwInPropertyNonObject(), false))`
|
|
198
|
+
: `((void)(${receiverText()}), true)`;
|
|
199
|
+
return `((void)(${operandText(ctx, key)}), ${present})`;
|
|
200
|
+
}
|
|
201
|
+
if (staticKey === null && nativeRecordIndexHasPropertyOf(ctx.deriver, carrier, key.representation)) {
|
|
202
|
+
const receiver = receiverText();
|
|
203
|
+
const property = propertyKeyText(ctx, key, 'an "in" test on a typed record index');
|
|
204
|
+
return `(${receiver} ? gea::nativeDynamicHasProperty(${receiver}, ${property}) : (gea::host::throwInPropertyNonObject(), false))`;
|
|
205
|
+
}
|
|
206
|
+
if (wellKnownSymbol !== null && generatedObjectCarrier(carrier)) {
|
|
207
|
+
return `((void)(${operandText(ctx, key)}), (void)(${receiverText()}), false)`;
|
|
208
|
+
}
|
|
209
|
+
if (staticKey !== null && generatedSharedObjectCarrier(carrier)) {
|
|
210
|
+
const receiver = receiverText();
|
|
211
|
+
const keyText = propertyKeyText(ctx, key, 'an "in" test on a native receiver');
|
|
212
|
+
return `((void)(${operandText(ctx, key)}), ${receiver} ? gea::nativeDynamicHas(${receiver}, ${keyText}) : (gea::host::throwInPropertyNonObject(), false))`;
|
|
213
|
+
}
|
|
214
|
+
// A symbol key read out of a binding rather than spelled as a name -- see
|
|
215
|
+
// `symbolKeyedMemberIsDeclared`, which states why this receiver's own
|
|
216
|
+
// sidecar is the WHOLE answer rather than half of one. The same
|
|
217
|
+
// `gea::nativeDynamicHas` the static-key branch above uses, given a
|
|
218
|
+
// `gea::PropertyKey::symbol(...)` instead of a name.
|
|
219
|
+
if (staticKey === null &&
|
|
220
|
+
key.representation.kind === 'symbol' &&
|
|
221
|
+
generatedSharedObjectCarrier(carrier) &&
|
|
222
|
+
!symbolKeyedMemberIsDeclared(ctx.classes, fields, carrier.kind === 'class-ref' ? carrier.declaration : null)) {
|
|
223
|
+
const receiver = receiverText();
|
|
224
|
+
const keyText = propertyKeyText(ctx, key, 'an "in" test with a symbol key on a native receiver');
|
|
225
|
+
return `(${receiver} ? gea::nativeDynamicHas(${receiver}, ${keyText}) : (gea::host::throwInPropertyNonObject(), false))`;
|
|
226
|
+
}
|
|
227
|
+
if (staticKey === null && key.representation.kind === 'string' && generatedSharedRecordCarrier(carrier)) {
|
|
228
|
+
const receiver = receiverText();
|
|
229
|
+
const keyText = propertyKeyText(ctx, key, 'an "in" test on a native record');
|
|
230
|
+
return `(${receiver} ? gea::nativeDynamicHasProperty(${receiver}, ${keyText}) : (gea::host::throwInPropertyNonObject(), false))`;
|
|
231
|
+
}
|
|
232
|
+
// An `array-object` keeps its own presence bit per index (a hole is a real
|
|
233
|
+
// ECMA-262 distinction, not merely a stored `undefined` -- see
|
|
234
|
+
// `ArrayObject::present`'s own comment), so a canonical numeric key answers
|
|
235
|
+
// from the identical bounds-and-hole test an indexed read already reduces
|
|
236
|
+
// to, rather than from any layout proof. Only a static key is claimed here
|
|
237
|
+
// (`hasPropertyHelperClaims` below): a runtime numeric key is unclaimed
|
|
238
|
+
// until a program actually needs it.
|
|
239
|
+
if (carrier.kind === 'array-object' &&
|
|
240
|
+
staticKey !== null &&
|
|
241
|
+
key.representation.kind === 'scalar' &&
|
|
242
|
+
key.representation.domain === 'number') {
|
|
243
|
+
const receiver = receiverText();
|
|
244
|
+
const keyText = operandText(ctx, key);
|
|
245
|
+
const reader = isIntegerStorageValue(ctx, key.value) ? 'hasElementAtIndex' : 'hasElement';
|
|
246
|
+
return `${receiver}->${reader}(${keyText})`;
|
|
247
|
+
}
|
|
248
|
+
if (carrier.kind !== 'dictionary')
|
|
249
|
+
return null;
|
|
250
|
+
if (carrier.key === 'string' && key.representation.kind === 'symbol') {
|
|
251
|
+
// A string-keyed Dictionary has no symbol-key storage. Any attempted
|
|
252
|
+
// symbol write is refused before a program can certify, and the ordinary
|
|
253
|
+
// Object prototype contributes no Symbol.toStringTag of its own, so a
|
|
254
|
+
// symbol lookup on the representable table is exactly false. Preserve
|
|
255
|
+
// evaluation of both operands even though neither value decides it.
|
|
256
|
+
return `((void)(${operandText(ctx, key)}), (void)(${receiverText()}), false)`;
|
|
257
|
+
}
|
|
258
|
+
if (carrier.key === 'string' && key.representation.kind === 'dynamic') {
|
|
259
|
+
// A BOXED key against the same string-keyed table. `keyedTableKeyText`
|
|
260
|
+
// below would reach it too, but only through `toStringText`, and `in` is
|
|
261
|
+
// ToPropertyKey (7.1.19), not ToString: the two differ on exactly one tag,
|
|
262
|
+
// and it is the tag that matters here. A symbol IS a legal `in` key and
|
|
263
|
+
// answers `false` against a table with no symbol storage -- the branch just
|
|
264
|
+
// above says so for a statically-symbol key -- whereas ToString of one is a
|
|
265
|
+
// TypeError. Converting first and testing the tag afterwards keeps the two
|
|
266
|
+
// spellings of the same question answering the same thing.
|
|
267
|
+
//
|
|
268
|
+
// hono's trie router is what needs it: `key in curNode.#children`, where
|
|
269
|
+
// `key` is `Array.isArray(pattern) ? pattern[0] : p` and TypeScript types
|
|
270
|
+
// the true arm `any` -- `Array.isArray`'s `arg is any[]` filters nothing
|
|
271
|
+
// out of a union whose array member is a READONLY tuple, so the narrowing
|
|
272
|
+
// widens instead of narrowing. The key really is a string at runtime; the
|
|
273
|
+
// box is the checker's answer, not this program's intent.
|
|
274
|
+
const receiver = receiverText();
|
|
275
|
+
const property = propertyKeyText(ctx, key, 'an "in" test on a string-keyed table');
|
|
276
|
+
return (`[&]() -> bool { const gea::PropertyKey __gea_in_key = ${property}; if (__gea_in_key.isSymbol()) return false; ` +
|
|
277
|
+
`return ${receiver}${memberAccessOperator(carrier.ownership)}has(__gea_in_key.text()); }()`);
|
|
278
|
+
}
|
|
279
|
+
// Every typed table's own non-inserting membership test is exactly
|
|
280
|
+
// `[[HasProperty]]`. Reuse the subscript-key reconciliation so a symbol
|
|
281
|
+
// table receives a Symbol identity and a property table preserves key text.
|
|
282
|
+
return `${receiverText()}${memberAccessOperator(carrier.ownership)}has(${keyedTableKeyText(ctx, key, dictionaryKeyDomainOf(carrier.key, key.representation))})`;
|
|
283
|
+
};
|
|
284
|
+
const layoutAnswerText = (ctx, receiver, key) => layoutAnswerFor(ctx, receiver.representation, () => operandText(ctx, receiver), key);
|
|
285
|
+
/**
|
|
286
|
+
* The single `[[HasProperty]]` dispatcher.
|
|
287
|
+
*
|
|
288
|
+
* The runtime-table renderer is asked first and the layout rules second because
|
|
289
|
+
* the two are disjoint by construction -- a `dynamic` receiver has no layout to
|
|
290
|
+
* read fields from, and no other carrier owns that table -- so the order states
|
|
291
|
+
* a preference that can never be exercised rather than hiding a fallthrough.
|
|
292
|
+
*/
|
|
293
|
+
export const emitHasProperty = (ctx, lines, operation) => {
|
|
294
|
+
if (emitDynamicHasProperty(ctx, lines, operation))
|
|
295
|
+
return;
|
|
296
|
+
const answer = layoutAnswerText(ctx, operation.receiver, operation.key);
|
|
297
|
+
if (answer !== null) {
|
|
298
|
+
lines.push(`${defineValue(ctx, operation.result)} = ${answer};`);
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
// `keyForm` mirrors the `static-${domain}` vs bare-`${domain}` split
|
|
302
|
+
// `preflight/has-property-key.ts`'s obligation key already makes (a
|
|
303
|
+
// compile-time-known key proves more than the same domain read at
|
|
304
|
+
// runtime), so a refusal here lands in the identical `computation:in:*`
|
|
305
|
+
// namespace the certifier's successful claims occupy.
|
|
306
|
+
// The refusal's key form must name the SAME claim certification made about
|
|
307
|
+
// this key -- `staticKeyTexts`, not `constantTexts` -- or a key certified
|
|
308
|
+
// dynamic could print a `static-*` refusal that names no obligation the
|
|
309
|
+
// certifier ever considered.
|
|
310
|
+
const staticKey = ctx.staticKeyTexts.get(operation.key.value);
|
|
311
|
+
const keyForm = staticKey === undefined ? operation.key.representation.kind : `static-${operation.key.representation.kind}`;
|
|
312
|
+
throw createCppEmitBlockedError(`runtime-helper:computation:in:${keyForm}:${operation.receiver.representation.kind}`, `"in" over a "${operation.receiver.representation.kind}" receiver has no [[HasProperty]] in this emitter: presence is provable ` +
|
|
313
|
+
'only from a required own field of a closed layout, from a carrier that keeps a runtime key table, or from a real property ' +
|
|
314
|
+
'table, and absence is never provable from a layout at all (the prototype chain is part of the operator)');
|
|
315
|
+
};
|
|
316
|
+
/**
|
|
317
|
+
* The `computation:in:*` rows this file renders, stated here rather than in
|
|
318
|
+
* `manifest.ts` so the claim and the rendering are one authority: a row added
|
|
319
|
+
* to the manifest without a branch above would certify a program this file then
|
|
320
|
+
* refuses, which is the certify-then-crash the whole obligation census exists
|
|
321
|
+
* to prevent.
|
|
322
|
+
*
|
|
323
|
+
* `record(own-field)` is the constant `true` above; the two `dictionary(...)`
|
|
324
|
+
* domains are the two containers' own `has`, claimed separately because
|
|
325
|
+
* `gea::Dictionary` (string-keyed) and `gea::NumericDictionary` (double-keyed)
|
|
326
|
+
* are different types and a key of the wrong domain would not compile.
|
|
327
|
+
*
|
|
328
|
+
* The `dynamic` rows are the four key forms `propertyKeyText` can turn into a
|
|
329
|
+
* `gea::PropertyKey` -- a string constant, a numeric constant, a `std::string`,
|
|
330
|
+
* a `gea::Symbol`, and a number through ToString. A boolean or bigint key is
|
|
331
|
+
* deliberately absent: ToPropertyKey over one is ToString of it, which is a
|
|
332
|
+
* conversion this backend does not install for those domains, so it is refused
|
|
333
|
+
* by name at the site rather than certified here and crashed on there.
|
|
334
|
+
*/
|
|
335
|
+
export const hasPropertyHelperClaims = [
|
|
336
|
+
'computation:in:static-string:class(prototype-member)',
|
|
337
|
+
'computation:in:static-number:class(prototype-member)',
|
|
338
|
+
'computation:in:static-string:optional(class(prototype-member))',
|
|
339
|
+
'computation:in:static-number:optional(class(prototype-member))',
|
|
340
|
+
'computation:in:static-string:record(own-field)',
|
|
341
|
+
'computation:in:static-number:record(own-field)',
|
|
342
|
+
// `record(optional-field)` reads the field's generated presence flag -- the same
|
|
343
|
+
// bit `host/object-protocol.ts` reads to decide whether the key is in the
|
|
344
|
+
// object's own key set. Claimed for any record-shaped carrier, plain or
|
|
345
|
+
// named, because this answer proves the key IS there and a prototype can
|
|
346
|
+
// only ever add keys.
|
|
347
|
+
'computation:in:static-string:record(optional-field)',
|
|
348
|
+
'computation:in:static-number:record(optional-field)',
|
|
349
|
+
'computation:in:static-string:record(object-prototype-member)',
|
|
350
|
+
'computation:in:static-string:optional(record(object-prototype-member))',
|
|
351
|
+
'computation:in:static-string:record(sidecar)',
|
|
352
|
+
'computation:in:static-number:record(sidecar)',
|
|
353
|
+
'computation:in:string:record(sidecar)',
|
|
354
|
+
// A SYMBOL key over the same shared sidecar -- `layoutAnswerFor`'s own
|
|
355
|
+
// `key.representation.kind === 'symbol'` branch above, gated on the layout
|
|
356
|
+
// declaring no symbol-keyed slot of its own so the sidecar's verdict is the
|
|
357
|
+
// complete one (`symbolKeyedMemberIsDeclared`). `@hono/node-server`'s
|
|
358
|
+
// `cacheKey in res` is what needed it, three times over.
|
|
359
|
+
'computation:in:symbol:record(symbol-sidecar)',
|
|
360
|
+
'computation:in:symbol:record(disjoint-index)',
|
|
361
|
+
'computation:in:number:record(disjoint-index)',
|
|
362
|
+
'computation:in:static-string:optional(record(sidecar))',
|
|
363
|
+
'computation:in:static-number:optional(record(sidecar))',
|
|
364
|
+
'computation:in:string:optional(record(sidecar))',
|
|
365
|
+
'computation:in:static-string:optional(record(optional-field))',
|
|
366
|
+
'computation:in:static-number:optional(record(optional-field))',
|
|
367
|
+
'computation:in:static-string:dictionary(string)',
|
|
368
|
+
'computation:in:string:dictionary(string)',
|
|
369
|
+
'computation:in:symbol:dictionary(string)',
|
|
370
|
+
// A boxed key against a string-keyed table -- the ToPropertyKey branch above.
|
|
371
|
+
'computation:in:dynamic:dictionary(string)',
|
|
372
|
+
'computation:in:static-number:dictionary(number)',
|
|
373
|
+
'computation:in:number:dictionary(number)',
|
|
374
|
+
'computation:in:tagged-union:dictionary(number)',
|
|
375
|
+
'computation:in:symbol:dictionary(symbol)',
|
|
376
|
+
'computation:in:static-string:dynamic',
|
|
377
|
+
'computation:in:static-number:dynamic',
|
|
378
|
+
'computation:in:string:dynamic',
|
|
379
|
+
'computation:in:symbol:dynamic',
|
|
380
|
+
'computation:in:number:dynamic',
|
|
381
|
+
// A boxed KEY over a boxed receiver -- `propertyKeyText`'s own `dynamic`
|
|
382
|
+
// branch, which renders ToPropertyKey (7.1.19) off the box's tag.
|
|
383
|
+
'computation:in:dynamic:dynamic',
|
|
384
|
+
// The identical six rows one `optional` layer out -- a receiver the checker
|
|
385
|
+
// left nullable (`this.image` typed `HTMLVideoElement | null`, three.js's
|
|
386
|
+
// own `if ('requestVideoFrameCallback' in video)`), answered by
|
|
387
|
+
// `layoutAnswerFor`'s presence test plus the SAME record/dictionary rule
|
|
388
|
+
// asked of the unwrapped payload. `optional(record(unproven))` and
|
|
389
|
+
// `optional(dynamic)` are deliberately absent: both recurse to the same
|
|
390
|
+
// `null` their bare counterparts already do, so claiming them would be the
|
|
391
|
+
// exact over-claim `has-property-key.ts`'s own doc comment warns against.
|
|
392
|
+
'computation:in:static-string:optional(record(own-field))',
|
|
393
|
+
'computation:in:static-number:optional(record(own-field))',
|
|
394
|
+
'computation:in:static-string:optional(dictionary(string))',
|
|
395
|
+
'computation:in:string:optional(dictionary(string))',
|
|
396
|
+
'computation:in:static-number:optional(dictionary(number))',
|
|
397
|
+
'computation:in:number:optional(dictionary(number))',
|
|
398
|
+
'computation:in:symbol:optional(dictionary(symbol))',
|
|
399
|
+
// `k in pattern` over a native RegExp `Pattern` with a RUNTIME string key --
|
|
400
|
+
// `layoutAnswerFor`'s `regexpRoleOf(carrier) === 'pattern'` branch above,
|
|
401
|
+
// checked ahead of every other rule in this file for exactly this receiver,
|
|
402
|
+
// so its own dynamic-property sidecar (`gea::runtime::regex::dynamicHas`)
|
|
403
|
+
// answers `in` the same way it already answers a computed `[key]` read/
|
|
404
|
+
// write. Only the exercised key form is claimed here (see this list's own
|
|
405
|
+
// closing comment on unverified rows); a static key, an optional Pattern, or
|
|
406
|
+
// a non-string dynamic key against Pattern are unclaimed until measured.
|
|
407
|
+
'computation:in:string:record(pattern)',
|
|
408
|
+
// `k in u` over a `tagged-union` receiver, static key only
|
|
409
|
+
// (`taggedUnionInPropertyText` above) -- `has-property-key.ts`'s
|
|
410
|
+
// `layoutAnswerSuffix` falls through to the bare `layout.kind` for any
|
|
411
|
+
// representation kind it does not special-case, which is exactly
|
|
412
|
+
// `"tagged-union"` for this receiver. A COMPUTED key stays unclaimed: that
|
|
413
|
+
// half is still refused (see this file's own comment on
|
|
414
|
+
// `taggedUnionInPropertyText`), and `optional(tagged-union)` is left
|
|
415
|
+
// unclaimed too -- the recursion in `layoutAnswerFor` renders it for free,
|
|
416
|
+
// but nothing in this task's evidence exercised it, and claiming an
|
|
417
|
+
// unverified case is exactly what this list exists to prevent.
|
|
418
|
+
'computation:in:static-string:tagged-union',
|
|
419
|
+
// A static numeric key against an Array's own indexed elements --
|
|
420
|
+
// `layoutAnswerFor`'s `array-object` branch above, which reduces `in` to
|
|
421
|
+
// the same bounds-and-hole test `ArrayObject::hasElement`/
|
|
422
|
+
// `hasElementAtIndex` already answers for an indexed read. `0 in tail`
|
|
423
|
+
// over a rest-destructured/spread-gathered array (`dynamic-iterator-gather.ts`)
|
|
424
|
+
// is what needed this; a dynamic numeric key stays unclaimed.
|
|
425
|
+
'computation:in:static-number:array-object'
|
|
426
|
+
];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type ClassInstanceTestRecipe } from '../../projection/instance-test.js';
|
|
2
|
+
import type { IrOperand } from '../../ir/model.js';
|
|
3
|
+
import { type EmitContext } from './emit-context.js';
|
|
4
|
+
/**
|
|
5
|
+
* The carrier kinds a left operand can arrive in, for the `undefined`
|
|
6
|
+
* right-hand side below.
|
|
7
|
+
*
|
|
8
|
+
* The obligation key names BOTH sides (`preflight/instanceof-key.ts`), and this
|
|
9
|
+
* answer does not depend on the left one at all -- 13.10.2 throws before it
|
|
10
|
+
* looks at `V`. So the claim has to be made for every left kind rather than
|
|
11
|
+
* once, and the list is spelled here rather than derived from
|
|
12
|
+
* `Representation`'s own union because a manifest row must claim only what this
|
|
13
|
+
* file renders: adding a carrier kind to the model should not silently widen a
|
|
14
|
+
* claim.
|
|
15
|
+
*/
|
|
16
|
+
export declare const cppInstanceofLeftKinds: readonly string[];
|
|
17
|
+
/** Every `computation:instanceof:*` key this file renders -- what `capabilities.ts` claims, derived from the tables above so the two cannot drift. */
|
|
18
|
+
export declare const cppInstanceofHelperKeys: ReadonlySet<string>;
|
|
19
|
+
export declare const instanceofText: (ctx: EmitContext, left: IrOperand, right: IrOperand, recipe?: ClassInstanceTestRecipe) => string;
|