@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,82 @@
|
|
|
1
|
+
import type { DeclarationId, IrValueId } from '../../identity/ids.js';
|
|
2
|
+
import type { EmitContext } from './emit-context.js';
|
|
3
|
+
/**
|
|
4
|
+
* What a WITHHELD value still reads, for the emitters that move where it lands.
|
|
5
|
+
*
|
|
6
|
+
* `ir/deferral.ts` withholds a value that has one use, in one block, from an
|
|
7
|
+
* operation with no effects, with every operation between the two also
|
|
8
|
+
* withheld. That last condition is the whole proof: nothing between the
|
|
9
|
+
* definition and the use emits a statement, so nothing can change what the
|
|
10
|
+
* withheld expression reads before it renders.
|
|
11
|
+
*
|
|
12
|
+
* It is a proof about the emission the census SAW. An emitter that rewrites its
|
|
13
|
+
* own output -- puts a statement into that window, or renders the value
|
|
14
|
+
* somewhere the census never placed it -- invalidates it retroactively, and the
|
|
15
|
+
* census has no way to know. Three do:
|
|
16
|
+
*
|
|
17
|
+
* - `emit-json.ts`'s write-in-place fill emits `cell.clear()` and then renders
|
|
18
|
+
* the argument, so a withheld read of that cell now renders against emptied
|
|
19
|
+
* storage. `text = JSON.stringify(text.length)` served `0` for `"ee".length`
|
|
20
|
+
* -- clean C++, wrong answer, no diagnostic.
|
|
21
|
+
* - `emit-callable.ts`'s receiver argument passes a withheld cell read to a
|
|
22
|
+
* body that takes its receiver BY REFERENCE, where the callee reassigning
|
|
23
|
+
* that cell drops the last count and destroys the object the reference
|
|
24
|
+
* names.
|
|
25
|
+
* - `emit-arrays.ts`'s counted-push rewrite renders the loop bound on both
|
|
26
|
+
* sides of the `bulkAppend` that changes the array's length.
|
|
27
|
+
*
|
|
28
|
+
* One hazard, found three times, cured three different ways -- which is how the
|
|
29
|
+
* first one shipped: nothing made the author of a rewrite think about deferral
|
|
30
|
+
* at all. So the QUESTION lives here, once. The cure stays with the emitter,
|
|
31
|
+
* because the three genuinely differ: the fill declines its fast path, the
|
|
32
|
+
* receiver takes a temporary back, the rewrite declines itself. What none of
|
|
33
|
+
* them may do any more is answer the question privately.
|
|
34
|
+
*
|
|
35
|
+
* ## Why there is a second guard, elsewhere, that this one does not replace
|
|
36
|
+
*
|
|
37
|
+
* A withheld read renders as the cell's own name only because
|
|
38
|
+
* `emit-bindings.ts` decided it may: a read becomes an ALIAS of the cell rather
|
|
39
|
+
* than a copy of it exactly when the body writes that cell at most once
|
|
40
|
+
* (`bindingWriteCounts <= 1`, emit-bindings.ts:233,255), and deferral inherits
|
|
41
|
+
* that decision, since a deferred value's text is captured from the statement
|
|
42
|
+
* emit-bindings had already rendered. So "the cell will name a DIFFERENT object
|
|
43
|
+
* by the time this renders" is answered once, upstream, and no site here needs
|
|
44
|
+
* to re-ask it.
|
|
45
|
+
*
|
|
46
|
+
* What that guard cannot see is the case this file exists for: the storage the
|
|
47
|
+
* cell names being mutated IN PLACE. `clear()`, an append, a subscript store --
|
|
48
|
+
* none of them writes the cell, so the write count does not move and the alias
|
|
49
|
+
* stays sound by its own rule while what it reads changes underneath it. Two
|
|
50
|
+
* different questions, two guards, and the emitter needs both.
|
|
51
|
+
*
|
|
52
|
+
* A sweep of all 59 files under `targets/cpp/` for "emits a mutation, then
|
|
53
|
+
* renders an operand" found twelve candidates: nine are mutually exclusive
|
|
54
|
+
* branches rather than a sequence, and three are sequential and sound -- the
|
|
55
|
+
* array builder's `appendRange` mutates an array freshly allocated in that same
|
|
56
|
+
* emission, which no operand can name yet, and the two `defineValueAlias` sites
|
|
57
|
+
* (emit-carrier-members.ts:779, emit-properties.ts:906) publish the receiver
|
|
58
|
+
* after a subscript store, where mutating one slot does not change which object
|
|
59
|
+
* the cell names. Relocation in the other direction -- a read hoisted EARLIER,
|
|
60
|
+
* into a loop preheader -- is `ir/hoist.ts`'s, and it guards on both cell
|
|
61
|
+
* writes and `mutatesArrayStorage`.
|
|
62
|
+
*/
|
|
63
|
+
/**
|
|
64
|
+
* Whether rendering `value` here would read `declaration` -- directly, or
|
|
65
|
+
* through anything it was computed from.
|
|
66
|
+
*
|
|
67
|
+
* The question every emitter above has to ask before it writes to that cell, or
|
|
68
|
+
* moves the render past something that does. Asking only whether the value IS a
|
|
69
|
+
* read of the cell is the narrower question, and it is the one that let
|
|
70
|
+
* `JSON.stringify(text.length)` past.
|
|
71
|
+
*/
|
|
72
|
+
export declare const readsCell: (ctx: EmitContext, value: IrValueId, declaration: DeclarationId) => boolean;
|
|
73
|
+
/**
|
|
74
|
+
* The cell a value renders as the storage OF, rather than as a copy of, or
|
|
75
|
+
* `null` when it renders as a value of its own.
|
|
76
|
+
*
|
|
77
|
+
* A withheld `binding-read` spells the cell's own name, so what the use
|
|
78
|
+
* receives is that storage and not a copy of it. Whether that matters is the
|
|
79
|
+
* caller's question -- for a `const&` receiver it is a lifetime, for the fill
|
|
80
|
+
* it is staleness -- but which values are in that position is this one.
|
|
81
|
+
*/
|
|
82
|
+
export declare const withheldCellOf: (ctx: EmitContext, value: IrValueId) => DeclarationId | null;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a WITHHELD value still reads, for the emitters that move where it lands.
|
|
3
|
+
*
|
|
4
|
+
* `ir/deferral.ts` withholds a value that has one use, in one block, from an
|
|
5
|
+
* operation with no effects, with every operation between the two also
|
|
6
|
+
* withheld. That last condition is the whole proof: nothing between the
|
|
7
|
+
* definition and the use emits a statement, so nothing can change what the
|
|
8
|
+
* withheld expression reads before it renders.
|
|
9
|
+
*
|
|
10
|
+
* It is a proof about the emission the census SAW. An emitter that rewrites its
|
|
11
|
+
* own output -- puts a statement into that window, or renders the value
|
|
12
|
+
* somewhere the census never placed it -- invalidates it retroactively, and the
|
|
13
|
+
* census has no way to know. Three do:
|
|
14
|
+
*
|
|
15
|
+
* - `emit-json.ts`'s write-in-place fill emits `cell.clear()` and then renders
|
|
16
|
+
* the argument, so a withheld read of that cell now renders against emptied
|
|
17
|
+
* storage. `text = JSON.stringify(text.length)` served `0` for `"ee".length`
|
|
18
|
+
* -- clean C++, wrong answer, no diagnostic.
|
|
19
|
+
* - `emit-callable.ts`'s receiver argument passes a withheld cell read to a
|
|
20
|
+
* body that takes its receiver BY REFERENCE, where the callee reassigning
|
|
21
|
+
* that cell drops the last count and destroys the object the reference
|
|
22
|
+
* names.
|
|
23
|
+
* - `emit-arrays.ts`'s counted-push rewrite renders the loop bound on both
|
|
24
|
+
* sides of the `bulkAppend` that changes the array's length.
|
|
25
|
+
*
|
|
26
|
+
* One hazard, found three times, cured three different ways -- which is how the
|
|
27
|
+
* first one shipped: nothing made the author of a rewrite think about deferral
|
|
28
|
+
* at all. So the QUESTION lives here, once. The cure stays with the emitter,
|
|
29
|
+
* because the three genuinely differ: the fill declines its fast path, the
|
|
30
|
+
* receiver takes a temporary back, the rewrite declines itself. What none of
|
|
31
|
+
* them may do any more is answer the question privately.
|
|
32
|
+
*
|
|
33
|
+
* ## Why there is a second guard, elsewhere, that this one does not replace
|
|
34
|
+
*
|
|
35
|
+
* A withheld read renders as the cell's own name only because
|
|
36
|
+
* `emit-bindings.ts` decided it may: a read becomes an ALIAS of the cell rather
|
|
37
|
+
* than a copy of it exactly when the body writes that cell at most once
|
|
38
|
+
* (`bindingWriteCounts <= 1`, emit-bindings.ts:233,255), and deferral inherits
|
|
39
|
+
* that decision, since a deferred value's text is captured from the statement
|
|
40
|
+
* emit-bindings had already rendered. So "the cell will name a DIFFERENT object
|
|
41
|
+
* by the time this renders" is answered once, upstream, and no site here needs
|
|
42
|
+
* to re-ask it.
|
|
43
|
+
*
|
|
44
|
+
* What that guard cannot see is the case this file exists for: the storage the
|
|
45
|
+
* cell names being mutated IN PLACE. `clear()`, an append, a subscript store --
|
|
46
|
+
* none of them writes the cell, so the write count does not move and the alias
|
|
47
|
+
* stays sound by its own rule while what it reads changes underneath it. Two
|
|
48
|
+
* different questions, two guards, and the emitter needs both.
|
|
49
|
+
*
|
|
50
|
+
* A sweep of all 59 files under `targets/cpp/` for "emits a mutation, then
|
|
51
|
+
* renders an operand" found twelve candidates: nine are mutually exclusive
|
|
52
|
+
* branches rather than a sequence, and three are sequential and sound -- the
|
|
53
|
+
* array builder's `appendRange` mutates an array freshly allocated in that same
|
|
54
|
+
* emission, which no operand can name yet, and the two `defineValueAlias` sites
|
|
55
|
+
* (emit-carrier-members.ts:779, emit-properties.ts:906) publish the receiver
|
|
56
|
+
* after a subscript store, where mutating one slot does not change which object
|
|
57
|
+
* the cell names. Relocation in the other direction -- a read hoisted EARLIER,
|
|
58
|
+
* into a loop preheader -- is `ir/hoist.ts`'s, and it guards on both cell
|
|
59
|
+
* writes and `mutatesArrayStorage`.
|
|
60
|
+
*/
|
|
61
|
+
// The fixed-point closure that used to live here (`collectValueCellReads`) is
|
|
62
|
+
// purely a property of the operand graph, with no C++ in the answer -- moved
|
|
63
|
+
// to `ir/facts.ts`'s `bodyValueOriginsOf` (
|
|
64
|
+
// Phase 3, "the no-write-during-render rule"), computed once before this
|
|
65
|
+
// body's `EmitContext` exists and read here as `ctx.valueCellReads`, now a
|
|
66
|
+
// `ReadonlyMap` no renderer may write into.
|
|
67
|
+
/**
|
|
68
|
+
* Whether rendering `value` here would read `declaration` -- directly, or
|
|
69
|
+
* through anything it was computed from.
|
|
70
|
+
*
|
|
71
|
+
* The question every emitter above has to ask before it writes to that cell, or
|
|
72
|
+
* moves the render past something that does. Asking only whether the value IS a
|
|
73
|
+
* read of the cell is the narrower question, and it is the one that let
|
|
74
|
+
* `JSON.stringify(text.length)` past.
|
|
75
|
+
*/
|
|
76
|
+
export const readsCell = (ctx, value, declaration) => ctx.valueCellReads.get(value)?.has(declaration) === true;
|
|
77
|
+
/**
|
|
78
|
+
* The cell a value renders as the storage OF, rather than as a copy of, or
|
|
79
|
+
* `null` when it renders as a value of its own.
|
|
80
|
+
*
|
|
81
|
+
* A withheld `binding-read` spells the cell's own name, so what the use
|
|
82
|
+
* receives is that storage and not a copy of it. Whether that matters is the
|
|
83
|
+
* caller's question -- for a `const&` receiver it is a lifetime, for the fill
|
|
84
|
+
* it is staleness -- but which values are in that position is this one.
|
|
85
|
+
*/
|
|
86
|
+
export const withheldCellOf = (ctx, value) => ctx.deferrable.has(value) ? (ctx.bindingReadDeclarations.get(value) ?? null) : null;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { IrBody, IrOperand } from '../../ir/model.js';
|
|
2
|
+
import type { IrValueId } from '../../identity/ids.js';
|
|
3
|
+
import type { EmitContext } from './emit-context.js';
|
|
4
|
+
import type { CallableAbi } from '../../representation/model.js';
|
|
5
|
+
/**
|
|
6
|
+
* The receiver every method-value read in one body has to keep, settled
|
|
7
|
+
* before the body renders a line.
|
|
8
|
+
*
|
|
9
|
+
* A method value carries its body's physical convention, receiver first, while
|
|
10
|
+
* the language's view of it declares none; the call that consumes it is handed
|
|
11
|
+
* the object the READ went through. Which reads publish such a value is a
|
|
12
|
+
* question about the projected class layout, not about any text, so it is
|
|
13
|
+
* asked here rather than recorded as a side effect of whichever resolver
|
|
14
|
+
* happened to spell the value -- there were four such sites, two of which
|
|
15
|
+
* (`settleDeadCalleeSideEffects` and `computedClassPrototypeMethodText`) only
|
|
16
|
+
* ran on some renders, which is exactly how a fact goes missing.
|
|
17
|
+
*
|
|
18
|
+
* This composes; it decides nothing. Both claims live with the resolver that
|
|
19
|
+
* owns the carrier, and the map is keyed by the read's own SSA result, so a
|
|
20
|
+
* detached method read reaches its call through a different value and cannot
|
|
21
|
+
* acquire a receiver from it.
|
|
22
|
+
*/
|
|
23
|
+
export declare const directCallReceiversOf: (ctx: EmitContext, body: IrBody) => ReadonlyMap<IrValueId, IrOperand>;
|
|
24
|
+
/**
|
|
25
|
+
* Every method read in one body that has to be DISPATCHED through the object,
|
|
26
|
+
* settled before the body renders a line.
|
|
27
|
+
*
|
|
28
|
+
* The same walk as above over the same claims' home: which reads are virtual
|
|
29
|
+
* is a question about the projected class family and the dispatch members this
|
|
30
|
+
* unit emitted, both fixed long before a line is printed. `virtualCalleesUsed`
|
|
31
|
+
* stays where it is -- it is a proof buffer, filled as each call consumes an
|
|
32
|
+
* entry and checked once the body has finished, which is what a buffer is.
|
|
33
|
+
*/
|
|
34
|
+
export declare const virtualCalleesOf: (ctx: EmitContext, body: IrBody) => ReadonlyMap<IrValueId, {
|
|
35
|
+
readonly member: string;
|
|
36
|
+
readonly abi: CallableAbi;
|
|
37
|
+
}>;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { allOperationsOf } from '../../ir/model.js';
|
|
2
|
+
import { operandsOfIrOperation } from '../../ir/queries.js';
|
|
3
|
+
import { classMethodValueReceiverClaim, virtualCalleeClaim } from './class-properties/emit-class-properties.js';
|
|
4
|
+
import { unionClassMethodValueReceiverClaim } from './emit-union-properties.js';
|
|
5
|
+
/**
|
|
6
|
+
* The receiver every method-value read in one body has to keep, settled
|
|
7
|
+
* before the body renders a line.
|
|
8
|
+
*
|
|
9
|
+
* A method value carries its body's physical convention, receiver first, while
|
|
10
|
+
* the language's view of it declares none; the call that consumes it is handed
|
|
11
|
+
* the object the READ went through. Which reads publish such a value is a
|
|
12
|
+
* question about the projected class layout, not about any text, so it is
|
|
13
|
+
* asked here rather than recorded as a side effect of whichever resolver
|
|
14
|
+
* happened to spell the value -- there were four such sites, two of which
|
|
15
|
+
* (`settleDeadCalleeSideEffects` and `computedClassPrototypeMethodText`) only
|
|
16
|
+
* ran on some renders, which is exactly how a fact goes missing.
|
|
17
|
+
*
|
|
18
|
+
* This composes; it decides nothing. Both claims live with the resolver that
|
|
19
|
+
* owns the carrier, and the map is keyed by the read's own SSA result, so a
|
|
20
|
+
* detached method read reaches its call through a different value and cannot
|
|
21
|
+
* acquire a receiver from it.
|
|
22
|
+
*/
|
|
23
|
+
export const directCallReceiversOf = (ctx, body) => {
|
|
24
|
+
const receivers = new Map();
|
|
25
|
+
for (const block of body.blocks.values()) {
|
|
26
|
+
for (const operation of allOperationsOf(block)) {
|
|
27
|
+
if (operation.kind !== 'get')
|
|
28
|
+
continue;
|
|
29
|
+
const receiver = classMethodValueReceiverClaim(ctx, operation) ?? unionClassMethodValueReceiverClaim(ctx, operation);
|
|
30
|
+
if (receiver !== null)
|
|
31
|
+
receivers.set(operation.result.id, receiver);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return receivers;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Every method read in one body that has to be DISPATCHED through the object,
|
|
38
|
+
* settled before the body renders a line.
|
|
39
|
+
*
|
|
40
|
+
* The same walk as above over the same claims' home: which reads are virtual
|
|
41
|
+
* is a question about the projected class family and the dispatch members this
|
|
42
|
+
* unit emitted, both fixed long before a line is printed. `virtualCalleesUsed`
|
|
43
|
+
* stays where it is -- it is a proof buffer, filled as each call consumes an
|
|
44
|
+
* entry and checked once the body has finished, which is what a buffer is.
|
|
45
|
+
*/
|
|
46
|
+
export const virtualCalleesOf = (ctx, body) => {
|
|
47
|
+
const callees = new Map();
|
|
48
|
+
const immediate = new Set();
|
|
49
|
+
const escaped = new Set();
|
|
50
|
+
for (const block of body.blocks.values()) {
|
|
51
|
+
for (const operation of allOperationsOf(block)) {
|
|
52
|
+
if (operation.kind === 'call')
|
|
53
|
+
immediate.add(operation.callee.value);
|
|
54
|
+
for (const operand of operandsOfIrOperation(operation)) {
|
|
55
|
+
if (operation.kind === 'call' &&
|
|
56
|
+
operand.value === operation.callee.value &&
|
|
57
|
+
operation.receiver?.value !== operand.value &&
|
|
58
|
+
!operation.arguments.some((argument) => argument.value === operand.value))
|
|
59
|
+
continue;
|
|
60
|
+
escaped.add(operand.value);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
for (const block of body.blocks.values()) {
|
|
65
|
+
for (const operation of allOperationsOf(block)) {
|
|
66
|
+
if (operation.kind !== 'get')
|
|
67
|
+
continue;
|
|
68
|
+
// A method returned, stored, or inspected is selected at property-read
|
|
69
|
+
// time. Only a value consumed exclusively as an immediate callee may
|
|
70
|
+
// defer that selection to the receiver's virtual dispatch member.
|
|
71
|
+
if (!immediate.has(operation.result.id) || escaped.has(operation.result.id))
|
|
72
|
+
continue;
|
|
73
|
+
const claim = virtualCalleeClaim(ctx, operation);
|
|
74
|
+
if (claim !== null)
|
|
75
|
+
callees.set(operation.result.id, claim);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return callees;
|
|
79
|
+
};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { DeclarationId, FunctionId, RegionId, SemanticResultId } from '../../identity/ids.js';
|
|
2
|
+
import { type Representation } from '../../representation/model.js';
|
|
3
|
+
/**
|
|
4
|
+
* The sealed emission boundary (architecture.md, "Definition of done"). Every
|
|
5
|
+
* generated C++ section crosses this module exactly once, carrying enough
|
|
6
|
+
* authority for the fail-closed check in `render` to run without re-deriving
|
|
7
|
+
* anything from the rendered text.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Whatever authored one section: a callable or class-lifecycle execution
|
|
11
|
+
* region for a function body, or the declaration a struct/global
|
|
12
|
+
* materializes. Always a checker-stable identity from `identity/ids.ts`,
|
|
13
|
+
* never a name, path, or generated spelling.
|
|
14
|
+
*/
|
|
15
|
+
export type CppSectionOwner = FunctionId | RegionId | DeclarationId;
|
|
16
|
+
/**
|
|
17
|
+
* The semantic authority one section carries. `empty` is admitted only for a
|
|
18
|
+
* legacy string emitter mid-migration to structured facts (architecture.md);
|
|
19
|
+
* every other producer publishes the representation it materialized, who
|
|
20
|
+
* authored it, and the exact published semantic result the section answers.
|
|
21
|
+
*/
|
|
22
|
+
export type CppFacts = {
|
|
23
|
+
readonly kind: 'materialized';
|
|
24
|
+
readonly representation: Representation;
|
|
25
|
+
readonly owner: CppSectionOwner;
|
|
26
|
+
/**
|
|
27
|
+
* `null` only for a section that is synthesized structure with no
|
|
28
|
+
* semantic operation behind it -- the implicit close of a body that ends
|
|
29
|
+
* without a `return`. Naming some nearby result instead would attribute
|
|
30
|
+
* text to an operation that did not author it.
|
|
31
|
+
*/
|
|
32
|
+
readonly lineage: SemanticResultId | null;
|
|
33
|
+
} | {
|
|
34
|
+
readonly kind: 'empty';
|
|
35
|
+
};
|
|
36
|
+
/** The one legitimate `empty` value. Reach for this only for a legacy producer that has no structured facts yet. */
|
|
37
|
+
export declare const emptyCppFacts: CppFacts;
|
|
38
|
+
/** One generated section: its literal C++ text plus the facts that authorize it. */
|
|
39
|
+
export interface CppArtifact {
|
|
40
|
+
readonly text: string;
|
|
41
|
+
readonly facts: CppFacts;
|
|
42
|
+
}
|
|
43
|
+
/** A sealed, ordered collection of artifacts. Order is significant: it is C++ declaration order. */
|
|
44
|
+
export interface CppDocument {
|
|
45
|
+
readonly artifacts: readonly CppArtifact[];
|
|
46
|
+
}
|
|
47
|
+
export interface CppDocumentBuilder {
|
|
48
|
+
readonly append: (artifact: CppArtifact) => void;
|
|
49
|
+
readonly seal: () => CppDocument;
|
|
50
|
+
}
|
|
51
|
+
export declare const createCppDocumentBuilder: () => CppDocumentBuilder;
|
|
52
|
+
declare const renderedCppSourceBrand: unique symbol;
|
|
53
|
+
/**
|
|
54
|
+
* Terminal output. Rendering is the last step in the pipeline: this string may
|
|
55
|
+
* be written to disk or run through a formatter, but nothing downstream may
|
|
56
|
+
* parse, regex, or otherwise inspect it to recover a type, scope, ownership,
|
|
57
|
+
* or target decision -- every such decision already lives in the sealed plan
|
|
58
|
+
* and the facts that produced this text. No parse/inspect function for this
|
|
59
|
+
* type exists in this module, or anywhere else in `targets/cpp/`, on purpose.
|
|
60
|
+
*/
|
|
61
|
+
export type RenderedCppSource = string & {
|
|
62
|
+
readonly [renderedCppSourceBrand]: 'RenderedCppSource';
|
|
63
|
+
};
|
|
64
|
+
/** Fails closed before any artifact's text leaves the compiler if its facts are not safe to materialize. */
|
|
65
|
+
export declare const render: (document: CppDocument) => RenderedCppSource;
|
|
66
|
+
/**
|
|
67
|
+
* One marker line of a rendered document replaced by text known only after
|
|
68
|
+
* rendering -- the union alias block (`translation-unit.ts`), whose contents
|
|
69
|
+
* are the spellings the rendering itself recorded. The brand survives: the
|
|
70
|
+
* facts `render` checked are unchanged, and the spliced text is declarations
|
|
71
|
+
* that carry none.
|
|
72
|
+
*/
|
|
73
|
+
export declare const spliceRendered: (source: RenderedCppSource, marker: string, replacement: string) => RenderedCppSource;
|
|
74
|
+
export {};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { dynamicReasons } from '../../representation/model.js';
|
|
2
|
+
/** The one legitimate `empty` value. Reach for this only for a legacy producer that has no structured facts yet. */
|
|
3
|
+
export const emptyCppFacts = { kind: 'empty' };
|
|
4
|
+
export const createCppDocumentBuilder = () => {
|
|
5
|
+
const artifacts = [];
|
|
6
|
+
let sealed = false;
|
|
7
|
+
const append = (artifact) => {
|
|
8
|
+
if (sealed)
|
|
9
|
+
throw new Error('cpp document is sealed; cannot append an artifact after freeze');
|
|
10
|
+
artifacts.push(artifact);
|
|
11
|
+
};
|
|
12
|
+
const seal = () => {
|
|
13
|
+
sealed = true;
|
|
14
|
+
return Object.freeze({ artifacts: Object.freeze([...artifacts]) });
|
|
15
|
+
};
|
|
16
|
+
return { append, seal };
|
|
17
|
+
};
|
|
18
|
+
const abiIsRenderable = (abi) => abi.parameters.every((parameter) => representationIsRenderable(parameter.value)) &&
|
|
19
|
+
representationIsRenderable(abi.result) &&
|
|
20
|
+
(abi.receiver === null || representationIsRenderable(abi.receiver));
|
|
21
|
+
/**
|
|
22
|
+
* `unresolved` is lattice bottom, not an answer, and a `dynamic` carrier is
|
|
23
|
+
* legitimate only for one of the four declared reasons in
|
|
24
|
+
* `representation/model.ts`. Both are checked recursively: a record field, an
|
|
25
|
+
* array element, an ABI parameter, or a union arm can bury either one under
|
|
26
|
+
* an otherwise ordinary carrier, and a shallow `kind` check would miss it.
|
|
27
|
+
*/
|
|
28
|
+
const representationIsRenderable = (representation) => {
|
|
29
|
+
switch (representation.kind) {
|
|
30
|
+
case 'unresolved':
|
|
31
|
+
return false;
|
|
32
|
+
case 'dynamic':
|
|
33
|
+
return dynamicReasons.includes(representation.reason);
|
|
34
|
+
case 'void':
|
|
35
|
+
case 'string':
|
|
36
|
+
case 'symbol':
|
|
37
|
+
case 'null':
|
|
38
|
+
case 'undefined':
|
|
39
|
+
case 'scalar':
|
|
40
|
+
case 'class-ref':
|
|
41
|
+
case 'native-handle':
|
|
42
|
+
case 'native-record-ref':
|
|
43
|
+
case 'typed-array':
|
|
44
|
+
case 'array-buffer':
|
|
45
|
+
case 'shared-array-buffer':
|
|
46
|
+
case 'data-view':
|
|
47
|
+
// A function identity is one refcounted handle with no nested carrier.
|
|
48
|
+
case 'callable-identity':
|
|
49
|
+
return true;
|
|
50
|
+
case 'record':
|
|
51
|
+
return representation.fields.every((field) => representationIsRenderable(field.value));
|
|
52
|
+
case 'record-with-index':
|
|
53
|
+
return (representation.fields.every((field) => representationIsRenderable(field.value)) &&
|
|
54
|
+
representation.indexes.every((index) => representationIsRenderable(index.value)));
|
|
55
|
+
case 'proxy-object':
|
|
56
|
+
return representationIsRenderable(representation.target) && representationIsRenderable(representation.handler);
|
|
57
|
+
case 'borrowed-ref':
|
|
58
|
+
return representationIsRenderable(representation.referent);
|
|
59
|
+
case 'array-object':
|
|
60
|
+
case 'dense-buffer':
|
|
61
|
+
case 'native-sequence':
|
|
62
|
+
case 'iterator':
|
|
63
|
+
return representationIsRenderable(representation.element);
|
|
64
|
+
case 'promise':
|
|
65
|
+
return representationIsRenderable(representation.value);
|
|
66
|
+
case 'keyed-collection':
|
|
67
|
+
return representationIsRenderable(representation.key) && (!representation.value || representationIsRenderable(representation.value));
|
|
68
|
+
case 'dictionary':
|
|
69
|
+
return representationIsRenderable(representation.value);
|
|
70
|
+
case 'function':
|
|
71
|
+
case 'function-family':
|
|
72
|
+
case 'constructor-family':
|
|
73
|
+
case 'constructor-value-dispatch':
|
|
74
|
+
case 'function-value-family':
|
|
75
|
+
case 'function-value-dispatch':
|
|
76
|
+
return abiIsRenderable(representation.abi);
|
|
77
|
+
case 'generic-function-set':
|
|
78
|
+
return true;
|
|
79
|
+
case 'function-and-constructor':
|
|
80
|
+
return abiIsRenderable(representation.call) && abiIsRenderable(representation.construct);
|
|
81
|
+
case 'optional':
|
|
82
|
+
return representationIsRenderable(representation.payload);
|
|
83
|
+
case 'tagged-union':
|
|
84
|
+
return representation.arms.every((arm) => representationIsRenderable(arm.value));
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
/** Fails closed before any artifact's text leaves the compiler if its facts are not safe to materialize. */
|
|
88
|
+
export const render = (document) => {
|
|
89
|
+
for (const artifact of document.artifacts) {
|
|
90
|
+
if (artifact.facts.kind === 'empty')
|
|
91
|
+
continue;
|
|
92
|
+
if (!representationIsRenderable(artifact.facts.representation)) {
|
|
93
|
+
throw new Error(`cpp artifact for owner ${artifact.facts.owner} (result ${artifact.facts.lineage}) carries an unresolved or ` +
|
|
94
|
+
`undeclared-dynamic representation and cannot render`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return document.artifacts.map((artifact) => artifact.text).join('\n');
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* One marker line of a rendered document replaced by text known only after
|
|
101
|
+
* rendering -- the union alias block (`translation-unit.ts`), whose contents
|
|
102
|
+
* are the spellings the rendering itself recorded. The brand survives: the
|
|
103
|
+
* facts `render` checked are unchanged, and the spliced text is declarations
|
|
104
|
+
* that carry none.
|
|
105
|
+
*/
|
|
106
|
+
export const spliceRendered = (source, marker, replacement) => source.replace(marker, replacement);
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { AllocateRecordOperation, AllocateRegExpOperation, AllocateTemplateObjectOperation, SpreadCopyOperation } from '../../ir/model.js';
|
|
2
|
+
import { type EmitContext } from './emit-context.js';
|
|
3
|
+
export declare const emitAllocateRecord: (ctx: EmitContext, lines: string[], operation: AllocateRecordOperation) => void;
|
|
4
|
+
/**
|
|
5
|
+
* `` tag`a${b}c` ``'s first argument: the template object, built once per site.
|
|
6
|
+
*
|
|
7
|
+
* The per-site `static` IS the semantics. ECMA-262 13.2.8.3 caches
|
|
8
|
+
* `GetTemplateObject` per Parse Node, so the tag must be handed the same object
|
|
9
|
+
* on every evaluation -- that is what makes a `WeakMap`-keyed tag cache (the
|
|
10
|
+
* dominant real use of tagged templates) work at all. A fresh object per
|
|
11
|
+
* evaluation would compile, run, and be quietly wrong.
|
|
12
|
+
*
|
|
13
|
+
* Only the native Array exotic carrier is admitted. A record-with-index can
|
|
14
|
+
* resemble the checker's structural declaration, but it cannot implement
|
|
15
|
+
* Array index/length descriptors, frozen integrity, or the exact `raw` own
|
|
16
|
+
* property. Treating that resemblance as a carrier was therefore a silent
|
|
17
|
+
* semantic downgrade, not another valid lowering.
|
|
18
|
+
*/
|
|
19
|
+
export declare const emitAllocateTemplateObject: (ctx: EmitContext, lines: string[], operation: AllocateTemplateObjectOperation) => void;
|
|
20
|
+
export declare const emitAllocateRegExp: (ctx: EmitContext, lines: string[], operation: AllocateRegExpOperation) => void;
|
|
21
|
+
export { emitToNumericCoercion } from './emit-tonumber.js';
|
|
22
|
+
/**
|
|
23
|
+
* Object spread's `CopyDataProperties` for a source whose own-property set is
|
|
24
|
+
* not known until this runs -- `SpreadCopyOperation` (ir/model.ts), lowered
|
|
25
|
+
* from `producers/protocol.ts`'s `protocol: 'spread'` operation by
|
|
26
|
+
* `ir/lower-protocol.ts`. Lives here, not in a file of its own: it is one
|
|
27
|
+
* more way an object's own storage gets written -- the same subject this
|
|
28
|
+
* file's `emitAllocateDictionary` (above) already owns for a literal's own
|
|
29
|
+
* keys -- and `targets/cpp` sits at the architecture gate's per-directory
|
|
30
|
+
* file-count cap, so a new top-level file for one function is not free here.
|
|
31
|
+
*
|
|
32
|
+
* This backend renders two deliberately narrow receiver/source pairs:
|
|
33
|
+
* `dynamic` into `dynamic`, with the full CopyDataProperties key,
|
|
34
|
+
* descriptor, Get, and CreateDataProperty sequence; and a plain
|
|
35
|
+
* `dictionary` receiver with the statically selected structural source
|
|
36
|
+
* carriers below. A dynamic source does not certify the dictionary path: it
|
|
37
|
+
* may contain symbol keys that the dictionary's string-key insertion loop
|
|
38
|
+
* cannot preserve.
|
|
39
|
+
*
|
|
40
|
+
* The SOURCE may be a plain `dictionary`, a `tagged-union` whose arms are
|
|
41
|
+
* each a `dictionary` or a `record`, or an `optional` wrapping either of
|
|
42
|
+
* those -- `HeaderRecord`'s own three arms (`Record<'Content-Type',
|
|
43
|
+
* BaseMime> | Record<ResponseHeader, string | string[]> | Record<string,
|
|
44
|
+
* string | string[]>`) are exactly one `record`, one `record` and one
|
|
45
|
+
* `dictionary`, and `setDefaultContentType`'s `headers?: HeaderRecord`
|
|
46
|
+
* parameter wraps that same union `optional`. A `dictionary` arm's copy is a
|
|
47
|
+
* runtime walk (`gea::Dictionary::copyInto`, gea_runtime.h); a `record` arm's
|
|
48
|
+
* copy is a static per-FIELD unroll, since its keys are known at compile
|
|
49
|
+
* time; an `optional` source is `CopyDataProperties(obj, source)` itself --
|
|
50
|
+
* spreading `null`/`undefined` is a no-op per that abstract operation, so an
|
|
51
|
+
* absent optional renders no copy at all, and a present one recurses into
|
|
52
|
+
* whichever of the two shapes its payload is. Any other kind -- `record-
|
|
53
|
+
* with-index`, `native-record-ref`, `class-ref`, ... -- refuses by name:
|
|
54
|
+
* unrolling those needs a field list this file does not have a uniform way
|
|
55
|
+
* to read yet, and a record arm with an accessor member refuses for the same
|
|
56
|
+
* reason `producers/shared.ts`'s `staticSpreadMembersOf` already refuses one
|
|
57
|
+
* on the static-copy path -- an accessor must be CALLED, which is not
|
|
58
|
+
* modelled here.
|
|
59
|
+
*/
|
|
60
|
+
export declare const emitSpreadCopy: (ctx: EmitContext, lines: string[], operation: SpreadCopyOperation) => void;
|