@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,281 @@
|
|
|
1
|
+
import { operationOfResult } from '../../identity/ids.js';
|
|
2
|
+
import { operandOf } from '../../semantics/model/operands.js';
|
|
3
|
+
import { IrLoweringBlockedError } from '../../ir/lower-graph.js';
|
|
4
|
+
import { namedOperand, registerResult, requireLineage, resolveRequiredOperand } from '../../ir/lower-operands.js';
|
|
5
|
+
import { geaAfterRenderMemberName, geaMountedElementMemberName, geaRenderBridgeMemberName, geaRenderMemberName } from './contract.js';
|
|
6
|
+
/**
|
|
7
|
+
* `primitives.ts`'s mount-time bridge, ported rather than redesigned.
|
|
8
|
+
*
|
|
9
|
+
* v1 shares this repo's *same* `@geastack/core` runtime with v2 -- the same
|
|
10
|
+
* `Component`/`mount()` (`core/packages/core/index.d.ts:610-613`,
|
|
11
|
+
* `core/packages/core/runtime/primitives.ts:11-25`) -- so `render` is not a
|
|
12
|
+
* declared TypeScript member in v1 either; `mount()`'s structural cast is
|
|
13
|
+
* the identical escape hatch in both compilers, not a v2-specific gap. What
|
|
14
|
+
* v1 does about it is `cpp-source-replacements.ts`'s
|
|
15
|
+
* `insertComponentBridgeMethods` (that file's lines 76-117): a narrow,
|
|
16
|
+
* *textual* post-processing pass over already-emitted C++, entirely outside
|
|
17
|
+
* geatsc's semantic/IR pipeline, that adds a natively-typed `render`/
|
|
18
|
+
* `dispose` pair to a class that also got a "mounted renderer" (a template
|
|
19
|
+
* compiled to a standalone C++ function -- `cpp-template-renderer.ts`'s
|
|
20
|
+
* `templateMountedRenderer`, line 126). The convention it writes -- one
|
|
21
|
+
* parameter for the mount parent, a second, always-unused `_index`
|
|
22
|
+
* (`(void)_index;`, line 100), calling the compiled template and attaching
|
|
23
|
+
* what it returns under the parent -- is v1's real, native answer to "what
|
|
24
|
+
* does a render bridge do", ported here rather than redesigned
|
|
25
|
+
* (`citations.md` section 1). v1's own version boxes every part of it
|
|
26
|
+
* (`gea_cpp_value parent`, `gea_cpp_value _index`, `gea_cpp_value el`,
|
|
27
|
+
* lines 96-99) -- the repo-wide "No Boxing" rule this port follows instead
|
|
28
|
+
* is what makes `root` a real native handle here and drops `el`/`dispose`
|
|
29
|
+
* rather than reaching for the same box.
|
|
30
|
+
*
|
|
31
|
+
* v2 has no external base-swap tool, and `Component` (`compiler.ts`) is
|
|
32
|
+
* deliberately left without a `render` method of its own -- declaring one
|
|
33
|
+
* there breaks embedded codegen (its own comment). So there is no ordinary
|
|
34
|
+
* declaration for this member anywhere in a v2 program: `render` is a name
|
|
35
|
+
* `mount()`'s own structural cast spells (`geaRenderBridgeMemberName`), never
|
|
36
|
+
* a method any class writes. `unwrapErased` still resolves the cast's
|
|
37
|
+
* receiver to the real, monomorphized component class -- so the read is a
|
|
38
|
+
* real "get" of a real class instance, on a member that plainly is not one of
|
|
39
|
+
* its fields, accessors, or methods, which is exactly the refusal this ports
|
|
40
|
+
* v1's answer to close.
|
|
41
|
+
*
|
|
42
|
+
* The fix recognizes the one call shape `mount()`'s cast produces --
|
|
43
|
+
* `instance.render(root, depth)` on an instance of a class this file's sibling
|
|
44
|
+
* `component-classes.ts` has already told gea is one of its own -- and
|
|
45
|
+
* rebuilds it as what it means: call the class's own `template` member (the
|
|
46
|
+
* same member and the same calling convention `lower.ts`'s `lowerClassComponent`
|
|
47
|
+
* already calls for a JSX-constructed child of this class), then attach what
|
|
48
|
+
* it returns under `root`. `depth` is read nowhere in v1's own body either
|
|
49
|
+
* (`(void)_index;`, `cpp-source-replacements.ts:113`) and is dropped here the
|
|
50
|
+
* same way.
|
|
51
|
+
*
|
|
52
|
+
* `el` is written, natively. v1 boxes it (`gea_cpp_value el`) because its
|
|
53
|
+
* bridge is a textual pass with no type in hand; here the field is a real
|
|
54
|
+
* member of the component's struct -- `component-classes.ts` publishes the
|
|
55
|
+
* `define-field` event `Component`'s ambient body never did -- and the node
|
|
56
|
+
* goes in as the host handle it already is. That matters beyond tidiness: six
|
|
57
|
+
* corpus apps (`bubble-grid`, `canvas-3d-cube`, `e-reader`, `image-demo`,
|
|
58
|
+
* `maps`, `ttf-bench`) do all of their work from `onAfterRender()`, and every
|
|
59
|
+
* one of them guards on `this.el` before doing any of it.
|
|
60
|
+
*
|
|
61
|
+
* `onAfterRender` is then called, because otherwise nothing calls it: the hook
|
|
62
|
+
* is a method no other code reaches, so the emitter -- correctly -- emits
|
|
63
|
+
* nothing for it, and the app compiles clean, links clean, and draws nothing.
|
|
64
|
+
* `bubble-grid` did exactly that. The framework's own JS component runtime ends
|
|
65
|
+
* its `render` with the same two steps, and v1 gets them by keeping that
|
|
66
|
+
* runtime whole for any component declaring a lifecycle member
|
|
67
|
+
* (`geatsc-plugin-gea/src/index.ts`'s `componentHasRuntimeLifecycle`); this
|
|
68
|
+
* bridge performs them directly instead, which is the same behaviour without
|
|
69
|
+
* the boxed runtime.
|
|
70
|
+
*
|
|
71
|
+
* `dispose` is still not allocated. `mount()` is fire-and-forget -- no corpus
|
|
72
|
+
* program calls `.dispose()` on a mounted root -- and a disposer whose only
|
|
73
|
+
* caller does not exist would be storage nothing ever reads.
|
|
74
|
+
*/
|
|
75
|
+
/**
|
|
76
|
+
* The `FunctionId` that calls a class's own `template` member, or `null` when
|
|
77
|
+
* it declares none of its own.
|
|
78
|
+
*
|
|
79
|
+
* An inherited `template` is a gap this shares with `lower.ts`'s
|
|
80
|
+
* `lowerClassComponent`, not a new one: that lowering already refuses "a
|
|
81
|
+
* render inherited from a base is entered through the base that declares it,
|
|
82
|
+
* which this lowering does not yet resolve", and a class this bridge cannot
|
|
83
|
+
* find an own member for is refused the same honest way -- by declining to
|
|
84
|
+
* redirect it, leaving the core's ordinary "not a field, accessor, or method"
|
|
85
|
+
* refusal to name the gap.
|
|
86
|
+
*/
|
|
87
|
+
const templateCallableOf = (ctx, declaration) => {
|
|
88
|
+
const layout = ctx.program.classes.get(declaration);
|
|
89
|
+
const member = layout?.methods.find((method) => method.key === geaRenderMemberName);
|
|
90
|
+
return member?.callable ?? null;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* A method of this class or of any class it derives from, by key.
|
|
94
|
+
*
|
|
95
|
+
* A lifecycle hook is written wherever the author put it -- a shared base that
|
|
96
|
+
* several screens extend is the ordinary way to write one -- and a lookup that
|
|
97
|
+
* stopped at the class's own members would silently skip the hook rather than
|
|
98
|
+
* refuse it. The walk is the same one `classMemberOf` performs for an ordinary
|
|
99
|
+
* inherited member: own members first, then the base, so an override wins.
|
|
100
|
+
*/
|
|
101
|
+
const inheritedMethodOf = (ctx, declaration, key) => {
|
|
102
|
+
let current = declaration;
|
|
103
|
+
const seen = new Set();
|
|
104
|
+
while (current !== null && !seen.has(current)) {
|
|
105
|
+
seen.add(current);
|
|
106
|
+
const layout = ctx.program.classes.get(current);
|
|
107
|
+
if (!layout)
|
|
108
|
+
return null;
|
|
109
|
+
const member = layout.methods.find((method) => method.key === key);
|
|
110
|
+
if (member)
|
|
111
|
+
return member.callable;
|
|
112
|
+
current = layout.base;
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Whether this class -- or a base -- really has storage for `el`.
|
|
118
|
+
*
|
|
119
|
+
* `component-classes.ts` publishes the field for every class it recognizes as
|
|
120
|
+
* one of gea's, so this is normally true; it is asked rather than assumed
|
|
121
|
+
* because a class whose layout does not carry the member has nowhere to put the
|
|
122
|
+
* node, and writing one anyway would emit a struct member reference that does
|
|
123
|
+
* not exist. Answering `false` leaves the tree attached and the hook uncalled,
|
|
124
|
+
* which is what this bridge did before the field existed at all.
|
|
125
|
+
*/
|
|
126
|
+
const hasMountedElementField = (ctx, declaration) => {
|
|
127
|
+
let current = declaration;
|
|
128
|
+
const seen = new Set();
|
|
129
|
+
while (current !== null && !seen.has(current)) {
|
|
130
|
+
seen.add(current);
|
|
131
|
+
const layout = ctx.program.classes.get(current);
|
|
132
|
+
if (!layout)
|
|
133
|
+
return false;
|
|
134
|
+
if (layout.fields.some((field) => field.key === geaMountedElementMemberName))
|
|
135
|
+
return true;
|
|
136
|
+
current = layout.base;
|
|
137
|
+
}
|
|
138
|
+
return false;
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* The declaration a `class-ref` receiver operand names, when it is both one
|
|
142
|
+
* of gea's own component classes and one this compilation can actually call
|
|
143
|
+
* `template` on -- or `null` for anything else.
|
|
144
|
+
*
|
|
145
|
+
* Read straight from the sealed plan rather than through `resolveRequiredOperand`:
|
|
146
|
+
* an operand this bridge ultimately declines to redirect must not have picked
|
|
147
|
+
* up an extra IR read as a side effect of merely being asked about, or the
|
|
148
|
+
* core's own, unintercepted lowering of the same operand would mint a second,
|
|
149
|
+
* redundant one right behind it.
|
|
150
|
+
*/
|
|
151
|
+
const eligibleClassOf = (ctx, operand, componentClasses) => {
|
|
152
|
+
if (!operand || operand.source.kind !== 'result')
|
|
153
|
+
return null;
|
|
154
|
+
const representation = ctx.plan.selected.get(operand.source.result);
|
|
155
|
+
if (!representation || representation.kind !== 'class-ref')
|
|
156
|
+
return null;
|
|
157
|
+
if (!componentClasses.has(representation.declaration))
|
|
158
|
+
return null;
|
|
159
|
+
return templateCallableOf(ctx, representation.declaration) ? representation.declaration : null;
|
|
160
|
+
};
|
|
161
|
+
/** Whether `operand` is the constant text `text`. */
|
|
162
|
+
const isConstantText = (operand, text) => operand !== undefined && operand.source.kind === 'constant' && operand.source.text === text;
|
|
163
|
+
/**
|
|
164
|
+
* The property "get" half: `instance.render`, read but never called, is not
|
|
165
|
+
* this bridge's concern (nothing in the corpus does that -- `citations.md`
|
|
166
|
+
* section 2c) -- but the "get" that *is* about to be called still has to stop
|
|
167
|
+
* being lowered here, before the core's generic property path mints a real
|
|
168
|
+
* `get` IR operation for a member `class-layout.ts` was never told about,
|
|
169
|
+
* which is the operation `emit-properties.ts`'s `classMemberText` refuses by
|
|
170
|
+
* name today. This half builds nothing and registers nothing: the call that
|
|
171
|
+
* immediately follows (`tryLowerRenderBridgeCall` below) rebuilds the whole
|
|
172
|
+
* expression from its own `receiver` operand, which every method-shaped call
|
|
173
|
+
* carries independent of how its callee was read (`ir/lower.ts`'s own
|
|
174
|
+
* comment on `lowerInvocation`), so nothing downstream ever asks for a value
|
|
175
|
+
* this "get" would have produced.
|
|
176
|
+
*/
|
|
177
|
+
const tryLowerRenderBridgeGet = (ctx, operation, componentClasses) => {
|
|
178
|
+
if (operation.family !== 'property' || operation.internalMethod !== 'get')
|
|
179
|
+
return false;
|
|
180
|
+
if (!isConstantText(operandOf(operation, 'key', 0), geaRenderBridgeMemberName))
|
|
181
|
+
return false;
|
|
182
|
+
return eligibleClassOf(ctx, operandOf(operation, 'receiver', 0), componentClasses) !== null;
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
185
|
+
* The call half: `instance.render(root, depth)` itself.
|
|
186
|
+
*
|
|
187
|
+
* Recognizing it needs both ends of the call: the receiver has to be an
|
|
188
|
+
* instance of a class gea claims (the same test the "get" half above already
|
|
189
|
+
* makes), and the callee has to actually be a read of `render` -- an eligible
|
|
190
|
+
* receiver calling some *other* method it declares must not be redirected.
|
|
191
|
+
* The callee is reached by walking back from the call's own `callee` operand
|
|
192
|
+
* to the "get" operation that published it (`operationOfResult`), the same
|
|
193
|
+
* indirection every consumer of a published result already goes through;
|
|
194
|
+
* there is no second, faster path to the same fact.
|
|
195
|
+
*/
|
|
196
|
+
const tryLowerRenderBridgeCall = (ctx, block, operation, componentClasses) => {
|
|
197
|
+
if (operation.family !== 'invocation' || operation.internalMethod !== 'call')
|
|
198
|
+
return false;
|
|
199
|
+
const receiverOperand = operandOf(operation, 'receiver', 0);
|
|
200
|
+
const declaration = eligibleClassOf(ctx, receiverOperand, componentClasses);
|
|
201
|
+
if (!declaration || !receiverOperand)
|
|
202
|
+
return false;
|
|
203
|
+
const calleeOperand = namedOperand(operation, 'callee');
|
|
204
|
+
if (calleeOperand.source.kind !== 'result')
|
|
205
|
+
return false;
|
|
206
|
+
const calleeOperation = ctx.graph.operations.get(operationOfResult(calleeOperand.source.result));
|
|
207
|
+
if (!calleeOperation || calleeOperation.family !== 'property' || calleeOperation.internalMethod !== 'get')
|
|
208
|
+
return false;
|
|
209
|
+
if (!isConstantText(operandOf(calleeOperation, 'key', 0), geaRenderBridgeMemberName))
|
|
210
|
+
return false;
|
|
211
|
+
const callable = templateCallableOf(ctx, declaration);
|
|
212
|
+
if (!callable)
|
|
213
|
+
return false;
|
|
214
|
+
const templateAbi = ctx.program.abis.get(callable);
|
|
215
|
+
if (!templateAbi) {
|
|
216
|
+
throw new IrLoweringBlockedError(`class ${declaration}'s "${geaRenderMemberName}" member has no projected calling convention for the render bridge to call`);
|
|
217
|
+
}
|
|
218
|
+
if (templateAbi.parameters.length > 0) {
|
|
219
|
+
throw new IrLoweringBlockedError(`class ${declaration}'s "${geaRenderMemberName}" declares ${templateAbi.parameters.length} parameter(s); the render bridge ` +
|
|
220
|
+
'calls it with none, the same as mounting a component with no attributes');
|
|
221
|
+
}
|
|
222
|
+
const lineage = requireLineage(operation);
|
|
223
|
+
const receiver = resolveRequiredOperand(ctx, block, lineage, receiverOperand);
|
|
224
|
+
const rootOperand = operandOf(operation, 'argument', 0);
|
|
225
|
+
if (!rootOperand) {
|
|
226
|
+
throw new IrLoweringBlockedError('a render-bridge call names no root argument to attach the rendered tree under');
|
|
227
|
+
}
|
|
228
|
+
const root = resolveRequiredOperand(ctx, block, lineage, rootOperand);
|
|
229
|
+
if (root.representation.kind !== 'native-handle') {
|
|
230
|
+
throw new IrLoweringBlockedError(`a render-bridge call's root argument carries "${root.representation.kind}"; only a native host handle names a real place ` +
|
|
231
|
+
'to attach the rendered tree');
|
|
232
|
+
}
|
|
233
|
+
// The render call's second argument (`depth`) is read nowhere: v1's own
|
|
234
|
+
// bridge casts it away unconditionally (`(void)_index;`), and no lowering
|
|
235
|
+
// in either compiler ever gives it operational meaning. Not resolving it
|
|
236
|
+
// at all is that same fact, not an omission of it.
|
|
237
|
+
const templateRepresentation = { kind: 'function-value-dispatch', abi: templateAbi };
|
|
238
|
+
const bound = ctx.builder.allocateCallable(block, lineage, callable, [], templateRepresentation);
|
|
239
|
+
const templateResult = ctx.builder.call(block, lineage, { value: bound, representation: templateRepresentation }, receiver, [], templateAbi.result);
|
|
240
|
+
if (templateResult === null) {
|
|
241
|
+
throw new IrLoweringBlockedError(`class ${declaration}'s "${geaRenderMemberName}" returns "void"; a render bridge has nothing to attach`);
|
|
242
|
+
}
|
|
243
|
+
// Never a text leaf: what is attached here is a component's rendered SUBTREE,
|
|
244
|
+
// a host node -- the one thing `isTextLeaf` refuses by carrier anyway.
|
|
245
|
+
ctx.builder.elementChild(block, lineage, root, { value: templateResult, representation: templateAbi.result }, false);
|
|
246
|
+
// The two steps the framework's own component runtime performs immediately
|
|
247
|
+
// after attaching, in its order: install the root element, then run the
|
|
248
|
+
// hook. `CompiledReactiveComponent.render` (the JS runtime v1 keeps whole for
|
|
249
|
+
// any component declaring a lifecycle member) ends
|
|
250
|
+
//
|
|
251
|
+
// this[GEA_ELEMENT] = node; this.rendered = true; this.onAfterRender()
|
|
252
|
+
//
|
|
253
|
+
// and this bridge is what stands in for that runtime natively. Without them
|
|
254
|
+
// the hook is unreachable code: it is never emitted, the app's whole
|
|
255
|
+
// start-up -- every `requestAnimationFrame` loop the corpus starts from one
|
|
256
|
+
// -- never runs, and the program still compiles clean. That is the failure
|
|
257
|
+
// mode this pair closes, and it is why they belong to the attach rather than
|
|
258
|
+
// to a later pass.
|
|
259
|
+
if (hasMountedElementField(ctx, declaration)) {
|
|
260
|
+
const key = ctx.builder.constant(block, lineage, geaMountedElementMemberName, 'string', { kind: 'string' });
|
|
261
|
+
ctx.builder.set(block, lineage, receiver, { value: key, representation: { kind: 'string' } }, { value: templateResult, representation: templateAbi.result }, true, null);
|
|
262
|
+
}
|
|
263
|
+
const afterRender = inheritedMethodOf(ctx, declaration, geaAfterRenderMemberName);
|
|
264
|
+
const afterRenderAbi = afterRender ? ctx.program.abis.get(afterRender) : undefined;
|
|
265
|
+
if (afterRender && afterRenderAbi) {
|
|
266
|
+
if (afterRenderAbi.parameters.length > 0) {
|
|
267
|
+
throw new IrLoweringBlockedError(`class ${declaration}'s "${geaAfterRenderMemberName}" declares ${afterRenderAbi.parameters.length} parameter(s); the ` +
|
|
268
|
+
'lifecycle hook is called with none');
|
|
269
|
+
}
|
|
270
|
+
const hookRepresentation = { kind: 'function-value-dispatch', abi: afterRenderAbi };
|
|
271
|
+
const hook = ctx.builder.allocateCallable(block, lineage, afterRender, [], hookRepresentation);
|
|
272
|
+
ctx.builder.call(block, lineage, { value: hook, representation: hookRepresentation }, receiver, [], afterRenderAbi.result);
|
|
273
|
+
}
|
|
274
|
+
// `render`'s own declared return type is `void` -- the structural cast
|
|
275
|
+
// `mount()` writes states that, and nothing this compiler derives disagrees
|
|
276
|
+
// -- so the call itself publishes nothing to register.
|
|
277
|
+
registerResult(ctx, operation, null);
|
|
278
|
+
return true;
|
|
279
|
+
};
|
|
280
|
+
/** Both halves, tried in the order they are read: a "get" first, the call that reads it second. */
|
|
281
|
+
export const lowerGeaRenderBridge = (ctx, block, operation, componentClasses) => tryLowerRenderBridgeGet(ctx, operation, componentClasses) || tryLowerRenderBridgeCall(ctx, block, operation, componentClasses);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { OperationId } from '../../identity/ids.js';
|
|
2
|
+
import type { SlotHook } from '../../projection/slots.js';
|
|
3
|
+
import type { GeaElementFacts } from './contract.js';
|
|
4
|
+
/**
|
|
5
|
+
* The slot census's answer for the one element shape this plugin lowers its
|
|
6
|
+
* own way: a CLASS component. Its props object is not the tag's parameter
|
|
7
|
+
* (the class is constructed with none) but the first formal of the render
|
|
8
|
+
* member the library points at, and only this plugin knows which member that
|
|
9
|
+
* is (`contract.ts`'s `elementFactsOf`). The core census answers function
|
|
10
|
+
* components itself, from the tag's own convention.
|
|
11
|
+
*
|
|
12
|
+
* States exactly what `lower.ts`'s `lowerClassComponent` builds: the same
|
|
13
|
+
* layout, keyed by the same member, so the two cannot drift.
|
|
14
|
+
*/
|
|
15
|
+
export declare const createGeaSlotHook: (facts: ReadonlyMap<OperationId, GeaElementFacts>) => SlotHook;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { abiOfCallee } from '../../projection/callee.js';
|
|
2
|
+
import { operandOf } from '../../semantics/model/operands.js';
|
|
3
|
+
/**
|
|
4
|
+
* The slot census's answer for the one element shape this plugin lowers its
|
|
5
|
+
* own way: a CLASS component. Its props object is not the tag's parameter
|
|
6
|
+
* (the class is constructed with none) but the first formal of the render
|
|
7
|
+
* member the library points at, and only this plugin knows which member that
|
|
8
|
+
* is (`contract.ts`'s `elementFactsOf`). The core census answers function
|
|
9
|
+
* components itself, from the tag's own convention.
|
|
10
|
+
*
|
|
11
|
+
* States exactly what `lower.ts`'s `lowerClassComponent` builds: the same
|
|
12
|
+
* layout, keyed by the same member, so the two cannot drift.
|
|
13
|
+
*/
|
|
14
|
+
export const createGeaSlotHook = (facts) => (census, operation, operand) => {
|
|
15
|
+
if (operation.family !== 'element' || operation.form !== 'value')
|
|
16
|
+
return null;
|
|
17
|
+
const resolved = facts.get(operation.id);
|
|
18
|
+
if (!resolved || resolved.invocation !== 'construct' || resolved.renderMember === null)
|
|
19
|
+
return null;
|
|
20
|
+
if (operand.role !== 'prop-value' && operand.role !== 'child')
|
|
21
|
+
return null;
|
|
22
|
+
const tagOperand = operandOf(operation, 'tag');
|
|
23
|
+
const tag = tagOperand ? census.carrierOf(operation, tagOperand) : null;
|
|
24
|
+
const instance = tag ? abiOfCallee(tag)?.result : undefined;
|
|
25
|
+
if (instance?.kind !== 'class-ref')
|
|
26
|
+
return null;
|
|
27
|
+
const member = census.input.classes.get(instance.declaration)?.methods.find((method) => method.key === resolved.renderMember);
|
|
28
|
+
const render = member?.callable ? census.input.abis.get(member.callable) : undefined;
|
|
29
|
+
const props = render?.parameters[0]?.value;
|
|
30
|
+
if (!props)
|
|
31
|
+
return null;
|
|
32
|
+
if (operand.role === 'child')
|
|
33
|
+
return operation.childrenKey === null ? null : census.fieldSlot(props, operation.childrenKey);
|
|
34
|
+
const key = operandOf(operation, 'prop-key', operand.ordinal);
|
|
35
|
+
return key?.source.kind === 'constant' ? census.fieldSlot(props, key.source.text) : null;
|
|
36
|
+
};
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import type { SemanticGraph } from '../../semantics/model/graph.js';
|
|
2
|
+
import { type SemanticOperand } from '../../semantics/model/operands.js';
|
|
3
|
+
import type { ElementOperation } from '../../semantics/model/operations.js';
|
|
4
|
+
/**
|
|
5
|
+
* Splits a component's `template()` element tree into static structure and
|
|
6
|
+
* dynamic slots, from the compiler's own semantic graph rather than from a
|
|
7
|
+
* Babel AST.
|
|
8
|
+
*
|
|
9
|
+
* gea's real build tool (`packages/vite-plugin-gea/src/closure-codegen/`)
|
|
10
|
+
* does this exact split -- `walkJsxToTemplate` produces a `TemplateSpec
|
|
11
|
+
* {html, slots}`, and `GeaIrSlot` is `{index, kind, walk, walkKinds?, expr?,
|
|
12
|
+
* payload?}`. This module produces the same shape for the same reason gea
|
|
13
|
+
* does: a reactive renderer needs to know, ahead of any render, which DOM
|
|
14
|
+
* positions never change (bake them into a template) and which ones do
|
|
15
|
+
* (patch only those). But gea's `expr` is a *generated code string* --
|
|
16
|
+
* `generate(expr).code` -- and that is exactly what this architecture
|
|
17
|
+
* forbids: generated text is never authority here. A slot below cites the
|
|
18
|
+
* `SemanticOperand` that produces its value (which, when its source is a
|
|
19
|
+
* published result, already carries the `SemanticResultId` a consumer needs)
|
|
20
|
+
* so a later stage resolves it through the ordinary typed operand machinery
|
|
21
|
+
* instead of re-parsing a string this analysis would otherwise have invented.
|
|
22
|
+
*
|
|
23
|
+
* This is pure analysis: no lowering, no emission, no mutation of the graph
|
|
24
|
+
* it reads. Someone else (unwritten as of this file) consumes the result to
|
|
25
|
+
* decide how to actually build and patch DOM.
|
|
26
|
+
*/
|
|
27
|
+
/** One static attribute: a name and the constant value baked into the template. */
|
|
28
|
+
export interface StaticAttribute {
|
|
29
|
+
readonly name: string;
|
|
30
|
+
readonly value: string;
|
|
31
|
+
}
|
|
32
|
+
/** A text run that never changes -- baked into the template verbatim. */
|
|
33
|
+
export interface StaticTextChild {
|
|
34
|
+
readonly kind: 'text';
|
|
35
|
+
readonly text: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A child position occupied by a dynamic slot. This node carries no value of
|
|
39
|
+
* its own -- `slotIndex` is a pointer into the sibling `slots` array, which is
|
|
40
|
+
* where the value (and the operand that produces it) actually lives. Keeping
|
|
41
|
+
* the anchor separate from the slot mirrors gea's own split between the
|
|
42
|
+
* template HTML (which has a bare `<!--N-->` comment at this position) and
|
|
43
|
+
* `TemplateSpec.slots` (which has the slot's behavior) -- except this analysis
|
|
44
|
+
* has no HTML to put the marker in, so the anchor node stands in its place.
|
|
45
|
+
*/
|
|
46
|
+
export interface SlotAnchorChild {
|
|
47
|
+
readonly kind: 'anchor';
|
|
48
|
+
readonly slotIndex: number;
|
|
49
|
+
}
|
|
50
|
+
export type StaticChild = StaticElement | StaticTextChild | SlotAnchorChild;
|
|
51
|
+
/** A static intrinsic element: a fixed tag, with its own mix of static and dynamic content. */
|
|
52
|
+
export interface StaticElement {
|
|
53
|
+
readonly kind: 'element';
|
|
54
|
+
readonly tag: string;
|
|
55
|
+
readonly attributes: readonly StaticAttribute[];
|
|
56
|
+
readonly children: readonly StaticChild[];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* One step of a `walk`, element-aware.
|
|
60
|
+
*
|
|
61
|
+
* `{elem: N}` means "the N-th element among this level's siblings" (every
|
|
62
|
+
* static-element and dynamic-text/mount position counts toward sibling order,
|
|
63
|
+
* but only elements advance N); `{child: N}` means "the N-th child of any
|
|
64
|
+
* kind," which is what a comment-marker or text-node position needs since it
|
|
65
|
+
* is not itself an element. This is the same distinction gea's `walkKinds`
|
|
66
|
+
* draws, kept alongside the plain index-path `walk` for the same reason gea
|
|
67
|
+
* keeps both: `walk` is what every consumer needs at minimum, `walkKinds` is
|
|
68
|
+
* what lets one use `firstElementChild`/`nextElementSibling` chains instead of
|
|
69
|
+
* `childNodes[i]` indexing when it wants to.
|
|
70
|
+
*/
|
|
71
|
+
export type WalkStep = {
|
|
72
|
+
readonly elem: number;
|
|
73
|
+
} | {
|
|
74
|
+
readonly child: number;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Attribute-slot kinds -- what a dynamic attribute *does* when it changes.
|
|
78
|
+
*
|
|
79
|
+
* This vocabulary ('class' writes className, 'style' writes a
|
|
80
|
+
* CSSStyleDeclaration, an event name wires a listener rather than writing a
|
|
81
|
+
* property at all) is not a fact about JSX or about this compiler's semantic
|
|
82
|
+
* graph: it is gea's own policy for what its attribute names mean, and a
|
|
83
|
+
* different library rendering through the same element operations is free to
|
|
84
|
+
* classify them differently. That is exactly why `classifyAttrKind` below
|
|
85
|
+
* lives in this file, behind the plugin boundary, instead of in
|
|
86
|
+
* `src/semantics/` where it would silently become every framework's answer.
|
|
87
|
+
*/
|
|
88
|
+
export type AttributeSlotKind = 'event' | 'class' | 'style' | 'value' | 'bool' | 'ref' | 'html' | 'attr';
|
|
89
|
+
/** Every slot kind: the attribute kinds above, plus a reactive text child and a mounted component. */
|
|
90
|
+
export type TemplateSlotKind = AttributeSlotKind | 'text' | 'mount';
|
|
91
|
+
/**
|
|
92
|
+
* One dynamic position in the tree.
|
|
93
|
+
*
|
|
94
|
+
* `walk`/`walkKinds` locate the position from the template root -- see the
|
|
95
|
+
* module doc comment above for why every slot's walk must be captured
|
|
96
|
+
* *before* any of them act: this analysis never acts on anything, but a
|
|
97
|
+
* consumer that does (mounting a component, materializing a conditional
|
|
98
|
+
* branch, splicing in a list) mutates the live parent's child list when it
|
|
99
|
+
* does, and a walk computed against the pristine tree is only valid if it is
|
|
100
|
+
* captured before that mutation runs. gea's own emitter states this exact
|
|
101
|
+
* rule in `compileJsxToBlock` (`emit/emit-core.ts`): "hoist ALL walk captures
|
|
102
|
+
* ... before any slot action runs, because slot actions ... mutate the
|
|
103
|
+
* parent's childNodes list and would shift literal-index walks for subsequent
|
|
104
|
+
* slots." A consumer of this module's output must hoist the same way gea's
|
|
105
|
+
* emitter does; this module simply hands it every walk up front so there is
|
|
106
|
+
* nothing left to compute mid-mutation.
|
|
107
|
+
*
|
|
108
|
+
* `operand` is the citation, never a generated string: it is the exact
|
|
109
|
+
* `SemanticOperand` (attribute prop-value or element child) whose evaluation
|
|
110
|
+
* produces this slot's value, so a consumer reads its `.source`/`.type`
|
|
111
|
+
* through the ordinary typed operand machinery rather than through text this
|
|
112
|
+
* analysis would have had to generate and the consumer would have had to
|
|
113
|
+
* re-parse.
|
|
114
|
+
*/
|
|
115
|
+
export interface TemplateSlot {
|
|
116
|
+
readonly index: number;
|
|
117
|
+
readonly kind: TemplateSlotKind;
|
|
118
|
+
readonly walk: readonly number[];
|
|
119
|
+
readonly walkKinds: readonly WalkStep[];
|
|
120
|
+
/** The attribute name, for an attribute-kind slot; `null` for 'text' and 'mount'. */
|
|
121
|
+
readonly attributeName: string | null;
|
|
122
|
+
readonly operand: SemanticOperand;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* The outcome of analyzing one template root.
|
|
126
|
+
*
|
|
127
|
+
* `blocked` is a first-class answer, not an exception: every construct this
|
|
128
|
+
* analysis cannot describe faithfully (a spread, a fragment root, a
|
|
129
|
+
* conditional or list child whose branches are elements) is refused with a
|
|
130
|
+
* stated reason instead of guessed at. A caller that wants a partial answer
|
|
131
|
+
* for a partially-describable tree is asking this analysis to invent
|
|
132
|
+
* authority for the part it could not prove, which is the one thing it must
|
|
133
|
+
* never do.
|
|
134
|
+
*/
|
|
135
|
+
export type TemplateAnalysisResult = {
|
|
136
|
+
readonly kind: 'ok';
|
|
137
|
+
readonly root: StaticElement;
|
|
138
|
+
readonly slots: readonly TemplateSlot[];
|
|
139
|
+
} | {
|
|
140
|
+
readonly kind: 'blocked';
|
|
141
|
+
readonly reason: string;
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Split a component's template root into static structure and dynamic slots.
|
|
145
|
+
*
|
|
146
|
+
* `root` must be the `ElementOperation` a `template()` body's JSX evaluates to
|
|
147
|
+
* -- the caller is the one that knows which operation that is (it resolved the
|
|
148
|
+
* component's render member and found the operation its body publishes); this
|
|
149
|
+
* function only knows how to walk one, given the graph it belongs to.
|
|
150
|
+
*/
|
|
151
|
+
export declare const analyzeTemplate: (root: ElementOperation, graph: SemanticGraph) => TemplateAnalysisResult;
|