@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,6 @@
|
|
|
1
|
+
import type { OperationId } from '../../identity/ids.js';
|
|
2
|
+
import type { SemanticOperation } from '../../semantics/model/operations.js';
|
|
3
|
+
import { type LoweringContext } from '../../ir/lower-operands.js';
|
|
4
|
+
import type { IrBlockId } from '../../ir/model.js';
|
|
5
|
+
import { type GeaElementFacts } from './contract.js';
|
|
6
|
+
export declare const lowerGeaElement: (ctx: LoweringContext, block: IrBlockId, operation: SemanticOperation, facts: ReadonlyMap<OperationId, GeaElementFacts>) => boolean;
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { representationKey } from '../../representation/model.js';
|
|
2
|
+
import { operandOf } from '../../semantics/model/operands.js';
|
|
3
|
+
import { IrLoweringBlockedError } from '../../ir/lower-graph.js';
|
|
4
|
+
import { abiOfCallee, orderedOperandsOf, recordLayoutOf, registerResult, requireLineage, requireResultRepresentation, resolveOptionalOperand, enterRequiredOperand } from '../../ir/lower-operands.js';
|
|
5
|
+
import { geaReconcilerAttributeName } from './contract.js';
|
|
6
|
+
export const lowerGeaElement = (ctx, block, operation, facts) => {
|
|
7
|
+
if (operation.family !== 'element' || operation.form !== 'value')
|
|
8
|
+
return false;
|
|
9
|
+
const resolved = facts.get(operation.id);
|
|
10
|
+
if (!resolved)
|
|
11
|
+
return false;
|
|
12
|
+
const lineage = requireLineage(operation);
|
|
13
|
+
const keys = orderedOperandsOf(operation, 'prop-key');
|
|
14
|
+
const children = orderedOperandsOf(operation, 'child').map((child) => enterRequiredOperand(ctx, block, lineage, operation, child));
|
|
15
|
+
const tag = resolveOptionalOperand(ctx, block, lineage, operandOf(operation, 'tag', 0));
|
|
16
|
+
const representation = requireResultRepresentation(ctx, operation, 'value', 'an element construction');
|
|
17
|
+
if (resolved.invocation === 'construct') {
|
|
18
|
+
lowerClassComponent(ctx, block, operation, resolved, tag, keys, children, representation);
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
lowerFunctionComponent(ctx, block, operation, tag, keys, children, representation);
|
|
22
|
+
return true;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* A function component element, lowered to what the checker checked: a call.
|
|
26
|
+
*
|
|
27
|
+
* No new emitter capability is involved: the record allocation and the generic
|
|
28
|
+
* call path are the same primitives an ordinary `C({a: x})` goes through.
|
|
29
|
+
*/
|
|
30
|
+
const lowerFunctionComponent = (ctx, block, operation, tag, keys, children, representation) => {
|
|
31
|
+
const lineage = requireLineage(operation);
|
|
32
|
+
if (!tag)
|
|
33
|
+
throw new IrLoweringBlockedError('a component element names no tag to invoke');
|
|
34
|
+
const abi = abiOfCallee(tag.representation);
|
|
35
|
+
if (!abi)
|
|
36
|
+
throw new IrLoweringBlockedError(`a component element's tag carries "${tag.representation.kind}", which declares no calling convention`);
|
|
37
|
+
// The caller builds the frame the callee declares -- so the arguments are
|
|
38
|
+
// the convention's parameters, each filled from the attributes. A component
|
|
39
|
+
// that declares none gets none, which falls out of mapping an empty list
|
|
40
|
+
// rather than being a case: `<Board/>`, whose whole state comes from a
|
|
41
|
+
// store, goes down exactly the same path as `<Row label={x}/>`.
|
|
42
|
+
if (abi.parameters.length > 1) {
|
|
43
|
+
throw new IrLoweringBlockedError(`an element supplies one attributes object, but its tag's convention declares ${abi.parameters.length} parameters; ` +
|
|
44
|
+
'the ones past the first have nothing in the element to fill them from');
|
|
45
|
+
}
|
|
46
|
+
const built = abi.parameters.map((parameter) => buildPropsRecord(ctx, block, operation, keys, children, parameter.value));
|
|
47
|
+
requireEveryAttributeConsumed(keys, children, built);
|
|
48
|
+
registerResult(ctx, operation, ctx.builder.call(block, lineage, tag, null, built, representation));
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* A class component element: construct the instance, then enter its render.
|
|
52
|
+
*
|
|
53
|
+
* The props carrier comes from the *render member's* convention, not the
|
|
54
|
+
* constructor's. A component element writes attributes for the thing that reads
|
|
55
|
+
* them, and it is the render member that declares a parameter for them; the
|
|
56
|
+
* constructor of a component class takes none.
|
|
57
|
+
*/
|
|
58
|
+
const lowerClassComponent = (ctx, block, operation, facts, tag, keys, children, representation) => {
|
|
59
|
+
const lineage = requireLineage(operation);
|
|
60
|
+
if (!facts.renderMember) {
|
|
61
|
+
throw new IrLoweringBlockedError('this element constructs a class this library does not claim: none of the classes it derives from is the base gea exports, ' +
|
|
62
|
+
'so nothing states which member constructing it is supposed to render through');
|
|
63
|
+
}
|
|
64
|
+
if (!tag)
|
|
65
|
+
throw new IrLoweringBlockedError('a class component element names no tag to construct');
|
|
66
|
+
const construct = abiOfCallee(tag.representation);
|
|
67
|
+
if (!construct) {
|
|
68
|
+
throw new IrLoweringBlockedError(`a class component element's tag carries "${tag.representation.kind}", which declares no construct convention`);
|
|
69
|
+
}
|
|
70
|
+
if (construct.parameters.length > 0) {
|
|
71
|
+
throw new IrLoweringBlockedError(`the component class this element constructs declares ${construct.parameters.length} constructor parameter(s), ` +
|
|
72
|
+
'and an element passes none; a component whose construction takes arguments has no place to get them from');
|
|
73
|
+
}
|
|
74
|
+
const instance = construct.result;
|
|
75
|
+
if (instance.kind !== 'class-ref') {
|
|
76
|
+
throw new IrLoweringBlockedError(`constructing this component yields "${representationKey(instance)}"; only a class instance names the class whose render member ` +
|
|
77
|
+
'this library points at');
|
|
78
|
+
}
|
|
79
|
+
const layout = ctx.program.classes.get(instance.declaration);
|
|
80
|
+
const member = layout?.methods.find((method) => method.key === facts.renderMember);
|
|
81
|
+
const callable = member?.callable;
|
|
82
|
+
if (!callable) {
|
|
83
|
+
throw new IrLoweringBlockedError(`this component class installs no member "${facts.renderMember}" of its own; a render inherited from a base is entered through ` +
|
|
84
|
+
'the base that declares it, which this lowering does not yet resolve');
|
|
85
|
+
}
|
|
86
|
+
const render = ctx.program.abis.get(callable);
|
|
87
|
+
if (!render)
|
|
88
|
+
throw new IrLoweringBlockedError(`the render member of this component class has no projected calling convention`);
|
|
89
|
+
if (representationKey(render.result) !== representationKey(representation)) {
|
|
90
|
+
throw new IrLoweringBlockedError(`this element is carried as "${representationKey(representation)}" but its component's render returns ` +
|
|
91
|
+
`"${representationKey(render.result)}"; an element is exactly what its render produces`);
|
|
92
|
+
}
|
|
93
|
+
const built = render.parameters.map((parameter) => buildPropsRecord(ctx, block, operation, keys, children, parameter.value));
|
|
94
|
+
requireEveryAttributeConsumed(keys, children, built);
|
|
95
|
+
const created = ctx.builder.construct(block, lineage, tag, tag, { kind: 'open', evidence: ['plugin-lowered-jsx-class-component'] }, [], instance);
|
|
96
|
+
const receiver = { value: created, representation: instance };
|
|
97
|
+
// The render member's function object, allocated with no environment: a
|
|
98
|
+
// method declared on a class captures nothing, and its receiver travels as
|
|
99
|
+
// the convention's own receiver rather than as a capture. The carrier is
|
|
100
|
+
// minted here rather than read from the plan because no *program* result has
|
|
101
|
+
// this value -- it exists only between this construction and the call that
|
|
102
|
+
// consumes it.
|
|
103
|
+
const bound = ctx.builder.allocateCallable(block, lineage, callable, [], { kind: 'function-value-dispatch', abi: render });
|
|
104
|
+
registerResult(ctx, operation, ctx.builder.call(block, lineage, { value: bound, representation: { kind: 'function-value-dispatch', abi: render } }, receiver, built, representation));
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Nothing the author wrote may be dropped on the floor.
|
|
108
|
+
*
|
|
109
|
+
* An attribute the receiving layout has no field for, or a child with nowhere
|
|
110
|
+
* to go, is a disagreement between this lowering and the checker that resolved
|
|
111
|
+
* the element -- and the failure mode is the worst kind: the program compiles,
|
|
112
|
+
* renders, and is missing a prop. The checker will normally have rejected it
|
|
113
|
+
* first, which is exactly why reaching here means something is wrong rather
|
|
114
|
+
* than merely unsupported.
|
|
115
|
+
*/
|
|
116
|
+
const requireEveryAttributeConsumed = (keys, children, frames) => {
|
|
117
|
+
const consumed = new Set(frames.flatMap((frame) => [...frame.consumed]));
|
|
118
|
+
// One exemption, and it is not a relaxation: `key` is gea's own reconciler
|
|
119
|
+
// hint, declared on every element's props so an author may write it, and
|
|
120
|
+
// received by no component (`geaReconcilerAttributeName`). v1 drops it at the
|
|
121
|
+
// same point for the same reason. Everything else still has to land in a
|
|
122
|
+
// field, which is the whole of this guard.
|
|
123
|
+
const missed = keys.find((key) => key.source.kind !== 'constant' || (key.source.text !== geaReconcilerAttributeName && !consumed.has(key.source.text)));
|
|
124
|
+
if (missed) {
|
|
125
|
+
const named = missed.source.kind === 'constant' ? `"${missed.source.text}"` : 'a computed name';
|
|
126
|
+
throw new IrLoweringBlockedError(`an element writes the attribute ${named}, which no field of the carrier its tag declares receives; ` +
|
|
127
|
+
'passing the element without it would render a component the author did not write');
|
|
128
|
+
}
|
|
129
|
+
if (children.length > 0 && !frames.some((frame) => frame.tookChildren)) {
|
|
130
|
+
throw new IrLoweringBlockedError(`an element passes ${children.length} child(ren), which no field of the carrier its tag declares receives`);
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* The props object an element passes, built into the carrier the receiving
|
|
135
|
+
* convention declares.
|
|
136
|
+
*
|
|
137
|
+
* Both element forms build the same object -- a class component's render member
|
|
138
|
+
* takes props the same way a function component's parameter does -- so they
|
|
139
|
+
* build it here, once.
|
|
140
|
+
*/
|
|
141
|
+
const buildPropsRecord = (ctx, block, operation, keys, children, props) => {
|
|
142
|
+
const lineage = requireLineage(operation);
|
|
143
|
+
const layout = recordLayoutOf(ctx, props);
|
|
144
|
+
if (!layout) {
|
|
145
|
+
throw new IrLoweringBlockedError(`a component element builds its props object into the carrier its tag declares, which is "${representationKey(props)}"; ` +
|
|
146
|
+
'only a record layout states the named fields to fill');
|
|
147
|
+
}
|
|
148
|
+
// Keyed by the attribute name the producer published, so a field is filled by
|
|
149
|
+
// the attribute that names it rather than by position: the record's field
|
|
150
|
+
// order is the declared type's, and the attribute order is the author's.
|
|
151
|
+
const written = new Map();
|
|
152
|
+
for (const key of keys) {
|
|
153
|
+
if (key.source.kind !== 'constant') {
|
|
154
|
+
throw new IrLoweringBlockedError('a component element has an attribute whose name is not a constant, which no static record layout can place');
|
|
155
|
+
}
|
|
156
|
+
const value = operandOf(operation, 'prop-value', key.ordinal);
|
|
157
|
+
if (!value)
|
|
158
|
+
throw new IrLoweringBlockedError(`a component element property at ordinal ${key.ordinal} names a key with no value operand`);
|
|
159
|
+
written.set(key.source.text, value);
|
|
160
|
+
}
|
|
161
|
+
const child = children[0];
|
|
162
|
+
const consumed = new Set();
|
|
163
|
+
let tookChildren = false;
|
|
164
|
+
const fields = [];
|
|
165
|
+
for (const field of layout) {
|
|
166
|
+
if (operation.childrenKey !== null && field.key === operation.childrenKey) {
|
|
167
|
+
// One child is passed as itself, which is what a single-child element
|
|
168
|
+
// means. Two or more are an array the language builds, and the props
|
|
169
|
+
// field's own carrier is what would have to state that array -- it does
|
|
170
|
+
// not, so the gap is named instead of packing them into a carrier the
|
|
171
|
+
// convention never declared.
|
|
172
|
+
if (children.length > 1) {
|
|
173
|
+
throw new IrLoweringBlockedError(`a component element passes ${children.length} children, which the language groups into an array; ` +
|
|
174
|
+
`the "${field.key}" field of its props carries ${representationKey(field.value)}, which states no such array`);
|
|
175
|
+
}
|
|
176
|
+
if (child)
|
|
177
|
+
fields.push({ key: field.key, value: child });
|
|
178
|
+
tookChildren = true;
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
const supplied = written.get(field.key);
|
|
182
|
+
if (supplied) {
|
|
183
|
+
consumed.add(field.key);
|
|
184
|
+
fields.push({ key: field.key, value: enterRequiredOperand(ctx, block, lineage, operation, supplied) });
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
// A required field with no attribute is a program the checker would have
|
|
188
|
+
// rejected, so reaching here means this lowering and the checker disagree
|
|
189
|
+
// about which fields the props type has.
|
|
190
|
+
if (field.required) {
|
|
191
|
+
throw new IrLoweringBlockedError(`a component element supplies no value for the required props field "${field.key}"`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return { value: ctx.builder.allocateRecord(block, lineage, fields, props), representation: props, consumed, tookChildren };
|
|
195
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { HostMemberTable } from '../../targets/cpp/host/host-members.js';
|
|
2
|
+
export declare const geaHostMembers: () => HostMemberTable;
|
|
3
|
+
/**
|
|
4
|
+
* `<carrier>.<member>` keys whose real C++ return is `void`, read from the
|
|
5
|
+
* same `nativeMemberMethods` table `geaHostMembers` derives its rows from.
|
|
6
|
+
*
|
|
7
|
+
* A second, narrower pass over the same data rather than a field folded into
|
|
8
|
+
* `HostMember` itself: 19 rows across the package state `returnType: "void"`
|
|
9
|
+
* (`removeAttribute`, `insertBefore`, the audio node family, ...), and most of
|
|
10
|
+
* those already agree with the checker's own declared (void) return -- this
|
|
11
|
+
* set is a superset of the actual mismatches, which costs nothing, because a
|
|
12
|
+
* member the checker already declares void publishes no `operation.result`
|
|
13
|
+
* for `emitCall` to discard either way. `OscillatorNode.connect` is the row
|
|
14
|
+
* that is NOT redundant: the ambient declaration states the Web Audio
|
|
15
|
+
* chaining convention (`connect(destination): AudioDestinationNode`), the
|
|
16
|
+
* real `gea::host::OscillatorNode::connect` is `void`, and only this table
|
|
17
|
+
* knows it. `emitCall` (emit-callable.ts) consults it to
|
|
18
|
+
* render the call as a bare statement, discarding whatever `operation.result`
|
|
19
|
+
* the checker's ABI would otherwise have this backend capture -- see
|
|
20
|
+
* `HostSpellings.voidResults` for the "no viable overloaded '='" this cures.
|
|
21
|
+
*/
|
|
22
|
+
export declare const geaHostMemberVoidResults: () => ReadonlySet<string>;
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { templateArity } from '../../targets/cpp/host/host-members.js';
|
|
2
|
+
import { canvasSlotSpelling, geaCanvasContextCarrier, geaMemberTables } from './host.js';
|
|
3
|
+
/**
|
|
4
|
+
* gea's host member spellings, from the package that generates them.
|
|
5
|
+
*
|
|
6
|
+
* The same transposition `plugins/apple/members.ts` performs, over a different
|
|
7
|
+
* package: the tables are keyed by member name with each binding listing the
|
|
8
|
+
* receiver types it accepts, because that is the shape the package's own
|
|
9
|
+
* emitter looks a member up in, and this backend keys by `<carrier>.<member>`.
|
|
10
|
+
* Transposing is not restating -- every template stays in the package.
|
|
11
|
+
*
|
|
12
|
+
* What this replaces is eleven rows written by hand here, which was a second
|
|
13
|
+
* authority over a question the package already answers, and which answered it
|
|
14
|
+
* with this compiler's OWN spellings (`gea::host::document::getElementById`)
|
|
15
|
+
* rather than the engine's (`gea::embedded::ui::Document::instance()
|
|
16
|
+
* .getElementById(...)`). Two spellings for one member is how an emitted unit
|
|
17
|
+
* compiles against this compiler's runtime header and fails to link against the
|
|
18
|
+
* engine it is actually built into.
|
|
19
|
+
*/
|
|
20
|
+
const addRows = (rows, table, member, defaultEmit) => {
|
|
21
|
+
for (const [name, bindings] of Object.entries(table ?? {})) {
|
|
22
|
+
for (const binding of bindings) {
|
|
23
|
+
const emit = typeof binding.emit === 'string' && binding.emit.length > 0 ? binding.emit : defaultEmit?.(name);
|
|
24
|
+
if (typeof emit !== 'string' || emit.length === 0)
|
|
25
|
+
continue;
|
|
26
|
+
for (const carrier of binding.receiverTypes ?? []) {
|
|
27
|
+
// `gea_cpp_value` is v1's boxed receiver -- the dynamic fallback that
|
|
28
|
+
// lets a member resolve off a value whose type was erased. Admitting it
|
|
29
|
+
// would make every member reachable through the box this compiler
|
|
30
|
+
// exists not to produce, so it is dropped here as it is for Apple.
|
|
31
|
+
if (carrier === 'gea_cpp_value')
|
|
32
|
+
continue;
|
|
33
|
+
const key = `${carrier}.${name}`;
|
|
34
|
+
const row = member(emit, rows.get(key));
|
|
35
|
+
if (row)
|
|
36
|
+
rows.set(key, row);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* The document's own methods, which the package states without a receiver list.
|
|
43
|
+
*
|
|
44
|
+
* There is one document, so the table names the member and the spelling and
|
|
45
|
+
* leaves the receiver implied. The carrier it is implied to be is the one
|
|
46
|
+
* `nativeTypes` gives the `Document` declaration, read from the same statement
|
|
47
|
+
* rather than written out here -- a program whose `Document` carries something
|
|
48
|
+
* else would then file these rows under that, which is the correct answer and
|
|
49
|
+
* not a coincidence.
|
|
50
|
+
*/
|
|
51
|
+
const addDocumentRows = (rows, carrier) => {
|
|
52
|
+
if (carrier === undefined)
|
|
53
|
+
return;
|
|
54
|
+
for (const [name, method] of Object.entries(geaMemberTables()?.nativeDocumentMethods ?? {})) {
|
|
55
|
+
const emit = method?.emit;
|
|
56
|
+
if (typeof emit !== 'string' || emit.length === 0)
|
|
57
|
+
continue;
|
|
58
|
+
rows.set(`${carrier}.${name}`, { kind: 'method', emit, arity: templateArity(emit) });
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* The 2D canvas context, through the plugin package's own dispatch.
|
|
63
|
+
*
|
|
64
|
+
* These call `gea_ir::canvasFillRect(ctx, ...)` and its siblings -- the
|
|
65
|
+
* package's shipped wrappers, emitted into the unit by `geaCanvasInterop` --
|
|
66
|
+
* rather than the engine method each one forwards to. The difference is not
|
|
67
|
+
* cosmetic. The wrappers carry decisions the engine requires of any caller and
|
|
68
|
+
* that the member name alone does not state:
|
|
69
|
+
*
|
|
70
|
+
* - a colour argument is authored `0xRRGGBBAA` and the engine takes a native
|
|
71
|
+
* pixel, so `fillCircleRgb565`'s fill goes through `canvasRgb565`. A direct
|
|
72
|
+
* call converts `double` to `std::uint16_t` instead and draws the WRONG
|
|
73
|
+
* COLOUR, silently;
|
|
74
|
+
* - `fillStyle` is `string | number` and the engine has two setters
|
|
75
|
+
* (`setFillStyle`, `setFillStyleRgb565`);
|
|
76
|
+
* - `fillCirclesRgb565` has a pointer+count overload that a per-frame scratch
|
|
77
|
+
* view must reach, and a `std::vector` overload for everything else, and
|
|
78
|
+
* the choice is made from the argument's element type;
|
|
79
|
+
* - `drawImage`'s first argument is an image handle, not an id.
|
|
80
|
+
*
|
|
81
|
+
* A second copy of that in this compiler would be a second authority over a
|
|
82
|
+
* question the package already answers, free to drift from it. So the row is
|
|
83
|
+
* the package's own template, and what defines it is the package's own
|
|
84
|
+
* generator.
|
|
85
|
+
*
|
|
86
|
+
* `pass-through`, not a fixed arity: several wrappers take a trailing
|
|
87
|
+
* `count = -1`, `fillCircle`'s fill is optional, and which overload a call
|
|
88
|
+
* means is what C++ answers from the argument types rather than something to
|
|
89
|
+
* decide by counting here.
|
|
90
|
+
*
|
|
91
|
+
* The properties are stated write-only, which is what the package states: it
|
|
92
|
+
* ships `canvasContextPropertySetters` and no getter table, and the engine has
|
|
93
|
+
* `setFillStyle` with no `fillStyle()`. A read is refused by name at the access
|
|
94
|
+
* rather than rendered through the setter's text.
|
|
95
|
+
*/
|
|
96
|
+
const addCanvasRows = (rows, methods, setters) => {
|
|
97
|
+
for (const [name, emit] of Object.entries(methods ?? {})) {
|
|
98
|
+
if (typeof emit !== 'string' || emit.length === 0)
|
|
99
|
+
continue;
|
|
100
|
+
rows.set(`${geaCanvasContextCarrier}.${name}`, { kind: 'method', emit: canvasSlotSpelling(emit), arity: 'pass-through' });
|
|
101
|
+
}
|
|
102
|
+
for (const [name, emit] of Object.entries(setters ?? {})) {
|
|
103
|
+
if (typeof emit !== 'string' || emit.length === 0)
|
|
104
|
+
continue;
|
|
105
|
+
rows.set(`${geaCanvasContextCarrier}.${name}`, { kind: 'property', emit: null, store: canvasSlotSpelling(emit) });
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* How a program gets a 2D context off an element it holds.
|
|
110
|
+
*
|
|
111
|
+
* `domElementMethods` is one row, `getContext`, and its template is another of
|
|
112
|
+
* the package's wrappers -- `gea_ir::getCanvasContext(node, kind)`, which tests
|
|
113
|
+
* `kind == "2d"` and hands back `CanvasElement(node.id()).getContext2D()`. It
|
|
114
|
+
* is carried through for the same reason the context's own members are: the
|
|
115
|
+
* wrapper is where the acquisition is decided, including the overloads that
|
|
116
|
+
* unwrap a `Component<T>`'s nullable `el`.
|
|
117
|
+
*
|
|
118
|
+
* The receiver carrier comes from the package's `nativeTypes`, which is what
|
|
119
|
+
* says which declared type this member hangs off.
|
|
120
|
+
*/
|
|
121
|
+
const addElementMethodRows = (rows, methods, elementCarrier) => {
|
|
122
|
+
if (elementCarrier === undefined || elementCarrier.length === 0)
|
|
123
|
+
return;
|
|
124
|
+
for (const [name, emit] of Object.entries(methods ?? {})) {
|
|
125
|
+
if (typeof emit !== 'string' || emit.length === 0)
|
|
126
|
+
continue;
|
|
127
|
+
rows.set(`${elementCarrier}.${name}`, { kind: 'method', emit: canvasSlotSpelling(emit), arity: 'pass-through' });
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
export const geaHostMembers = () => {
|
|
131
|
+
const shims = geaMemberTables();
|
|
132
|
+
if (!shims)
|
|
133
|
+
return new Map();
|
|
134
|
+
const rows = new Map();
|
|
135
|
+
// `templateArity` counts `{argN}` occurrences, and a template that instead
|
|
136
|
+
// names the single `{args}` slot -- `({receiver}).createOscillator({args})`,
|
|
137
|
+
// `({receiver}).connect({args})`, thirteen of the thirty rows the package
|
|
138
|
+
// states here -- has none, so it derived a FIXED arity of 0 for every one of
|
|
139
|
+
// them regardless of how many arguments the C++ overload actually takes.
|
|
140
|
+
// `hostCallText` (emit-host-invoke.ts) only ever fills `{args}` on a
|
|
141
|
+
// `variadic` or `pass-through` row; a fixed-arity row never passes a
|
|
142
|
+
// `variadicArgs` string, so `fillHostTemplate` found `{args}` unfillable and
|
|
143
|
+
// refused every one of these calls by name ("host template names a slot this
|
|
144
|
+
// call cannot fill") -- including `createOscillator`, which takes none.
|
|
145
|
+
// `{args}` is exactly `pass-through`'s own slot -- "each argument in order,
|
|
146
|
+
// however many there are", host-members.ts's own words -- so a template
|
|
147
|
+
// naming it gets that arity instead of a count `templateArity` cannot derive
|
|
148
|
+
// from a slot name it does not recognise.
|
|
149
|
+
addRows(rows, shims.nativeMemberMethods, (emit, existing) => (existing ? null : { kind: 'method', emit, arity: emit.includes('{args}') ? 'pass-through' : templateArity(emit) }),
|
|
150
|
+
// A method row with NO template is not an incomplete row -- it is the
|
|
151
|
+
// package saying this member is an ordinary native method, called the way
|
|
152
|
+
// C++ calls one. The package's own comments say so in as many words
|
|
153
|
+
// ("`play()`/`pause()`/`seek()`/`dispose()` are methods (handled by the
|
|
154
|
+
// default native method-call path)"), and its `NativeMemberBinding.emit`
|
|
155
|
+
// is declared optional for exactly this. A template is stated only where
|
|
156
|
+
// the call is NOT the obvious one -- a differently-spelled engine
|
|
157
|
+
// function, a wrapper that makes a conversion, a free function taking the
|
|
158
|
+
// receiver first.
|
|
159
|
+
//
|
|
160
|
+
// Dropping these rows -- which is what this table did until now -- turns
|
|
161
|
+
// "the package states this member" into "no host member table claims it",
|
|
162
|
+
// and a program calling one is refused for a member the package plainly
|
|
163
|
+
// ships. `await fetch(url).text()` is the case that found it: `text`,
|
|
164
|
+
// `bytes`, `arrayBuffer`, `getTracks` and `getAudioTracks` are the five
|
|
165
|
+
// members stated this way, and `examples/weather` refuses on the first.
|
|
166
|
+
//
|
|
167
|
+
// Methods ONLY. A property getter with no template has no such default: a
|
|
168
|
+
// native data member is read as `({receiver}).name` and a native accessor
|
|
169
|
+
// as `({receiver}).name()`, the package's own comments show it ships both
|
|
170
|
+
// kinds, and nothing in the row says which. Guessing there would emit a
|
|
171
|
+
// call to a field or a read of a function; those rows stay dropped and
|
|
172
|
+
// refuse by name.
|
|
173
|
+
(name) => `({receiver}).${name}({args})`);
|
|
174
|
+
addRows(rows, shims.nativeMemberPropertyGetters, (emit, existing) => existing?.kind === 'property' ? (existing.emit === null ? { ...existing, emit } : null) : { kind: 'property', emit, store: null });
|
|
175
|
+
addRows(rows, shims.nativeMemberPropertySetters, (emit, existing) => existing?.kind === 'property'
|
|
176
|
+
? existing.store === null
|
|
177
|
+
? { ...existing, store: emit }
|
|
178
|
+
: null
|
|
179
|
+
: existing
|
|
180
|
+
? null
|
|
181
|
+
: { kind: 'property', emit: null, store: emit });
|
|
182
|
+
addDocumentRows(rows, shims.nativeTypes?.Document);
|
|
183
|
+
addCanvasRows(rows, shims.canvasContextMethods, shims.canvasContextPropertySetters);
|
|
184
|
+
addElementMethodRows(rows, shims.domElementMethods, shims.nativeTypes?.GeaCanvasElement);
|
|
185
|
+
return rows;
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* `<carrier>.<member>` keys whose real C++ return is `void`, read from the
|
|
189
|
+
* same `nativeMemberMethods` table `geaHostMembers` derives its rows from.
|
|
190
|
+
*
|
|
191
|
+
* A second, narrower pass over the same data rather than a field folded into
|
|
192
|
+
* `HostMember` itself: 19 rows across the package state `returnType: "void"`
|
|
193
|
+
* (`removeAttribute`, `insertBefore`, the audio node family, ...), and most of
|
|
194
|
+
* those already agree with the checker's own declared (void) return -- this
|
|
195
|
+
* set is a superset of the actual mismatches, which costs nothing, because a
|
|
196
|
+
* member the checker already declares void publishes no `operation.result`
|
|
197
|
+
* for `emitCall` to discard either way. `OscillatorNode.connect` is the row
|
|
198
|
+
* that is NOT redundant: the ambient declaration states the Web Audio
|
|
199
|
+
* chaining convention (`connect(destination): AudioDestinationNode`), the
|
|
200
|
+
* real `gea::host::OscillatorNode::connect` is `void`, and only this table
|
|
201
|
+
* knows it. `emitCall` (emit-callable.ts) consults it to
|
|
202
|
+
* render the call as a bare statement, discarding whatever `operation.result`
|
|
203
|
+
* the checker's ABI would otherwise have this backend capture -- see
|
|
204
|
+
* `HostSpellings.voidResults` for the "no viable overloaded '='" this cures.
|
|
205
|
+
*/
|
|
206
|
+
export const geaHostMemberVoidResults = () => {
|
|
207
|
+
const shims = geaMemberTables();
|
|
208
|
+
const keys = new Set();
|
|
209
|
+
for (const [name, bindings] of Object.entries(shims?.nativeMemberMethods ?? {})) {
|
|
210
|
+
for (const binding of bindings) {
|
|
211
|
+
if (binding.returnType !== 'void')
|
|
212
|
+
continue;
|
|
213
|
+
for (const carrier of binding.receiverTypes ?? []) {
|
|
214
|
+
if (carrier === 'gea_cpp_value')
|
|
215
|
+
continue;
|
|
216
|
+
keys.add(`${carrier}.${name}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return keys;
|
|
221
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { CompilerPlugin } from '../model.js';
|
|
2
|
+
/**
|
|
3
|
+
* gea, as a plugin.
|
|
4
|
+
*
|
|
5
|
+
* Everything this library adds to TypeScript lives behind this one object: what
|
|
6
|
+
* an element whose tag names a value means, which member of a constructed
|
|
7
|
+
* component produces its tree, and the runtime rows that make those claims
|
|
8
|
+
* checkable. Nothing in `src/` outside this directory knows any of it.
|
|
9
|
+
*
|
|
10
|
+
* The facts map is the whole of the state, and it is per-compilation by
|
|
11
|
+
* construction: `instantiate` creates it, the producer fills it while
|
|
12
|
+
* normalizing one program, and the lowering reads it while lowering that same
|
|
13
|
+
* program. A registry of long-lived instances would let a fact derived from one
|
|
14
|
+
* program be read back while compiling another -- a defect that reproduces only
|
|
15
|
+
* in whatever order the programs happened to be compiled in.
|
|
16
|
+
*
|
|
17
|
+
* `componentClasses` is the same shape of state for a different question:
|
|
18
|
+
* which class *declarations*, not which JSX elements, are gea's own. Both are
|
|
19
|
+
* filled while normalizing and read only while lowering, for the identical
|
|
20
|
+
* reason -- see `component-classes.ts` and `render-bridge.ts`.
|
|
21
|
+
*/
|
|
22
|
+
export declare const geaPlugin: CompilerPlugin;
|