@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,11 @@
|
|
|
1
|
+
import type ts from 'typescript';
|
|
2
|
+
import type { HostOwnedDeclaration } from '../plugins/model.js';
|
|
3
|
+
/**
|
|
4
|
+
* Authenticate a host claim against the checker's complete declaration set.
|
|
5
|
+
*
|
|
6
|
+
* Compatibility rows may explain declarations merged into the host's symbol,
|
|
7
|
+
* but they can never create that symbol on their own: at least one declaration
|
|
8
|
+
* must have the configured primary provenance. Every remaining declaration
|
|
9
|
+
* must then be an explicitly named compatible partner.
|
|
10
|
+
*/
|
|
11
|
+
export declare const hasExactHostDeclaration: (symbol: ts.Symbol, configured: HostOwnedDeclaration) => boolean;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
const matchesDeclaration = (symbol, declaration, configured) => configured.declarationName === symbol.name && resolve(declaration.getSourceFile().fileName) === resolve(configured.declarationFileName);
|
|
3
|
+
/**
|
|
4
|
+
* Authenticate a host claim against the checker's complete declaration set.
|
|
5
|
+
*
|
|
6
|
+
* Compatibility rows may explain declarations merged into the host's symbol,
|
|
7
|
+
* but they can never create that symbol on their own: at least one declaration
|
|
8
|
+
* must have the configured primary provenance. Every remaining declaration
|
|
9
|
+
* must then be an explicitly named compatible partner.
|
|
10
|
+
*/
|
|
11
|
+
export const hasExactHostDeclaration = (symbol, configured) => {
|
|
12
|
+
const declarations = symbol.declarations ?? [];
|
|
13
|
+
if (!declarations.some((declaration) => matchesDeclaration(symbol, declaration, configured)))
|
|
14
|
+
return false;
|
|
15
|
+
const compatible = configured.compatibleDeclarations ?? [];
|
|
16
|
+
return declarations.every((declaration) => matchesDeclaration(symbol, declaration, configured) ||
|
|
17
|
+
compatible.some((candidate) => matchesDeclaration(symbol, declaration, candidate)));
|
|
18
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
/** A host owns the implementation of this checker-resolved method declaration. */
|
|
3
|
+
export interface HostMethodBinding {
|
|
4
|
+
readonly protocol: string;
|
|
5
|
+
readonly member: string;
|
|
6
|
+
/**
|
|
7
|
+
* This method returns a module selected at runtime from the native
|
|
8
|
+
* CommonJS-builtin registry. The compiler retains records only for its
|
|
9
|
+
* literal, host-admitted calls; the C++ method still receives a dynamic
|
|
10
|
+
* string and answers `undefined` when no retained capability matches.
|
|
11
|
+
*/
|
|
12
|
+
readonly builtinModuleLookup?: true;
|
|
13
|
+
/** Additional inherited declarations this implementation covers, only when
|
|
14
|
+
* this exact primary host declaration is also present in the member set.
|
|
15
|
+
* This does not register the inherited member for unrelated receivers. */
|
|
16
|
+
readonly inheritedDeclarations?: readonly {
|
|
17
|
+
readonly declarationFileName: string;
|
|
18
|
+
readonly owner: string;
|
|
19
|
+
readonly member: string;
|
|
20
|
+
}[];
|
|
21
|
+
}
|
|
22
|
+
/** Declaration file -> declared owner.member -> host protocol member. */
|
|
23
|
+
export type HostMethodBindingTable = ReadonlyMap<string, ReadonlyMap<string, HostMethodBinding>>;
|
|
24
|
+
export declare const resolveHostMethod: (checker: ts.TypeChecker, bindings: HostMethodBindingTable, node: ts.PropertyAccessExpression | ts.ElementAccessExpression) => HostMethodBinding | null;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
/** The named declaration that owns a callable member, including a function-valued property in a type alias. */
|
|
4
|
+
const memberOwnerName = (declaration) => {
|
|
5
|
+
let owner = declaration.parent;
|
|
6
|
+
while (owner && (ts.isTypeLiteralNode(owner) || ts.isIntersectionTypeNode(owner) || ts.isParenthesizedTypeNode(owner))) {
|
|
7
|
+
owner = owner.parent;
|
|
8
|
+
}
|
|
9
|
+
return owner && (ts.isInterfaceDeclaration(owner) || ts.isClassDeclaration(owner) || ts.isTypeAliasDeclaration(owner)) && owner.name
|
|
10
|
+
? owner.name.text
|
|
11
|
+
: null;
|
|
12
|
+
};
|
|
13
|
+
/** Whether an ambient declaration denotes a method-shaped value a host may explicitly bind. */
|
|
14
|
+
const isBindableMethodDeclaration = (checker, declaration) => {
|
|
15
|
+
if (ts.isMethodDeclaration(declaration))
|
|
16
|
+
return declaration.body === undefined;
|
|
17
|
+
if (ts.isMethodSignature(declaration))
|
|
18
|
+
return true;
|
|
19
|
+
return ts.isPropertySignature(declaration) && checker.getTypeAtLocation(declaration).getCallSignatures().length > 0;
|
|
20
|
+
};
|
|
21
|
+
export const resolveHostMethod = (checker, bindings, node) => {
|
|
22
|
+
// This binding names a native invocation, not a bound JS function object.
|
|
23
|
+
// Extracted methods retain JavaScript's unbound-this semantics and must go
|
|
24
|
+
// through a first-class callable implementation before this host can claim them.
|
|
25
|
+
let callee = node;
|
|
26
|
+
while (ts.isParenthesizedExpression(callee.parent))
|
|
27
|
+
callee = callee.parent;
|
|
28
|
+
if (!ts.isCallExpression(callee.parent) || callee.parent.expression !== callee)
|
|
29
|
+
return null;
|
|
30
|
+
const key = ts.isPropertyAccessExpression(node) ? node.name : node.argumentExpression;
|
|
31
|
+
const symbol = checker.getSymbolAtLocation(key) ??
|
|
32
|
+
(ts.isStringLiteralLike(key) ? checker.getPropertyOfType(checker.getTypeAtLocation(node.expression), key.text) : undefined);
|
|
33
|
+
if (!symbol)
|
|
34
|
+
return null;
|
|
35
|
+
const declarations = symbol.getDeclarations() ?? [];
|
|
36
|
+
if (declarations.length === 0)
|
|
37
|
+
return null;
|
|
38
|
+
const claimed = [];
|
|
39
|
+
const inherited = [];
|
|
40
|
+
for (const declaration of declarations) {
|
|
41
|
+
// A concrete implementation always wins over a host claim, even when an
|
|
42
|
+
// intersection also contributes a declaration the plugin recognizes.
|
|
43
|
+
if (ts.isMethodDeclaration(declaration) && declaration.body)
|
|
44
|
+
return null;
|
|
45
|
+
const owner = memberOwnerName(declaration);
|
|
46
|
+
if (owner === null)
|
|
47
|
+
return null;
|
|
48
|
+
// A plugin states its table against paths it built itself, and the
|
|
49
|
+
// checker spells a file name its own way -- forward slashes, whatever
|
|
50
|
+
// the platform's separator is. Resolving on the miss costs one lookup
|
|
51
|
+
// and is the difference between a host method being claimed and the
|
|
52
|
+
// whole binding table being invisible on Windows.
|
|
53
|
+
const declarationFile = declaration.getSourceFile().fileName;
|
|
54
|
+
const table = bindings.get(declarationFile) ?? bindings.get(resolve(declarationFile));
|
|
55
|
+
const binding = table?.get(`${owner}.${symbol.getName()}`);
|
|
56
|
+
if (!isBindableMethodDeclaration(checker, declaration))
|
|
57
|
+
return null;
|
|
58
|
+
if (binding)
|
|
59
|
+
claimed.push(binding);
|
|
60
|
+
else
|
|
61
|
+
inherited.push({ declarationFileName: declaration.getSourceFile().fileName, owner, member: symbol.getName() });
|
|
62
|
+
}
|
|
63
|
+
const selected = claimed[0];
|
|
64
|
+
if (!selected || !claimed.every((claim) => claim.protocol === selected.protocol && claim.member === selected.member))
|
|
65
|
+
return null;
|
|
66
|
+
// Every declaration is still accounted for. Coverage is an explicit host
|
|
67
|
+
// fact anchored to a primary declaration, not permission to ignore another
|
|
68
|
+
// overload. A caller augmentation in any other file remains unclaimed.
|
|
69
|
+
if (!inherited.every((declaration) => claimed.some((claim) => claim.inheritedDeclarations?.some((coverage) => coverage.declarationFileName === declaration.declarationFileName &&
|
|
70
|
+
coverage.owner === declaration.owner &&
|
|
71
|
+
coverage.member === declaration.member))))
|
|
72
|
+
return null;
|
|
73
|
+
return selected;
|
|
74
|
+
};
|
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import type { NamespacePathCensus } from './normalize/namespace-paths.js';
|
|
3
|
+
import type { DeclarationId, StructuralTypeId } from '../identity/ids.js';
|
|
4
|
+
import type { TypedArrayElementDomain } from '../representation/model.js';
|
|
5
|
+
import type { KeyedCollectionFamily, RegExpDeclarationKind, StandardBufferKind } from '../representation/policies.js';
|
|
6
|
+
import type { CensusCandidate } from './normalize/census.js';
|
|
7
|
+
import type { IdentityTable } from './normalize/identities.js';
|
|
8
|
+
import type { StructuralMapper } from './normalize/structural.js';
|
|
9
|
+
import type { StructuralTypeTable } from './model/structural-type-table.js';
|
|
10
|
+
import type { CommonJsWrapperDeclaration, HostNativeTypeDeclaration, HostOwnedDeclaration } from '../plugins/model.js';
|
|
11
|
+
/**
|
|
12
|
+
* The ambient host-protocol census: what this program's own declarations say
|
|
13
|
+
* a host owns, split out of `frontend.ts` on its own (the architecture gate's
|
|
14
|
+
* 800-line ceiling) rather than for any conceptual reason -- `runFrontend`
|
|
15
|
+
* calls exactly three things here (`hostProtocolBindings`, `ambientHostBindings`,
|
|
16
|
+
* `promiseDeclarationOf`) and owns the rest of the pipeline itself.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* A declared type this program's own language surface binds to a host protocol.
|
|
20
|
+
*
|
|
21
|
+
* `protocol`/`version` name the runtime contract; nothing here names a
|
|
22
|
+
* framework, a package, or a file. See `hostProtocolBindings` for what
|
|
23
|
+
* authenticates one.
|
|
24
|
+
*/
|
|
25
|
+
export interface HostProtocolBinding {
|
|
26
|
+
readonly protocol: string;
|
|
27
|
+
readonly version: number;
|
|
28
|
+
/**
|
|
29
|
+
* The type the host's own runtime carries values of this protocol in, when
|
|
30
|
+
* the plugin that installs the protocol stated one; `null` when it did not.
|
|
31
|
+
*
|
|
32
|
+
* This is the host's name for its own type, not a C++ spelling this compiler
|
|
33
|
+
* invented -- which is why it can travel through the target-neutral carrier
|
|
34
|
+
* and be spelled verbatim by the backend. A protocol with no stated carrier
|
|
35
|
+
* keeps the opaque tagged handle, which is the honest physical answer for a
|
|
36
|
+
* boundary nothing has described.
|
|
37
|
+
*
|
|
38
|
+
* It is also the join key everything downstream uses: the preflight claim,
|
|
39
|
+
* and the host member table's lookup. Thirteen declared names carry one
|
|
40
|
+
* `NodeHandle`, so keying on the carrier states the fact once.
|
|
41
|
+
*/
|
|
42
|
+
readonly native: string | null;
|
|
43
|
+
/**
|
|
44
|
+
* The protocol's own members, as the checker's lib declaration states them --
|
|
45
|
+
* `null` for a protocol this walk did not classify (every construction site
|
|
46
|
+
* but `bindAmbientValue`'s own, and that one only for a carrier with no
|
|
47
|
+
* stated host type: see `hostIntrinsicMembersOf`'s own comment for why).
|
|
48
|
+
*
|
|
49
|
+
* This is the one static fact ECMA-262's own reflection questions over an
|
|
50
|
+
* intrinsic (`Object.getOwnPropertyDescriptor(Math, k)`, `k in Math`,
|
|
51
|
+
* `Object.getOwnPropertyNames(Math)`, `delete Math.k`) all reduce to: WHICH
|
|
52
|
+
* names are own properties, and for each, whether reading it calls into a
|
|
53
|
+
* signature or hands back a value. Nothing downstream may hand-list `Math`'s
|
|
54
|
+
* members instead of reading them from here -- that would be a second,
|
|
55
|
+
* syntax-free but still HAND-MAINTAINED table the checker's own lib
|
|
56
|
+
* declaration could silently drift out from under.
|
|
57
|
+
*/
|
|
58
|
+
readonly members?: readonly HostIntrinsicMember[] | null;
|
|
59
|
+
/**
|
|
60
|
+
* True when the values of this protocol are built by the HOST rather than by
|
|
61
|
+
* the program, so the declared body is not a layout at any size.
|
|
62
|
+
*
|
|
63
|
+
* `derive.ts` otherwise reads a bound declaration with a data-only body as a
|
|
64
|
+
* struct the host returns by value (`GeolocationPosition`, `TouchSample`):
|
|
65
|
+
* the program receives one and reads its fields, and spelling the host's own
|
|
66
|
+
* struct makes clang check every member name. That rule is right for a type
|
|
67
|
+
* a host *hands out* and wrong for one a host *is asked to construct*: a JSX
|
|
68
|
+
* element is produced by an element expression, never by the program writing
|
|
69
|
+
* its members, so its declared body -- `{}` in gea's `JSX.Element`, `{ readonly
|
|
70
|
+
* nodeKind: number }` in a fixture's -- describes nothing physical at all.
|
|
71
|
+
* Reading it as a layout turned every element in such a program into a struct
|
|
72
|
+
* copy and refused emission by name.
|
|
73
|
+
*/
|
|
74
|
+
readonly opaque: boolean;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* The declared type the language gives a JSX element, bound to the JSX host
|
|
78
|
+
* protocol.
|
|
79
|
+
*
|
|
80
|
+
* A JSX element is the one construction whose result type the *language*
|
|
81
|
+
* defines by lookup rather than the program defining it by declaration: the
|
|
82
|
+
* checker resolves `JSX.Element` through the JSX namespace in scope, and every
|
|
83
|
+
* element expression in the program has that type. So asking the checker for
|
|
84
|
+
* the type of an element -- which the element producer already does -- is what
|
|
85
|
+
* identifies the declaration, and no name, path, or package is consulted to do
|
|
86
|
+
* it.
|
|
87
|
+
*
|
|
88
|
+
* Binding it matters because the answer would otherwise be structurally
|
|
89
|
+
* plausible and physically wrong. `interface Element extends GeaJsxElement {}`
|
|
90
|
+
* where `GeaJsxElement` is `{}` derives a `native-record-ref` to an empty
|
|
91
|
+
* struct: C++ that compiles, holds nothing, and renders nothing. An element is
|
|
92
|
+
* an opaque host handle, and `native-handle` is the carrier that says so.
|
|
93
|
+
*
|
|
94
|
+
* The binding is only a *claim* -- `preflight/run.ts` still censuses the
|
|
95
|
+
* protocol against `manifest.nativeProtocols`, so a target that has not
|
|
96
|
+
* implemented it refuses the program instead of emitting against glue that
|
|
97
|
+
* does not exist.
|
|
98
|
+
*
|
|
99
|
+
* An element the checker types `any` binds nothing: no JSX namespace was in
|
|
100
|
+
* scope, and binding a protocol to `any`'s declaration -- if it even had one --
|
|
101
|
+
* would claim a contract the program never established. The element producer
|
|
102
|
+
* refuses that program by its own route, and this stays silent rather than
|
|
103
|
+
* manufacturing a second, weaker answer to the same question.
|
|
104
|
+
*
|
|
105
|
+
* The carrier is asked of the host by the protocol's own name, exactly as every
|
|
106
|
+
* other host protocol's is (`declaredHostShape` below): a host that states what
|
|
107
|
+
* it holds a JSX element in gets its own type spelled, and one that states
|
|
108
|
+
* nothing gets the tagged handle. Leaving it unconditionally unstated is what
|
|
109
|
+
* made every element in a gea program a `gea::NativeHandle<...jsx_element_v1>`
|
|
110
|
+
* -- a tag type with no tree behind it, so an app compiled, ran, and rendered
|
|
111
|
+
* nothing, while the engine's real `NodeHandle` sat in the same table one
|
|
112
|
+
* lookup away.
|
|
113
|
+
*/
|
|
114
|
+
export declare const hostProtocolBindings: (input: HostProtocolInput, census: HostCensus) => void;
|
|
115
|
+
export interface HostProtocolInput {
|
|
116
|
+
readonly checker: ts.TypeChecker;
|
|
117
|
+
readonly identities: IdentityTable;
|
|
118
|
+
readonly files: readonly ts.SourceFile[];
|
|
119
|
+
readonly census: readonly CensusCandidate[];
|
|
120
|
+
readonly types: StructuralMapper;
|
|
121
|
+
readonly table: StructuralTypeTable;
|
|
122
|
+
/** See `FrontendInput.nativeTypes`. Empty means no host states a carrier for anything. */
|
|
123
|
+
readonly nativeTypes: ReadonlyMap<string, string>;
|
|
124
|
+
/** Exact declaration-owned native type rows, which take precedence over name-only rows. */
|
|
125
|
+
readonly nativeTypesByDeclaration: ReadonlyMap<string, HostNativeTypeDeclaration>;
|
|
126
|
+
/** Exact declaration-owned singleton rows. */
|
|
127
|
+
readonly hostSingletonDeclarations: ReadonlyMap<string, HostOwnedDeclaration>;
|
|
128
|
+
/** See `FrontendInput.hostNamespaceRoots`. A name in here is a path, never a value. */
|
|
129
|
+
readonly hostNamespaceRoots: ReadonlySet<string>;
|
|
130
|
+
/** Exact declaration-owned namespace roots; configured names mask the name-only table. */
|
|
131
|
+
readonly hostNamespaceRootDeclarations: readonly HostOwnedDeclaration[];
|
|
132
|
+
/** See `FrontendInput.hostNamespacePaths`. A dotted path with one of these as a prefix is a path segment, never a value. */
|
|
133
|
+
readonly hostNamespacePaths: ReadonlySet<string>;
|
|
134
|
+
/** See `FrontendInput.hostNamespaceRootTypes`. The type a host carries the one object behind a root in. */
|
|
135
|
+
readonly hostNamespaceRootTypes: ReadonlyMap<string, string>;
|
|
136
|
+
readonly commonJsGlobals: ReadonlyMap<string, CommonJsWrapperDeclaration>;
|
|
137
|
+
/** The exact declaration files named by `commonJsGlobals`, as loaded by this Program. */
|
|
138
|
+
readonly commonJsDeclarationFiles: readonly ts.SourceFile[];
|
|
139
|
+
/** The program's own namespace paths (`normalize/namespace-paths.ts`), for the census's `isValueReference` rule. */
|
|
140
|
+
readonly namespacePaths: NamespacePathCensus;
|
|
141
|
+
/** TypeScript's declarationless intrinsic global object, distinguished from a caller-owned binding with the same spelling. */
|
|
142
|
+
readonly isIntrinsicGlobalThis: (node: ts.Node) => boolean;
|
|
143
|
+
}
|
|
144
|
+
/** What one walk of the program's own files learns about the declarations a host owns. */
|
|
145
|
+
export interface HostCensus {
|
|
146
|
+
readonly protocols: Map<DeclarationId, HostProtocolBinding>;
|
|
147
|
+
/** The ABI name a host defines a cell under, for every ambient value this program reads. */
|
|
148
|
+
readonly externals: Map<DeclarationId, string>;
|
|
149
|
+
readonly externalFiles: Map<DeclarationId, string>;
|
|
150
|
+
/**
|
|
151
|
+
* The structural type of every host NAMESPACE ROOT this program names, to
|
|
152
|
+
* the C++ type the host carries that root's one object in.
|
|
153
|
+
*
|
|
154
|
+
* Keyed by structural type rather than by declaration -- the one key in this
|
|
155
|
+
* census that is not a `DeclarationId`, and the difference is forced, not a
|
|
156
|
+
* choice. A namespace root is a VALUE, so what needs an answer is the
|
|
157
|
+
* carrier of the value's own type; and that type routinely has no
|
|
158
|
+
* declaration to key by. `window`'s is `Window & typeof globalThis`, an
|
|
159
|
+
* intersection whose `getSymbol()` is `undefined`, and a host is equally
|
|
160
|
+
* free to declare a root with an anonymous object type
|
|
161
|
+
* (`declare const __gea_Display: { ... }`). `representation/derive.ts` is
|
|
162
|
+
* keyed by structural type throughout, so this is also the key it can
|
|
163
|
+
* actually read; see `HostNamespaceRootPolicy`.
|
|
164
|
+
*
|
|
165
|
+
* Interning is free here: `bindAmbientValue` already asks
|
|
166
|
+
* `types.typeOf(type)` for the shape it looks up, so this records an id that
|
|
167
|
+
* exists either way rather than interning a type nothing else asked about --
|
|
168
|
+
* which is what `bindNativeType`'s own comment warns is order-sensitive.
|
|
169
|
+
*/
|
|
170
|
+
readonly namespaceRoots: Map<StructuralTypeId, string>;
|
|
171
|
+
/**
|
|
172
|
+
* Which of those ambient declarations the STANDARD LIBRARY declares, rather
|
|
173
|
+
* than a host, a framework, or the program's own declaration file.
|
|
174
|
+
*
|
|
175
|
+
* `SourceFile.hasNoDefaultLib` is the answer, and it is the checker's own
|
|
176
|
+
* fact rather than a path guess: every `lib.*.d.ts` TypeScript ships opens
|
|
177
|
+
* with `/// <reference no-default-lib="true"/>`, which is precisely the
|
|
178
|
+
* directive that says "this file IS a standard library", and nothing else
|
|
179
|
+
* sets it.
|
|
180
|
+
*
|
|
181
|
+
* Read by `projection/bindings.ts` for exactly one question: whether an
|
|
182
|
+
* ambient name may resolve to one of the ECMAScript/WHATWG globals this
|
|
183
|
+
* backend implements itself (`btoa`, `encodeURIComponent`, ...). Those are
|
|
184
|
+
* language builtins, so the compiler owns their C++ spellings -- but the
|
|
185
|
+
* table is keyed by NAME, and a name match alone would silently redirect a
|
|
186
|
+
* program's own `declare function btoa` to this runtime's base64 codec.
|
|
187
|
+
* Requiring the declaration to be the standard library's is what makes the
|
|
188
|
+
* name safe to key on.
|
|
189
|
+
*/
|
|
190
|
+
readonly standardLibrary: Set<DeclarationId>;
|
|
191
|
+
readonly commonJsBindings: Map<DeclarationId, 'require' | 'exports' | 'module'>;
|
|
192
|
+
/** Ambient declarations using a reserved wrapper spelling without the host identity. */
|
|
193
|
+
readonly commonJsProvenanceFailures: Set<DeclarationId>;
|
|
194
|
+
/** Ambient values whose complete Symbol declaration set is owned by a host singleton row. */
|
|
195
|
+
readonly hostSingletonBindings: Set<DeclarationId>;
|
|
196
|
+
/** Ambient namespace roots authenticated by their complete Symbol declaration set. */
|
|
197
|
+
readonly hostNamespaceBindings: Set<DeclarationId>;
|
|
198
|
+
}
|
|
199
|
+
export declare const ambientHostBindings: (input: HostProtocolInput, census: HostCensus, typedArrayElements: Map<DeclarationId, TypedArrayElementDomain>) => void;
|
|
200
|
+
/**
|
|
201
|
+
* The same nine names, for a caller that only needs to ask "is this receiver
|
|
202
|
+
* one of the standard TypedArray instance interfaces" and has no
|
|
203
|
+
* `IdentityTable`/`DeclarationId` machinery available yet to consume
|
|
204
|
+
* `typedArrayDeclarationsOf` below -- `flow/value-flow.ts` is built in
|
|
205
|
+
* `frontend.ts` before `identities` exists (see that file's own doc comment
|
|
206
|
+
* on `isStandardInterfaceType`). Exported so that caller can resolve each
|
|
207
|
+
* name through the checker itself rather than re-typing this list as a
|
|
208
|
+
* second, independently-maintained answer to "which nine names."
|
|
209
|
+
*/
|
|
210
|
+
export declare const typedArrayInstanceInterfaceNames: readonly string[];
|
|
211
|
+
/** The nine instance interfaces' declaration identities, resolved by name exactly as `standardBufferDeclarationsOf` resolves `ArrayBuffer`/`DataView` -- see `typedArrayInstanceDomains`. */
|
|
212
|
+
export declare const typedArrayDeclarationsOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[], program: ts.Program, hostDeclarations?: readonly HostOwnedDeclaration[]) => Map<DeclarationId, TypedArrayElementDomain>;
|
|
213
|
+
/**
|
|
214
|
+
* The declaration identity of the standard library's own `Promise<T>`
|
|
215
|
+
* interface -- resolved independent of whether the program's own text ever
|
|
216
|
+
* names `Promise`, because an `async` function's return type mentions it
|
|
217
|
+
* without a single textual reference the ambient-value seed walk above could
|
|
218
|
+
* pick up (`typedArrayElementBindings`/`bindHostObjectClosure` both start
|
|
219
|
+
* from identifiers actually written in value position; `async function f()
|
|
220
|
+
* {}` has none).
|
|
221
|
+
*
|
|
222
|
+
* `checker.resolveName` is the public TypeChecker API for exactly this:
|
|
223
|
+
* "what does this name mean here", independent of any use site. Any source
|
|
224
|
+
* file anchors the lookup -- `Promise` is a single ambient global, not
|
|
225
|
+
* scoped per-file, so which file supplies the location does not change the
|
|
226
|
+
* answer.
|
|
227
|
+
*
|
|
228
|
+
* Routed through `identities.symbolDeclarationId` rather than a bespoke
|
|
229
|
+
* declaration walk: it already does alias-following and specialization-path
|
|
230
|
+
* resolution the same way every other declaration identity in this file is
|
|
231
|
+
* computed, so a program that re-exports or augments `Promise` is not a
|
|
232
|
+
* second code path to get wrong.
|
|
233
|
+
*/
|
|
234
|
+
export declare const promiseDeclarationOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => DeclarationId | null;
|
|
235
|
+
/**
|
|
236
|
+
* The declaration identity of the standard library's own `Date` INTERFACE --
|
|
237
|
+
* `lib.es5.d.ts`'s `interface Date`, the type of a Date instance, never the
|
|
238
|
+
* `DateConstructor` the global `Date` VALUE has.
|
|
239
|
+
*
|
|
240
|
+
* Resolved exactly the way `promiseDeclarationOf` above resolves `Promise`,
|
|
241
|
+
* and for the same reason: a program can receive a Date purely through an
|
|
242
|
+
* imported signature and never name the type itself, so `checker.resolveName`
|
|
243
|
+
* -- which answers "what does this name mean here" with no use site at all --
|
|
244
|
+
* is what makes the policy installable either way.
|
|
245
|
+
*
|
|
246
|
+
* Date is core ECMAScript with a compiler-owned native layout, the category
|
|
247
|
+
* `Promise<T>`, the eight TypedArray views and the four keyed collections are
|
|
248
|
+
* already in -- NOT a host protocol. Nothing installs it; `lib.es5.d.ts`
|
|
249
|
+
* declares it, and `gea::runtime::Date` (runtime/gea_runtime.h) implements
|
|
250
|
+
* it. Its C++ spelling therefore belongs to the backend's own tables
|
|
251
|
+
* (`targets/cpp/prototype/emit-prototype-date.ts`), never to a plugin package.
|
|
252
|
+
*
|
|
253
|
+
* Consulted ahead of `HostBindingPolicy` in `derive.ts` for the reason
|
|
254
|
+
* `PromiseDeclarationPolicy` states for itself: `Date`'s ambient interface
|
|
255
|
+
* body, run through `declaredBodyOf`'s data-only member stripping, is an
|
|
256
|
+
* EMPTY object shape (every member of `interface Date` is a method), so
|
|
257
|
+
* falling through seals a layout of nothing and the emitter then spells
|
|
258
|
+
* `d.getFullYear` as a struct field that does not exist.
|
|
259
|
+
*/
|
|
260
|
+
export declare const dateDeclarationOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => DeclarationId | null;
|
|
261
|
+
/**
|
|
262
|
+
* The declaration identity of the standard `String` WRAPPER-OBJECT interface
|
|
263
|
+
* (`lib.es5.d.ts`'s `interface String`), resolved exactly the way
|
|
264
|
+
* `dateDeclarationOf` immediately above resolves `Date`, and for the same
|
|
265
|
+
* reasons: `new String(x)` can reach the type through an imported signature's
|
|
266
|
+
* return type and never name it directly, so `checker.resolveName` -- which
|
|
267
|
+
* answers "what does this name mean here" independent of any use site -- is
|
|
268
|
+
* what makes the policy installable either way.
|
|
269
|
+
*
|
|
270
|
+
* `String` (the interface, not the `string` primitive or `StringConstructor`
|
|
271
|
+
* the value `String` resolves to) is core ECMAScript with a compiler-owned
|
|
272
|
+
* native layout, the same category `Date` is in -- see
|
|
273
|
+
* `StringObjectDeclarationPolicy` (representation/policies.ts) for the full
|
|
274
|
+
* reasoning on why this must be resolved and checked ahead of
|
|
275
|
+
* `HostBindingPolicy`.
|
|
276
|
+
*/
|
|
277
|
+
export declare const stringObjectDeclarationOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => DeclarationId | null;
|
|
278
|
+
/** Resolve intrinsic Error interfaces by declaration identity, never at a property use site. */
|
|
279
|
+
export declare const errorDeclarationsOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => ReadonlySet<DeclarationId>;
|
|
280
|
+
/**
|
|
281
|
+
* The declaration identity of the standard `Generator<T, TReturn, TNext>`
|
|
282
|
+
* interface, resolved exactly the way `promiseDeclarationOf` above resolves
|
|
283
|
+
* `Promise` and for the same reasons: independence from whether the program
|
|
284
|
+
* ever writes the name, and one alias-following implementation shared with
|
|
285
|
+
* every other declaration identity in this file.
|
|
286
|
+
*
|
|
287
|
+
* `ts.SymbolFlags.Interface`, because that is what `lib.es2015.generator.d.ts`
|
|
288
|
+
* declares it as. A `lib` that does not install it (an `ES5`-only project)
|
|
289
|
+
* answers `null`, and every `function*` in such a program is then refused
|
|
290
|
+
* rather than mis-carried -- which is correct, since `function*` is not
|
|
291
|
+
* expressible under that `lib` either.
|
|
292
|
+
*/
|
|
293
|
+
/**
|
|
294
|
+
* The declaration identity of the bare `Function` interface (`lib.es5.d.ts`'s
|
|
295
|
+
* `interface Function`), resolved exactly the way `stringObjectDeclarationOf`
|
|
296
|
+
* above resolves `String` and for the same reason: a program almost never
|
|
297
|
+
* writes the name, yet reaches the type constantly --
|
|
298
|
+
* `typeof x === 'function'` narrows an `unknown` to it, and
|
|
299
|
+
* `Object.prototype.constructor` is declared as it -- so `checker.resolveName`,
|
|
300
|
+
* which answers "what does this name mean here" independent of any use site,
|
|
301
|
+
* is what makes the policy installable at all.
|
|
302
|
+
*
|
|
303
|
+
* `ts.SymbolFlags.Interface`, because that is what declares it; the value
|
|
304
|
+
* `Function` resolves to `FunctionConstructor`, which is a different symbol
|
|
305
|
+
* and deliberately untouched -- an ambient constructor object really is a host
|
|
306
|
+
* boundary. See `FunctionDeclarationPolicy` (representation/policies.ts).
|
|
307
|
+
*/
|
|
308
|
+
export declare const functionDeclarationOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => DeclarationId | null;
|
|
309
|
+
/** Standard `SymbolConstructor` unique-symbol declarations, keyed by declaration identity. */
|
|
310
|
+
export declare const wellKnownSymbolDeclarationsOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => ReadonlyMap<DeclarationId, string>;
|
|
311
|
+
/**
|
|
312
|
+
* The declaration identity of the standard `AsyncGenerator<T, TReturn, TNext>`
|
|
313
|
+
* interface -- what an `async function*` returns -- resolved exactly the way
|
|
314
|
+
* `generatorDeclarationOf` below resolves `Generator`.
|
|
315
|
+
*
|
|
316
|
+
* It carries the SAME `iterator(T)` cursor, and that is not an approximation:
|
|
317
|
+
* `gea::Promise<V>` is a settled-value box with no job queue, so every `await`
|
|
318
|
+
* this compiler emits is a synchronous read and an async body has run to
|
|
319
|
+
* completion by the time it returns. Under that model an async generator's
|
|
320
|
+
* `next()` hands back an already-settled result, which is exactly what the
|
|
321
|
+
* synchronous cursor already is (see `producers/control.ts`'s yield comment
|
|
322
|
+
* for the full argument, and for what a port with a real job queue would have
|
|
323
|
+
* to revisit alongside it).
|
|
324
|
+
*/
|
|
325
|
+
export declare const asyncGeneratorDeclarationOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => DeclarationId | null;
|
|
326
|
+
export declare const generatorDeclarationOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => DeclarationId | null;
|
|
327
|
+
/** The standard `MapIterator<T>` returned by `Map.prototype.entries()`. */
|
|
328
|
+
export declare const mapIteratorDeclarationOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => DeclarationId | null;
|
|
329
|
+
/**
|
|
330
|
+
* The declaration identity of the standard `ArrayBuffer` and `DataView`
|
|
331
|
+
* interfaces, resolved exactly the way `keyedCollectionDeclarationsOf` below
|
|
332
|
+
* resolves `Map`/`Set` and for the same two reasons.
|
|
333
|
+
*
|
|
334
|
+
* Independence from the program's own text is the first: `three.js` writes
|
|
335
|
+
* `function f(b: ArrayBuffer)` in files that never construct one, and a
|
|
336
|
+
* program that only ever receives a `DataView` from a signature names neither
|
|
337
|
+
* as a value. `checker.resolveName` answers "what does this name mean here"
|
|
338
|
+
* with no use site at all.
|
|
339
|
+
*
|
|
340
|
+
* The second is the same collision the `Map` comment describes: the
|
|
341
|
+
* ambient-value census ALREADY reaches `ArrayBuffer` -- through
|
|
342
|
+
* `Uint8ArrayConstructor`'s own modern return type `Uint8Array<ArrayBuffer>`,
|
|
343
|
+
* among others -- and binds it as an opaque host protocol, which is what the
|
|
344
|
+
* corpus's three `native-boundary:ArrayBufferConstructor@1` rows were. Consulted
|
|
345
|
+
* first in `derive.ts`, this policy gives the concrete byte-block carrier
|
|
346
|
+
* instead; the CONSTRUCTOR's own handle stays a host boundary, which is
|
|
347
|
+
* correct, because `ArrayBuffer` the value really is a constructor object.
|
|
348
|
+
*/
|
|
349
|
+
export declare const standardBufferDeclarationsOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => Map<DeclarationId, StandardBufferKind>;
|
|
350
|
+
/**
|
|
351
|
+
* The standard library's own NATIVE-BACKED CLASSES, bound to the carrier the
|
|
352
|
+
* backend implements them in.
|
|
353
|
+
*
|
|
354
|
+
* `TextEncoder` and `TextDecoder` are the pair this exists for. They are not a
|
|
355
|
+
* host's protocol -- nothing installs them, no plugin declares them -- and they
|
|
356
|
+
* are not `ArrayBuffer`'s shape either: each is a real object with methods, so
|
|
357
|
+
* the honest carrier is the backend's own C++ class, spelled verbatim through
|
|
358
|
+
* `native-handle`, exactly as an installed host's stated `nativeTypes` carrier
|
|
359
|
+
* is. Which names are in the set, and what each is spelled as, is the
|
|
360
|
+
* BACKEND's answer (`targets/cpp/host/core-globals.ts`); this function knows
|
|
361
|
+
* only how to resolve a name to the two declarations that carry it.
|
|
362
|
+
*
|
|
363
|
+
* Only the INSTANCE type is bound here, and the reason the CONSTRUCTOR is not
|
|
364
|
+
* is worth stating, because it is what shapes the rest of the route:
|
|
365
|
+
*
|
|
366
|
+
* interface TextEncoder extends TextEncoderCommon { encode(...): Uint8Array }
|
|
367
|
+
* declare var TextEncoder: { prototype: TextEncoder; new(): TextEncoder }
|
|
368
|
+
*
|
|
369
|
+
* The instance type is a named interface, so it binds the way every other
|
|
370
|
+
* declared type does. The constructor's type is an ANONYMOUS type literal --
|
|
371
|
+
* unlike `Uint8Array`, whose constructor is the named `Uint8ArrayConstructor`
|
|
372
|
+
* -- and an anonymous type reaches `representation/derive.ts` through its
|
|
373
|
+
* structural body, never through the declaration-keyed binding this function
|
|
374
|
+
* writes, so a row for it here would be a claim nothing reads. The class
|
|
375
|
+
* OBJECT is answered one layer down instead, by name:
|
|
376
|
+
* `projection/bindings.ts` gives it `host-class` storage (no cell, no extern)
|
|
377
|
+
* and `targets/cpp/emit-buffers.ts`'s `emitTextCodecConstruct` spells the
|
|
378
|
+
* construction whole. See `coreGlobalClasses`.
|
|
379
|
+
*
|
|
380
|
+
* Run AFTER `ambientHostBindings`, so it overwrites the weaker binding that
|
|
381
|
+
* census may already have made from the same declaration -- the identical
|
|
382
|
+
* precedence `standardBufferDeclarationsOf` states for `ArrayBuffer`.
|
|
383
|
+
*/
|
|
384
|
+
export declare const bindStandardClasses: (input: HostProtocolInput, census: HostCensus, names: ReadonlySet<string>) => void;
|
|
385
|
+
export declare const keyedCollectionDeclarationsOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => Map<DeclarationId, KeyedCollectionFamily>;
|
|
386
|
+
/**
|
|
387
|
+
* The declaration identity of each standard regular-expression interface this
|
|
388
|
+
* compilation's `lib` installs.
|
|
389
|
+
*
|
|
390
|
+
* Resolved exactly the way `keyedCollectionDeclarationsOf` above resolves
|
|
391
|
+
* `Map`, and for both of the same reasons. Independence from the program's own
|
|
392
|
+
* text first: a regexp LITERAL (`/ab+c/g`) names `RegExp` nowhere, and neither
|
|
393
|
+
* does `s.match(re)`'s `RegExpMatchArray | null` result -- the ambient-VALUE
|
|
394
|
+
* seed walk starts from identifiers written in value position, and a literal
|
|
395
|
+
* writes none. `checker.resolveName` answers "what does this name mean here"
|
|
396
|
+
* with no use site at all.
|
|
397
|
+
*
|
|
398
|
+
* Second, and again the reason this cannot be left to the host census: that
|
|
399
|
+
* census ALREADY reaches `RegExp` and binds it as a host protocol, through
|
|
400
|
+
* `RegExpConstructor`'s `new (pattern: string): RegExp` result. That binding
|
|
401
|
+
* gives every pattern an opaque `native-handle` with no layout -- so
|
|
402
|
+
* `re.source` has nowhere to go, and `re.lastIndex = 0` has nothing to store
|
|
403
|
+
* into. `derive.ts` consults this policy first, so the concrete record carrier
|
|
404
|
+
* wins over the opaque handle; `RegExpConstructor@1` itself is untouched.
|
|
405
|
+
*/
|
|
406
|
+
export declare const regexpDeclarationsOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => Map<DeclarationId, RegExpDeclarationKind>;
|
|
407
|
+
/** One own member of a reflectable host intrinsic, as `hostIntrinsicMembersOf` classifies it. */
|
|
408
|
+
export interface HostIntrinsicMember {
|
|
409
|
+
readonly name: string;
|
|
410
|
+
/**
|
|
411
|
+
* `'method'` when reading this member calls a signature (`Math.pow`);
|
|
412
|
+
* `'value'` when the member itself IS the thing handed back (`Math.SQRT2`).
|
|
413
|
+
* ECMA-262 gives the two different default attributes (21.3.1's constants
|
|
414
|
+
* are non-writable/non-configurable data properties; a builtin's own
|
|
415
|
+
* methods are writable/configurable, 10.2.4) -- this is the one bit that
|
|
416
|
+
* decides which set of defaults a reflection question answers from, and it
|
|
417
|
+
* comes from the SAME call-signature test `bindHostObjectClosure` above
|
|
418
|
+
* already uses to tell a method from a data member.
|
|
419
|
+
*/
|
|
420
|
+
readonly kind: 'value' | 'method';
|
|
421
|
+
/**
|
|
422
|
+
* The signature's own declared arity for a `'method'`, optional and rest
|
|
423
|
+
* parameters excluded (`requiredArityOf`) -- ECMA-262's `length` for a
|
|
424
|
+
* builtin function (10.2.4 `SetFunctionLength`) counts only the leading
|
|
425
|
+
* required parameters. `null` for a `'value'`, which has no signature to
|
|
426
|
+
* measure.
|
|
427
|
+
*/
|
|
428
|
+
readonly arity: number | null;
|
|
429
|
+
}
|