@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,69 @@
|
|
|
1
|
+
import { nativeSumPlan } from '../../conversion/native-sum.js';
|
|
2
|
+
export { nativeSumWidenable } from '../../conversion/native-sum.js';
|
|
3
|
+
import { cppTypeOf, cppUndefinedValue } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* The alias the widening lambda binds its TARGET spelling to. A nine-arm
|
|
6
|
+
* typed-array union is ~400 bytes to spell; `render` wrote it at every
|
|
7
|
+
* `wrap` of a nine-arm `dispatch`, and the three.js app's `BufferAttribute.array`
|
|
8
|
+
* store emitted one 773KB line of nothing but that spelling. Bound once in
|
|
9
|
+
* the lambda body, every wrap names the alias instead. Only the top-level
|
|
10
|
+
* target is aliased: an inner `class-upcast`/`wrap` target is a single arm's
|
|
11
|
+
* type, short, and spelled once per arm either way.
|
|
12
|
+
*/
|
|
13
|
+
const sumTargetAliasName = 'GeaSumTarget';
|
|
14
|
+
export const renderNativeSumPlan = (step, text, spell, dependent = false) => {
|
|
15
|
+
const template = dependent ? 'template ' : '';
|
|
16
|
+
switch (step.kind) {
|
|
17
|
+
case 'identity':
|
|
18
|
+
return `std::move(${text})`;
|
|
19
|
+
case 'class-upcast':
|
|
20
|
+
return `${spell(step.target)}(${text})`;
|
|
21
|
+
case 'null-reference':
|
|
22
|
+
return `${spell(step.target)}{}`;
|
|
23
|
+
case 'empty':
|
|
24
|
+
return `${spell(step.target)}{}`;
|
|
25
|
+
case 'nullable-reference':
|
|
26
|
+
return `(${text} ? ${renderNativeSumPlan(step.present, text, spell, dependent)} : ${renderNativeSumPlan(step.absent, 'nullptr', spell, dependent)})`;
|
|
27
|
+
case 'wrap': {
|
|
28
|
+
const payload = renderNativeSumPlan(step.payload, text, spell, dependent);
|
|
29
|
+
return step.index === null ? `${spell(step.target)}{${payload}}` : `${spell(step.target)}::ofArm<${step.index}>(${payload})`;
|
|
30
|
+
}
|
|
31
|
+
case 'optional': {
|
|
32
|
+
const present = renderNativeSumPlan(step.present, `(*(${text}))`, spell, dependent);
|
|
33
|
+
const absent = renderNativeSumPlan(step.absent, step.absence === 'null' ? 'nullptr' : cppUndefinedValue, spell, dependent);
|
|
34
|
+
return `((${text}).has_value() ? ${present} : ${absent})`;
|
|
35
|
+
}
|
|
36
|
+
case 'dispatch': {
|
|
37
|
+
const alternatives = step.arms.map((arm, index) => renderNativeSumPlan(arm, `(${text}).${template}get<${index}>()`, spell, dependent));
|
|
38
|
+
let result = alternatives[alternatives.length - 1];
|
|
39
|
+
for (let index = alternatives.length - 2; index >= 0; index--) {
|
|
40
|
+
result = `((${text}).${template}is<${index}>() ? ${alternatives[index]} : ${result})`;
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Own the source while dispatching: lvalues copy once, temporaries move into
|
|
48
|
+
* the parameter, and the selected payload moves into its destination. Borrowing
|
|
49
|
+
* a temporary through const& would force an otherwise unnecessary deep copy.
|
|
50
|
+
*/
|
|
51
|
+
export const widenedNativeSumText = (source, target, text) => {
|
|
52
|
+
const conversion = nativeSumPlan(source, target);
|
|
53
|
+
if (!conversion)
|
|
54
|
+
return null;
|
|
55
|
+
const targetText = cppTypeOf(target);
|
|
56
|
+
// A bare wrap of the value as it is -- one arm of the sum, no dispatch, no
|
|
57
|
+
// optional to unpack -- needs no lambda: `Target::ofArm<k>(text)` copies an
|
|
58
|
+
// lvalue once and moves a temporary, exactly what the lambda's by-value
|
|
59
|
+
// parameter did, and spells the target ONCE instead of twice (return type
|
|
60
|
+
// plus alias). This is the shape a union's arm-by-arm dispatch reaches for
|
|
61
|
+
// at every arm (`emit-bindings.ts`'s `structuralUnionLoadText`), and it was
|
|
62
|
+
// 882 lambdas on one three.js line.
|
|
63
|
+
if (conversion.kind === 'wrap' && conversion.payload.kind === 'identity') {
|
|
64
|
+
return conversion.index === null ? `${targetText}{${text}}` : `${targetText}::ofArm<${conversion.index}>(${text})`;
|
|
65
|
+
}
|
|
66
|
+
const spell = (step) => (cppTypeOf(step) === targetText ? sumTargetAliasName : cppTypeOf(step));
|
|
67
|
+
return (`([](${cppTypeOf(source)} __gea_sum_value) -> ${targetText} { using ${sumTargetAliasName} = ${targetText}; ` +
|
|
68
|
+
`return ${renderNativeSumPlan(conversion, '__gea_sum_value', spell)}; })(${text})`);
|
|
69
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { IrOperand, IrResult } from '../../ir/model.js';
|
|
2
|
+
import { type Representation } from '../../representation/model.js';
|
|
3
|
+
import { type EmitContext } from './emit-context.js';
|
|
4
|
+
/**
|
|
5
|
+
* ToNumber of a value, spelled from the carrier it actually arrived in --
|
|
6
|
+
* `emit-tostring.ts`'s sibling for ECMA-262 7.1.4.
|
|
7
|
+
*
|
|
8
|
+
* Kept as its own table rather than folded into the ToString one because the
|
|
9
|
+
* two abstract operations disagree on exactly the cases that matter here:
|
|
10
|
+
* `String(null)` is `"null"` and `Number(null)` is `0`, `String(undefined)` is
|
|
11
|
+
* `"undefined"` and `Number(undefined)` is `NaN`. One table answering both
|
|
12
|
+
* would have to carry that split anyway, and a single shared "absence" answer
|
|
13
|
+
* is precisely the bug this file was written to remove.
|
|
14
|
+
*
|
|
15
|
+
* v1's own conversion suite lives in the `value_*` family, which is v1's boxed
|
|
16
|
+
* runtime -- `gea::runtime::coerce::to_number` dispatches on a
|
|
17
|
+
* `gea_cpp_value`'s runtime tag. The *algorithm* is ported here re-typed over
|
|
18
|
+
* v2's native carriers: the tag switch becomes a compile-time dispatch on the
|
|
19
|
+
* representation, and the per-case answers (0 for null, NaN for undefined,
|
|
20
|
+
* 1/0 for booleans, StringToNumber for strings) are v1's, unchanged. The
|
|
21
|
+
* string case itself is already in `runtime/gea_runtime.h` as
|
|
22
|
+
* `gea::host::detail::toNumber(const std::string&)`, ported verbatim from v1
|
|
23
|
+
* there with its own comments.
|
|
24
|
+
*
|
|
25
|
+
* `null` is returned for a carrier this has no conversion for; the caller
|
|
26
|
+
* names the refusal.
|
|
27
|
+
*/
|
|
28
|
+
export declare const toNumberText: (text: string, carrier: Representation) => string | null;
|
|
29
|
+
/** Why a carrier has no ToNumber, for a refusal message. */
|
|
30
|
+
export declare const toNumberRefusal: (outer: Representation) => string;
|
|
31
|
+
/**
|
|
32
|
+
* `emit.ts`'s `emitCompute` entry point for the `unary`/`'ToNumeric'` shape
|
|
33
|
+
* `ir/lower.ts` mints -- kept here, not inline in that file's own `unary`
|
|
34
|
+
* dispatch, purely to leave `emit.ts` its documentation budget under the
|
|
35
|
+
* architecture gate's line cap; the dispatch itself is one `operator ===
|
|
36
|
+
* 'ToNumeric'` check there, unchanged.
|
|
37
|
+
*/
|
|
38
|
+
export declare const emitToNumericCoercion: (ctx: EmitContext, lines: string[], operand: IrOperand, result: IrResult) => void;
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { representationKey } from '../../representation/model.js';
|
|
2
|
+
import { createCppEmitBlockedError, defineValue, operandText } from './emit-context.js';
|
|
3
|
+
/**
|
|
4
|
+
* ToNumber of a value, spelled from the carrier it actually arrived in --
|
|
5
|
+
* `emit-tostring.ts`'s sibling for ECMA-262 7.1.4.
|
|
6
|
+
*
|
|
7
|
+
* Kept as its own table rather than folded into the ToString one because the
|
|
8
|
+
* two abstract operations disagree on exactly the cases that matter here:
|
|
9
|
+
* `String(null)` is `"null"` and `Number(null)` is `0`, `String(undefined)` is
|
|
10
|
+
* `"undefined"` and `Number(undefined)` is `NaN`. One table answering both
|
|
11
|
+
* would have to carry that split anyway, and a single shared "absence" answer
|
|
12
|
+
* is precisely the bug this file was written to remove.
|
|
13
|
+
*
|
|
14
|
+
* v1's own conversion suite lives in the `value_*` family, which is v1's boxed
|
|
15
|
+
* runtime -- `gea::runtime::coerce::to_number` dispatches on a
|
|
16
|
+
* `gea_cpp_value`'s runtime tag. The *algorithm* is ported here re-typed over
|
|
17
|
+
* v2's native carriers: the tag switch becomes a compile-time dispatch on the
|
|
18
|
+
* representation, and the per-case answers (0 for null, NaN for undefined,
|
|
19
|
+
* 1/0 for booleans, StringToNumber for strings) are v1's, unchanged. The
|
|
20
|
+
* string case itself is already in `runtime/gea_runtime.h` as
|
|
21
|
+
* `gea::host::detail::toNumber(const std::string&)`, ported verbatim from v1
|
|
22
|
+
* there with its own comments.
|
|
23
|
+
*
|
|
24
|
+
* `null` is returned for a carrier this has no conversion for; the caller
|
|
25
|
+
* names the refusal.
|
|
26
|
+
*/
|
|
27
|
+
export const toNumberText = (text, carrier) => {
|
|
28
|
+
// Wrapped in `std::string(...)` even when `text` is already one: a STRING
|
|
29
|
+
// CONSTANT's text is a bare C++ literal (`"10"`, type `const char*`), and
|
|
30
|
+
// `toNumber` is overloaded on `bool` as well as `const std::string&` --
|
|
31
|
+
// `const char*` -> `bool` is a standard (pointer-to-bool) conversion, which
|
|
32
|
+
// overload resolution ranks ABOVE the user-defined `std::string` converting
|
|
33
|
+
// constructor, so an unwrapped literal silently calls `toNumber(bool)` and
|
|
34
|
+
// reads any non-null string as `1`. Reproduced with `"10" < 5`, which
|
|
35
|
+
// returned `true` (`toNumber(true) == 1 < 5`) instead of the correct
|
|
36
|
+
// `false` (`toNumber("10") == 10 < 5`) before this wrap.
|
|
37
|
+
if (carrier.kind === 'string')
|
|
38
|
+
return `gea::host::detail::toNumber(std::string(${text}))`;
|
|
39
|
+
if (carrier.kind === 'null')
|
|
40
|
+
return 'gea::host::detail::toNumberNull()';
|
|
41
|
+
if (carrier.kind === 'undefined')
|
|
42
|
+
return 'gea::host::detail::toNumberUndefined()';
|
|
43
|
+
// A dynamic operand has no one static domain. Its ToNumber is the runtime's
|
|
44
|
+
// complete dynamic operation -- including ToPrimitive for objects and the
|
|
45
|
+
// language's Symbol/BigInt errors -- rather than a tag assertion or the
|
|
46
|
+
// narrower postfix ToNumeric lowering below.
|
|
47
|
+
if (carrier.kind === 'dynamic')
|
|
48
|
+
return dynamicToNumberText(text);
|
|
49
|
+
if (carrier.kind === 'scalar') {
|
|
50
|
+
if (carrier.domain === 'boolean')
|
|
51
|
+
return `gea::host::detail::toNumber(static_cast<bool>(${text}))`;
|
|
52
|
+
// ToNumber of a BigInt is a TypeError in the language, and the separate
|
|
53
|
+
// `ToNumeric` path that does convert one needs arbitrary-precision digits
|
|
54
|
+
// this backend has not got. Neither is guessed at.
|
|
55
|
+
if (carrier.domain === 'bigint')
|
|
56
|
+
return null;
|
|
57
|
+
// Already a number: ECMAScript's ToNumber of a Number is the identity, so
|
|
58
|
+
// only the widening every numeric domain does to reach `double` is left.
|
|
59
|
+
return `static_cast<double>(${text})`;
|
|
60
|
+
}
|
|
61
|
+
// The optional's `absence` tag is the whole point. `Number(null)` is `0` and
|
|
62
|
+
// `Number(undefined)` is `NaN`, and `Representation`'s `optional` variant
|
|
63
|
+
// states which of the two it carries -- so an absent `optional(string,null)`
|
|
64
|
+
// is `0` and an absent `optional(string,undefined)` is `NaN`, each exactly
|
|
65
|
+
// once. `text` is an SSA name (`vN`), so reading it twice in one conditional
|
|
66
|
+
// has no effect to duplicate.
|
|
67
|
+
if (carrier.kind === 'optional') {
|
|
68
|
+
const present = toNumberText(`(*${text})`, carrier.payload);
|
|
69
|
+
if (present === null)
|
|
70
|
+
return null;
|
|
71
|
+
const absent = carrier.absence === 'null' ? 'gea::host::detail::toNumberNull()' : 'gea::host::detail::toNumberUndefined()';
|
|
72
|
+
return `(${text}.has_value() ? static_cast<double>(${present}) : static_cast<double>(${absent}))`;
|
|
73
|
+
}
|
|
74
|
+
// A tagged union is a finite set of statically known arms plus a runtime
|
|
75
|
+
// discriminant, so ToNumber is that discriminant selecting one arm's own
|
|
76
|
+
// conversion -- the same shape `emit-tostring.ts` renders, over `double`
|
|
77
|
+
// instead of `std::string`. The last arm is the `else`: the discriminant is
|
|
78
|
+
// always one of `0..arity-1`.
|
|
79
|
+
if (carrier.kind === 'tagged-union') {
|
|
80
|
+
const arms = [];
|
|
81
|
+
for (const [index, arm] of carrier.arms.entries()) {
|
|
82
|
+
const converted = toNumberText(`${text}.get<${index}>()`, arm.value);
|
|
83
|
+
if (converted === null)
|
|
84
|
+
return null;
|
|
85
|
+
arms.push(`static_cast<double>(${converted})`);
|
|
86
|
+
}
|
|
87
|
+
const last = arms[arms.length - 1];
|
|
88
|
+
if (last === undefined)
|
|
89
|
+
return null;
|
|
90
|
+
let chain = last;
|
|
91
|
+
for (let index = arms.length - 2; index >= 0; index -= 1) {
|
|
92
|
+
chain = `${text}.is<${index}>() ? ${arms[index]} : ${chain}`;
|
|
93
|
+
}
|
|
94
|
+
return `(${chain})`;
|
|
95
|
+
}
|
|
96
|
+
return null;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* The carrier that actually has no ToNumber -- the same descent
|
|
100
|
+
* `emit-tostring.ts`'s `unconvertibleToStringCarrier` makes, and for the same
|
|
101
|
+
* reason: an `optional`/`tagged-union` converts through its payload/arms, so
|
|
102
|
+
* naming the wrapper in the refusal would state something false about what
|
|
103
|
+
* this backend can convert.
|
|
104
|
+
*/
|
|
105
|
+
const unconvertibleToNumberCarrier = (carrier) => {
|
|
106
|
+
if (carrier.kind === 'optional')
|
|
107
|
+
return unconvertibleToNumberCarrier(carrier.payload);
|
|
108
|
+
if (carrier.kind === 'tagged-union') {
|
|
109
|
+
for (const arm of carrier.arms) {
|
|
110
|
+
if (toNumberText('x', arm.value) === null)
|
|
111
|
+
return unconvertibleToNumberCarrier(arm.value);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return carrier;
|
|
115
|
+
};
|
|
116
|
+
/** Why a carrier has no ToNumber, for a refusal message. */
|
|
117
|
+
export const toNumberRefusal = (outer) => {
|
|
118
|
+
const carrier = unconvertibleToNumberCarrier(outer);
|
|
119
|
+
const within = representationKey(carrier) === representationKey(outer) ? '' : ` (inside a "${representationKey(outer)}")`;
|
|
120
|
+
return carrier.kind === 'scalar' && carrier.domain === 'bigint'
|
|
121
|
+
? `ToNumber of a bigint${within} is a lossy conversion the language defines separately, and it is not implemented`
|
|
122
|
+
: `ToNumber of a "${representationKey(carrier)}" carrier${within} needs ToPrimitive, which can call user code and is ` +
|
|
123
|
+
'not implemented';
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* ToNumeric of a BOXED value, landing on `scalar(number)` -- the postfix
|
|
127
|
+
* `x++`/`x--` half `ir/lower.ts`'s `coercion` case mints for a `dynamic`
|
|
128
|
+
* operand (`ComputeOperation` form `'unary'`, operator `'ToNumeric'`; see
|
|
129
|
+
* that file's own comment on why this is the one non-identity coercion this
|
|
130
|
+
* backend lowers at all).
|
|
131
|
+
*
|
|
132
|
+
* Deliberately NOT `unboxedLoadText` (`emit-narrowing.ts`): that primitive is
|
|
133
|
+
* an ASSERTION -- it checks the box holds one DECLARED tag and aborts on any
|
|
134
|
+
* other, which is the right answer for a program-stated `as`-cast and the
|
|
135
|
+
* wrong one here. `ToNumeric` does not assert what a `dynamic` value is; it
|
|
136
|
+
* CONVERTS whatever tag the box actually holds, per ECMA-262 7.1.4/3.1.13 --
|
|
137
|
+
* the identity for Number, `1`/`0` for Boolean, `StringToNumber` for String,
|
|
138
|
+
* `0` for Null, `NaN` for Undefined. Object/Function/Symbol/BigInt have no
|
|
139
|
+
* conversion this backend can perform without either running arbitrary user
|
|
140
|
+
* code (ToPrimitive) or arbitrary-precision arithmetic (BigInt) -- both
|
|
141
|
+
* genuinely unimplemented, so those tags fall through to
|
|
142
|
+
* `gea::detail::unboxValue<double>` asking for `Tag::Number`, which is
|
|
143
|
+
* exactly the tag they are not: a LOUD runtime refusal by name, never a
|
|
144
|
+
* silently wrong `NaN` standing in for "this program hit a case nobody
|
|
145
|
+
* proved sound".
|
|
146
|
+
*
|
|
147
|
+
* Every primitive named here is public, pre-existing runtime API this file
|
|
148
|
+
* already calls (`gea::host::detail::toNumber`/`toNumberNull`/
|
|
149
|
+
* `toNumberUndefined`, all used above) or that `emit-narrowing.ts` already
|
|
150
|
+
* calls the identical way (`gea::detail::unboxValue`, `Value::tag()`) --
|
|
151
|
+
* nothing new is added to `runtime/gea_runtime.h` for this.
|
|
152
|
+
*/
|
|
153
|
+
const dynamicToNumericText = (text) => {
|
|
154
|
+
const site = 'a ToNumeric coercion of a dynamic value';
|
|
155
|
+
const unbox = (type, tag) => `gea::detail::unboxValue<${type}>(${text}, gea::Value::Tag::${tag}, "${site}")`;
|
|
156
|
+
return (`(${text}.tag() == gea::Value::Tag::Number ? ${unbox('double', 'Number')}` +
|
|
157
|
+
` : ${text}.tag() == gea::Value::Tag::Boolean ? gea::host::detail::toNumber(${unbox('bool', 'Boolean')})` +
|
|
158
|
+
` : ${text}.tag() == gea::Value::Tag::String ? gea::host::detail::toNumber(${unbox('std::string', 'String')})` +
|
|
159
|
+
` : ${text}.tag() == gea::Value::Tag::Null ? gea::host::detail::toNumberNull()` +
|
|
160
|
+
` : ${text}.tag() == gea::Value::Tag::Undefined ? gea::host::detail::toNumberUndefined()` +
|
|
161
|
+
` : ${unbox('double', 'Number')})`);
|
|
162
|
+
};
|
|
163
|
+
/** The one runtime authority for dynamic ECMAScript ToNumber. */
|
|
164
|
+
const dynamicToNumberText = (text) => `gea::dynamicToNumber(${text})`;
|
|
165
|
+
/**
|
|
166
|
+
* `emit.ts`'s `emitCompute` entry point for the `unary`/`'ToNumeric'` shape
|
|
167
|
+
* `ir/lower.ts` mints -- kept here, not inline in that file's own `unary`
|
|
168
|
+
* dispatch, purely to leave `emit.ts` its documentation budget under the
|
|
169
|
+
* architecture gate's line cap; the dispatch itself is one `operator ===
|
|
170
|
+
* 'ToNumeric'` check there, unchanged.
|
|
171
|
+
*/
|
|
172
|
+
export const emitToNumericCoercion = (ctx, lines, operand, result) => {
|
|
173
|
+
if (operand.representation.kind !== 'dynamic') {
|
|
174
|
+
throw createCppEmitBlockedError('runtime-helper:computation:coercion:ToNumeric', `a "ToNumeric" coercion over a "${operand.representation.kind}" carrier has no C++ spelling here`);
|
|
175
|
+
}
|
|
176
|
+
lines.push(`${defineValue(ctx, result)} = ${dynamicToNumericText(operandText(ctx, operand))};`);
|
|
177
|
+
};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { type Representation } from '../../representation/model.js';
|
|
2
|
+
import { type EmitContext } from './emit-context.js';
|
|
3
|
+
import type { ComputeOperation, IrOperand } from '../../ir/model.js';
|
|
4
|
+
import type { DeclarationId } from '../../identity/ids.js';
|
|
5
|
+
import type { ClassLayout } from '../../projection/classes.js';
|
|
6
|
+
import type { RepresentationDeriver } from '../../representation/derive.js';
|
|
7
|
+
import type { RecordLayoutPolicy } from '../../representation/policies.js';
|
|
8
|
+
/**
|
|
9
|
+
* ToString of a value, spelled from the carrier it actually arrived in.
|
|
10
|
+
*
|
|
11
|
+
* Both callers -- an explicit `String(x)` and a template expression's
|
|
12
|
+
* substitution -- run the same abstract operation, so they read the same table
|
|
13
|
+
* rather than two that could disagree about what `String(true)` is.
|
|
14
|
+
*
|
|
15
|
+
* `null` is returned for a carrier this has no conversion for; the caller
|
|
16
|
+
* names the refusal, because what it can say about *why* the value is there
|
|
17
|
+
* differs between a call argument and a substitution.
|
|
18
|
+
*/
|
|
19
|
+
export declare const toStringText: (text: string, carrier: Representation, classes: ReadonlyMap<DeclarationId, ClassLayout>, deriver: RepresentationDeriver,
|
|
20
|
+
/**
|
|
21
|
+
* Whether this is `String(x)` itself rather than the ToString an operator
|
|
22
|
+
* performs. ECMA-262 22.1.1.1 special-cases exactly that call: a symbol
|
|
23
|
+
* argument answers its SymbolDescriptiveString, while ToString of a symbol
|
|
24
|
+
* (`\`${s}\``, `s + ""`) throws a TypeError. The distinction is the caller's
|
|
25
|
+
* to state, so the implicit sites keep refusing a symbol rather than
|
|
26
|
+
* silently printing what only the explicit call may.
|
|
27
|
+
*/
|
|
28
|
+
explicit?: boolean,
|
|
29
|
+
/**
|
|
30
|
+
* `Array.prototype.join`'s own ToString (ECMA-262 23.1.3.18 step 3.d) is the
|
|
31
|
+
* SAME abstract operation with one capability toggled: a `null`/`undefined`
|
|
32
|
+
* element contributes the empty string rather than the text "null"/"undefined"
|
|
33
|
+
* every other caller of this table needs (`String(undefined)`, `\`${x}\``,
|
|
34
|
+
* `"" + x` all print the text). `joinText` (`prototype/emit-prototype-array.ts`)
|
|
35
|
+
* is the only caller that sets this.
|
|
36
|
+
*/
|
|
37
|
+
nullishJoinsEmpty?: boolean) => string | null;
|
|
38
|
+
/**
|
|
39
|
+
* The same table over the one `RecordLayoutPolicy` every reader of record
|
|
40
|
+
* shapes shares (`projection/fields.ts`). The conversion registry's `coercion`
|
|
41
|
+
* entry (`conversions.ts`) decides whether a ToString is INSTALLED for a
|
|
42
|
+
* carrier by asking this very function for a placeholder -- so the census's
|
|
43
|
+
* "is there a conversion" and the printer's "what is its text" cannot
|
|
44
|
+
* disagree: a carrier this returns `null` for is a `never` coercion node, and
|
|
45
|
+
* a carrier it renders is rendered by exactly this text.
|
|
46
|
+
*/
|
|
47
|
+
export declare const toStringTextOver: (text: string, carrier: Representation, layouts: RecordLayoutPolicy, explicit?: boolean, nullishJoinsEmpty?: boolean) => string | null;
|
|
48
|
+
/**
|
|
49
|
+
* Append a suffix without allocating its multi-piece concatenation first.
|
|
50
|
+
* Deferred string-addition subtrees are flattened into their leaves, then the
|
|
51
|
+
* runtime reserves and appends them directly. Its alias path snapshots pieces
|
|
52
|
+
* that view the target, preserving self-append across a possible reallocation.
|
|
53
|
+
*/
|
|
54
|
+
export declare const stringAppendStatement: (ctx: EmitContext, target: string, operands: readonly IrOperand[]) => string;
|
|
55
|
+
/**
|
|
56
|
+
* A template expression, as one concatenation.
|
|
57
|
+
*
|
|
58
|
+
* Lowering already put the operands in the order the language concatenates
|
|
59
|
+
* them -- literal chunk, substitution, literal chunk, ... -- so this only has
|
|
60
|
+
* to run ToString over each and fold with no separator, which is what an
|
|
61
|
+
* empty `separator` in `joinedToStringText` means. The chunks arrive carrying
|
|
62
|
+
* `string` and pass through unchanged, which is why one rule covers both
|
|
63
|
+
* kinds of piece.
|
|
64
|
+
*/
|
|
65
|
+
export declare const templateText: (ctx: EmitContext, operation: ComputeOperation) => {
|
|
66
|
+
text: string;
|
|
67
|
+
} | {
|
|
68
|
+
refused: Representation;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* `console.log`/`console.error`'s own join rule. ECMA-262 leaves `console`
|
|
72
|
+
* entirely host-defined, but every runtime that implements one (Node, every
|
|
73
|
+
* browser devtools console) stringifies each argument and separates the
|
|
74
|
+
* pieces with exactly one space. v2 has no per-call-site C++ template
|
|
75
|
+
* mechanism in the `host-members.ts` model -- a template there fills one
|
|
76
|
+
* fixed textual shape with pre-rendered strings, it cannot emit a variadic
|
|
77
|
+
* C++ template -- so the join happens here, before the joined text is
|
|
78
|
+
* substituted into the `{args}` slot (`host-members.ts`/`emit-host-invoke.ts`).
|
|
79
|
+
*
|
|
80
|
+
* `operation.arguments` at the call site is guaranteed to be N individual
|
|
81
|
+
* operands here, not one packed `array-object`: `ir/lower.ts`'s
|
|
82
|
+
* `lowerInvocation` skips `packRestArguments` for exactly this callee shape
|
|
83
|
+
* (a method call whose receiver is a `native-handle`) -- see `lower.ts`'s
|
|
84
|
+
* `calleeReceiverIsNativeHandle`.
|
|
85
|
+
*/
|
|
86
|
+
export declare const consoleArgumentsText: (ctx: EmitContext, operands: readonly IrOperand[]) => {
|
|
87
|
+
text: string;
|
|
88
|
+
} | {
|
|
89
|
+
refused: Representation;
|
|
90
|
+
};
|
|
91
|
+
/** Why a carrier has no ToString, for a refusal message. */
|
|
92
|
+
export declare const toStringRefusal: (outer: Representation, classes: ReadonlyMap<DeclarationId, ClassLayout>, deriver: RepresentationDeriver) => string;
|