@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,29 @@
|
|
|
1
|
+
import type { ElementOperation as SemanticElementOperation } from '../semantics/model/operations.js';
|
|
2
|
+
import { type LoweringContext } from './lower-operands.js';
|
|
3
|
+
import type { PluginInstance } from '../plugins/model.js';
|
|
4
|
+
import type { IrBlockId } from './model.js';
|
|
5
|
+
/**
|
|
6
|
+
* JSX element construction, lowered as far as the language itself states it.
|
|
7
|
+
*
|
|
8
|
+
* TypeScript gives an intrinsic element a meaning of its own: `JSX.IntrinsicElements`
|
|
9
|
+
* names the tag, the attributes are checked against that declaration, and the
|
|
10
|
+
* children are ordinary expressions. So an intrinsic element lowers here, to a
|
|
11
|
+
* host node followed by its properties and its children -- one step at a time,
|
|
12
|
+
* because there is no props object in the language for it and inventing one in
|
|
13
|
+
* the IR would be a claim the source never made.
|
|
14
|
+
*
|
|
15
|
+
* A tag that names a *value* is where the language stops. The checker resolves
|
|
16
|
+
* a call or a construct signature, but what happens afterwards -- whether the
|
|
17
|
+
* result is invoked once, instantiated and re-entered on a later frame, or
|
|
18
|
+
* compiled into a static structure with patched positions -- is a library's
|
|
19
|
+
* meaning, not TypeScript's. A compiler that picked one would be picking a
|
|
20
|
+
* framework. So this file refuses that form, and a plugin claims it: see
|
|
21
|
+
* `src/plugins/model.ts` for the seam and `src/plugins/gea/` for the claim
|
|
22
|
+
* that gea's component model actually makes.
|
|
23
|
+
*
|
|
24
|
+
* A JSX element's props are ordered pairs in the semantic graph -- `prop-key`
|
|
25
|
+
* and `prop-value` at the same ordinal -- and they have to stay paired here.
|
|
26
|
+
* Reading the two roles independently and zipping by position would silently
|
|
27
|
+
* pair a key with the wrong value the moment one of them is absent.
|
|
28
|
+
*/
|
|
29
|
+
export declare const lowerElement: (ctx: LoweringContext, block: IrBlockId, operation: SemanticElementOperation, plugins?: readonly PluginInstance[]) => void;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { operandOf } from '../semantics/model/operands.js';
|
|
2
|
+
import { IrLoweringBlockedError } from './lower-graph.js';
|
|
3
|
+
import { orderedOperandsOf, registerResult, requireLineage, requireResultRepresentation, resolveOptionalOperand, resolveRequiredOperand, enterRequiredOperand } from './lower-operands.js';
|
|
4
|
+
/**
|
|
5
|
+
* JSX element construction, lowered as far as the language itself states it.
|
|
6
|
+
*
|
|
7
|
+
* TypeScript gives an intrinsic element a meaning of its own: `JSX.IntrinsicElements`
|
|
8
|
+
* names the tag, the attributes are checked against that declaration, and the
|
|
9
|
+
* children are ordinary expressions. So an intrinsic element lowers here, to a
|
|
10
|
+
* host node followed by its properties and its children -- one step at a time,
|
|
11
|
+
* because there is no props object in the language for it and inventing one in
|
|
12
|
+
* the IR would be a claim the source never made.
|
|
13
|
+
*
|
|
14
|
+
* A tag that names a *value* is where the language stops. The checker resolves
|
|
15
|
+
* a call or a construct signature, but what happens afterwards -- whether the
|
|
16
|
+
* result is invoked once, instantiated and re-entered on a later frame, or
|
|
17
|
+
* compiled into a static structure with patched positions -- is a library's
|
|
18
|
+
* meaning, not TypeScript's. A compiler that picked one would be picking a
|
|
19
|
+
* framework. So this file refuses that form, and a plugin claims it: see
|
|
20
|
+
* `src/plugins/model.ts` for the seam and `src/plugins/gea/` for the claim
|
|
21
|
+
* that gea's component model actually makes.
|
|
22
|
+
*
|
|
23
|
+
* A JSX element's props are ordered pairs in the semantic graph -- `prop-key`
|
|
24
|
+
* and `prop-value` at the same ordinal -- and they have to stay paired here.
|
|
25
|
+
* Reading the two roles independently and zipping by position would silently
|
|
26
|
+
* pair a key with the wrong value the moment one of them is absent.
|
|
27
|
+
*/
|
|
28
|
+
export const lowerElement = (ctx, block, operation, plugins = []) => {
|
|
29
|
+
const lineage = requireLineage(operation);
|
|
30
|
+
const keys = orderedOperandsOf(operation, 'prop-key');
|
|
31
|
+
const children = orderedOperandsOf(operation, 'child').map((child) => enterRequiredOperand(ctx, block, lineage, operation, child));
|
|
32
|
+
const tag = resolveOptionalOperand(ctx, block, lineage, operandOf(operation, 'tag', 0));
|
|
33
|
+
const representation = requireResultRepresentation(ctx, operation, 'value', 'an element construction');
|
|
34
|
+
// A fragment is not the same refusal. `<>...</>` is JSX's own form, not a tag
|
|
35
|
+
// naming somebody's value: it creates a node, takes children, and takes no
|
|
36
|
+
// props -- the identical three steps below, with nothing about them for a
|
|
37
|
+
// library to decide. What a fragment *builds* is still the host's answer, and
|
|
38
|
+
// that is asked at emission (`PluginCapabilities.elementFragment`), where the
|
|
39
|
+
// host's spelling lives; refusing it here would refuse it in a layer that
|
|
40
|
+
// has no host to ask.
|
|
41
|
+
if (operation.form === 'value') {
|
|
42
|
+
throw new IrLoweringBlockedError("this element's tag names a value rather than an intrinsic the language declares; " +
|
|
43
|
+
"what such an element means at runtime is a library's, and no installed plugin claimed it");
|
|
44
|
+
}
|
|
45
|
+
// Create first, then decorate. The node has to exist before anything can be
|
|
46
|
+
// put on it, and writing that as three steps rather than one bundled
|
|
47
|
+
// operation is what leaves room for a consumer to act on the node between
|
|
48
|
+
// them -- attaching a nested component into it, or holding on to it so a
|
|
49
|
+
// later update can find it again.
|
|
50
|
+
// One decision, read by the create and by the child alike: whether the node
|
|
51
|
+
// this element builds IS its text (`isTextLeaf` below).
|
|
52
|
+
const textLeaf = isTextLeaf(operation, children, plugins);
|
|
53
|
+
const node = ctx.builder.element(block, lineage, operation.form, tag, representation, textLeaf);
|
|
54
|
+
const nodeOperand = { value: node, representation };
|
|
55
|
+
for (const key of keys) {
|
|
56
|
+
const value = operandOf(operation, 'prop-value', key.ordinal);
|
|
57
|
+
if (!value)
|
|
58
|
+
throw new IrLoweringBlockedError(`an element property at ordinal ${key.ordinal} names a key with no value operand`);
|
|
59
|
+
// Offered to the plugins first, and only for this one prop. A name like
|
|
60
|
+
// JSX's `ref` is not a property of the node -- it says where to PUT the
|
|
61
|
+
// node -- and which names mean that is the library's to say, not this
|
|
62
|
+
// file's. A prop nobody claims takes the same path it always did.
|
|
63
|
+
if (plugins.some((plugin) => plugin.lowerElementProp?.(ctx, block, lineage, nodeOperand, key, value) === true))
|
|
64
|
+
continue;
|
|
65
|
+
ctx.builder.elementProp(block, lineage, nodeOperand, resolveRequiredOperand(ctx, block, lineage, key), enterRequiredOperand(ctx, block, lineage, operation, value));
|
|
66
|
+
}
|
|
67
|
+
for (const child of children)
|
|
68
|
+
ctx.builder.elementChild(block, lineage, nodeOperand, child, textLeaf);
|
|
69
|
+
registerResult(ctx, operation, node);
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Whether this element IS its text rather than containing it.
|
|
73
|
+
*
|
|
74
|
+
* Two authorities, and both have to say yes. The host names the tags its node
|
|
75
|
+
* model has a text node for (`PluginCapabilities.elementTextTags`) -- gea's
|
|
76
|
+
* engine has one whose class and style behave exactly as an element's do, so a
|
|
77
|
+
* `<span>` holding only characters is that node and a `<div>` never is. The
|
|
78
|
+
* language then says whether THIS element's contents are a single text run,
|
|
79
|
+
* which is what the children's carriers already state: a nested element is a
|
|
80
|
+
* host handle, a list is an array, a conditional child is a union, and none of
|
|
81
|
+
* those is text.
|
|
82
|
+
*
|
|
83
|
+
* Both halves are v1's, split the same way: `isTextNodeTag` is the tag list,
|
|
84
|
+
* and `canUseTextNodeForElement` is the contents rule -- no element children,
|
|
85
|
+
* exactly one run. Its own comment records what taught them the multi-run case:
|
|
86
|
+
* a text node holds ONE run, so baking one run into the parent and appending
|
|
87
|
+
* the rest as children stacks them all at the parent's origin, and `<span>{a} /
|
|
88
|
+
* {b}</span>` renders as one garbled glyph.
|
|
89
|
+
*
|
|
90
|
+
* Everything not proven is a container. A tag this frame cannot read as a
|
|
91
|
+
* literal, a child whose carrier is anything but characters, an element with no
|
|
92
|
+
* children or with several -- all take the path every element took before this
|
|
93
|
+
* existed. That asymmetry is deliberate: a container one level deeper than v1's
|
|
94
|
+
* is visible and fails loudly, while an element flattened when it should not be
|
|
95
|
+
* is a silently wrong tree.
|
|
96
|
+
*/
|
|
97
|
+
const isTextLeaf = (operation, children, plugins) => {
|
|
98
|
+
if (operation.form !== 'intrinsic')
|
|
99
|
+
return false;
|
|
100
|
+
const child = children.length === 1 ? children[0] : undefined;
|
|
101
|
+
// A run is characters: a string, or a number/boolean the host renders as
|
|
102
|
+
// one. Every other carrier -- a node, an array of nodes, a union that may be
|
|
103
|
+
// either -- is content this element contains rather than content it is.
|
|
104
|
+
if (!child || (child.representation.kind !== 'string' && child.representation.kind !== 'scalar'))
|
|
105
|
+
return false;
|
|
106
|
+
const source = operandOf(operation, 'tag', 0)?.source;
|
|
107
|
+
if (source?.kind !== 'constant' || source.literal !== 'string')
|
|
108
|
+
return false;
|
|
109
|
+
const tag = source.text.toLowerCase();
|
|
110
|
+
return plugins.some((plugin) => plugin.capabilities.elementTextTags.includes(tag));
|
|
111
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { thrownValueCarrier } from '../representation/model.js';
|
|
2
|
+
import type { BoundaryOperation } from '../semantics/model/operations.js';
|
|
3
|
+
import { type LoweringContext } from './lower-operands.js';
|
|
4
|
+
import type { IrBlockId } from './model.js';
|
|
5
|
+
/**
|
|
6
|
+
* The one carrier a value travels in between a `throw` and the handler that
|
|
7
|
+
* catches it.
|
|
8
|
+
*
|
|
9
|
+
* It has to be a single fixed carrier, and not either side's own idea of one,
|
|
10
|
+
* because the two sides cannot see each other: a `throw` in one function is
|
|
11
|
+
* caught by a `catch` in another, and a native C++ handler catches by TYPE. A
|
|
12
|
+
* `throw` that emitted its operand's own static carrier and a handler that
|
|
13
|
+
* named a different one produced C++ that compiled cleanly and could not
|
|
14
|
+
* catch the exception at all -- `throw v0;` of a `std::string` against
|
|
15
|
+
* `catch (const gea::Value& v1)` -- so the exception escaped the handler the
|
|
16
|
+
* source program wrote and reached `std::terminate`. That is the silent
|
|
17
|
+
* miscompile this constant exists to make impossible; `renderTryRegion`
|
|
18
|
+
* (`targets/cpp/emit-exceptions.ts`) checks the handler agrees rather than
|
|
19
|
+
* assuming it.
|
|
20
|
+
*
|
|
21
|
+
* `dynamic` is the honest answer rather than a shortcut around the no-boxing
|
|
22
|
+
* rule: `'thrown-error-carrier'` is one of the four `DynamicReason`s
|
|
23
|
+
* `representation/model.ts` admits, declared there from the start as "a
|
|
24
|
+
* thrown value, which JavaScript does not type", and
|
|
25
|
+
* `producers/boundary.ts` already says in so many words that it publishes the
|
|
26
|
+
* checker's own `unknown` precisely so "a later layer" can choose this
|
|
27
|
+
* carrier. This is that layer. Nothing inside the `try` is boxed by this: the
|
|
28
|
+
* conversion happens at the `throw` itself, which is exactly where
|
|
29
|
+
* ECMAScript loses the type too.
|
|
30
|
+
*
|
|
31
|
+
* The catch side needs no conversion in the other direction. TypeScript
|
|
32
|
+
* admits only `any` or `unknown` on a catch parameter (`unknown` under
|
|
33
|
+
* `useUnknownInCatchVariables`, which `program.ts` enables), so the caught
|
|
34
|
+
* binding's own carrier is already this one physically -- what differs is the
|
|
35
|
+
* stated reason, not the storage.
|
|
36
|
+
*/
|
|
37
|
+
export { thrownValueCarrier };
|
|
38
|
+
/**
|
|
39
|
+
* `try`/`catch` and the `await`/`yield` resume points: the boundary forms this
|
|
40
|
+
* backend lowers.
|
|
41
|
+
*
|
|
42
|
+
* `label-target` is not reached here yet: `switch`/`label` both refuse by name
|
|
43
|
+
* in `lower.ts`'s `lowerControl`, before any operation gated on one of those
|
|
44
|
+
* boundaries could ever be scheduled. `generator-resume` IS reached, and is a
|
|
45
|
+
* no-op for the reason its own case states, as is `finally-region`.
|
|
46
|
+
*/
|
|
47
|
+
export declare const lowerBoundary: (ctx: LoweringContext, block: IrBlockId, operation: BoundaryOperation) => void;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { thrownValueCarrier } from '../representation/model.js';
|
|
2
|
+
import { IrLoweringBlockedError } from './lower-graph.js';
|
|
3
|
+
import { registerResult, requireLineage, requireResultRepresentation } from './lower-operands.js';
|
|
4
|
+
/**
|
|
5
|
+
* The one carrier a value travels in between a `throw` and the handler that
|
|
6
|
+
* catches it.
|
|
7
|
+
*
|
|
8
|
+
* It has to be a single fixed carrier, and not either side's own idea of one,
|
|
9
|
+
* because the two sides cannot see each other: a `throw` in one function is
|
|
10
|
+
* caught by a `catch` in another, and a native C++ handler catches by TYPE. A
|
|
11
|
+
* `throw` that emitted its operand's own static carrier and a handler that
|
|
12
|
+
* named a different one produced C++ that compiled cleanly and could not
|
|
13
|
+
* catch the exception at all -- `throw v0;` of a `std::string` against
|
|
14
|
+
* `catch (const gea::Value& v1)` -- so the exception escaped the handler the
|
|
15
|
+
* source program wrote and reached `std::terminate`. That is the silent
|
|
16
|
+
* miscompile this constant exists to make impossible; `renderTryRegion`
|
|
17
|
+
* (`targets/cpp/emit-exceptions.ts`) checks the handler agrees rather than
|
|
18
|
+
* assuming it.
|
|
19
|
+
*
|
|
20
|
+
* `dynamic` is the honest answer rather than a shortcut around the no-boxing
|
|
21
|
+
* rule: `'thrown-error-carrier'` is one of the four `DynamicReason`s
|
|
22
|
+
* `representation/model.ts` admits, declared there from the start as "a
|
|
23
|
+
* thrown value, which JavaScript does not type", and
|
|
24
|
+
* `producers/boundary.ts` already says in so many words that it publishes the
|
|
25
|
+
* checker's own `unknown` precisely so "a later layer" can choose this
|
|
26
|
+
* carrier. This is that layer. Nothing inside the `try` is boxed by this: the
|
|
27
|
+
* conversion happens at the `throw` itself, which is exactly where
|
|
28
|
+
* ECMAScript loses the type too.
|
|
29
|
+
*
|
|
30
|
+
* The catch side needs no conversion in the other direction. TypeScript
|
|
31
|
+
* admits only `any` or `unknown` on a catch parameter (`unknown` under
|
|
32
|
+
* `useUnknownInCatchVariables`, which `program.ts` enables), so the caught
|
|
33
|
+
* binding's own carrier is already this one physically -- what differs is the
|
|
34
|
+
* stated reason, not the storage.
|
|
35
|
+
*/
|
|
36
|
+
export { thrownValueCarrier };
|
|
37
|
+
/**
|
|
38
|
+
* `try`/`catch` and the `await`/`yield` resume points: the boundary forms this
|
|
39
|
+
* backend lowers.
|
|
40
|
+
*
|
|
41
|
+
* `label-target` is not reached here yet: `switch`/`label` both refuse by name
|
|
42
|
+
* in `lower.ts`'s `lowerControl`, before any operation gated on one of those
|
|
43
|
+
* boundaries could ever be scheduled. `generator-resume` IS reached, and is a
|
|
44
|
+
* no-op for the reason its own case states, as is `finally-region`.
|
|
45
|
+
*/
|
|
46
|
+
export const lowerBoundary = (ctx, block, operation) => {
|
|
47
|
+
switch (operation.boundary) {
|
|
48
|
+
case 'generator-resume':
|
|
49
|
+
// Where control resumes after a `yield`. The C++20 coroutine transform
|
|
50
|
+
// owns the resume point itself -- `co_yield` IS the suspend and the
|
|
51
|
+
// resume, and control simply continues after it -- so there is no block
|
|
52
|
+
// for this boundary to open. Its `value` result is never cited either:
|
|
53
|
+
// `producers/control.ts` refuses a `yield` whose own value is read, so
|
|
54
|
+
// nothing in the body can name what a resume would have carried. Handled
|
|
55
|
+
// exactly as `async-resume` below is, and for the same reason.
|
|
56
|
+
return;
|
|
57
|
+
case 'async-resume':
|
|
58
|
+
// Where control "resumes" after an `await` -- but this backend's
|
|
59
|
+
// `await` never suspends (see `lowerControl`'s `'await'` case), so
|
|
60
|
+
// control already fell straight through here. Its `value` result is
|
|
61
|
+
// never cited by anything either (`await x`'s consumers cite the
|
|
62
|
+
// `await` operation's own result), so nothing to register.
|
|
63
|
+
return;
|
|
64
|
+
case 'finally-region':
|
|
65
|
+
// The marker whose SCOPE the gating walk hangs the finally clause's own
|
|
66
|
+
// operations on (`gating.ts`'s `part: 'finally'`); the flow controller
|
|
67
|
+
// opens that scope's block from the membership alone. There is nothing
|
|
68
|
+
// for the marker itself to compute, and it publishes no result: a finally
|
|
69
|
+
// clause is a statement list, not a value, and unlike `exception-region`
|
|
70
|
+
// it binds nothing either -- the caught value belongs to `catch`.
|
|
71
|
+
return;
|
|
72
|
+
case 'label-target':
|
|
73
|
+
// A labelled iteration resolves directly to its loop's exit/header;
|
|
74
|
+
// this boundary remains only for a non-iteration labelled statement,
|
|
75
|
+
// whose transfer lowering will refuse if a program actually targets it.
|
|
76
|
+
return;
|
|
77
|
+
case 'exception-region': {
|
|
78
|
+
// A bindingless `catch {}` publishes no result: nothing in this body
|
|
79
|
+
// ever needs the caught value, so there is nothing to materialize. The
|
|
80
|
+
// emitter renders the handler as a bare `catch (...)` from the block's
|
|
81
|
+
// presence in `IrBody.tryRegions` alone.
|
|
82
|
+
if (operation.results.length === 0)
|
|
83
|
+
return;
|
|
84
|
+
const lineage = requireLineage(operation);
|
|
85
|
+
const representation = requireResultRepresentation(ctx, operation, 'value', 'an exception region');
|
|
86
|
+
registerResult(ctx, operation, ctx.builder.catchBinding(block, lineage, representation));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
default:
|
|
90
|
+
throw new IrLoweringBlockedError(`no IR primitive lowers a "${operation.boundary}" boundary yet`);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import type { OperationId, SemanticResultId } from '../identity/ids.js';
|
|
2
|
+
import type { IrBodyBuilder } from './build.js';
|
|
3
|
+
import { type ConditionalMembership, type ScopeRef } from './lower-graph.js';
|
|
4
|
+
import type { IrBlockId, IrOperand } from './model.js';
|
|
5
|
+
export interface GuardMergeSources {
|
|
6
|
+
readonly truthy: IrBlockId;
|
|
7
|
+
readonly falsy: IrBlockId;
|
|
8
|
+
/** The block both arms rejoin in, which is where a merge over them belongs. */
|
|
9
|
+
readonly join: IrBlockId;
|
|
10
|
+
}
|
|
11
|
+
/** One try statement's blocks, as the C++ emitter needs to know them. */
|
|
12
|
+
export interface RegionBlockInfo {
|
|
13
|
+
readonly region: OperationId;
|
|
14
|
+
readonly tryEntry: IrBlockId;
|
|
15
|
+
readonly catchEntry: IrBlockId | null;
|
|
16
|
+
readonly finallyEntry: IrBlockId | null;
|
|
17
|
+
readonly finallyExit: IrBlockId | null;
|
|
18
|
+
readonly join: IrBlockId | null;
|
|
19
|
+
}
|
|
20
|
+
export interface FlowController {
|
|
21
|
+
readonly currentBlock: () => IrBlockId;
|
|
22
|
+
/**
|
|
23
|
+
* The two blocks that reach this guard's join, opening the branch and closing
|
|
24
|
+
* either arm if the lowering has not already done so.
|
|
25
|
+
*
|
|
26
|
+
* An arm can be empty of operations -- `flag ? 1 : 2` puts a constant on both
|
|
27
|
+
* sides -- and then nothing ever asked for that arm's scope, so no branch
|
|
28
|
+
* exists at all. A merge still needs one: the value differs per side, and the
|
|
29
|
+
* only thing that can decide which side ran is a real branch. Opening it here
|
|
30
|
+
* keeps that decision with the module that owns block structure.
|
|
31
|
+
*
|
|
32
|
+
* Only legal for a guard whose arms are not currently open, which is the case
|
|
33
|
+
* for every consumer of a guard's merged value: such a consumer runs after the
|
|
34
|
+
* branch, so its own scope never contains this guard.
|
|
35
|
+
*/
|
|
36
|
+
readonly requireMergeSources: (guard: SemanticResultId) => GuardMergeSources;
|
|
37
|
+
/**
|
|
38
|
+
* Whether one of this guard's arms is still an open frame, which is exactly
|
|
39
|
+
* when `requireMergeSources` would refuse it.
|
|
40
|
+
*
|
|
41
|
+
* Asked so a settle step can SKIP such a guard instead of blocking on it.
|
|
42
|
+
* Unwinding closes frames innermost-first and a short circuit is settled as
|
|
43
|
+
* soon as its own frame closes, so at that moment a guard further out is
|
|
44
|
+
* still open and its pending merge is simply not this frame's turn.
|
|
45
|
+
*/
|
|
46
|
+
readonly isGuardOpen: (guard: SemanticResultId) => boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Where `continue` and `break` land: a loop's header re-runs the test, its
|
|
49
|
+
* exit is the block its test's failing arm rejoins in. `null` before the loop
|
|
50
|
+
* has been entered, which for a transfer out of that loop's own body cannot
|
|
51
|
+
* happen -- the body is inside it.
|
|
52
|
+
*/
|
|
53
|
+
readonly loopHeaderOf: (loop: OperationId) => IrBlockId | null;
|
|
54
|
+
readonly loopExitOf: (loop: OperationId) => IrBlockId | null;
|
|
55
|
+
/**
|
|
56
|
+
* Where `break` out of a switch lands: the statement's own exit block,
|
|
57
|
+
* reserved the first time a break asks for it, exactly as a testless
|
|
58
|
+
* loop's exit is. A switch lowers as a guard chain, and while no clause
|
|
59
|
+
* could fall through and no statement followed a `break` in its clause,
|
|
60
|
+
* the end of a clause's arm WAS the exit and `break` needed no jump at
|
|
61
|
+
* all. Both are ordinary source shapes (tsc's checker writes `if (...) {
|
|
62
|
+
* break; } // falls through`), and with them a clause's arm end is where
|
|
63
|
+
* the NEXT clause may start, so a `break` has to name where the switch
|
|
64
|
+
* itself ends. Reserved lazily so a switch nothing breaks out of grows no
|
|
65
|
+
* empty block.
|
|
66
|
+
*/
|
|
67
|
+
readonly switchExitOf: (switchOp: OperationId) => IrBlockId;
|
|
68
|
+
/**
|
|
69
|
+
* The switch statement's own close, at its marker: control that fell out
|
|
70
|
+
* of the last clause joins whatever the breaks reserved, and lowering
|
|
71
|
+
* continues in that block. A switch whose exit was never reserved closes
|
|
72
|
+
* as it always did -- in the chain's own join.
|
|
73
|
+
*/
|
|
74
|
+
readonly closeSwitch: (switchOp: OperationId, lineage: SemanticResultId | null) => void;
|
|
75
|
+
/**
|
|
76
|
+
* Where `continue` re-enters a `for` loop that has an incrementor: the
|
|
77
|
+
* latch block reserved for it, run before the header re-tests the
|
|
78
|
+
* condition. `null` for a loop with no incrementor (a `while`, or a `for`
|
|
79
|
+
* with an empty update clause) -- such a loop's `continue` targets the
|
|
80
|
+
* header directly, exactly as it always has.
|
|
81
|
+
*/
|
|
82
|
+
readonly loopLatchOf: (loop: OperationId) => IrBlockId | null;
|
|
83
|
+
/** The branch target selected when a head-tested loop exhausts normally. */
|
|
84
|
+
readonly loopNormalExitOf: (loop: OperationId) => IrBlockId | null;
|
|
85
|
+
/** The truthy condition arm, including an empty loop body's synthetic back edge. */
|
|
86
|
+
readonly loopBodyEntryOf: (loop: OperationId) => IrBlockId | null;
|
|
87
|
+
/** End the current straight-line block without changing lexical scope. */
|
|
88
|
+
readonly splitCurrentBlock: (lineage: SemanticResultId | null) => IrBlockId;
|
|
89
|
+
/** Every try-region this owner opened, for `lowerOwner` to publish on the sealed `IrBody`. */
|
|
90
|
+
readonly regionsOpened: () => readonly RegionBlockInfo[];
|
|
91
|
+
/**
|
|
92
|
+
* Positions `currentBlock` for the next operation's exact guard chain,
|
|
93
|
+
* opening/closing/switching branches as needed. Must be called before every
|
|
94
|
+
* operation, including the first, with that operation's own guard chain
|
|
95
|
+
* (empty for an unconditional operation). *
|
|
96
|
+
* `afterUnwind`, if given, runs once this call has closed every frame the
|
|
97
|
+
* new scope leaves and before it opens any frame the new scope adds. A
|
|
98
|
+
* guard's own boolean test can itself be a value only settled once its
|
|
99
|
+
* *previous* guard has closed -- an optional chain used as a `?:` or `&&`
|
|
100
|
+
* condition is exactly that, since the chain's short-circuit result is a
|
|
101
|
+
* merge over the chain's own presence guard, and the ternary's guard is that
|
|
102
|
+
* same result. Settling after this whole call returns is too late for such a
|
|
103
|
+
* guard: opening it happens inside this call. This module still never decides
|
|
104
|
+
* what to settle or how -- the callback is opaque to it -- only when the one
|
|
105
|
+
* legal moment for settling arrives.
|
|
106
|
+
*
|
|
107
|
+
* `placesNothing` says the operation being positioned for is a MARKER: it
|
|
108
|
+
* emits no IR of its own and the transfers it stands for were already built
|
|
109
|
+
* out of scope membership. Such an operation still has to be positioned --
|
|
110
|
+
* unwinding the frames its scope leaves is what joins the arms it closes --
|
|
111
|
+
* but it must not be given a home when every path already ended, because the
|
|
112
|
+
* home would be an orphan block nothing reaches and nothing fills, and the
|
|
113
|
+
* body-completion terminator synthesized into it is a valueless `return` in
|
|
114
|
+
* a function that must return a value.
|
|
115
|
+
*/
|
|
116
|
+
readonly enterScope: (requiredScope: readonly ScopeRef[], afterUnwind?: () => void, placesNothing?: boolean) => IrBlockId;
|
|
117
|
+
/** Records that `currentBlock` just received a terminator, so the next `enterScope` opens a fresh block instead of appending to a dead one. */
|
|
118
|
+
/**
|
|
119
|
+
* Closes every still-open branch once the owner's operation list is
|
|
120
|
+
* exhausted. `alreadyTerminated` distinguishes a body every path already
|
|
121
|
+
* returned/threw from one that fell off the end -- the latter needs a
|
|
122
|
+
* terminator this controller has no semantic operation to cite as lineage
|
|
123
|
+
* for, so it is the caller's job to fail closed on it rather than this
|
|
124
|
+
* module synthesizing an unattributed one.
|
|
125
|
+
*/
|
|
126
|
+
readonly finish: () => {
|
|
127
|
+
readonly block: IrBlockId;
|
|
128
|
+
readonly alreadyTerminated: boolean;
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
export interface FlowControllerDeps {
|
|
132
|
+
readonly builder: IrBodyBuilder;
|
|
133
|
+
readonly membership: ConditionalMembership;
|
|
134
|
+
/** Resolves a guard's own published result to the operand its branch tests. Throws to block when the guard cannot supply one. */
|
|
135
|
+
readonly resolveGuardOperand: (guard: SemanticResultId) => IrOperand;
|
|
136
|
+
}
|
|
137
|
+
export declare const createFlowController: (deps: FlowControllerDeps) => FlowController;
|