@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,4 @@
|
|
|
1
|
+
import type { Representation } from '../../representation/model.js';
|
|
2
|
+
export declare const cppErrorNativeType = "gea::runtime::Error";
|
|
3
|
+
export declare const errorConstructorNames: ReadonlyMap<string, string>;
|
|
4
|
+
export declare const isNativeError: (carrier: Representation) => boolean;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const cppErrorNativeType = 'gea::runtime::Error';
|
|
2
|
+
export const errorConstructorNames = new Map([
|
|
3
|
+
['ErrorConstructor', 'Error'],
|
|
4
|
+
['EvalErrorConstructor', 'EvalError'],
|
|
5
|
+
['RangeErrorConstructor', 'RangeError'],
|
|
6
|
+
['ReferenceErrorConstructor', 'ReferenceError'],
|
|
7
|
+
['SyntaxErrorConstructor', 'SyntaxError'],
|
|
8
|
+
['TypeErrorConstructor', 'TypeError'],
|
|
9
|
+
['URIErrorConstructor', 'URIError']
|
|
10
|
+
]);
|
|
11
|
+
export const isNativeError = (carrier) => carrier.kind === 'native-record-ref' && carrier.native === cppErrorNativeType && carrier.ownership === 'shared-refcount';
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { IrValueId } from '../../identity/ids.js';
|
|
2
|
+
import { type GetOperation, type IrBody } from '../../ir/model.js';
|
|
3
|
+
/**
|
|
4
|
+
* Which deferred `Function.prototype.toString` shape a GET is.
|
|
5
|
+
*
|
|
6
|
+
* `'direct'` is a single callable receiver reading its own source
|
|
7
|
+
* (`emit-properties.ts`); `'union'` is a tagged union with a
|
|
8
|
+
* `function-value-dispatch` arm dispatching across itself and the union's
|
|
9
|
+
* other, string-typed arms (`emit-union-properties.ts`, the `string |
|
|
10
|
+
* Function` shape `request.ts`'s own `Result<T>` produces). A closed
|
|
11
|
+
* two-member union rather than a boolean because the two SPELLINGS differ --
|
|
12
|
+
* one snapshot of the receiver's own callable type versus one of the whole
|
|
13
|
+
* union's type, feeding a per-arm dispatch -- even though the FACT question,
|
|
14
|
+
* "does this GET need a snapshot before the call that follows can read a
|
|
15
|
+
* source string out of it", is one question both renderers ask.
|
|
16
|
+
*/
|
|
17
|
+
export type FunctionSourceReadClaim = 'direct' | 'union';
|
|
18
|
+
/**
|
|
19
|
+
* The claim: is this GET a deferred function-source read, and of which
|
|
20
|
+
* shape.
|
|
21
|
+
*
|
|
22
|
+
* The ONE function with exactly two callers per
|
|
23
|
+
* the single-census architecture rule -- `functionSourceReadsOf`'s
|
|
24
|
+
* prepass walk below, and the two renderers (`emit-properties.ts`,
|
|
25
|
+
* `emit-union-properties.ts`) that ask it again as the gate for the branch
|
|
26
|
+
* that used to duplicate this same test inline. Both callers pass
|
|
27
|
+
* `ctx.staticKeyTexts`, never `ctx.constantTexts`: the latter is empty during
|
|
28
|
+
* the prepass and, at render time, additionally carries the `typeof`-fold
|
|
29
|
+
* results the render mints as it goes, which must never be treated as a
|
|
30
|
+
* property key the program actually wrote (`emit-context.ts`'s own doc on
|
|
31
|
+
* `staticKeyTexts` explains why every claim of this shape asks it instead).
|
|
32
|
+
*/
|
|
33
|
+
export declare const functionSourceReadClaimOf: (staticKeyTexts: ReadonlyMap<IrValueId, string>, operation: GetOperation) => FunctionSourceReadClaim | null;
|
|
34
|
+
/** The settled answer for one body: every function-source-read GET's snapshot name, and the text its call reads. */
|
|
35
|
+
export interface FunctionSourceReadCensus {
|
|
36
|
+
readonly names: ReadonlyMap<IrValueId, string>;
|
|
37
|
+
readonly reads: ReadonlyMap<IrValueId, string>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Every deferred function-source read in this body, settled before anything
|
|
41
|
+
* renders.
|
|
42
|
+
*
|
|
43
|
+
* Walk order is `body.blockOrder` then `allOperationsOf(block)` (operations,
|
|
44
|
+
* then the block's terminator) -- the printer's own block loop
|
|
45
|
+
* (`emit.ts`: `for (const blockId of body.blockOrder)`), so the ordinal this
|
|
46
|
+
* mints matches the order the GETs would be reached in if every block in
|
|
47
|
+
* `blockOrder` rendered unconditionally. That is deliberately NOT the same
|
|
48
|
+
* as "the order the printer actually visits", because the printer also
|
|
49
|
+
* drops blocks a reachability pass proves dead before the first one renders
|
|
50
|
+
* (`emit.ts`'s local BFS inside its label pass) -- exactly like the other
|
|
51
|
+
* prepass censuses beside this one in this file's neighborhood
|
|
52
|
+
* (`virtualCalleesOf`, `unionMethodReadsOf`, the direct-callee walk in
|
|
53
|
+
* `emit.ts`), none of which filter for reachability either. A `toString`
|
|
54
|
+
* read of a callable inside genuinely dead code is rare enough, and each of
|
|
55
|
+
* those siblings has carried the same gap since it was settled, that this
|
|
56
|
+
* walk matches its neighbors rather than inventing a different, one-off
|
|
57
|
+
* answer to a question none of them ask.
|
|
58
|
+
*
|
|
59
|
+
* What this replaces: two writers (`emit-properties.ts`,
|
|
60
|
+
* `emit-union-properties.ts`) minted a name off ONE shared counter --
|
|
61
|
+
* `` `gea_function_source_${ctx.functionSourceReads.size}` `` and
|
|
62
|
+
* `` `gea_union_to_string_source_${ctx.functionSourceReads.size}` `` -- AT
|
|
63
|
+
* THE RENDER SITE. That counted however many claims had already been
|
|
64
|
+
* SPELLED by the time a given GET's line was about to print, which is a
|
|
65
|
+
* property of the render (which branch got there first, whether an
|
|
66
|
+
* unrelated later change made some path stop reaching a GET this walk still
|
|
67
|
+
* sees), not of the program. One counter across both claim kinds is kept
|
|
68
|
+
* here for the same reason it was fine to share before: the two prefixes
|
|
69
|
+
* never collide, and there is no reason for them to interleave differently
|
|
70
|
+
* than they used to.
|
|
71
|
+
*/
|
|
72
|
+
export declare const functionSourceReadsOf: (staticKeyTexts: ReadonlyMap<IrValueId, string>, body: IrBody) => FunctionSourceReadCensus;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { allOperationsOf } from '../../ir/model.js';
|
|
2
|
+
import { dispatchedLeafExpression, unionPropertyLeaves } from './emit-union-properties.js';
|
|
3
|
+
const directCallableKinds = new Set([
|
|
4
|
+
'function',
|
|
5
|
+
'function-family',
|
|
6
|
+
'function-value-dispatch',
|
|
7
|
+
'function-and-constructor'
|
|
8
|
+
]);
|
|
9
|
+
/**
|
|
10
|
+
* Whether every arm of a tagged union can spell a source string: a `string`
|
|
11
|
+
* arm returns itself, a `dynamic(untyped-callable)` arm asks the call table
|
|
12
|
+
* it retained for the source text it captured when the callable was boxed.
|
|
13
|
+
* Any other arm (a number, a record, ...) has no such spelling, and the
|
|
14
|
+
* whole union is refused by whichever caller finds no claim here -- exactly
|
|
15
|
+
* as an arm this file's `taggedUnionGetText` cannot reconcile refuses the
|
|
16
|
+
* WHOLE union rather than silently dropping one arm's read.
|
|
17
|
+
*
|
|
18
|
+
* Pure in the representation alone: `unionPropertyLeaves` is asked with the
|
|
19
|
+
* placeholder text `''`, because only each leaf's REPRESENTATION KIND
|
|
20
|
+
* decides viability here. The real, receiver-derived text is a render-time
|
|
21
|
+
* detail neither caller of `functionSourceReadClaimOf` needs in order to
|
|
22
|
+
* answer this question, and threading a real name through just to throw it
|
|
23
|
+
* away would make this predicate depend on something it does not need.
|
|
24
|
+
*/
|
|
25
|
+
const everyArmHasFunctionSourceText = (receiver) => {
|
|
26
|
+
const leaves = unionPropertyLeaves(receiver, '');
|
|
27
|
+
return (leaves.length > 0 &&
|
|
28
|
+
leaves.every((leaf) => leaf.representation.kind === 'string' ||
|
|
29
|
+
(leaf.representation.kind === 'dynamic' && leaf.representation.reason === 'untyped-callable')));
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* The claim: is this GET a deferred function-source read, and of which
|
|
33
|
+
* shape.
|
|
34
|
+
*
|
|
35
|
+
* The ONE function with exactly two callers per
|
|
36
|
+
* the single-census architecture rule -- `functionSourceReadsOf`'s
|
|
37
|
+
* prepass walk below, and the two renderers (`emit-properties.ts`,
|
|
38
|
+
* `emit-union-properties.ts`) that ask it again as the gate for the branch
|
|
39
|
+
* that used to duplicate this same test inline. Both callers pass
|
|
40
|
+
* `ctx.staticKeyTexts`, never `ctx.constantTexts`: the latter is empty during
|
|
41
|
+
* the prepass and, at render time, additionally carries the `typeof`-fold
|
|
42
|
+
* results the render mints as it goes, which must never be treated as a
|
|
43
|
+
* property key the program actually wrote (`emit-context.ts`'s own doc on
|
|
44
|
+
* `staticKeyTexts` explains why every claim of this shape asks it instead).
|
|
45
|
+
*/
|
|
46
|
+
export const functionSourceReadClaimOf = (staticKeyTexts, operation) => {
|
|
47
|
+
if (staticKeyTexts.get(operation.key.value) !== 'toString')
|
|
48
|
+
return null;
|
|
49
|
+
const receiver = operation.receiver.representation;
|
|
50
|
+
if (directCallableKinds.has(receiver.kind))
|
|
51
|
+
return 'direct';
|
|
52
|
+
if (receiver.kind === 'tagged-union' &&
|
|
53
|
+
operation.result.representation.kind === 'function-value-dispatch' &&
|
|
54
|
+
everyArmHasFunctionSourceText(receiver)) {
|
|
55
|
+
return 'union';
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* The exact C++ expression the following call reads a source string from,
|
|
61
|
+
* for a claim already proved viable by `functionSourceReadClaimOf`.
|
|
62
|
+
*
|
|
63
|
+
* Depends only on the claim kind, the receiver's representation and the
|
|
64
|
+
* snapshot's own name -- never on `operandText` or any other render-time
|
|
65
|
+
* value name -- which is what makes it safe to settle in the prepass
|
|
66
|
+
* alongside the name itself, rather than at the GET's render position where
|
|
67
|
+
* the ordering-sensitive DECLARATION and ASSIGNMENT still have to happen
|
|
68
|
+
* (see `emit-properties.ts`/`emit-union-properties.ts`: a following call
|
|
69
|
+
* argument may replace the binding the receiver came from, so the snapshot
|
|
70
|
+
* must be assigned before that argument runs -- but the STRING this
|
|
71
|
+
* expression reads out of the snapshot afterwards does not care when it was
|
|
72
|
+
* decided).
|
|
73
|
+
*/
|
|
74
|
+
const functionSourceReadTextOf = (claim, receiver, name) => {
|
|
75
|
+
if (claim === 'direct')
|
|
76
|
+
return `std::string(${name}.sourceText())`;
|
|
77
|
+
const leaves = unionPropertyLeaves(receiver, name);
|
|
78
|
+
const texts = leaves.map((leaf) => {
|
|
79
|
+
if (leaf.representation.kind === 'string')
|
|
80
|
+
return `std::string(${leaf.text})`;
|
|
81
|
+
if (leaf.representation.kind === 'dynamic' && leaf.representation.reason === 'untyped-callable')
|
|
82
|
+
return `std::string(${leaf.text}.functionSourceText())`;
|
|
83
|
+
return null;
|
|
84
|
+
});
|
|
85
|
+
// `functionSourceReadClaimOf` already proved every leaf has one of the two
|
|
86
|
+
// shapes above (`everyArmHasFunctionSourceText`) before minting this
|
|
87
|
+
// claim, and a non-empty leaf list, so this cannot actually be `null`. The
|
|
88
|
+
// check stays as a fail-closed guard rather than a cast: a future leaf
|
|
89
|
+
// kind added to one side of that proof and not this one must refuse
|
|
90
|
+
// loudly, not silently print a wrong dispatch.
|
|
91
|
+
const dispatched = texts.every((text) => text !== null) ? dispatchedLeafExpression(leaves, texts) : null;
|
|
92
|
+
if (dispatched === null)
|
|
93
|
+
throw new Error(`function-source-reads: 'union' claim proved viable but its dispatch text did not materialize for ${name}`);
|
|
94
|
+
return dispatched;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Every deferred function-source read in this body, settled before anything
|
|
98
|
+
* renders.
|
|
99
|
+
*
|
|
100
|
+
* Walk order is `body.blockOrder` then `allOperationsOf(block)` (operations,
|
|
101
|
+
* then the block's terminator) -- the printer's own block loop
|
|
102
|
+
* (`emit.ts`: `for (const blockId of body.blockOrder)`), so the ordinal this
|
|
103
|
+
* mints matches the order the GETs would be reached in if every block in
|
|
104
|
+
* `blockOrder` rendered unconditionally. That is deliberately NOT the same
|
|
105
|
+
* as "the order the printer actually visits", because the printer also
|
|
106
|
+
* drops blocks a reachability pass proves dead before the first one renders
|
|
107
|
+
* (`emit.ts`'s local BFS inside its label pass) -- exactly like the other
|
|
108
|
+
* prepass censuses beside this one in this file's neighborhood
|
|
109
|
+
* (`virtualCalleesOf`, `unionMethodReadsOf`, the direct-callee walk in
|
|
110
|
+
* `emit.ts`), none of which filter for reachability either. A `toString`
|
|
111
|
+
* read of a callable inside genuinely dead code is rare enough, and each of
|
|
112
|
+
* those siblings has carried the same gap since it was settled, that this
|
|
113
|
+
* walk matches its neighbors rather than inventing a different, one-off
|
|
114
|
+
* answer to a question none of them ask.
|
|
115
|
+
*
|
|
116
|
+
* What this replaces: two writers (`emit-properties.ts`,
|
|
117
|
+
* `emit-union-properties.ts`) minted a name off ONE shared counter --
|
|
118
|
+
* `` `gea_function_source_${ctx.functionSourceReads.size}` `` and
|
|
119
|
+
* `` `gea_union_to_string_source_${ctx.functionSourceReads.size}` `` -- AT
|
|
120
|
+
* THE RENDER SITE. That counted however many claims had already been
|
|
121
|
+
* SPELLED by the time a given GET's line was about to print, which is a
|
|
122
|
+
* property of the render (which branch got there first, whether an
|
|
123
|
+
* unrelated later change made some path stop reaching a GET this walk still
|
|
124
|
+
* sees), not of the program. One counter across both claim kinds is kept
|
|
125
|
+
* here for the same reason it was fine to share before: the two prefixes
|
|
126
|
+
* never collide, and there is no reason for them to interleave differently
|
|
127
|
+
* than they used to.
|
|
128
|
+
*/
|
|
129
|
+
export const functionSourceReadsOf = (staticKeyTexts, body) => {
|
|
130
|
+
const names = new Map();
|
|
131
|
+
const reads = new Map();
|
|
132
|
+
for (const blockId of body.blockOrder) {
|
|
133
|
+
const block = body.blocks.get(blockId);
|
|
134
|
+
if (!block)
|
|
135
|
+
continue;
|
|
136
|
+
for (const operation of allOperationsOf(block)) {
|
|
137
|
+
if (operation.kind !== 'get')
|
|
138
|
+
continue;
|
|
139
|
+
const claim = functionSourceReadClaimOf(staticKeyTexts, operation);
|
|
140
|
+
if (claim === null)
|
|
141
|
+
continue;
|
|
142
|
+
const name = `${claim === 'direct' ? 'gea_function_source_' : 'gea_union_to_string_source_'}${names.size}`;
|
|
143
|
+
names.set(operation.result.id, name);
|
|
144
|
+
reads.set(operation.result.id, functionSourceReadTextOf(claim, operation.receiver.representation, name));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return { names, reads };
|
|
148
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Representation } from '../../../representation/model.js';
|
|
2
|
+
/**
|
|
3
|
+
* The complete Atomics surface the C++ backend can render. This is deliberately
|
|
4
|
+
* representation-aware: the host-member table grants a syntactic member read,
|
|
5
|
+
* while this authority decides whether that particular call has an emitter.
|
|
6
|
+
* Preflight and emission consume this same predicate so neither can claim a
|
|
7
|
+
* dynamic, non-shared, float, or unsupported wait/notify call is available.
|
|
8
|
+
*/
|
|
9
|
+
export type AtomicsCallSupport = {
|
|
10
|
+
readonly supported: true;
|
|
11
|
+
readonly kind: 'is-lock-free';
|
|
12
|
+
readonly runtimeMember: null;
|
|
13
|
+
} | {
|
|
14
|
+
readonly supported: true;
|
|
15
|
+
readonly kind: 'fixed';
|
|
16
|
+
readonly runtimeMember: string;
|
|
17
|
+
} | {
|
|
18
|
+
readonly supported: true;
|
|
19
|
+
readonly kind: 'wait' | 'notify';
|
|
20
|
+
readonly runtimeMember: null;
|
|
21
|
+
} | {
|
|
22
|
+
readonly supported: false;
|
|
23
|
+
readonly reason: string;
|
|
24
|
+
};
|
|
25
|
+
export declare const atomicsCallSupport: (member: string, arguments_: readonly Representation[]) => AtomicsCallSupport;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
const integerElements = new Set(['int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32']);
|
|
2
|
+
const fixedMembers = new Map([
|
|
3
|
+
['load', [2, 'load']],
|
|
4
|
+
['store', [3, 'store']],
|
|
5
|
+
['add', [3, 'add']],
|
|
6
|
+
['sub', [3, 'sub']],
|
|
7
|
+
['and', [3, 'bitAnd']],
|
|
8
|
+
['or', [3, 'bitOr']],
|
|
9
|
+
['xor', [3, 'bitXor']],
|
|
10
|
+
['exchange', [3, 'exchange']],
|
|
11
|
+
['compareExchange', [4, 'compareExchange']]
|
|
12
|
+
]);
|
|
13
|
+
const isNumber = (representation) => representation?.kind === 'scalar' && representation.domain === 'number';
|
|
14
|
+
const numberedArguments = (member, arguments_, count) => {
|
|
15
|
+
for (let position = 1; position < count; position += 1) {
|
|
16
|
+
if (!isNumber(arguments_[position])) {
|
|
17
|
+
return { supported: false, reason: `Atomics.${member} argument ${position + 1} must be a statically numeric carrier` };
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
};
|
|
22
|
+
export const atomicsCallSupport = (member, arguments_) => {
|
|
23
|
+
if (member === 'isLockFree') {
|
|
24
|
+
if (arguments_.length !== 1)
|
|
25
|
+
return { supported: false, reason: 'Atomics.isLockFree takes exactly one size argument' };
|
|
26
|
+
return isNumber(arguments_[0])
|
|
27
|
+
? { supported: true, kind: 'is-lock-free', runtimeMember: null }
|
|
28
|
+
: { supported: false, reason: 'Atomics.isLockFree argument 1 must be a statically numeric carrier' };
|
|
29
|
+
}
|
|
30
|
+
const view = arguments_[0];
|
|
31
|
+
if (view?.kind !== 'typed-array') {
|
|
32
|
+
return { supported: false, reason: `Atomics.${member} requires a concrete typed-array carrier, never an any/dynamic value` };
|
|
33
|
+
}
|
|
34
|
+
if (!integerElements.has(view.element)) {
|
|
35
|
+
return {
|
|
36
|
+
supported: false,
|
|
37
|
+
reason: `Atomics.${member} requires an integer Number typed array; ${view.element} is refused (BigInt arrays have no native BigInt carrier)`
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
if (view.buffer !== 'shared-array-buffer') {
|
|
41
|
+
return {
|
|
42
|
+
supported: false,
|
|
43
|
+
reason: `Atomics.${member} requires a SharedArrayBuffer-backed view; this ${view.element} view is backed by ArrayBuffer`
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const fixed = fixedMembers.get(member);
|
|
47
|
+
if (fixed) {
|
|
48
|
+
if (arguments_.length !== fixed[0])
|
|
49
|
+
return { supported: false, reason: `Atomics.${member} takes exactly ${fixed[0]} arguments` };
|
|
50
|
+
return numberedArguments(member, arguments_, fixed[0]) ?? { supported: true, kind: 'fixed', runtimeMember: fixed[1] };
|
|
51
|
+
}
|
|
52
|
+
if (member !== 'wait' && member !== 'notify')
|
|
53
|
+
return { supported: false, reason: `Atomics.${member} is not implemented` };
|
|
54
|
+
if (view.element !== 'int32') {
|
|
55
|
+
return { supported: false, reason: `Atomics.${member} is available only for Int32Array; BigInt64Array is deliberately unsupported` };
|
|
56
|
+
}
|
|
57
|
+
const count = arguments_.length;
|
|
58
|
+
if (member === 'wait' && (count < 3 || count > 4))
|
|
59
|
+
return { supported: false, reason: 'Atomics.wait takes three or four arguments' };
|
|
60
|
+
if (member === 'notify' && (count < 2 || count > 3))
|
|
61
|
+
return { supported: false, reason: 'Atomics.notify takes two or three arguments' };
|
|
62
|
+
return numberedArguments(member, arguments_, count) ?? { supported: true, kind: member, runtimeMember: null };
|
|
63
|
+
};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ECMAScript/WHATWG GLOBAL FUNCTIONS this backend implements itself, on
|
|
3
|
+
* the STANDARD-LIBRARY gate.
|
|
4
|
+
*
|
|
5
|
+
* ## Its sibling, and how the two divide
|
|
6
|
+
*
|
|
7
|
+
* `host-members.ts` has `coreHostFunctions`/`coreHostConstants`, which answer
|
|
8
|
+
* the same shape of question for `parseInt`/`parseFloat`/`isNaN`/`isFinite`
|
|
9
|
+
* and for `NaN`/`Infinity`. They are NOT this table: they are unioned into the
|
|
10
|
+
* PLUGIN maps (`compiler.ts`'s `hostFunctions`/`hostConstants`) and so are
|
|
11
|
+
* consulted for any declaration of that name, while every row here is gated on
|
|
12
|
+
* `standardLibraryExternals` -- the declaration's own file carrying
|
|
13
|
+
* `/// <reference no-default-lib="true"/>`.
|
|
14
|
+
*
|
|
15
|
+
* A NAME BELONGS IN EXACTLY ONE OF THE TWO. Two rows for one name would be two
|
|
16
|
+
* authorities over one question, and `hostStorageOf` consults the ungated pair
|
|
17
|
+
* first, so the gated row would silently never be reached. `NaN` and
|
|
18
|
+
* `Infinity` were briefly stated in both and are stated only in
|
|
19
|
+
* `coreHostConstants` now.
|
|
20
|
+
*
|
|
21
|
+
* `btoa`, `encodeURIComponent` and the rest are not a host's protocol: nothing
|
|
22
|
+
* installs them, no plugin declares them, and no target may decline them --
|
|
23
|
+
* they are part of the language surface the standard library declares, in
|
|
24
|
+
* exactly the same category as `Math`, `JSON` and the eight typed-array
|
|
25
|
+
* constructors (`native-protocols.ts`'s own comment says so of `JSON@1`). So
|
|
26
|
+
* their C++ spellings belong here, in the compiler's own table, and never in
|
|
27
|
+
* the gea plugin package: a plugin row would make an ECMAScript builtin
|
|
28
|
+
* conditional on which host happens to be installed.
|
|
29
|
+
*
|
|
30
|
+
* The table is the same shape a plugin's `hostFunctions` is -- an ambient NAME
|
|
31
|
+
* to the C++ path a call renders -- and `compiler.ts` unions it into the same
|
|
32
|
+
* `hostFunctions` map, so a name here reaches `projection/bindings.ts`'s
|
|
33
|
+
* `host-function` storage and `emit-callable.ts`'s host-call path with no
|
|
34
|
+
* second mechanism.
|
|
35
|
+
*
|
|
36
|
+
* ## Why a name is safe to key on here
|
|
37
|
+
*
|
|
38
|
+
* It is not, on its own. `projection/bindings.ts` consults this table ONLY for
|
|
39
|
+
* a declaration the frontend recorded in `standardLibraryBindings` -- an
|
|
40
|
+
* ambient declaration whose source file carries
|
|
41
|
+
* `/// <reference no-default-lib="true"/>`, which is the checker's own
|
|
42
|
+
* "this file IS a standard library" flag. A program that declares its own
|
|
43
|
+
* `btoa` keeps its own cell, both because it introduces one (the first
|
|
44
|
+
* placement loop wins) and because, if it merely *declares* one ambiently in
|
|
45
|
+
* its own `.d.ts`, that file is not a default library and this table is never
|
|
46
|
+
* reached.
|
|
47
|
+
*
|
|
48
|
+
* ## What is NOT here, and why
|
|
49
|
+
*
|
|
50
|
+
* `parseInt`, `parseFloat`, `isNaN` and `isFinite` are the other four
|
|
51
|
+
* ECMAScript global functions. Each has a real implementation available --
|
|
52
|
+
* `gea::host::detail::toNumber` is ECMAScript's own `ToNumber` -- but
|
|
53
|
+
* `parseInt`'s two-argument radix form and `parseFloat`'s prefix-parse rule
|
|
54
|
+
* (ECMA-262 19.2.5/19.2.4) are NOT `ToNumber`, and rendering them as it would
|
|
55
|
+
* be a silently different answer for `parseInt('08')`, `parseInt('0x10')` and
|
|
56
|
+
* `parseFloat('3px')`. They stay absent, which leaves them exactly where they
|
|
57
|
+
* were: an unresolved external cell whose link fails by name.
|
|
58
|
+
*
|
|
59
|
+
* `escape`/`unescape` (ECMA-262 B.2.1) ARE implemented in the runtime
|
|
60
|
+
* (`gea::runtime::uri::escapeImpl`/`unescapeImpl`, ported with the rest of
|
|
61
|
+
* v1's `uri.cpp`) but are deliberately not claimed here: `lib.es5.d.ts` does
|
|
62
|
+
* not declare them at all, so no program this compiler sees can name one, and
|
|
63
|
+
* a row for a name that cannot be reached would claim a surface nothing tests.
|
|
64
|
+
*/
|
|
65
|
+
export declare const coreGlobalFunctions: ReadonlyMap<string, string>;
|
|
66
|
+
/**
|
|
67
|
+
* The standard library CLASSES this backend implements itself, and the C++
|
|
68
|
+
* type each one's values are carried in.
|
|
69
|
+
*
|
|
70
|
+
* The same category as the table above and the same reason for living here:
|
|
71
|
+
* `TextEncoder`/`TextDecoder` are the Encoding Standard's, not a host's, so a
|
|
72
|
+
* plugin row would make them conditional on which host is installed. What is
|
|
73
|
+
* different is only the shape of the answer -- a class has values, so what the
|
|
74
|
+
* compiler needs from this table is a CARRIER, not a call spelling.
|
|
75
|
+
*
|
|
76
|
+
* `compiler.ts` unions this into the same `nativeTypes` map a plugin's stated
|
|
77
|
+
* carriers arrive in, which is what gets each spelling to two places at once:
|
|
78
|
+
* `semantics/host-protocols.ts`'s `bindStandardClasses` (so the declared type
|
|
79
|
+
* derives `native-handle` with the spelling on it) and the manifest's
|
|
80
|
+
* `nativeProtocols` claim set, which is keyed by carrier -- so the protocol is
|
|
81
|
+
* claimed exactly where its implementation is, with no second list to drift.
|
|
82
|
+
*
|
|
83
|
+
* Members are stated in `host-members.ts`'s `coreHostMembers`, keyed by these
|
|
84
|
+
* same carrier strings; a member with no row there refuses by name at its own
|
|
85
|
+
* access (`TextEncoder.encodeInto` is the one this applies to today).
|
|
86
|
+
*/
|
|
87
|
+
export declare const coreNativeTypes: ReadonlyMap<string, string>;
|
|
88
|
+
/**
|
|
89
|
+
* The same names again, as the CLASS OBJECTS a program reaches by name.
|
|
90
|
+
*
|
|
91
|
+
* `new TextEncoder()` names two different things: the instance type, bound
|
|
92
|
+
* above, and the constructor VALUE. The constructor's type is an anonymous
|
|
93
|
+
* type literal in `lib.dom.d.ts` (`{ prototype: TextEncoder; new(): TextEncoder }`),
|
|
94
|
+
* unlike `Uint8Array`'s named `Uint8ArrayConstructor` -- and an anonymous type
|
|
95
|
+
* has no declaration the representation layer's declaration-keyed binding can
|
|
96
|
+
* reach, so the class object derived a `constructor-family` carrier over the
|
|
97
|
+
* structural body and linked as `extern gea::ConstructorObject<...>` that
|
|
98
|
+
* nothing defines.
|
|
99
|
+
*
|
|
100
|
+
* `projection/bindings.ts` consults this set, on the same
|
|
101
|
+
* `standardLibraryExternals` gate as the two tables above, and gives those
|
|
102
|
+
* names `host-class` storage: no cell, no extern, the read renders nothing,
|
|
103
|
+
* and the construction is spelled whole at the site that performs it
|
|
104
|
+
* (`targets/cpp/emit-buffers.ts`'s `emitTextCodecConstruct`). The other names
|
|
105
|
+
* below have the same physical answer but need it for a different reason:
|
|
106
|
+
* their overloads deliberately have no single construct ABI.
|
|
107
|
+
*/
|
|
108
|
+
export declare const coreGlobalClasses: ReadonlySet<string>;
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ECMAScript/WHATWG GLOBAL FUNCTIONS this backend implements itself, on
|
|
3
|
+
* the STANDARD-LIBRARY gate.
|
|
4
|
+
*
|
|
5
|
+
* ## Its sibling, and how the two divide
|
|
6
|
+
*
|
|
7
|
+
* `host-members.ts` has `coreHostFunctions`/`coreHostConstants`, which answer
|
|
8
|
+
* the same shape of question for `parseInt`/`parseFloat`/`isNaN`/`isFinite`
|
|
9
|
+
* and for `NaN`/`Infinity`. They are NOT this table: they are unioned into the
|
|
10
|
+
* PLUGIN maps (`compiler.ts`'s `hostFunctions`/`hostConstants`) and so are
|
|
11
|
+
* consulted for any declaration of that name, while every row here is gated on
|
|
12
|
+
* `standardLibraryExternals` -- the declaration's own file carrying
|
|
13
|
+
* `/// <reference no-default-lib="true"/>`.
|
|
14
|
+
*
|
|
15
|
+
* A NAME BELONGS IN EXACTLY ONE OF THE TWO. Two rows for one name would be two
|
|
16
|
+
* authorities over one question, and `hostStorageOf` consults the ungated pair
|
|
17
|
+
* first, so the gated row would silently never be reached. `NaN` and
|
|
18
|
+
* `Infinity` were briefly stated in both and are stated only in
|
|
19
|
+
* `coreHostConstants` now.
|
|
20
|
+
*
|
|
21
|
+
* `btoa`, `encodeURIComponent` and the rest are not a host's protocol: nothing
|
|
22
|
+
* installs them, no plugin declares them, and no target may decline them --
|
|
23
|
+
* they are part of the language surface the standard library declares, in
|
|
24
|
+
* exactly the same category as `Math`, `JSON` and the eight typed-array
|
|
25
|
+
* constructors (`native-protocols.ts`'s own comment says so of `JSON@1`). So
|
|
26
|
+
* their C++ spellings belong here, in the compiler's own table, and never in
|
|
27
|
+
* the gea plugin package: a plugin row would make an ECMAScript builtin
|
|
28
|
+
* conditional on which host happens to be installed.
|
|
29
|
+
*
|
|
30
|
+
* The table is the same shape a plugin's `hostFunctions` is -- an ambient NAME
|
|
31
|
+
* to the C++ path a call renders -- and `compiler.ts` unions it into the same
|
|
32
|
+
* `hostFunctions` map, so a name here reaches `projection/bindings.ts`'s
|
|
33
|
+
* `host-function` storage and `emit-callable.ts`'s host-call path with no
|
|
34
|
+
* second mechanism.
|
|
35
|
+
*
|
|
36
|
+
* ## Why a name is safe to key on here
|
|
37
|
+
*
|
|
38
|
+
* It is not, on its own. `projection/bindings.ts` consults this table ONLY for
|
|
39
|
+
* a declaration the frontend recorded in `standardLibraryBindings` -- an
|
|
40
|
+
* ambient declaration whose source file carries
|
|
41
|
+
* `/// <reference no-default-lib="true"/>`, which is the checker's own
|
|
42
|
+
* "this file IS a standard library" flag. A program that declares its own
|
|
43
|
+
* `btoa` keeps its own cell, both because it introduces one (the first
|
|
44
|
+
* placement loop wins) and because, if it merely *declares* one ambiently in
|
|
45
|
+
* its own `.d.ts`, that file is not a default library and this table is never
|
|
46
|
+
* reached.
|
|
47
|
+
*
|
|
48
|
+
* ## What is NOT here, and why
|
|
49
|
+
*
|
|
50
|
+
* `parseInt`, `parseFloat`, `isNaN` and `isFinite` are the other four
|
|
51
|
+
* ECMAScript global functions. Each has a real implementation available --
|
|
52
|
+
* `gea::host::detail::toNumber` is ECMAScript's own `ToNumber` -- but
|
|
53
|
+
* `parseInt`'s two-argument radix form and `parseFloat`'s prefix-parse rule
|
|
54
|
+
* (ECMA-262 19.2.5/19.2.4) are NOT `ToNumber`, and rendering them as it would
|
|
55
|
+
* be a silently different answer for `parseInt('08')`, `parseInt('0x10')` and
|
|
56
|
+
* `parseFloat('3px')`. They stay absent, which leaves them exactly where they
|
|
57
|
+
* were: an unresolved external cell whose link fails by name.
|
|
58
|
+
*
|
|
59
|
+
* `escape`/`unescape` (ECMA-262 B.2.1) ARE implemented in the runtime
|
|
60
|
+
* (`gea::runtime::uri::escapeImpl`/`unescapeImpl`, ported with the rest of
|
|
61
|
+
* v1's `uri.cpp`) but are deliberately not claimed here: `lib.es5.d.ts` does
|
|
62
|
+
* not declare them at all, so no program this compiler sees can name one, and
|
|
63
|
+
* a row for a name that cannot be reached would claim a surface nothing tests.
|
|
64
|
+
*/
|
|
65
|
+
export const coreGlobalFunctions = new Map([
|
|
66
|
+
// HTML Standard 8.3. `btoa` is defined over Latin-1 code points and `atob`
|
|
67
|
+
// over the forgiving-base64 grammar; see `gea::runtime::base64` in
|
|
68
|
+
// `runtime/gea_runtime.h` for both, ported from v1's `base64.cpp`.
|
|
69
|
+
['btoa', 'gea::runtime::base64::encode'],
|
|
70
|
+
['atob', 'gea::runtime::base64::decode'],
|
|
71
|
+
// ECMA-262 19.2.6.2 / 19.2.6.3 / 19.2.6.1 / 19.2.6.5 -- four spellings of
|
|
72
|
+
// two algorithms (`Encode`/`Decode`) differing only in whether
|
|
73
|
+
// `uriReserved` is preserved. `encodeURIComponent`/`decodeURIComponent`
|
|
74
|
+
// declare `string | number | boolean`, which the program carries as a
|
|
75
|
+
// tagged union; `host/emit-host-arity.ts` picks the live arm at the call
|
|
76
|
+
// and each arm lands on one of the three overloads the runtime states.
|
|
77
|
+
['encodeURI', 'gea::runtime::uri::encodeUri'],
|
|
78
|
+
['encodeURIComponent', 'gea::runtime::uri::encodeUriComponent'],
|
|
79
|
+
['decodeURI', 'gea::runtime::uri::decodeUri'],
|
|
80
|
+
['decodeURIComponent', 'gea::runtime::uri::decodeUriComponent']
|
|
81
|
+
]);
|
|
82
|
+
/**
|
|
83
|
+
* The standard library CLASSES this backend implements itself, and the C++
|
|
84
|
+
* type each one's values are carried in.
|
|
85
|
+
*
|
|
86
|
+
* The same category as the table above and the same reason for living here:
|
|
87
|
+
* `TextEncoder`/`TextDecoder` are the Encoding Standard's, not a host's, so a
|
|
88
|
+
* plugin row would make them conditional on which host is installed. What is
|
|
89
|
+
* different is only the shape of the answer -- a class has values, so what the
|
|
90
|
+
* compiler needs from this table is a CARRIER, not a call spelling.
|
|
91
|
+
*
|
|
92
|
+
* `compiler.ts` unions this into the same `nativeTypes` map a plugin's stated
|
|
93
|
+
* carriers arrive in, which is what gets each spelling to two places at once:
|
|
94
|
+
* `semantics/host-protocols.ts`'s `bindStandardClasses` (so the declared type
|
|
95
|
+
* derives `native-handle` with the spelling on it) and the manifest's
|
|
96
|
+
* `nativeProtocols` claim set, which is keyed by carrier -- so the protocol is
|
|
97
|
+
* claimed exactly where its implementation is, with no second list to drift.
|
|
98
|
+
*
|
|
99
|
+
* Members are stated in `host-members.ts`'s `coreHostMembers`, keyed by these
|
|
100
|
+
* same carrier strings; a member with no row there refuses by name at its own
|
|
101
|
+
* access (`TextEncoder.encodeInto` is the one this applies to today).
|
|
102
|
+
*/
|
|
103
|
+
export const coreNativeTypes = new Map([
|
|
104
|
+
['TextEncoder', 'gea::runtime::textcodec::TextEncoder'],
|
|
105
|
+
['TextDecoder', 'gea::runtime::textcodec::TextDecoder']
|
|
106
|
+
]);
|
|
107
|
+
/**
|
|
108
|
+
* The same names again, as the CLASS OBJECTS a program reaches by name.
|
|
109
|
+
*
|
|
110
|
+
* `new TextEncoder()` names two different things: the instance type, bound
|
|
111
|
+
* above, and the constructor VALUE. The constructor's type is an anonymous
|
|
112
|
+
* type literal in `lib.dom.d.ts` (`{ prototype: TextEncoder; new(): TextEncoder }`),
|
|
113
|
+
* unlike `Uint8Array`'s named `Uint8ArrayConstructor` -- and an anonymous type
|
|
114
|
+
* has no declaration the representation layer's declaration-keyed binding can
|
|
115
|
+
* reach, so the class object derived a `constructor-family` carrier over the
|
|
116
|
+
* structural body and linked as `extern gea::ConstructorObject<...>` that
|
|
117
|
+
* nothing defines.
|
|
118
|
+
*
|
|
119
|
+
* `projection/bindings.ts` consults this set, on the same
|
|
120
|
+
* `standardLibraryExternals` gate as the two tables above, and gives those
|
|
121
|
+
* names `host-class` storage: no cell, no extern, the read renders nothing,
|
|
122
|
+
* and the construction is spelled whole at the site that performs it
|
|
123
|
+
* (`targets/cpp/emit-buffers.ts`'s `emitTextCodecConstruct`). The other names
|
|
124
|
+
* below have the same physical answer but need it for a different reason:
|
|
125
|
+
* their overloads deliberately have no single construct ABI.
|
|
126
|
+
*/
|
|
127
|
+
export const coreGlobalClasses = new Set([
|
|
128
|
+
...coreNativeTypes.keys(),
|
|
129
|
+
// These constructor protocols deliberately have no joined [[Construct]]
|
|
130
|
+
// ABI: their overloads take physically different first arguments, and the
|
|
131
|
+
// construct emitter dispatches from the already-selected result and
|
|
132
|
+
// argument carriers instead. That means the native-handle representation
|
|
133
|
+
// cannot be used as the test for whether the global is a class object. A
|
|
134
|
+
// constructor read that flows through an intersection or generic can lose
|
|
135
|
+
// even the partial construct convention and would otherwise become an
|
|
136
|
+
// `extern Uint8Array`-style cell that no runtime defines. The standard-lib
|
|
137
|
+
// identity gate in `projection/bindings.ts` keeps program declarations with
|
|
138
|
+
// the same names ordinary cells.
|
|
139
|
+
'Int8Array',
|
|
140
|
+
'Uint8Array',
|
|
141
|
+
'Uint8ClampedArray',
|
|
142
|
+
'Int16Array',
|
|
143
|
+
'Uint16Array',
|
|
144
|
+
'Int32Array',
|
|
145
|
+
'Uint32Array',
|
|
146
|
+
'Float32Array',
|
|
147
|
+
'Float64Array',
|
|
148
|
+
'ArrayBuffer',
|
|
149
|
+
'SharedArrayBuffer',
|
|
150
|
+
'DataView',
|
|
151
|
+
'Array',
|
|
152
|
+
'Map',
|
|
153
|
+
'Set',
|
|
154
|
+
'WeakMap',
|
|
155
|
+
'WeakSet',
|
|
156
|
+
'RegExp',
|
|
157
|
+
'Date'
|
|
158
|
+
]);
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The host members whose call-site renderer takes a `dynamic` argument through
|
|
3
|
+
* unconditionally -- the C++ backend's half of
|
|
4
|
+
* `TargetRuntimeManifest.dynamicArgumentHostParameters`
|
|
5
|
+
* (preflight/obligations.ts), which states what listing one WAIVES and why
|
|
6
|
+
* the key includes member, argument role and ordinal.
|
|
7
|
+
*
|
|
8
|
+
* Here rather than in `manifest.ts` because the fact is a property of the
|
|
9
|
+
* renderers, not of the manifest: every entry below is an `objectMemberText`
|
|
10
|
+
* arm (`emit-host-object.ts`), and a member added there without a row here --
|
|
11
|
+
* or a row here whose arm was deleted -- is a drift best noticed by the two
|
|
12
|
+
* living side by side. `manifest.ts` cites this set; it does not own it.
|
|
13
|
+
*
|
|
14
|
+
* ## Why each of these needs the waiver and the others do not
|
|
15
|
+
*
|
|
16
|
+
* Each row passes that one argument's box straight into a host call-site
|
|
17
|
+
* renderer. So there is no conversion for the emitted line to perform and
|
|
18
|
+
* none for preflight to demand at that position. No row grants anything to a
|
|
19
|
+
* sibling parameter of the same member.
|
|
20
|
+
*
|
|
21
|
+
* `Object.keys`, `getOwnPropertyNames`, `freeze` and `isFrozen` are
|
|
22
|
+
* deliberately ABSENT even though they take the same dynamic receiver. Their
|
|
23
|
+
* declared parameter is `object` / `T`, which already derives a carrier a
|
|
24
|
+
* `dynamic` converts into, so the ordinary obligation is satisfied on its own
|
|
25
|
+
* -- and waiving a check that passes hides a real one for no gain.
|
|
26
|
+
*
|
|
27
|
+
* What these positions have in common is a declared parameter nothing
|
|
28
|
+
* converts into:
|
|
29
|
+
* `{ [s: string]: T } | ArrayLike<T>` for `values`/`entries`, which derives a
|
|
30
|
+
* `tagged-union(dictionary | native-record-ref)`; and `PropertyKey` -- a
|
|
31
|
+
* `string | number | symbol` union -- for the key parameter of `hasOwn`,
|
|
32
|
+
* `defineProperty` and `getOwnPropertyDescriptor`. `assign`'s variadic source
|
|
33
|
+
* parameter is the same shape as `values`'.
|
|
34
|
+
*
|
|
35
|
+
* `Object.defineProperty:argument:2` is deliberately absent. The emitter
|
|
36
|
+
* materializes descriptors only from an exact descriptor carrier; a dynamic
|
|
37
|
+
* box does not state which descriptor fields and attributes are present.
|
|
38
|
+
* `Object.defineProperties` is absent wholesale: its source transform accepts
|
|
39
|
+
* only a closed descriptor-map literal and lowers it to singular operations,
|
|
40
|
+
* while an open/dynamic map must remain fail-closed.
|
|
41
|
+
*/
|
|
42
|
+
export declare const cppDynamicArgumentHostParameters: ReadonlySet<string>;
|