@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,326 @@
|
|
|
1
|
+
import { representationKey } from '../../representation/model.js';
|
|
2
|
+
import { templateObjectCapabilityKeyOf } from '../../representation/template-object.js';
|
|
3
|
+
import { operandOf } from '../../semantics/model/operands.js';
|
|
4
|
+
import { allOperationsOf } from '../model.js';
|
|
5
|
+
import { enumerateGetIteratorCarrierKeyOf, iteratorMethodCarrierKeyOf, regexpFlagSupportKeyOf, spreadSourceCarrierKeyOf } from './carrier-keys.js';
|
|
6
|
+
/**
|
|
7
|
+
* The `runtime-helper:*` family of `ir/certify.ts`: the iterator/spread
|
|
8
|
+
* protocols, `typeof`, boolean/presence tests, allocations, destructuring's
|
|
9
|
+
* shared steps, JSX elements, and the control/boundary/dynamic-language
|
|
10
|
+
* forms that never refuse. Every key spelled here is exactly the string
|
|
11
|
+
* `preflight/runtime-helper-key.ts`'s `runtimeHelperKey` would have spelled
|
|
12
|
+
* for the SEMANTIC operation this IR operation lowers -- both draw the carrier
|
|
13
|
+
* refinements from `./carrier-keys.ts` so the two censuses cannot drift, and
|
|
14
|
+
* `manifest.runtimeHelpers` (`targets/cpp/manifest/capabilities.ts` plus the
|
|
15
|
+
* per-program rows `manifest.ts` adds) is the one set both look the spelling
|
|
16
|
+
* up in. `in`/`instanceof` are certified elsewhere (`has-property-key.ts`'s
|
|
17
|
+
* and `instanceof-key.ts`'s own successors), not here.
|
|
18
|
+
*
|
|
19
|
+
* Unlike the old builder, this reads carriers straight off the IR operand
|
|
20
|
+
* that already carries them (`IrOperand.representation`) rather than
|
|
21
|
+
* re-resolving a semantic operand through the plan -- there is no plan here,
|
|
22
|
+
* and none is needed: lowering already picked the exact representation every
|
|
23
|
+
* consumer sees.
|
|
24
|
+
*/
|
|
25
|
+
const helper = (key) => ({ key: `runtime-helper:${key}` });
|
|
26
|
+
/**
|
|
27
|
+
* The first operation of a try region's own entry block, per body.
|
|
28
|
+
*
|
|
29
|
+
* `boundary:exception-region` has no operation of its own to hang off -- a
|
|
30
|
+
* `try` is a block-table fact (`IrBody.tryRegions`), not an instruction -- so
|
|
31
|
+
* it rides along on whichever operation happens to execute first once control
|
|
32
|
+
* falls into that block, the same way a line number rides on the first
|
|
33
|
+
* instruction of a source line. Cached per body because `certifyIr` asks this
|
|
34
|
+
* question once per OPERATION, and recomputing the whole region table for
|
|
35
|
+
* every one of them would make a body with many try statements quadratic.
|
|
36
|
+
*/
|
|
37
|
+
const tryEntryFirstOperations = new WeakMap();
|
|
38
|
+
const tryEntryFirstOperationsOf = (body) => {
|
|
39
|
+
const cached = tryEntryFirstOperations.get(body);
|
|
40
|
+
if (cached)
|
|
41
|
+
return cached;
|
|
42
|
+
const firstOperations = new Set();
|
|
43
|
+
for (const region of body.tryRegions) {
|
|
44
|
+
const block = body.blocks.get(region.tryEntry);
|
|
45
|
+
const first = block ? allOperationsOf(block)[0] : undefined;
|
|
46
|
+
if (first)
|
|
47
|
+
firstOperations.add(first);
|
|
48
|
+
}
|
|
49
|
+
tryEntryFirstOperations.set(body, firstOperations);
|
|
50
|
+
return firstOperations;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Allocation, property, and protocol operations are all reached by several
|
|
54
|
+
* different IR op kinds and, for a handful of kinds, by several different
|
|
55
|
+
* SEMANTIC families -- `get` is a destructuring element read, a destructuring
|
|
56
|
+
* rest field copy, AND the iterator protocol's `get-method` step, all built
|
|
57
|
+
* from the identical `ctx.builder.get` call. `ctx.semanticOperationOf` (the
|
|
58
|
+
* SAME `SemanticOperation` `runtimeHelperKey` read `family`/`form`/`protocol`
|
|
59
|
+
* off of) is what tells them apart; an op whose lineage names none of the
|
|
60
|
+
* families this function knows about demands nothing here -- it is some
|
|
61
|
+
* other family's ordinary property/call/binding op, censused by a sibling
|
|
62
|
+
* module.
|
|
63
|
+
*/
|
|
64
|
+
const ownKindDemandsOf = (operation, ctx) => {
|
|
65
|
+
switch (operation.kind) {
|
|
66
|
+
case 'get': {
|
|
67
|
+
const semantic = ctx.semanticOperationOf(operation.lineage);
|
|
68
|
+
if (semantic?.family === 'protocol') {
|
|
69
|
+
// `enumerate` mints no `get-method` step at all (`lower-protocol.ts`);
|
|
70
|
+
// every `get` reached through the protocol family is `iterator`/`async-iterator`.
|
|
71
|
+
const receiver = operation.receiver.representation;
|
|
72
|
+
const carrier = iteratorMethodCarrierKeyOf(receiver.kind, receiver, ctx.deriver);
|
|
73
|
+
return [helper(`protocol:${semantic.protocol}:get-method:${carrier}`)];
|
|
74
|
+
}
|
|
75
|
+
if (semantic?.family === 'destructuring') {
|
|
76
|
+
// An object-pattern element is an ordinary `[[Get]]`, censused as one
|
|
77
|
+
// by the property-access family -- raising a second obligation here
|
|
78
|
+
// would ask the target for a primitive it never calls.
|
|
79
|
+
if (semantic.form === 'object-pattern')
|
|
80
|
+
return [];
|
|
81
|
+
if (semantic.form === 'rest-element')
|
|
82
|
+
return [helper(`destructuring:rest-element:object-pattern:${operation.receiver.representation.kind}`)];
|
|
83
|
+
if (semantic.form === 'array-pattern')
|
|
84
|
+
return [helper(`destructuring:array-pattern:${operation.receiver.representation.kind}`)];
|
|
85
|
+
}
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
case 'get-iterator': {
|
|
89
|
+
const semantic = ctx.semanticOperationOf(operation.lineage);
|
|
90
|
+
if (semantic?.family === 'protocol') {
|
|
91
|
+
const receiver = operation.receiver.representation;
|
|
92
|
+
const carrier = operation.protocol === 'enumerate'
|
|
93
|
+
? enumerateGetIteratorCarrierKeyOf(receiver.kind, receiver)
|
|
94
|
+
: iteratorMethodCarrierKeyOf(receiver.kind, receiver, ctx.deriver);
|
|
95
|
+
return [helper(`protocol:${operation.protocol}:get-iterator:${carrier}`)];
|
|
96
|
+
}
|
|
97
|
+
// The array-pattern SOURCE step's own Set/string snapshot and dynamic
|
|
98
|
+
// fast paths mint this op directly; its OWN published result carrier is
|
|
99
|
+
// the key, exactly as `runtimeHelperKey`'s `isSourceStep` branch reads
|
|
100
|
+
// the semantic op's own result rather than its `base` operand.
|
|
101
|
+
if (semantic?.family === 'destructuring' && semantic.form === 'array-pattern') {
|
|
102
|
+
return [helper(`destructuring:array-pattern:${operation.result.representation.kind}`)];
|
|
103
|
+
}
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
case 'iterator-next': {
|
|
107
|
+
const semantic = ctx.semanticOperationOf(operation.lineage);
|
|
108
|
+
if (semantic?.family === 'protocol')
|
|
109
|
+
return [helper(`protocol:${semantic.protocol}:next:${operation.iterator.representation.kind}`)];
|
|
110
|
+
if (semantic?.family === 'destructuring' && semantic.form === 'array-pattern') {
|
|
111
|
+
return [helper(`destructuring:array-pattern:${operation.iterator.representation.kind}`)];
|
|
112
|
+
}
|
|
113
|
+
return [];
|
|
114
|
+
}
|
|
115
|
+
// `IteratorResult`'s `done` half is the SAME semantic `next` step as the
|
|
116
|
+
// `iterator-next` op beside it (`model.ts`'s own doc on `IteratorDoneOperation`);
|
|
117
|
+
// raising the demand from both would ask twice for one capability.
|
|
118
|
+
case 'iterator-done':
|
|
119
|
+
return [];
|
|
120
|
+
case 'iterator-close': {
|
|
121
|
+
const semantic = ctx.semanticOperationOf(operation.lineage);
|
|
122
|
+
if (semantic?.family === 'protocol')
|
|
123
|
+
return [helper(`protocol:${semantic.protocol}:close:${operation.iterator.representation.kind}`)];
|
|
124
|
+
if (semantic?.family === 'destructuring' && semantic.form === 'array-pattern-close') {
|
|
125
|
+
return [helper(`destructuring:array-pattern-close:${operation.iterator.representation.kind}`)];
|
|
126
|
+
}
|
|
127
|
+
return [];
|
|
128
|
+
}
|
|
129
|
+
case 'spread-copy': {
|
|
130
|
+
const semantic = ctx.semanticOperationOf(operation.lineage);
|
|
131
|
+
if (semantic?.family === 'protocol' && semantic.protocol === 'spread') {
|
|
132
|
+
const source = operation.source.representation;
|
|
133
|
+
const carrier = spreadSourceCarrierKeyOf(source.kind, source, operation.receiver.representation, ctx.deriver);
|
|
134
|
+
return [helper(`protocol:spread:next:${carrier}`)];
|
|
135
|
+
}
|
|
136
|
+
// The dictionary half of an object-pattern rest ("{...rest}") reuses
|
|
137
|
+
// object spread's own copy primitive (`lower-destructuring.ts`'s
|
|
138
|
+
// `lowerObjectPatternRest`); its capability is keyed by the REST's own
|
|
139
|
+
// family/form, never by "spread", so a program with no object-spread
|
|
140
|
+
// capability but a dictionary rest is not falsely refused for the wrong
|
|
141
|
+
// reason.
|
|
142
|
+
if (semantic?.family === 'destructuring' && semantic.form === 'rest-element') {
|
|
143
|
+
return [helper(`destructuring:rest-element:object-pattern:${operation.source.representation.kind}`)];
|
|
144
|
+
}
|
|
145
|
+
return [];
|
|
146
|
+
}
|
|
147
|
+
// -----------------------------------------------------------------------
|
|
148
|
+
// Computation
|
|
149
|
+
// -----------------------------------------------------------------------
|
|
150
|
+
case 'compute': {
|
|
151
|
+
if (operation.nativeEquality)
|
|
152
|
+
return [helper(`computation:strict-equality:dynamic-${operation.nativeEquality.primitive}`)];
|
|
153
|
+
if (operation.form === 'require-object-coercible')
|
|
154
|
+
return [helper('destructuring:RequireObjectCoercible')];
|
|
155
|
+
if (operation.form === 'unary' && operation.operator === 'ObjectTag') {
|
|
156
|
+
const operand = operation.operands[0];
|
|
157
|
+
return operand ? [helper(`computation:object-tag:${representationKey(operand.representation)}`)] : [];
|
|
158
|
+
}
|
|
159
|
+
if (operation.form === 'typeof') {
|
|
160
|
+
const operand = operation.operands[0];
|
|
161
|
+
return operand ? [helper(`computation:typeof:${representationKey(operand.representation)}`)] : [];
|
|
162
|
+
}
|
|
163
|
+
// `!x` runs the same `ToBoolean` a conditional's guard runs (`test`,
|
|
164
|
+
// below), censused under the identical key so a backend cannot claim
|
|
165
|
+
// truthiness for one and not the other.
|
|
166
|
+
if (operation.form === 'unary' && operation.operator === '!') {
|
|
167
|
+
const operand = operation.operands[0];
|
|
168
|
+
return operand ? [helper(`conversion:to-boolean:${operand.representation.kind}`)] : [];
|
|
169
|
+
}
|
|
170
|
+
// `in`/`instanceof` are certified by their own successor module.
|
|
171
|
+
// `binary`/`update`/`equality`/`template`/`require-iterable-present`/
|
|
172
|
+
// `require-tagged-union-arm` need no runtime-helper claim: a mixed-carrier
|
|
173
|
+
// coercion is now a `convert` op the spine already certifies through the
|
|
174
|
+
// conversion census, and the rest are physical-carrier operations the
|
|
175
|
+
// generic per-value `physical-cpp-type` check already covers.
|
|
176
|
+
return [];
|
|
177
|
+
}
|
|
178
|
+
// -----------------------------------------------------------------------
|
|
179
|
+
// Boolean and presence tests
|
|
180
|
+
// -----------------------------------------------------------------------
|
|
181
|
+
case 'test': {
|
|
182
|
+
// A test inside a proven-dead `typeof` guard's consequent never runs;
|
|
183
|
+
// censusing it would refuse a program over a helper nothing evaluates.
|
|
184
|
+
if (ctx.isDead(operation.lineage))
|
|
185
|
+
return [];
|
|
186
|
+
const carrier = operation.value.representation;
|
|
187
|
+
if (carrier.kind === 'unresolved')
|
|
188
|
+
return [];
|
|
189
|
+
// A boolean needs no `ToBoolean` -- it IS the answer -- but still needs a
|
|
190
|
+
// presence test like anything else, since being a boolean says nothing
|
|
191
|
+
// about being absent. `is-defined` shares `is-present`'s row: both are
|
|
192
|
+
// absence tests over the same carrier, just of `undefined` alone versus
|
|
193
|
+
// `null`-or-`undefined`, and the backend's rendering doesn't distinguish
|
|
194
|
+
// the two at the capability level -- only at which branch it takes.
|
|
195
|
+
if (operation.predicate === 'to-boolean' && carrier.kind === 'scalar' && carrier.domain === 'boolean')
|
|
196
|
+
return [];
|
|
197
|
+
const family = operation.predicate === 'to-boolean' ? 'to-boolean' : 'is-present';
|
|
198
|
+
return [helper(`conversion:${family}:${carrier.kind}`)];
|
|
199
|
+
}
|
|
200
|
+
// -----------------------------------------------------------------------
|
|
201
|
+
// Allocations
|
|
202
|
+
// -----------------------------------------------------------------------
|
|
203
|
+
case 'allocate-ordinary-object':
|
|
204
|
+
return [helper(`allocation:object-literal:${operation.result.representation.kind}`)];
|
|
205
|
+
case 'allocate-array-object': {
|
|
206
|
+
const semantic = ctx.semanticOperationOf(operation.lineage);
|
|
207
|
+
if (semantic?.family === 'allocation') {
|
|
208
|
+
const dynamicGather = operation.elements.some((element) => element.kind === 'gather');
|
|
209
|
+
return [helper(`allocation:array-literal:${operation.result.representation.kind}${dynamicGather ? '(dynamic-gather)' : ''}`)];
|
|
210
|
+
}
|
|
211
|
+
// An array-pattern rest ("[...tail]") allocates through this identical
|
|
212
|
+
// primitive; its capability is the SOURCE's own carrier (what the
|
|
213
|
+
// spread/gather element actually drains), matching
|
|
214
|
+
// `destructuring:rest-element`'s array-shaped row rather than
|
|
215
|
+
// `allocation:array-literal`'s -- see `runtime-helper-key.ts`'s own
|
|
216
|
+
// doc on why the two forms must not share a key.
|
|
217
|
+
if (semantic?.family === 'destructuring' && semantic.form === 'rest-element') {
|
|
218
|
+
const element = operation.elements[0];
|
|
219
|
+
const carrier = element?.kind === 'gather'
|
|
220
|
+
? element.iterator.representation.kind
|
|
221
|
+
: element?.kind === 'spread'
|
|
222
|
+
? element.value.representation.kind
|
|
223
|
+
: 'absent';
|
|
224
|
+
return [helper(`destructuring:rest-element:${carrier}`)];
|
|
225
|
+
}
|
|
226
|
+
// The array-pattern SOURCE step's Set/string snapshot fast path
|
|
227
|
+
// (`lowerArrayPatternSource`) also allocates through this primitive;
|
|
228
|
+
// keyed by its own published result, exactly as the `get-iterator` case
|
|
229
|
+
// above keys the source step's dynamic fast path.
|
|
230
|
+
if (semantic?.family === 'destructuring' && semantic.form === 'array-pattern') {
|
|
231
|
+
return [helper(`destructuring:array-pattern:${operation.result.representation.kind}`)];
|
|
232
|
+
}
|
|
233
|
+
// Every other caller (an empty-array conversion sentinel in
|
|
234
|
+
// `lower-narrow.ts`, a rest-parameter pack in `lower-operands.ts`) reuses
|
|
235
|
+
// this primitive for a capability already censused at its OWN site
|
|
236
|
+
// (a `conversion:*`/`call-abi:*` demand) -- raising `allocation:*` again
|
|
237
|
+
// here would ask for a claim nothing in the old census ever asked for.
|
|
238
|
+
return [];
|
|
239
|
+
}
|
|
240
|
+
case 'allocate-record': {
|
|
241
|
+
// `allocate-record` is the one allocation op that serves two DIFFERENT
|
|
242
|
+
// `allocated` buckets (an object literal's native layout and a tuple
|
|
243
|
+
// array literal's) -- the semantic operation's own field is the only
|
|
244
|
+
// way to tell them apart, exactly as `runtime-helper-key.ts` reads it.
|
|
245
|
+
// A destructuring rest's `{...rest}` (also built through this op) is
|
|
246
|
+
// deliberately excluded: its capability is raised from the sibling
|
|
247
|
+
// `get`/`spread-copy` ops that carry its SOURCE carrier, which this op
|
|
248
|
+
// does not.
|
|
249
|
+
const semantic = ctx.semanticOperationOf(operation.lineage);
|
|
250
|
+
if (semantic?.family !== 'allocation')
|
|
251
|
+
return [];
|
|
252
|
+
return [helper(`allocation:${semantic.allocated}:${operation.result.representation.kind}`)];
|
|
253
|
+
}
|
|
254
|
+
case 'allocate-callable':
|
|
255
|
+
return [helper(`allocation:function-object:${operation.result.representation.kind}`)];
|
|
256
|
+
// A bound function is still a `CallableObject`-shaped allocation -- the
|
|
257
|
+
// identical physical capability `allocate-callable` needs, regardless of
|
|
258
|
+
// which family's lowering (a `.bind()` call, a method value read into a
|
|
259
|
+
// receiver-less slot) asked for it.
|
|
260
|
+
case 'bind-callable':
|
|
261
|
+
return [helper(`allocation:function-object:${operation.result.representation.kind}`)];
|
|
262
|
+
case 'allocate-constructor':
|
|
263
|
+
return [helper(`allocation:class-constructor-object:${operation.result.representation.kind}`)];
|
|
264
|
+
// Never actually lowered today (`ir/build.ts`'s `allocateProxy` has no
|
|
265
|
+
// caller) -- there is consequently no OLD key to reproduce for it. Named
|
|
266
|
+
// for consistency with every other allocation op, so the day a `new
|
|
267
|
+
// Proxy(...)` lowering exists it certifies against a key already wired
|
|
268
|
+
// rather than a silently-missing one.
|
|
269
|
+
case 'allocate-proxy':
|
|
270
|
+
return [helper(`allocation:proxy:${operation.result.representation.kind}`)];
|
|
271
|
+
case 'allocate-regexp':
|
|
272
|
+
return [helper(`allocation:regexp-object:${operation.result.representation.kind}(${regexpFlagSupportKeyOf(operation.flags)})`)];
|
|
273
|
+
case 'allocate-template-object':
|
|
274
|
+
// `templateObjectCapabilityKeyOf` already returns the complete,
|
|
275
|
+
// prefixed key (`representationKey`, not the bare `.kind`) -- the one
|
|
276
|
+
// allocation whose capability depends on the FULL structural identity
|
|
277
|
+
// of its carrier, not just its outer constructor.
|
|
278
|
+
return [helper(templateObjectCapabilityKeyOf(operation.result.representation))];
|
|
279
|
+
// -----------------------------------------------------------------------
|
|
280
|
+
// Elements
|
|
281
|
+
// -----------------------------------------------------------------------
|
|
282
|
+
case 'element':
|
|
283
|
+
return [helper(`element:${operation.form}`)];
|
|
284
|
+
// -----------------------------------------------------------------------
|
|
285
|
+
// Control, boundary, dynamic-language: the manifest claims every row in
|
|
286
|
+
// these three families outright (`currentCppRuntimeCapabilities`'s
|
|
287
|
+
// `control:*`/`boundary:*` rows), so nothing here can ever refuse. The
|
|
288
|
+
// mapping is therefore kept approximate rather than exhaustively precise:
|
|
289
|
+
// `dynamic-language:*` is omitted entirely because no IR primitive lowers
|
|
290
|
+
// a `dynamic-import`/`direct-eval` operation yet (any program using one
|
|
291
|
+
// is refused earlier, at lowering, and never reaches this walk), and
|
|
292
|
+
// `boundary:async-resume`/`boundary:generator-resume` are attributed to
|
|
293
|
+
// the `await`/`yield` operation that is their actual resume point rather
|
|
294
|
+
// than to a dedicated `BoundaryOperation` the old census could never
|
|
295
|
+
// reach either (it publishes no result, so `buildRuntimeHelperObligation`
|
|
296
|
+
// never anchored on it).
|
|
297
|
+
// -----------------------------------------------------------------------
|
|
298
|
+
case 'branch': {
|
|
299
|
+
const semantic = ctx.semanticOperationOf(operation.lineage);
|
|
300
|
+
if (semantic?.family !== 'control')
|
|
301
|
+
return [];
|
|
302
|
+
// A head-tested loop is the one control form not decided by its name
|
|
303
|
+
// alone: `lowerControl` builds it out of the guard's own blocks only
|
|
304
|
+
// when a condition operand exists, so the key follows that same fact.
|
|
305
|
+
if (semantic.form === 'loop')
|
|
306
|
+
return [helper(operandOf(semantic, 'condition', 0) ? 'control:loop' : 'control:loop:iteration')];
|
|
307
|
+
return [helper(`control:${semantic.form}`)];
|
|
308
|
+
}
|
|
309
|
+
case 'await':
|
|
310
|
+
return [helper('control:await'), helper('boundary:async-resume')];
|
|
311
|
+
case 'yield':
|
|
312
|
+
return [helper('control:yield'), helper('boundary:generator-resume')];
|
|
313
|
+
case 'return':
|
|
314
|
+
return [helper('control:return')];
|
|
315
|
+
case 'throw':
|
|
316
|
+
return [helper('control:throw')];
|
|
317
|
+
case 'switch':
|
|
318
|
+
return [helper('control:switch')];
|
|
319
|
+
default:
|
|
320
|
+
return [];
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
export const runtimeHelperKeysOf = (operation, ctx) => {
|
|
324
|
+
const demands = ownKindDemandsOf(operation, ctx);
|
|
325
|
+
return tryEntryFirstOperationsOf(ctx.body).has(operation) ? [...demands, helper('boundary:exception-region')] : demands;
|
|
326
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { RepresentationDeriver } from '../../representation/derive.js';
|
|
2
|
+
import type { Representation } from '../../representation/model.js';
|
|
3
|
+
import type { SealedRepresentationPlan } from '../../representation/plan.js';
|
|
4
|
+
import type { SemanticOperation } from '../../semantics/model/operations.js';
|
|
5
|
+
/**
|
|
6
|
+
* The exact carrier `typeof` will receive at lowering time.
|
|
7
|
+
*
|
|
8
|
+
* Results take their representation from the sealed plan; constants and
|
|
9
|
+
* `null` publish no result, so their carrier must be derived from the
|
|
10
|
+
* operand's own type. Keeping that split here gives the manifest and the
|
|
11
|
+
* obligation census one authoritative operand set instead of letting either
|
|
12
|
+
* silently substitute the `typeof` result (which is always a string).
|
|
13
|
+
*/
|
|
14
|
+
export declare const typeofOperandRepresentationOf: (operation: SemanticOperation, plan: SealedRepresentationPlan, deriver: RepresentationDeriver) => Representation | undefined;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { operandOf } from '../../semantics/model/operands.js';
|
|
2
|
+
/**
|
|
3
|
+
* The exact carrier `typeof` will receive at lowering time.
|
|
4
|
+
*
|
|
5
|
+
* Results take their representation from the sealed plan; constants and
|
|
6
|
+
* `null` publish no result, so their carrier must be derived from the
|
|
7
|
+
* operand's own type. Keeping that split here gives the manifest and the
|
|
8
|
+
* obligation census one authoritative operand set instead of letting either
|
|
9
|
+
* silently substitute the `typeof` result (which is always a string).
|
|
10
|
+
*/
|
|
11
|
+
export const typeofOperandRepresentationOf = (operation, plan, deriver) => {
|
|
12
|
+
const operand = operandOf(operation, 'operand');
|
|
13
|
+
if (!operand)
|
|
14
|
+
return undefined;
|
|
15
|
+
return operand.source.kind === 'result' ? plan.selected.get(operand.source.result) : deriver.derive(operand.type);
|
|
16
|
+
};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { ConversionCensus } from '../conversion/nodes.js';
|
|
2
|
+
import type { DeclarationId, IrValueId, SemanticResultId } from '../identity/ids.js';
|
|
3
|
+
import type { TargetRuntimeManifest } from '../preflight/obligations.js';
|
|
4
|
+
import type { ClassLayout } from '../projection/classes.js';
|
|
5
|
+
import type { RepresentationDeriver } from '../representation/derive.js';
|
|
6
|
+
import type { BindingPlacement } from '../projection/bindings.js';
|
|
7
|
+
import type { SemanticGraph } from '../semantics/model/graph.js';
|
|
8
|
+
import type { SemanticOperation } from '../semantics/model/operations.js';
|
|
9
|
+
import type { DeadTypeofGuardCensus } from '../semantics/normalize/dead-typeof-guards.js';
|
|
10
|
+
import type { IrLoweringBlocker } from './lower.js';
|
|
11
|
+
import type { SlotDrift } from './lower-operands.js';
|
|
12
|
+
import { type IrBody, type IrOperation } from './model.js';
|
|
13
|
+
import type { PhysicalBodyId } from '../identity/ids.js';
|
|
14
|
+
import type { Refusal } from './refusal.js';
|
|
15
|
+
import type { ReflectionExposure } from './reflection-demand.js';
|
|
16
|
+
/**
|
|
17
|
+
* Certification of the lowered IR.
|
|
18
|
+
*
|
|
19
|
+
* Preflight certified a program by predicting, from the semantic graph and
|
|
20
|
+
* the plan, what lowering and the printer would do with it: seven builders
|
|
21
|
+
* re-derived slots, receivers and key literalness so they could ask the
|
|
22
|
+
* manifest the question the printer would later ask. This walks the IR that
|
|
23
|
+
* lowering actually built. Every operation states its operands' carriers,
|
|
24
|
+
* every `convert` cites the census node it applies, every allocation names
|
|
25
|
+
* its captures -- so each capability the printer will need is a function of
|
|
26
|
+
* the operation alone, spelled once here in the manifest's own vocabulary
|
|
27
|
+
* and looked up in the manifest's own sets. The certificate is the empty
|
|
28
|
+
* refusal list.
|
|
29
|
+
*
|
|
30
|
+
* One namespace. A key is `${family}:${discriminator}`; the family names the
|
|
31
|
+
* manifest set the discriminator is a member of (`property-access` ->
|
|
32
|
+
* `propertyRecipes`, `runtime-helper` -> `runtimeHelpers`, ...), or the
|
|
33
|
+
* census that answers it (`conversion` -> the conversion census by node id).
|
|
34
|
+
* A refusal anywhere in the compiler that names a key outside this union is
|
|
35
|
+
* a type error, which is what closes the gap `scripts/refusal-keys.mjs`
|
|
36
|
+
* measures.
|
|
37
|
+
*/
|
|
38
|
+
export declare const capabilityFamilies: readonly ["physical-cpp-type", "call-abi", "host-invocation", "host-member-call", "property-access", "capture", "conversion", "native-boundary", "runtime-helper", "abrupt-edge"];
|
|
39
|
+
export type CapabilityFamily = (typeof capabilityFamilies)[number];
|
|
40
|
+
export type CapabilityKey = `${CapabilityFamily}:${string}`;
|
|
41
|
+
export type CapabilityVerdict = 'installed' | 'missing' | 'unsupported';
|
|
42
|
+
/**
|
|
43
|
+
* One capability an operation needs. `verdict` is stated by the family only
|
|
44
|
+
* for a capability the manifest publishes no set for -- a physical type,
|
|
45
|
+
* which is a predicate over a carrier rather than a member of a finite set,
|
|
46
|
+
* or an `Atomics` member whose admissible argument shapes the target decides
|
|
47
|
+
* by rule. Every other demand is decided by `verdictOf` from the key alone.
|
|
48
|
+
*/
|
|
49
|
+
export interface CapabilityDemand {
|
|
50
|
+
readonly key: CapabilityKey;
|
|
51
|
+
readonly verdict?: CapabilityVerdict;
|
|
52
|
+
/** Why, when the family already knows the verdict is not `installed`. */
|
|
53
|
+
readonly detail?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface CertifyInput {
|
|
56
|
+
readonly reflection?: ReflectionExposure;
|
|
57
|
+
readonly bodies: ReadonlyMap<PhysicalBodyId, IrBody>;
|
|
58
|
+
/**
|
|
59
|
+
* Where each declaration's cell physically lives, which is the only place a
|
|
60
|
+
* CAPTURED declaration's carrier is stated -- a capture names a cell, not an
|
|
61
|
+
* SSA value, so the body's own value index cannot answer what it carries.
|
|
62
|
+
*/
|
|
63
|
+
readonly placements: ReadonlyMap<DeclarationId, BindingPlacement>;
|
|
64
|
+
/**
|
|
65
|
+
* The slots lowering could not fill (`LoweringProgram.drift`). Each is a
|
|
66
|
+
* (source, slot) pair the census answered `never` for, handed through
|
|
67
|
+
* unconverted so the printer's own chain could try -- the transition
|
|
68
|
+
* the move of program facts into the IR licensed. Certification does not
|
|
69
|
+
* license it: an operand in a carrier its slot does not hold is a missing
|
|
70
|
+
* conversion whatever the printer later manages, and it is refused here by
|
|
71
|
+
* the pair's own key so the census gap is named where it can be closed.
|
|
72
|
+
*/
|
|
73
|
+
readonly slotDrift: readonly SlotDrift[];
|
|
74
|
+
/**
|
|
75
|
+
* The bodies lowering could not build (`IrLoweringResult.blocked`). They
|
|
76
|
+
* are not in `bodies`, so the walk never sees them; a program with one is
|
|
77
|
+
* not certified, whatever the walk found in the bodies that did lower.
|
|
78
|
+
* The rows themselves stay `lower`-stage refusals (`refusalsOf`), not
|
|
79
|
+
* duplicated here.
|
|
80
|
+
*/
|
|
81
|
+
readonly blocked: readonly IrLoweringBlocker[];
|
|
82
|
+
readonly manifest: TargetRuntimeManifest;
|
|
83
|
+
readonly conversions: ConversionCensus;
|
|
84
|
+
readonly deriver: RepresentationDeriver;
|
|
85
|
+
readonly classes: ReadonlyMap<DeclarationId, ClassLayout>;
|
|
86
|
+
/** Ambient value declarations rendered as `extern` references (`frontend.externalBindings`). */
|
|
87
|
+
readonly externalBindings: ReadonlySet<DeclarationId>;
|
|
88
|
+
readonly deadTypeofGuards: DeadTypeofGuardCensus;
|
|
89
|
+
/**
|
|
90
|
+
* The semantic graph, reached only through `operationOfResult(lineage)`.
|
|
91
|
+
* Two whole-program facts the property families need (a callable's
|
|
92
|
+
* `.call`/`.apply`/`.bind` resolution, a class's lifecycle census) are still
|
|
93
|
+
* derived from the graph rather than carried on the IR; Phase 3's
|
|
94
|
+
* `CallOperation.target` moves the first onto the operation, and this
|
|
95
|
+
* field goes with it.
|
|
96
|
+
*/
|
|
97
|
+
readonly graph: SemanticGraph;
|
|
98
|
+
}
|
|
99
|
+
/** What the families see: the whole-program inputs plus the body being walked. */
|
|
100
|
+
export interface CertifyContext extends CertifyInput {
|
|
101
|
+
readonly body: IrBody;
|
|
102
|
+
/** The operation that defines an SSA value in this body, so a family can ask whether a key is a constant. */
|
|
103
|
+
readonly definitionOf: (value: IrValueId) => IrOperation | null;
|
|
104
|
+
readonly semanticOperationOf: (lineage: SemanticResultId) => SemanticOperation | null;
|
|
105
|
+
/** Whether the semantic operation this IR operation lowers sits in a proven-dead `typeof` guard consequent. */
|
|
106
|
+
readonly isDead: (lineage: SemanticResultId) => boolean;
|
|
107
|
+
}
|
|
108
|
+
export interface IrCertification {
|
|
109
|
+
readonly certified: boolean;
|
|
110
|
+
readonly refusals: readonly Refusal[];
|
|
111
|
+
/** Every key any operation demanded, deduplicated and sorted -- the census of what this program asks of the target. */
|
|
112
|
+
readonly demanded: readonly CapabilityKey[];
|
|
113
|
+
}
|
|
114
|
+
export declare const familyOf: (key: CapabilityKey) => CapabilityFamily;
|
|
115
|
+
export declare const isCapabilityKey: (key: string) => key is CapabilityKey;
|
|
116
|
+
/** Every capability one operation needs, in the manifest's namespace. */
|
|
117
|
+
export declare const capabilityKeysOf: (operation: IrOperation, ctx: CertifyContext) => readonly CapabilityDemand[];
|
|
118
|
+
/**
|
|
119
|
+
* Walks every body and decides every demand. One refusal per (owner, key):
|
|
120
|
+
* the same missing recipe demanded at forty sites of one function is one
|
|
121
|
+
* capability the target lacks, not forty, and the row names which.
|
|
122
|
+
*/
|
|
123
|
+
export declare const certifyIr: (input: CertifyInput) => IrCertification;
|