@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,114 @@
|
|
|
1
|
+
import type { DeclarationId } from '../../identity/ids.js';
|
|
2
|
+
/**
|
|
3
|
+
* The property keys a whole-program write may have created, replaced or
|
|
4
|
+
* deleted, and the per-key obligations that ask about them.
|
|
5
|
+
*
|
|
6
|
+
* The host-mutation census used to answer one question per object -- "was it
|
|
7
|
+
* touched at all" -- plus one wildcard, `*`, for any write it could not pin to
|
|
8
|
+
* an object. A single `o.needsUpdate = true` through a receiver it could not
|
|
9
|
+
* prove non-global therefore failed every proof about every intrinsic
|
|
10
|
+
* prototype, including "Object.prototype lacks `glslVersion`". The write's KEY
|
|
11
|
+
* was always known; only its receiver was not. This module keeps the key.
|
|
12
|
+
*
|
|
13
|
+
* Soundness is carried by three rules, and nothing here may weaken them:
|
|
14
|
+
*
|
|
15
|
+
* 1. A key is recorded exactly only when it is statically known. A key the
|
|
16
|
+
* census cannot name is `every`, which is the old wildcard.
|
|
17
|
+
* 2. A number-typed key is not an array index: `o[n]` with `n: number` can
|
|
18
|
+
* write "-1", "1.5", "NaN" or "Infinity". It is recorded as the NUMERIC
|
|
19
|
+
* domain -- every `ToString(Number)` string -- and an obligation on a key
|
|
20
|
+
* is touched by it exactly when that key is such a string.
|
|
21
|
+
* 3. An object's taint never masks the surface taint: a query asks both the
|
|
22
|
+
* object's own keys and the keys written on "any surface that might be an
|
|
23
|
+
* intrinsic or the global object".
|
|
24
|
+
*
|
|
25
|
+
* Symbol-keyed obligations are named `@@name` (`@@iterator`), after the
|
|
26
|
+
* WELL-KNOWN symbols. No write ever records a symbol key by name, so such an
|
|
27
|
+
* obligation is touched only by `every`.
|
|
28
|
+
*
|
|
29
|
+
* A symbol key the program itself declared is the one case that records NO key
|
|
30
|
+
* rather than `every`: it can name no string member, and it can name no
|
|
31
|
+
* `@@well-known` member either, so it touches nothing this module models. That
|
|
32
|
+
* is not a fourth kind -- it is the empty key set, decided in
|
|
33
|
+
* `host-mutation-key-reader.ts`'s `isProgramDeclaredSymbolKey`, which is also
|
|
34
|
+
* where the soundness argument lives.
|
|
35
|
+
*/
|
|
36
|
+
/** @semanticCategory generic-primitive */
|
|
37
|
+
export type MutationKey = {
|
|
38
|
+
readonly kind: 'name';
|
|
39
|
+
readonly name: string;
|
|
40
|
+
} | {
|
|
41
|
+
readonly kind: 'numeric';
|
|
42
|
+
} | {
|
|
43
|
+
readonly kind: 'every';
|
|
44
|
+
};
|
|
45
|
+
export declare const everyKey: MutationKey;
|
|
46
|
+
export declare const numericKeys: MutationKey;
|
|
47
|
+
export declare const namedKey: (name: string) => MutationKey;
|
|
48
|
+
/** @semanticCategory generic-primitive */
|
|
49
|
+
export interface MutationKeySet {
|
|
50
|
+
readonly names: ReadonlySet<string>;
|
|
51
|
+
/** Some `ToString(Number)` key: canonical numeric strings, "NaN" and "Infinity" included. */
|
|
52
|
+
readonly numeric: boolean;
|
|
53
|
+
/** A key nobody can name: every key, prototype replacement included. */
|
|
54
|
+
readonly every: boolean;
|
|
55
|
+
}
|
|
56
|
+
/** Exactly the strings `ToPropertyKey` produces from some Number. "-0" is not one: `String(-0)` is "0". */
|
|
57
|
+
export declare const isCanonicalNumericKey: (key: string) => boolean;
|
|
58
|
+
/** 7.1.21 CanonicalNumericIndexString restricted to array indices: "0" .. "4294967294", no other spelling. */
|
|
59
|
+
export declare const isArrayIndexKey: (key: string) => boolean;
|
|
60
|
+
/** The key a numeric LITERAL writes: `o[1.50]` writes "1.5", `o[0x10]` writes "16". */
|
|
61
|
+
export declare const numericLiteralKey: (text: string) => string | null;
|
|
62
|
+
/**
|
|
63
|
+
* What a proof depends on. `names` are exact keys (methods it calls, keys it
|
|
64
|
+
* proves absent); `arrayIndices` asks for every canonical array index at once
|
|
65
|
+
* (a hole read consults the prototype chain for that index).
|
|
66
|
+
* @semanticCategory generic-primitive
|
|
67
|
+
*/
|
|
68
|
+
export interface PrototypeKeyQuery {
|
|
69
|
+
readonly names?: readonly string[];
|
|
70
|
+
readonly arrayIndices?: boolean;
|
|
71
|
+
/** Every ToString(Number) key, including fractions, infinities and NaN. */
|
|
72
|
+
readonly numeric?: boolean;
|
|
73
|
+
}
|
|
74
|
+
/** A stable spelling of a query, for ledgers that deduplicate obligations. */
|
|
75
|
+
export declare const prototypeKeyQuerySignature: (query: PrototypeKeyQuery) => string;
|
|
76
|
+
/** Does a write set reach any key the query depends on? `'all'` is the whole-object query. */
|
|
77
|
+
export declare const keySetTouches: (keys: MutationKeySet | undefined, query: PrototypeKeyQuery | "all") => boolean;
|
|
78
|
+
/**
|
|
79
|
+
* The sealed census. As a set it is the legacy view, kept so every consumer
|
|
80
|
+
* that asks about a declaration identity keeps working unchanged:
|
|
81
|
+
*
|
|
82
|
+
* - `'*'` is present exactly when some surface may have been written under
|
|
83
|
+
* an unknown key (`surfaceKeys.every`);
|
|
84
|
+
* - a declaration is present when anything at all was recorded against it --
|
|
85
|
+
* a host binding replaced, a member overwritten, a key added to an
|
|
86
|
+
* intrinsic prototype.
|
|
87
|
+
*
|
|
88
|
+
* Keys written through a receiver that might be ANY intrinsic surface are
|
|
89
|
+
* NOT in the legacy view (they would be `'*'` there), which is why every
|
|
90
|
+
* consumer that asks about an intrinsic object's contents must ask per key:
|
|
91
|
+
* `intrinsicObjectKeysIntact`, or `intactIntrinsicPrototypeType` for the
|
|
92
|
+
* whole-object question.
|
|
93
|
+
* @semanticCategory generic-primitive
|
|
94
|
+
*/
|
|
95
|
+
export interface GlobalHostMutationTaint extends ReadonlySet<DeclarationId | '*'> {
|
|
96
|
+
/** Keys written on some receiver that may be the global object or any intrinsic object. */
|
|
97
|
+
readonly surfaceKeys: MutationKeySet;
|
|
98
|
+
/** Keys written on this specific object identity; `undefined` when nothing was. */
|
|
99
|
+
readonly keysOf: (object: DeclarationId) => MutationKeySet | undefined;
|
|
100
|
+
}
|
|
101
|
+
/** May a proof that depends on `query` of this intrinsic object still stand? */
|
|
102
|
+
export declare const intrinsicObjectKeysIntact: (taint: GlobalHostMutationTaint, object: DeclarationId, query: PrototypeKeyQuery | "all") => boolean;
|
|
103
|
+
/** The census's builder and its sealed result. Every record goes through `taintObject`/`taintSurface`. */
|
|
104
|
+
export declare class HostMutationTaint extends Set<DeclarationId | '*'> implements GlobalHostMutationTaint {
|
|
105
|
+
#private;
|
|
106
|
+
get surfaceKeys(): MutationKeySet;
|
|
107
|
+
readonly keysOf: (object: DeclarationId) => MutationKeySet | undefined;
|
|
108
|
+
/** A legacy add carries no key, so it is the whole object (or, for `'*'`, every surface key). */
|
|
109
|
+
add(entry: DeclarationId | '*'): this;
|
|
110
|
+
taintObject(object: DeclarationId, key: MutationKey): void;
|
|
111
|
+
taintSurface(key: MutationKey): void;
|
|
112
|
+
/** Copy a sealed census into this (shared, pre-allocated) one without losing a key. */
|
|
113
|
+
absorb(other: GlobalHostMutationTaint): void;
|
|
114
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
export const everyKey = { kind: 'every' };
|
|
2
|
+
export const numericKeys = { kind: 'numeric' };
|
|
3
|
+
export const namedKey = (name) => ({ kind: 'name', name });
|
|
4
|
+
/** Exactly the strings `ToPropertyKey` produces from some Number. "-0" is not one: `String(-0)` is "0". */
|
|
5
|
+
export const isCanonicalNumericKey = (key) => String(Number(key)) === key;
|
|
6
|
+
/** 7.1.21 CanonicalNumericIndexString restricted to array indices: "0" .. "4294967294", no other spelling. */
|
|
7
|
+
export const isArrayIndexKey = (key) => {
|
|
8
|
+
if (!isCanonicalNumericKey(key))
|
|
9
|
+
return false;
|
|
10
|
+
const value = Number(key);
|
|
11
|
+
return Number.isInteger(value) && value >= 0 && value < 4294967295;
|
|
12
|
+
};
|
|
13
|
+
/** The key a numeric LITERAL writes: `o[1.50]` writes "1.5", `o[0x10]` writes "16". */
|
|
14
|
+
export const numericLiteralKey = (text) => {
|
|
15
|
+
const value = Number(text.replace(/_/g, ''));
|
|
16
|
+
return Number.isNaN(value) ? null : String(value);
|
|
17
|
+
};
|
|
18
|
+
/** A stable spelling of a query, for ledgers that deduplicate obligations. */
|
|
19
|
+
export const prototypeKeyQuerySignature = (query) => `${[...new Set(query.names ?? [])].sort().join(',')}${query.arrayIndices ? '|indices' : ''}${query.numeric ? '|numeric' : ''}`;
|
|
20
|
+
/** Does a write set reach any key the query depends on? `'all'` is the whole-object query. */
|
|
21
|
+
export const keySetTouches = (keys, query) => {
|
|
22
|
+
if (!keys)
|
|
23
|
+
return false;
|
|
24
|
+
if (keys.every)
|
|
25
|
+
return true;
|
|
26
|
+
if (query === 'all')
|
|
27
|
+
return keys.numeric || keys.names.size > 0;
|
|
28
|
+
for (const name of query.names ?? []) {
|
|
29
|
+
if (keys.names.has(name) || (keys.numeric && isCanonicalNumericKey(name)))
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
if (query.arrayIndices && (keys.numeric || [...keys.names].some(isArrayIndexKey)))
|
|
33
|
+
return true;
|
|
34
|
+
if (query.numeric && (keys.numeric || [...keys.names].some(isCanonicalNumericKey)))
|
|
35
|
+
return true;
|
|
36
|
+
return false;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* TEMPORARY INSTRUMENT -- not for landing. `GEA_KEY_BLOCK_DEBUG=1` names, per
|
|
40
|
+
* distinct outcome, WHICH of the three disjuncts refused and which key matched.
|
|
41
|
+
* Suppressing the wildcard alone left the three.js app's 300 census diagnostics at 300,
|
|
42
|
+
* so the question this answers is whether the NAMED surface keys (three's own
|
|
43
|
+
* `linecap`, `version`, `isTexture` ... written through opaque receivers) are
|
|
44
|
+
* doing the blocking on their own.
|
|
45
|
+
*/
|
|
46
|
+
const keyBlockDebug = process.env['GEA_KEY_BLOCK_DEBUG'] === '1';
|
|
47
|
+
const reportedKeyBlocks = new Set();
|
|
48
|
+
const matchedKeys = (keys, query) => !keys
|
|
49
|
+
? ''
|
|
50
|
+
: keys.every
|
|
51
|
+
? 'every'
|
|
52
|
+
: query === 'all'
|
|
53
|
+
? [...keys.names].join(',')
|
|
54
|
+
: [...(query.names ?? [])].filter((name) => keys.names.has(name)).join(',');
|
|
55
|
+
/** May a proof that depends on `query` of this intrinsic object still stand? */
|
|
56
|
+
export const intrinsicObjectKeysIntact = (taint, object, query) => {
|
|
57
|
+
const star = taint.has('*');
|
|
58
|
+
const surface = keySetTouches(taint.surfaceKeys, query);
|
|
59
|
+
const own = keySetTouches(taint.keysOf(object), query);
|
|
60
|
+
if (keyBlockDebug && (star || surface || own)) {
|
|
61
|
+
const asked = query === 'all' ? 'all' : prototypeKeyQuerySignature(query);
|
|
62
|
+
// The OBJECT belongs in the line. Without it every blocked query on every
|
|
63
|
+
// intrinsic collapsed into one row -- `own=true(every) asked=keys` says
|
|
64
|
+
// that SOME object is wildcarded, not which, and the whole next question
|
|
65
|
+
// (which arguments reach the objects a program's own obligations name) is
|
|
66
|
+
// unreadable from it. It is also what makes the dedupe per object rather
|
|
67
|
+
// than per outcome.
|
|
68
|
+
const line = `[KEY-BLOCK] ${object} star=${star} surface=${surface}(${matchedKeys(taint.surfaceKeys, query)}) own=${own}(${matchedKeys(taint.keysOf(object), query)}) asked=${asked}`;
|
|
69
|
+
if (!reportedKeyBlocks.has(line)) {
|
|
70
|
+
reportedKeyBlocks.add(line);
|
|
71
|
+
process.stderr.write(`${line}\n`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return !star && !surface && !own;
|
|
75
|
+
};
|
|
76
|
+
const emptyKeys = () => ({ names: new Set(), numeric: false, every: false });
|
|
77
|
+
/**
|
|
78
|
+
* TEMPORARY EXPERIMENT -- not for landing. `GEA_NO_WILDCARD=1` drops every
|
|
79
|
+
* `every`-kind key, at the ONE place all of them are recorded, so a single
|
|
80
|
+
* three.js run answers the question that decides what to work on next: with the
|
|
81
|
+
* wildcard gone, do the 300 census diagnostics clear, or do the 64 NAMED
|
|
82
|
+
* surface keys block them anyway? Guarding `markWildcard` alone was not enough
|
|
83
|
+
* -- `taintIntrinsicMember` and `markIntrinsicPrototypeKeys` reach these two
|
|
84
|
+
* methods with `everyKey` without passing through it.
|
|
85
|
+
*/
|
|
86
|
+
const dropsWildcardKeys = process.env['GEA_NO_WILDCARD'] === '1';
|
|
87
|
+
const wildcardStackDebug = process.env['GEA_WILDCARD_STACK'] === '1';
|
|
88
|
+
const reportedWildcardStacks = new Set();
|
|
89
|
+
/** The census's builder and its sealed result. Every record goes through `taintObject`/`taintSurface`. */
|
|
90
|
+
export class HostMutationTaint extends Set {
|
|
91
|
+
#surface = emptyKeys();
|
|
92
|
+
#objects = new Map();
|
|
93
|
+
get surfaceKeys() {
|
|
94
|
+
return this.#surface;
|
|
95
|
+
}
|
|
96
|
+
keysOf = (object) => this.#objects.get(object);
|
|
97
|
+
/** A legacy add carries no key, so it is the whole object (or, for `'*'`, every surface key). */
|
|
98
|
+
add(entry) {
|
|
99
|
+
if (entry === '*')
|
|
100
|
+
this.taintSurface(everyKey);
|
|
101
|
+
else
|
|
102
|
+
this.taintObject(entry, everyKey);
|
|
103
|
+
return this;
|
|
104
|
+
}
|
|
105
|
+
taintObject(object, key) {
|
|
106
|
+
if (key.kind === 'every' && dropsWildcardKeys)
|
|
107
|
+
return;
|
|
108
|
+
// TEMPORARY INSTRUMENT -- not for landing. `GEA_WILDCARD_STACK=1` names the
|
|
109
|
+
// RULE that stamps `every` on an object, by capturing the compiler-side call
|
|
110
|
+
// path once per distinct path. Reading the census for it does not work: the
|
|
111
|
+
// `add` override below routes several unrelated rules through this one
|
|
112
|
+
// method, so the site is only visible from the stack.
|
|
113
|
+
if (key.kind === 'every' && wildcardStackDebug) {
|
|
114
|
+
const stack = (new Error().stack ?? '')
|
|
115
|
+
.split('\n')
|
|
116
|
+
.slice(2, 9)
|
|
117
|
+
.map((line) => line
|
|
118
|
+
.trim()
|
|
119
|
+
.replace(/^at /, '')
|
|
120
|
+
.replace(/ \(.*$/, ''))
|
|
121
|
+
.join(' <- ');
|
|
122
|
+
// Deduped by OBJECT AND stack, not by stack alone. One rule wildcards
|
|
123
|
+
// many objects through one code path, so a stack-only memo printed the
|
|
124
|
+
// first object it reached and swallowed every other -- which reads as
|
|
125
|
+
// "one intrinsic is wildcarded" when the truth is "this loop wildcards
|
|
126
|
+
// all of them". That is the shape of the answer, and it was invisible:
|
|
127
|
+
// located hono-hello's whole remaining census gap at ONE site only after
|
|
128
|
+
// cross-checking the printed frames against the source by hand.
|
|
129
|
+
const seen = `${object} :: ${stack}`;
|
|
130
|
+
if (!reportedWildcardStacks.has(seen)) {
|
|
131
|
+
reportedWildcardStacks.add(seen);
|
|
132
|
+
process.stderr.write(`[WILDCARD-STACK] ${object} :: ${stack}\n`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
let keys = this.#objects.get(object);
|
|
136
|
+
if (!keys)
|
|
137
|
+
this.#objects.set(object, (keys = emptyKeys()));
|
|
138
|
+
record(keys, key);
|
|
139
|
+
super.add(object);
|
|
140
|
+
}
|
|
141
|
+
taintSurface(key) {
|
|
142
|
+
if (key.kind === 'every' && dropsWildcardKeys)
|
|
143
|
+
return;
|
|
144
|
+
record(this.#surface, key);
|
|
145
|
+
if (this.#surface.every)
|
|
146
|
+
super.add('*');
|
|
147
|
+
}
|
|
148
|
+
/** Copy a sealed census into this (shared, pre-allocated) one without losing a key. */
|
|
149
|
+
absorb(other) {
|
|
150
|
+
const surface = other.surfaceKeys;
|
|
151
|
+
for (const name of surface.names)
|
|
152
|
+
this.taintSurface(namedKey(name));
|
|
153
|
+
if (surface.numeric)
|
|
154
|
+
this.taintSurface(numericKeys);
|
|
155
|
+
if (surface.every)
|
|
156
|
+
this.taintSurface(everyKey);
|
|
157
|
+
for (const entry of other) {
|
|
158
|
+
if (entry === '*') {
|
|
159
|
+
this.taintSurface(everyKey);
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
const keys = other.keysOf(entry);
|
|
163
|
+
if (!keys) {
|
|
164
|
+
this.taintObject(entry, everyKey);
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
for (const name of keys.names)
|
|
168
|
+
this.taintObject(entry, namedKey(name));
|
|
169
|
+
if (keys.numeric)
|
|
170
|
+
this.taintObject(entry, numericKeys);
|
|
171
|
+
if (keys.every || (keys.names.size === 0 && !keys.numeric))
|
|
172
|
+
this.taintObject(entry, everyKey);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const record = (keys, key) => {
|
|
177
|
+
if (key.kind === 'every')
|
|
178
|
+
keys.every = true;
|
|
179
|
+
else if (key.kind === 'numeric')
|
|
180
|
+
keys.numeric = true;
|
|
181
|
+
else
|
|
182
|
+
keys.names.add(key.name);
|
|
183
|
+
};
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { type DeclarationId, type FunctionId, type NodeId } from '../../identity/ids.js';
|
|
3
|
+
import { type SpecializationCensus } from './specialization.js';
|
|
4
|
+
/**
|
|
5
|
+
* Minting identities from checker facts.
|
|
6
|
+
*
|
|
7
|
+
* Identity here is *structural position*, never a byte offset and never a file
|
|
8
|
+
* path. A file is identified by its index in the program's sorted root list, and
|
|
9
|
+
* a node by the ordinal it receives in a deterministic pre-order walk of that
|
|
10
|
+
* file. Both are stable under reformatting, renaming a local, and moving a file
|
|
11
|
+
* on disk -- which is exactly the property an offset does not have.
|
|
12
|
+
*
|
|
13
|
+
* Relative order is retained because JavaScript semantics depend on it:
|
|
14
|
+
* declaration order, evaluation order, and hoisting are real behavior. What is
|
|
15
|
+
* excluded is using a *particular* position as evidence that a particular
|
|
16
|
+
* program is being compiled.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* One link in the chain of monomorphized copies a node is being compiled
|
|
20
|
+
* inside: which generic was instantiated, and which of its instantiations this
|
|
21
|
+
* is.
|
|
22
|
+
*
|
|
23
|
+
* The owner travels with the ordinal because resolving a type parameter needs
|
|
24
|
+
* both. An ordinal alone says "the first instantiation" without saying of what,
|
|
25
|
+
* and a node inside two nested generics has two ordinals that mean nothing until
|
|
26
|
+
* each is paired with the generic it indexes.
|
|
27
|
+
*/
|
|
28
|
+
export interface SpecializationStep {
|
|
29
|
+
readonly owner: ts.Declaration;
|
|
30
|
+
readonly ordinal: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Which monomorphized copy an identity belongs to, outermost first.
|
|
34
|
+
*
|
|
35
|
+
* The empty path is a body that is not inside any generic, which is every body
|
|
36
|
+
* in a program that declares none -- and its identities stay byte-identical to
|
|
37
|
+
* what they were before monomorphization, because an empty path adds no suffix.
|
|
38
|
+
*/
|
|
39
|
+
export type SpecializationPath = readonly SpecializationStep[];
|
|
40
|
+
export declare const rootSpecialization: SpecializationPath;
|
|
41
|
+
/**
|
|
42
|
+
* The identity suffix for a path: the ordinals alone.
|
|
43
|
+
*
|
|
44
|
+
* The owner is deliberately left out. A node's own identity already pins where
|
|
45
|
+
* it is, so which generics enclose it is not in question -- only which copy is,
|
|
46
|
+
* and that is what the ordinals say. Putting the owner in as well would make the
|
|
47
|
+
* suffix longer without making any two copies more distinguishable.
|
|
48
|
+
*/
|
|
49
|
+
export declare const specializationKey: (path: SpecializationPath) => string;
|
|
50
|
+
export interface IdentityTable {
|
|
51
|
+
/**
|
|
52
|
+
* The same table, minting identities for one monomorphized copy.
|
|
53
|
+
*
|
|
54
|
+
* A view rather than an argument on every method, for the same reason the
|
|
55
|
+
* structural mapper has one: producers ask these questions from a hundred
|
|
56
|
+
* places, and threading the copy through all of them would express, a hundred
|
|
57
|
+
* times, one fact that belongs to the candidate being compiled.
|
|
58
|
+
*
|
|
59
|
+
* The view does NOT stamp the path onto every identity it mints. A body
|
|
60
|
+
* inside a copy routinely names things outside it -- a module-scope constant,
|
|
61
|
+
* an imported class -- and stamping those would mint a second identity for
|
|
62
|
+
* one declaration, which is exactly the two-identities-for-one-thing defect
|
|
63
|
+
* identities exist to prevent. What it stamps is the longest prefix of the
|
|
64
|
+
* path whose generics actually contain the node, which is empty for anything
|
|
65
|
+
* declared outside them.
|
|
66
|
+
*/
|
|
67
|
+
readonly forSpecialization: (path: SpecializationPath) => IdentityTable;
|
|
68
|
+
/**
|
|
69
|
+
* What distinguishes one monomorphized copy from another *as a copy*, owner
|
|
70
|
+
* included.
|
|
71
|
+
*
|
|
72
|
+
* Deliberately not `specializationKey`, and the difference is load-bearing.
|
|
73
|
+
* That one is an identity *suffix*, where the owner is redundant because a
|
|
74
|
+
* node's own identity already says which generic encloses it. Here the owner
|
|
75
|
+
* is the entire question: two unrelated generics each instantiated once both
|
|
76
|
+
* have ordinal path `0`, so anything caching per copy under that key hands
|
|
77
|
+
* the second generic the first one's answers -- including `prefixFor`'s
|
|
78
|
+
* answer to "is this node inside a copy", which is `false` for every node of
|
|
79
|
+
* the generic the cached view was not built for. Every identity minted
|
|
80
|
+
* through such a view comes out unspecialized, so a body and the allocation
|
|
81
|
+
* that gives it a calling convention end up naming different copies.
|
|
82
|
+
*/
|
|
83
|
+
readonly copyKeyOf: (path: SpecializationPath) => string;
|
|
84
|
+
/**
|
|
85
|
+
* How much of a copy's path applies to one node: the longest prefix whose
|
|
86
|
+
* generics lexically contain it, empty for anything declared outside them.
|
|
87
|
+
*
|
|
88
|
+
* Exposed because composing a path is not something a caller may invent. A
|
|
89
|
+
* use site inside one copy that names a generic declared *elsewhere* reaches
|
|
90
|
+
* a copy of that other generic, and appending its step to this walk's whole
|
|
91
|
+
* path would mint `decl|X@0.0` -- an id no census walk ever publishes, since
|
|
92
|
+
* the census walks that generic from the scope it was declared in. The
|
|
93
|
+
* composed path is this prefix plus the site's own step, and this is the one
|
|
94
|
+
* function that says what the prefix is.
|
|
95
|
+
*/
|
|
96
|
+
readonly prefixFor: (node: ts.Node, path: SpecializationPath) => SpecializationPath;
|
|
97
|
+
/**
|
|
98
|
+
* The identity segment every declaration in one file is minted under.
|
|
99
|
+
*
|
|
100
|
+
* Exposed so the frontend can publish which file each identity's segment
|
|
101
|
+
* names (`FrontendResult.sourceFileNames`) without any later stage learning
|
|
102
|
+
* the rule this table uses to spell it.
|
|
103
|
+
*/
|
|
104
|
+
readonly fileIdentityOf: (file: ts.SourceFile) => string;
|
|
105
|
+
/**
|
|
106
|
+
* Every file the program holds, identity segment to file name. This is the
|
|
107
|
+
* whole program -- library and ambient files included -- because a unit can
|
|
108
|
+
* be owned by any file an identity was minted under, not only the compiled
|
|
109
|
+
* sources. Display evidence for naming emitted units; nothing decides on it.
|
|
110
|
+
*/
|
|
111
|
+
readonly sourceFileNames: ReadonlyMap<string, string>;
|
|
112
|
+
readonly nodeIdOf: (node: ts.Node, path?: SpecializationPath) => NodeId;
|
|
113
|
+
readonly declarationIdOf: (declaration: ts.Declaration, path?: SpecializationPath) => DeclarationId;
|
|
114
|
+
readonly functionIdOf: (declaration: ts.Declaration, path?: SpecializationPath) => FunctionId;
|
|
115
|
+
/**
|
|
116
|
+
* The declaration a symbol is *anchored* on: the one the structural walk
|
|
117
|
+
* interns a shape under, and the one a nominal type is identified by.
|
|
118
|
+
*
|
|
119
|
+
* This is not always the declaration that supplies a value -- see
|
|
120
|
+
* `valueDeclarationOfSymbol`, which answers the other question. Keeping them
|
|
121
|
+
* apart is load-bearing rather than tidy: a merged ambient global is one
|
|
122
|
+
* symbol with a type-space declaration and a value-space one, and the two
|
|
123
|
+
* questions genuinely have different answers for it.
|
|
124
|
+
*/
|
|
125
|
+
readonly declarationOfSymbol: (symbol: ts.Symbol) => ts.Declaration | null;
|
|
126
|
+
/**
|
|
127
|
+
* The declaration that supplies a symbol's *value*, or `null` when it has
|
|
128
|
+
* none.
|
|
129
|
+
*
|
|
130
|
+
* A merged ambient global -- `interface Error {}` for the type plus
|
|
131
|
+
* `declare var Error: ErrorConstructor` for the value -- is one symbol with
|
|
132
|
+
* two declarations, and only the second one holds anything. Asking the
|
|
133
|
+
* anchor question instead returns the interface whenever it sorts first
|
|
134
|
+
* (true for `Error`, `Math`, `Date`, `JSON` and every other merged global in
|
|
135
|
+
* lib.es5.d.ts), which mints a binding read against a declaration nothing
|
|
136
|
+
* ever introduces -- the emitter then refuses the read by name, after
|
|
137
|
+
* preflight has already certified the program.
|
|
138
|
+
*
|
|
139
|
+
* `frontend.ts`'s `bindAmbientValue` resolves the host placement this exact
|
|
140
|
+
* way, so a read minted here and the placement it must find are keyed by one
|
|
141
|
+
* rule rather than two.
|
|
142
|
+
*/
|
|
143
|
+
readonly valueDeclarationOfSymbol: (symbol: ts.Symbol) => ts.Declaration | null;
|
|
144
|
+
/**
|
|
145
|
+
* The declaration whose type parameters a node's value writes down -- the
|
|
146
|
+
* node monomorphized copies are keyed on.
|
|
147
|
+
*
|
|
148
|
+
* `specialization.ts` owns the rule; this is where the checker gets bound
|
|
149
|
+
* into it, because one of its cases -- `const jsxs = jsx`, a generic named as
|
|
150
|
+
* a value -- needs a name resolved to what it denotes. Every consumer has to
|
|
151
|
+
* ask through here, or the census forks one node and the reads name another.
|
|
152
|
+
*/
|
|
153
|
+
readonly genericSubjectOf: (declaration: ts.Declaration) => ts.Declaration;
|
|
154
|
+
/**
|
|
155
|
+
* Identity of the symbol a name resolves to, following aliases to their
|
|
156
|
+
* target.
|
|
157
|
+
*
|
|
158
|
+
* `at` is the node doing the naming, and it matters for exactly one reason:
|
|
159
|
+
* a name that reaches a generic reaches one of its monomorphized copies, and
|
|
160
|
+
* which one is decided by the instantiation the *use site* makes, not by
|
|
161
|
+
* anything about the declaration. `identity(1)` and `identity('one')` name
|
|
162
|
+
* two different functions through one symbol.
|
|
163
|
+
*/
|
|
164
|
+
readonly symbolDeclarationId: (symbol: ts.Symbol, at?: ts.Node) => DeclarationId | null;
|
|
165
|
+
/**
|
|
166
|
+
* Identity of the declaration a name's *value* comes from -- the same
|
|
167
|
+
* question `symbolDeclarationId` asks, resolved through
|
|
168
|
+
* `valueDeclarationOfSymbol` instead of the anchor.
|
|
169
|
+
*/
|
|
170
|
+
readonly symbolValueDeclarationId: (symbol: ts.Symbol, at?: ts.Node) => DeclarationId | null;
|
|
171
|
+
}
|
|
172
|
+
export declare const createIdentityTable: (program: ts.Program, checker: ts.TypeChecker, specializations?: SpecializationCensus) => IdentityTable;
|