@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,43 @@
|
|
|
1
|
+
import { type Representation } from '../../representation/model.js';
|
|
2
|
+
import type { SealedRepresentationPlan } from '../../representation/plan.js';
|
|
3
|
+
/**
|
|
4
|
+
* One C++ declaration and definition per recursive structural identity.
|
|
5
|
+
*
|
|
6
|
+
* The inner reference already spells `Ref<wrapper>` through `cppTypeOf`, so
|
|
7
|
+
* the base below is finite even for `type Tree = Map<string, Tree>`. The
|
|
8
|
+
* wrapper preserves the runtime container's methods and storage; it only gives
|
|
9
|
+
* C++ the declaration name the recursive equation needs. Every wrapper is
|
|
10
|
+
* forward-declared before any wrapper is defined, because two independently
|
|
11
|
+
* selected equations can refer to each other and either sorted definition may
|
|
12
|
+
* therefore need the other's incomplete type.
|
|
13
|
+
*
|
|
14
|
+
* This deliberately renders ONLY the wrapper struct, never the
|
|
15
|
+
* `gea::detail::TraceEdges` specialisation that goes with it -- see
|
|
16
|
+
* `cppRecursiveContainerTraceEdges` for why that has to land somewhere else.
|
|
17
|
+
*/
|
|
18
|
+
export declare const cppRecursiveContainerDeclarations: (plan: SealedRepresentationPlan, representations?: readonly Representation[]) => readonly string[];
|
|
19
|
+
/**
|
|
20
|
+
* The `gea::detail::TraceEdges` specialisation for every recursive wrapper
|
|
21
|
+
* `cppRecursiveContainerDeclarations` declares, kept as a SEPARATE renderer
|
|
22
|
+
* rather than appended to that struct text.
|
|
23
|
+
*
|
|
24
|
+
* A single-layout translation unit renders every program-owned declaration
|
|
25
|
+
* inside one unnamed `namespace { ... }` for isolation. Re-opening
|
|
26
|
+
* `namespace gea::detail { ... }` from INSIDE that block does not reach the
|
|
27
|
+
* real `::gea::detail` -- it declares a new `(anonymous)::gea`, which then
|
|
28
|
+
* shadows `::gea` for every unqualified `gea::` written after it in the same
|
|
29
|
+
* translation unit. The caller (`translation-unit.ts`, exactly like it
|
|
30
|
+
* already does for `structs.runtimeClassBases`) has to close the isolating
|
|
31
|
+
* namespace, emit these blocks at global scope, and reopen it -- so this
|
|
32
|
+
* function hands the caller the specialisation text alone, with no namespace
|
|
33
|
+
* decision baked in about where the wrapper struct itself lives.
|
|
34
|
+
*
|
|
35
|
+
* `qualifier` names how to reach the wrapper struct from the point these
|
|
36
|
+
* blocks render at (after the isolating namespace has been closed), mirroring
|
|
37
|
+
* `structs.runtimeClassBases`' own `qualifier`: empty when the struct lives in
|
|
38
|
+
* an unnamed namespace (its members are visible unqualified at the enclosing
|
|
39
|
+
* scope through C++'s implicit using-directive) or at true global scope (the
|
|
40
|
+
* unit tests below), and `"<namespaceName>::"` when the struct lives in the
|
|
41
|
+
* per-file layout's NAMED program namespace, which has no such directive.
|
|
42
|
+
*/
|
|
43
|
+
export declare const cppRecursiveContainerTraceEdges: (plan: SealedRepresentationPlan, qualifier: string, representations?: readonly Representation[]) => readonly string[];
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { recursiveCarrierOf, walkRepresentation } from '../../representation/model.js';
|
|
2
|
+
import { cppAbiType, cppRecursiveContainerName, cppTypeOf } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* The runtime base type of one named recursive-container wrapper.
|
|
5
|
+
*
|
|
6
|
+
* Every name is spelled from the GLOBAL scope (`::gea::...`), because these
|
|
7
|
+
* declarations land inside the translation unit's anonymous namespace and a
|
|
8
|
+
* `gea::detail::TraceEdges` specialisation used to be rendered right there
|
|
9
|
+
* too. Re-opening `namespace gea::detail` from inside an anonymous namespace
|
|
10
|
+
* does not reach the real `::gea::detail` -- it declares a NEW
|
|
11
|
+
* `(anonymous)::gea`, which then shadows `::gea` for every unqualified
|
|
12
|
+
* `gea::` written after it in the same namespace. With one recursive
|
|
13
|
+
* container nothing showed: the shadow was introduced after the only base
|
|
14
|
+
* had already resolved. With two, the second one's base resolved into the
|
|
15
|
+
* shadow and clang refused it with "no template named 'CallableObject' in
|
|
16
|
+
* namespace '(anonymous namespace)::gea'".
|
|
17
|
+
*
|
|
18
|
+
* A leading `::` makes the base immune to that regardless. The specialisation
|
|
19
|
+
* itself no longer lands here at all -- see `cppRecursiveContainerTraceEdges`,
|
|
20
|
+
* which the caller (`translation-unit.ts`) closes the isolating namespace for,
|
|
21
|
+
* exactly like it already does for `structs.runtimeClassBases`.
|
|
22
|
+
*/
|
|
23
|
+
const baseTypeOf = (representation) => {
|
|
24
|
+
switch (representation.kind) {
|
|
25
|
+
case 'array-object':
|
|
26
|
+
return `::gea::ArrayObject<${cppTypeOf(representation.element)}>`;
|
|
27
|
+
case 'keyed-collection': {
|
|
28
|
+
const template = representation.family === 'map'
|
|
29
|
+
? '::gea::Map'
|
|
30
|
+
: representation.family === 'set'
|
|
31
|
+
? '::gea::Set'
|
|
32
|
+
: representation.family === 'weak-map'
|
|
33
|
+
? '::gea::WeakMap'
|
|
34
|
+
: '::gea::WeakSet';
|
|
35
|
+
const key = cppTypeOf(representation.key);
|
|
36
|
+
return `${template}<${representation.value === null ? key : `${key}, ${cppTypeOf(representation.value)}`}>`;
|
|
37
|
+
}
|
|
38
|
+
case 'dictionary': {
|
|
39
|
+
const template = representation.key === 'number'
|
|
40
|
+
? '::gea::NumericDictionary'
|
|
41
|
+
: representation.key === 'symbol'
|
|
42
|
+
? '::gea::SymbolDictionary'
|
|
43
|
+
: '::gea::Dictionary';
|
|
44
|
+
return `${template}<${cppTypeOf(representation.value)}>`;
|
|
45
|
+
}
|
|
46
|
+
case 'function-value-dispatch':
|
|
47
|
+
return `::gea::CallableObject<${cppAbiType(representation.abi)}>`;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* The recursive structural identities a plan closes, in the one stable order
|
|
52
|
+
* both `cppRecursiveContainerDeclarations` and `cppRecursiveContainerTraceEdges`
|
|
53
|
+
* render from -- computed once so the two renderers can never disagree about
|
|
54
|
+
* which identities exist or what order they come in.
|
|
55
|
+
*/
|
|
56
|
+
const orderedRecursiveDefinitions = (representations) => {
|
|
57
|
+
const definitions = new Map();
|
|
58
|
+
const visited = new Set();
|
|
59
|
+
for (const representation of representations) {
|
|
60
|
+
for (const nested of walkRepresentation(representation, visited)) {
|
|
61
|
+
const recursive = recursiveCarrierOf(nested);
|
|
62
|
+
if (!recursive || recursive.role !== 'definition')
|
|
63
|
+
continue;
|
|
64
|
+
if (nested.kind !== 'array-object' &&
|
|
65
|
+
nested.kind !== 'keyed-collection' &&
|
|
66
|
+
nested.kind !== 'dictionary' &&
|
|
67
|
+
nested.kind !== 'function-value-dispatch') {
|
|
68
|
+
throw new Error(`recursive native definition ${recursive.type} is not a container or a callable`);
|
|
69
|
+
}
|
|
70
|
+
const existing = definitions.get(recursive.type);
|
|
71
|
+
if (existing && existing !== nested) {
|
|
72
|
+
throw new Error(`recursive native definition ${recursive.type} was published more than once`);
|
|
73
|
+
}
|
|
74
|
+
definitions.set(recursive.type, nested);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return [...definitions.entries()].sort(([left], [right]) => left.localeCompare(right));
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* One C++ declaration and definition per recursive structural identity.
|
|
81
|
+
*
|
|
82
|
+
* The inner reference already spells `Ref<wrapper>` through `cppTypeOf`, so
|
|
83
|
+
* the base below is finite even for `type Tree = Map<string, Tree>`. The
|
|
84
|
+
* wrapper preserves the runtime container's methods and storage; it only gives
|
|
85
|
+
* C++ the declaration name the recursive equation needs. Every wrapper is
|
|
86
|
+
* forward-declared before any wrapper is defined, because two independently
|
|
87
|
+
* selected equations can refer to each other and either sorted definition may
|
|
88
|
+
* therefore need the other's incomplete type.
|
|
89
|
+
*
|
|
90
|
+
* This deliberately renders ONLY the wrapper struct, never the
|
|
91
|
+
* `gea::detail::TraceEdges` specialisation that goes with it -- see
|
|
92
|
+
* `cppRecursiveContainerTraceEdges` for why that has to land somewhere else.
|
|
93
|
+
*/
|
|
94
|
+
export const cppRecursiveContainerDeclarations = (plan, representations = [...plan.selected.values()]) => {
|
|
95
|
+
const ordered = orderedRecursiveDefinitions(representations);
|
|
96
|
+
return [
|
|
97
|
+
...ordered.map(([type]) => `struct ${cppRecursiveContainerName(type)};`),
|
|
98
|
+
...ordered.map(([type, representation]) => {
|
|
99
|
+
const name = cppRecursiveContainerName(type);
|
|
100
|
+
const base = baseTypeOf(representation);
|
|
101
|
+
return [`struct ${name} final : ${base} {`, ` using Base = ${base};`, ' using Base::Base;', '};'].join('\n');
|
|
102
|
+
})
|
|
103
|
+
];
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* The `gea::detail::TraceEdges` specialisation for every recursive wrapper
|
|
107
|
+
* `cppRecursiveContainerDeclarations` declares, kept as a SEPARATE renderer
|
|
108
|
+
* rather than appended to that struct text.
|
|
109
|
+
*
|
|
110
|
+
* A single-layout translation unit renders every program-owned declaration
|
|
111
|
+
* inside one unnamed `namespace { ... }` for isolation. Re-opening
|
|
112
|
+
* `namespace gea::detail { ... }` from INSIDE that block does not reach the
|
|
113
|
+
* real `::gea::detail` -- it declares a new `(anonymous)::gea`, which then
|
|
114
|
+
* shadows `::gea` for every unqualified `gea::` written after it in the same
|
|
115
|
+
* translation unit. The caller (`translation-unit.ts`, exactly like it
|
|
116
|
+
* already does for `structs.runtimeClassBases`) has to close the isolating
|
|
117
|
+
* namespace, emit these blocks at global scope, and reopen it -- so this
|
|
118
|
+
* function hands the caller the specialisation text alone, with no namespace
|
|
119
|
+
* decision baked in about where the wrapper struct itself lives.
|
|
120
|
+
*
|
|
121
|
+
* `qualifier` names how to reach the wrapper struct from the point these
|
|
122
|
+
* blocks render at (after the isolating namespace has been closed), mirroring
|
|
123
|
+
* `structs.runtimeClassBases`' own `qualifier`: empty when the struct lives in
|
|
124
|
+
* an unnamed namespace (its members are visible unqualified at the enclosing
|
|
125
|
+
* scope through C++'s implicit using-directive) or at true global scope (the
|
|
126
|
+
* unit tests below), and `"<namespaceName>::"` when the struct lives in the
|
|
127
|
+
* per-file layout's NAMED program namespace, which has no such directive.
|
|
128
|
+
*/
|
|
129
|
+
export const cppRecursiveContainerTraceEdges = (plan, qualifier, representations = [...plan.selected.values()]) => {
|
|
130
|
+
const ordered = orderedRecursiveDefinitions(representations);
|
|
131
|
+
return ordered.map(([type]) => {
|
|
132
|
+
const name = `${qualifier}${cppRecursiveContainerName(type)}`;
|
|
133
|
+
return [
|
|
134
|
+
'namespace gea::detail {',
|
|
135
|
+
`template <> struct TraceEdges<${name}> {`,
|
|
136
|
+
' static constexpr bool supported = true;',
|
|
137
|
+
` static void visit(const ${name}& value, RefVisitor& visitor) {`,
|
|
138
|
+
` traceRefs(static_cast<const ${name}::Base&>(value), visitor);`,
|
|
139
|
+
' }',
|
|
140
|
+
'};',
|
|
141
|
+
'}'
|
|
142
|
+
].join('\n');
|
|
143
|
+
});
|
|
144
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { RegExpDeclarationKind } from '../../representation/policies.js';
|
|
2
|
+
/**
|
|
3
|
+
* This backend's spelling for each of the three standard regular-expression
|
|
4
|
+
* shapes, and the only place those three C++ names appear outside the runtime
|
|
5
|
+
* header itself.
|
|
6
|
+
*
|
|
7
|
+
* The carrier is selected in `representation/derive.ts` from a policy, and that
|
|
8
|
+
* policy carries the spelling rather than the deriver naming one, because
|
|
9
|
+
* nothing under `src/representation/` may name a C++ type -- it selects
|
|
10
|
+
* carriers for any backend. `compiler.ts` composes the two: the frontend says
|
|
11
|
+
* WHICH declaration is `RegExp`, this table says what this target calls it.
|
|
12
|
+
*
|
|
13
|
+
* All three are ported from v1 geatsc's `targets/cpp/runtime/regex.h`:
|
|
14
|
+
*
|
|
15
|
+
* - `Pattern` is v1's `gea::runtime::regex::Pattern`, name for name.
|
|
16
|
+
* - `ExecResult` is v1's `ExecResult` (regex.h line 32) -- the TYPED result,
|
|
17
|
+
* deliberately not v1's `gea_cpp_value exec(...)`, which is the boxed one.
|
|
18
|
+
* - `MatchResult` has no v1 counterpart and is stated as new work in the
|
|
19
|
+
* report: v1's `match` answers `std::vector<std::string>` with no null case
|
|
20
|
+
* and no `index`/`input`, so there was nothing typed to port. It implements
|
|
21
|
+
* ES2024 22.1.3.14 `String.prototype.match`, whose two answers
|
|
22
|
+
* (`RegExpExec` for a non-global pattern, the list of matched substrings for
|
|
23
|
+
* a global one) are exactly why `lib.es5.d.ts` declares `RegExpMatchArray`'s
|
|
24
|
+
* `index` and `input` OPTIONAL where `RegExpExecArray`'s are required.
|
|
25
|
+
*/
|
|
26
|
+
export declare const cppRegExpNativeTypes: Readonly<Record<RegExpDeclarationKind, string>>;
|
|
27
|
+
/**
|
|
28
|
+
* This backend's entry point for `RegExpAlloc` + `RegExpInitialize` (ECMA-262
|
|
29
|
+
* 22.2.3.1 and 22.2.3.2), which is where 22.2.4.1's three pattern branches all
|
|
30
|
+
* converge. It is `constructPatternOrThrow` rather than a bare
|
|
31
|
+
* `gea::makeRef<Pattern>` so 22.2.3.2's flag and source validation runs and an
|
|
32
|
+
* unknown or repeated flag throws where the language says it throws.
|
|
33
|
+
*
|
|
34
|
+
* A constant for the same reason the three type names above are: two emitters
|
|
35
|
+
* spell this call -- `emit-callable.ts` for the string and Pattern forms and
|
|
36
|
+
* `emit-prototype-regexp.ts` for the object form -- and a name typed twice is
|
|
37
|
+
* a name that can be renamed once.
|
|
38
|
+
*/
|
|
39
|
+
export declare const cppConstructPatternEntry = "gea::runtime::regex::constructPatternOrThrow";
|
|
40
|
+
/**
|
|
41
|
+
* This backend's spelling for the ECMAScript String WRAPPER OBJECT (ECMA-262
|
|
42
|
+
* 22.1.5, `new String(x)`), kept in this file rather than a file of its own:
|
|
43
|
+
* it is the identical kind of fact `cppRegExpNativeTypes` above states --
|
|
44
|
+
* "what this target calls a compiler-owned native layout for a
|
|
45
|
+
* core-ECMAScript type, selected by a declaration policy that may not name a
|
|
46
|
+
* C++ type itself" -- for a second such type, not a different concept. Same
|
|
47
|
+
* composition point too: `compiler.ts` joins `frontend.stringObjectDeclaration`
|
|
48
|
+
* (WHICH declaration is `String`) with this constant (what this target calls
|
|
49
|
+
* it), exactly as it joins `frontend.regexpDeclarations` with the table above.
|
|
50
|
+
*
|
|
51
|
+
* `gea::runtime::StringObject` is defined in `runtime/gea_runtime.h`,
|
|
52
|
+
* immediately after `Date` -- same reasoning, same shape: a compiler-owned
|
|
53
|
+
* native layout for a core-ECMAScript type, not a struct `targets/cpp/records.ts`
|
|
54
|
+
* lays out.
|
|
55
|
+
*/
|
|
56
|
+
export declare const cppStringObjectNativeType = "gea::runtime::StringObject";
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This backend's spelling for each of the three standard regular-expression
|
|
3
|
+
* shapes, and the only place those three C++ names appear outside the runtime
|
|
4
|
+
* header itself.
|
|
5
|
+
*
|
|
6
|
+
* The carrier is selected in `representation/derive.ts` from a policy, and that
|
|
7
|
+
* policy carries the spelling rather than the deriver naming one, because
|
|
8
|
+
* nothing under `src/representation/` may name a C++ type -- it selects
|
|
9
|
+
* carriers for any backend. `compiler.ts` composes the two: the frontend says
|
|
10
|
+
* WHICH declaration is `RegExp`, this table says what this target calls it.
|
|
11
|
+
*
|
|
12
|
+
* All three are ported from v1 geatsc's `targets/cpp/runtime/regex.h`:
|
|
13
|
+
*
|
|
14
|
+
* - `Pattern` is v1's `gea::runtime::regex::Pattern`, name for name.
|
|
15
|
+
* - `ExecResult` is v1's `ExecResult` (regex.h line 32) -- the TYPED result,
|
|
16
|
+
* deliberately not v1's `gea_cpp_value exec(...)`, which is the boxed one.
|
|
17
|
+
* - `MatchResult` has no v1 counterpart and is stated as new work in the
|
|
18
|
+
* report: v1's `match` answers `std::vector<std::string>` with no null case
|
|
19
|
+
* and no `index`/`input`, so there was nothing typed to port. It implements
|
|
20
|
+
* ES2024 22.1.3.14 `String.prototype.match`, whose two answers
|
|
21
|
+
* (`RegExpExec` for a non-global pattern, the list of matched substrings for
|
|
22
|
+
* a global one) are exactly why `lib.es5.d.ts` declares `RegExpMatchArray`'s
|
|
23
|
+
* `index` and `input` OPTIONAL where `RegExpExecArray`'s are required.
|
|
24
|
+
*/
|
|
25
|
+
export const cppRegExpNativeTypes = {
|
|
26
|
+
pattern: 'gea::runtime::regex::Pattern',
|
|
27
|
+
'exec-result': 'gea::runtime::regex::ExecResult',
|
|
28
|
+
'match-result': 'gea::runtime::regex::MatchResult'
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* This backend's entry point for `RegExpAlloc` + `RegExpInitialize` (ECMA-262
|
|
32
|
+
* 22.2.3.1 and 22.2.3.2), which is where 22.2.4.1's three pattern branches all
|
|
33
|
+
* converge. It is `constructPatternOrThrow` rather than a bare
|
|
34
|
+
* `gea::makeRef<Pattern>` so 22.2.3.2's flag and source validation runs and an
|
|
35
|
+
* unknown or repeated flag throws where the language says it throws.
|
|
36
|
+
*
|
|
37
|
+
* A constant for the same reason the three type names above are: two emitters
|
|
38
|
+
* spell this call -- `emit-callable.ts` for the string and Pattern forms and
|
|
39
|
+
* `emit-prototype-regexp.ts` for the object form -- and a name typed twice is
|
|
40
|
+
* a name that can be renamed once.
|
|
41
|
+
*/
|
|
42
|
+
export const cppConstructPatternEntry = 'gea::runtime::regex::constructPatternOrThrow';
|
|
43
|
+
/**
|
|
44
|
+
* This backend's spelling for the ECMAScript String WRAPPER OBJECT (ECMA-262
|
|
45
|
+
* 22.1.5, `new String(x)`), kept in this file rather than a file of its own:
|
|
46
|
+
* it is the identical kind of fact `cppRegExpNativeTypes` above states --
|
|
47
|
+
* "what this target calls a compiler-owned native layout for a
|
|
48
|
+
* core-ECMAScript type, selected by a declaration policy that may not name a
|
|
49
|
+
* C++ type itself" -- for a second such type, not a different concept. Same
|
|
50
|
+
* composition point too: `compiler.ts` joins `frontend.stringObjectDeclaration`
|
|
51
|
+
* (WHICH declaration is `String`) with this constant (what this target calls
|
|
52
|
+
* it), exactly as it joins `frontend.regexpDeclarations` with the table above.
|
|
53
|
+
*
|
|
54
|
+
* `gea::runtime::StringObject` is defined in `runtime/gea_runtime.h`,
|
|
55
|
+
* immediately after `Date` -- same reasoning, same shape: a compiler-owned
|
|
56
|
+
* native layout for a core-ECMAScript type, not a struct `targets/cpp/records.ts`
|
|
57
|
+
* lays out.
|
|
58
|
+
*/
|
|
59
|
+
export const cppStringObjectNativeType = 'gea::runtime::StringObject';
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The non-negotiable runtime object substrate (architecture.md, "Non-negotiable
|
|
3
|
+
* runtime object substrate"). These types are the written contract every
|
|
4
|
+
* native carrier the emitter targets must satisfy: prototype/extensibility/
|
|
5
|
+
* descriptor behavior, array hole and length semantics, callable and
|
|
6
|
+
* constructor ABIs, and proxy trap forwarding. This module declares that
|
|
7
|
+
* contract; it emits no C++ and holds no executable logic. `targets/cpp/*`
|
|
8
|
+
* designs its type mapping and ownership leases against these shapes instead
|
|
9
|
+
* of re-deriving the substrate ad hoc at each call site, and the C++ runtime
|
|
10
|
+
* (`src/targets/cpp/runtime/`, compiled once) is what actually implements it.
|
|
11
|
+
*/
|
|
12
|
+
/** A normalized ECMAScript property key: string or symbol identity, never a raw source token. */
|
|
13
|
+
export type PropertyKeySubstrate = {
|
|
14
|
+
readonly kind: 'string';
|
|
15
|
+
readonly value: string;
|
|
16
|
+
} | {
|
|
17
|
+
readonly kind: 'symbol';
|
|
18
|
+
readonly id: string;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* [[GetOwnProperty]]/[[DefineOwnProperty]] descriptor shape (ECMA-262 6.2.6).
|
|
22
|
+
* A data and an accessor descriptor are different variants, not one shape
|
|
23
|
+
* with optional fields, because a carrier must never synthesize a `get`/`set`
|
|
24
|
+
* pair for a data property or a `value` for an accessor.
|
|
25
|
+
*/
|
|
26
|
+
export type PropertyDescriptorSubstrate = {
|
|
27
|
+
readonly kind: 'data';
|
|
28
|
+
readonly value: unknown;
|
|
29
|
+
readonly writable: boolean;
|
|
30
|
+
readonly enumerable: boolean;
|
|
31
|
+
readonly configurable: boolean;
|
|
32
|
+
} | {
|
|
33
|
+
readonly kind: 'accessor';
|
|
34
|
+
readonly get: unknown;
|
|
35
|
+
readonly set: unknown;
|
|
36
|
+
readonly enumerable: boolean;
|
|
37
|
+
readonly configurable: boolean;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* The ordinary internal methods (ECMA-262 10.1). Every native carrier that is
|
|
41
|
+
* not a fully bespoke exotic object composes this contract instead of
|
|
42
|
+
* reimplementing get/set/delete/enumeration on its own -- the shared contract
|
|
43
|
+
* is what lets `[[OwnPropertyKeys]]`/`[[HasProperty]]`/etc. mean one thing
|
|
44
|
+
* across every carrier a Proxy might wrap.
|
|
45
|
+
*/
|
|
46
|
+
export interface OrdinaryObjectSubstrate {
|
|
47
|
+
readonly getPrototypeOf: () => OrdinaryObjectSubstrate | null;
|
|
48
|
+
readonly setPrototypeOf: (prototype: OrdinaryObjectSubstrate | null) => boolean;
|
|
49
|
+
readonly isExtensible: () => boolean;
|
|
50
|
+
readonly preventExtensions: () => boolean;
|
|
51
|
+
readonly getOwnProperty: (key: PropertyKeySubstrate) => PropertyDescriptorSubstrate | null;
|
|
52
|
+
readonly defineOwnProperty: (key: PropertyKeySubstrate, descriptor: PropertyDescriptorSubstrate) => boolean;
|
|
53
|
+
readonly hasProperty: (key: PropertyKeySubstrate) => boolean;
|
|
54
|
+
readonly get: (key: PropertyKeySubstrate, receiver: unknown) => unknown;
|
|
55
|
+
readonly set: (key: PropertyKeySubstrate, value: unknown, receiver: unknown) => boolean;
|
|
56
|
+
readonly deleteProperty: (key: PropertyKeySubstrate) => boolean;
|
|
57
|
+
readonly ownPropertyKeys: () => readonly PropertyKeySubstrate[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* A slot's presence is a fact separate from its value: a hole and a stored
|
|
61
|
+
* `undefined` are different observations (`0 in arr`, `Object.keys`, and
|
|
62
|
+
* iteration all differ), and collapsing this to `ElementCarrier | undefined`
|
|
63
|
+
* is exactly the shortcut that erases hole semantics.
|
|
64
|
+
*/
|
|
65
|
+
export type ArrayElementSlotSubstrate<ElementCarrier> = {
|
|
66
|
+
readonly present: true;
|
|
67
|
+
readonly value: ElementCarrier;
|
|
68
|
+
} | {
|
|
69
|
+
readonly present: false;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* `ArrayObject<ElementCarrier>`: an exotic object with element presence
|
|
73
|
+
* separate from element value, an array-index key domain disjoint from
|
|
74
|
+
* arbitrary string keys, and the `length` define/delete/truncation rules
|
|
75
|
+
* ECMA-262 10.4.2 assigns only to Array exotic objects. A dense
|
|
76
|
+
* `std::vector` is one storage choice made *after* these semantics exist,
|
|
77
|
+
* never a substitute for them.
|
|
78
|
+
*/
|
|
79
|
+
export interface ArrayObjectSubstrate<ElementCarrier> extends OrdinaryObjectSubstrate {
|
|
80
|
+
readonly length: () => number;
|
|
81
|
+
/** Defining `length` to a smaller value deletes every own index at or above it, in descending order. */
|
|
82
|
+
readonly defineLength: (newLength: number) => boolean;
|
|
83
|
+
readonly getElement: (index: number) => ArrayElementSlotSubstrate<ElementCarrier>;
|
|
84
|
+
readonly defineElement: (index: number, slot: ArrayElementSlotSubstrate<ElementCarrier>) => boolean;
|
|
85
|
+
readonly deleteElement: (index: number) => boolean;
|
|
86
|
+
/** The array-index key domain is exactly the canonical numeric strings 0 .. 2^32-2; nothing outside it may alias an element slot. */
|
|
87
|
+
readonly isArrayIndexKey: (key: PropertyKeySubstrate) => boolean;
|
|
88
|
+
}
|
|
89
|
+
/** `CallableObject<Abi>`: adds `[[Call]]` while retaining the native argument/result carriers named by `Abi`. */
|
|
90
|
+
export interface CallableObjectSubstrate<Abi> extends OrdinaryObjectSubstrate {
|
|
91
|
+
readonly call: (thisArgument: unknown, argumentList: Abi) => unknown;
|
|
92
|
+
}
|
|
93
|
+
/** `ConstructorObject<Abi>`: a callable that additionally supports `[[Construct]]` with an explicit `newTarget`. */
|
|
94
|
+
export interface ConstructorObjectSubstrate<Abi> extends CallableObjectSubstrate<Abi> {
|
|
95
|
+
readonly construct: (argumentList: Abi, newTarget: ConstructorObjectSubstrate<Abi>) => unknown;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* `ProxyObject<TargetCarrier, HandlerCarrier>`: owns exactly the proxy
|
|
99
|
+
* target, handler, and revoked state -- no more, no less. Every internal
|
|
100
|
+
* method performs standard trap lookup on `handler`, invokes a found trap
|
|
101
|
+
* through generic `Call`, enforces the trap's invariants against `target`,
|
|
102
|
+
* and otherwise forwards to `target`'s own corresponding internal method with
|
|
103
|
+
* the *original* receiver -- never the proxy, never the handler. Once
|
|
104
|
+
* `revoked` is true every internal method must throw before any lookup runs.
|
|
105
|
+
*/
|
|
106
|
+
export interface ProxyObjectSubstrate<TargetCarrier extends OrdinaryObjectSubstrate, HandlerCarrier extends OrdinaryObjectSubstrate> extends OrdinaryObjectSubstrate {
|
|
107
|
+
readonly target: TargetCarrier;
|
|
108
|
+
readonly handler: HandlerCarrier;
|
|
109
|
+
readonly revoked: boolean;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* A proxy over a callable target is itself callable: its `[[Call]]` traps
|
|
113
|
+
* through `handler.apply` and otherwise forwards to `target.call` with the
|
|
114
|
+
* original `thisArgument` -- never the proxy or the handler as receiver.
|
|
115
|
+
*/
|
|
116
|
+
export interface CallableProxyObjectSubstrate<Abi> extends ProxyObjectSubstrate<CallableObjectSubstrate<Abi>, OrdinaryObjectSubstrate>, CallableObjectSubstrate<Abi> {
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* A proxy over a constructor is itself a constructor: its `[[Construct]]`
|
|
120
|
+
* traps through `handler.construct` and otherwise forwards to
|
|
121
|
+
* `target.construct` with the original `newTarget` -- never the proxy
|
|
122
|
+
* substituted in its place.
|
|
123
|
+
*/
|
|
124
|
+
export interface ConstructableProxyObjectSubstrate<Abi> extends ProxyObjectSubstrate<ConstructorObjectSubstrate<Abi>, OrdinaryObjectSubstrate>, ConstructorObjectSubstrate<Abi> {
|
|
125
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The non-negotiable runtime object substrate (architecture.md, "Non-negotiable
|
|
3
|
+
* runtime object substrate"). These types are the written contract every
|
|
4
|
+
* native carrier the emitter targets must satisfy: prototype/extensibility/
|
|
5
|
+
* descriptor behavior, array hole and length semantics, callable and
|
|
6
|
+
* constructor ABIs, and proxy trap forwarding. This module declares that
|
|
7
|
+
* contract; it emits no C++ and holds no executable logic. `targets/cpp/*`
|
|
8
|
+
* designs its type mapping and ownership leases against these shapes instead
|
|
9
|
+
* of re-deriving the substrate ad hoc at each call site, and the C++ runtime
|
|
10
|
+
* (`src/targets/cpp/runtime/`, compiled once) is what actually implements it.
|
|
11
|
+
*/
|
|
12
|
+
export {};
|