@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,47 @@
|
|
|
1
|
+
import { noHostNamespaces } from '../targets/cpp/host/host-members.js';
|
|
2
|
+
export const noPluginCapabilities = Object.freeze({
|
|
3
|
+
runtimeHelpers: new Set(),
|
|
4
|
+
propertyRecipes: new Set(),
|
|
5
|
+
nativeProtocols: new Set(),
|
|
6
|
+
typedArrayDeclarations: [],
|
|
7
|
+
commonJsGlobals: new Map(),
|
|
8
|
+
commonJsBuiltinModules: new Map(),
|
|
9
|
+
commonJsBuiltinModuleSources: new Map(),
|
|
10
|
+
nativeTypes: new Map(),
|
|
11
|
+
nativeTypesByDeclaration: new Map(),
|
|
12
|
+
ambientTypeRealizations: new Map(),
|
|
13
|
+
hostMembers: new Map(),
|
|
14
|
+
hostMemberVoidResults: new Set(),
|
|
15
|
+
hostConstructors: new Map(),
|
|
16
|
+
hostInvocations: new Map(),
|
|
17
|
+
hostFunctions: new Map(),
|
|
18
|
+
hostFunctionsByDeclaration: new Map(),
|
|
19
|
+
hostNamespaces: noHostNamespaces,
|
|
20
|
+
hostNamespaceRootsByDeclaration: new Map(),
|
|
21
|
+
hostNamespaceRootDeclarations: [],
|
|
22
|
+
hostNamespaceRootTypes: new Map(),
|
|
23
|
+
hostInstanceTests: new Map(),
|
|
24
|
+
hostSingletons: new Set(),
|
|
25
|
+
hostSingletonsByDeclaration: new Map(),
|
|
26
|
+
hostSingletonDeclarations: new Map(),
|
|
27
|
+
absentGlobals: new Set(),
|
|
28
|
+
hostPreambles: new Map(),
|
|
29
|
+
nativeBases: new Map(),
|
|
30
|
+
nativeIncludes: new Map(),
|
|
31
|
+
nativeConstants: new Map(),
|
|
32
|
+
hostConstantsByDeclaration: new Map(),
|
|
33
|
+
generatedSupportIncludes: [],
|
|
34
|
+
runtimeDefinitions: [],
|
|
35
|
+
elementFragment: null,
|
|
36
|
+
elementTextTags: [],
|
|
37
|
+
reachedMemberKeys: new Set(),
|
|
38
|
+
reactiveClassFields: new Map(),
|
|
39
|
+
nativeReactiveCell: null,
|
|
40
|
+
nativeReactiveCellPreamble: []
|
|
41
|
+
});
|
|
42
|
+
/** A plugin instance that changes nothing, for a compilation with none installed. */
|
|
43
|
+
export const inertPluginInstance = Object.freeze({
|
|
44
|
+
producers: () => [],
|
|
45
|
+
lower: () => false,
|
|
46
|
+
capabilities: noPluginCapabilities
|
|
47
|
+
});
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { AmbientTypeRealization } from '../../semantics/ambient-type-realization-transform.js';
|
|
2
|
+
import type { PluginSourceFile } from '../model.js';
|
|
3
|
+
/**
|
|
4
|
+
* The ambient free functions this host defines, to the C++ each is.
|
|
5
|
+
*
|
|
6
|
+
* This is the WHOLE of what the plugin has to state, and the reason it is so
|
|
7
|
+
* small is the point. `NativeWebGL2RenderingContext` and `NativeWebGLCanvas`
|
|
8
|
+
* are not host types at all -- they are ordinary TypeScript classes, shipped as
|
|
9
|
+
* source in the package's own `src/nativeWebGL.ts`, whose methods this compiler
|
|
10
|
+
* compiles natively like any other class. What crosses into the host is one
|
|
11
|
+
* layer below them: `threeWebGLCreateBuffer()` and its 126 siblings, ambient
|
|
12
|
+
* names declared in `nativeWebGLHost.ts` and defined in `angle_webgl_host.mm`.
|
|
13
|
+
*
|
|
14
|
+
* v1 states much more -- 88 `runtimeMemberCalls` and 333 `runtimeMemberReads`
|
|
15
|
+
* that recognize a call ON the context object and emit the host call directly,
|
|
16
|
+
* erasing the class. That is an optimization for a compiler that could not
|
|
17
|
+
* compile the class; it is not the meaning of the program, and restating it
|
|
18
|
+
* here would put 421 hand-written rows between this compiler and a class it can
|
|
19
|
+
* already read. If a direct-call fast path is ever worth its cost, it is worth
|
|
20
|
+
* it as a measurement, not as the only way the program compiles.
|
|
21
|
+
*/
|
|
22
|
+
export declare const webglHostFunctions: () => ReadonlyMap<string, string>;
|
|
23
|
+
/**
|
|
24
|
+
* What a unit must declare before it may name one of those spellings.
|
|
25
|
+
*
|
|
26
|
+
* Keyed by the spelling, which is how the package already states it: a program
|
|
27
|
+
* that calls two of these carries two `extern "C"` lines and not 127.
|
|
28
|
+
*/
|
|
29
|
+
export declare const webglHostPreambles: () => ReadonlyMap<string, readonly string[]>;
|
|
30
|
+
/** Source compatibility owned by the native WebGL package itself. */
|
|
31
|
+
export declare const webglSourceTransform: (input: PluginSourceFile) => string | null;
|
|
32
|
+
/**
|
|
33
|
+
* The browser globals a native ANGLE context does not provide.
|
|
34
|
+
*
|
|
35
|
+
* Scoped deliberately to this host's own neighbourhood -- the image, canvas and
|
|
36
|
+
* video element types a WebGL renderer reaches for when it uploads a texture.
|
|
37
|
+
* That is the surface this plugin replaces: `NativeWebGLCanvas` is the canvas,
|
|
38
|
+
* and there is no DOM behind it.
|
|
39
|
+
*
|
|
40
|
+
* Every name here is one three.js itself guards with `typeof X !== 'undefined'`,
|
|
41
|
+
* because three is written to run where they may not exist. Stating the absence
|
|
42
|
+
* is what makes that guard mean what it says; without it the guard folds to
|
|
43
|
+
* `true`, three takes a branch that reads `image.displayWidth` off something
|
|
44
|
+
* that is not a `VideoFrame`, and the unit emits an `extern` for a symbol no
|
|
45
|
+
* object file defines.
|
|
46
|
+
*
|
|
47
|
+
* Names deliberately NOT here, and why -- absence is a CLAIM about the target,
|
|
48
|
+
* so a name goes in only when this host is sure:
|
|
49
|
+
*
|
|
50
|
+
* - `performance`, `URL`, `Blob`, `fetch` and the network types: nothing about
|
|
51
|
+
* an ANGLE context says whether the target implements them, and `three` calls
|
|
52
|
+
* `performance.now()` unguarded. That is a different host's answer.
|
|
53
|
+
* - `WebGL2RenderingContext`: its constructor identity needs a native binding
|
|
54
|
+
* for programs that use it to detect WebGL 2. The WebGL 1 constructor is
|
|
55
|
+
* absent: this host only creates NativeWebGL2RenderingContext. In three's
|
|
56
|
+
* WebGL 1 rejection guard, absence correctly skips the rejected path.
|
|
57
|
+
* - `self`, `postMessage`, `importScripts`: worker globals, and whether this
|
|
58
|
+
* target has workers is not a fact about its GL context.
|
|
59
|
+
*/
|
|
60
|
+
export declare const webglAbsentGlobals: ReadonlySet<string>;
|
|
61
|
+
/**
|
|
62
|
+
* The ambient WebGL context names three's own source (and `@types/three`'s
|
|
63
|
+
* mirrored declarations) states, to the concrete class
|
|
64
|
+
* `@geastack/native-webgl-angle` actually hands a program.
|
|
65
|
+
*
|
|
66
|
+
* Both `WebGLRenderingContext` (`@types/three`'s stale declared type for
|
|
67
|
+
* three's internal `_gl` parameters -- see `WebGLRenderer`'s own comment in
|
|
68
|
+
* a three.js app's entry module) and `WebGL2RenderingContext` (what
|
|
69
|
+
* three's own JSDoc states for `WebGLRenderer~Options.context`) name it: two
|
|
70
|
+
* ambient interfaces, one real replacement, so both keys route to the same
|
|
71
|
+
* `NativeWebGL2RenderingContext`. A package with nothing to state here
|
|
72
|
+
* answers an empty map, and every ambient name keeps whatever the census
|
|
73
|
+
* already does with it -- exactly `nativeTypes`'s own convention.
|
|
74
|
+
*/
|
|
75
|
+
export declare const webglAmbientTypeRealizations: () => ReadonlyMap<string, AmbientTypeRealization>;
|
|
76
|
+
export declare const webglHostArraySnapshotFunctions: () => ReadonlySet<string>;
|
|
77
|
+
export declare const webglHostNativeArrayFunctions: () => ReadonlySet<string>;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
const require_ = createRequire(import.meta.url);
|
|
3
|
+
let loaded;
|
|
4
|
+
/**
|
|
5
|
+
* The package's own statement, loaded once.
|
|
6
|
+
*
|
|
7
|
+
* `require` rather than `import()`, and the same two failures told apart, for
|
|
8
|
+
* the reasons `geaNativeTypes` states in full: not installed is a
|
|
9
|
+
* configuration and answers empty, while a package that IS installed and does
|
|
10
|
+
* not answer is a defect and throws. `GEATSC2_WEBGL_PLUGIN` overrides the
|
|
11
|
+
* specifier with an explicit path, and naming one that does not resolve is a
|
|
12
|
+
* wrong path rather than an absent package -- so it throws too.
|
|
13
|
+
*/
|
|
14
|
+
const shims = () => {
|
|
15
|
+
if (loaded !== undefined)
|
|
16
|
+
return loaded;
|
|
17
|
+
const requested = process.env.GEATSC2_WEBGL_PLUGIN;
|
|
18
|
+
const specifier = requested ?? '@geastack/native-webgl-angle/geatsc-plugin';
|
|
19
|
+
let module_;
|
|
20
|
+
try {
|
|
21
|
+
module_ = require_(specifier);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
const absent = error.code === 'MODULE_NOT_FOUND';
|
|
25
|
+
if (!absent || requested !== undefined) {
|
|
26
|
+
throw new Error(`native-webgl-angle host shims failed to load from '${specifier}': ${String(error)}`);
|
|
27
|
+
}
|
|
28
|
+
loaded = null;
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const plugin = module_.default;
|
|
32
|
+
if (typeof plugin?.configure !== 'function') {
|
|
33
|
+
throw new Error(`native-webgl-angle plugin at '${specifier}' exports no default plugin with a configure()`);
|
|
34
|
+
}
|
|
35
|
+
const configured = plugin.configure().hostShims;
|
|
36
|
+
if (!configured) {
|
|
37
|
+
throw new Error(`native-webgl-angle plugin at '${specifier}' configured no hostShims`);
|
|
38
|
+
}
|
|
39
|
+
loaded = configured;
|
|
40
|
+
return configured;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* The ambient free functions this host defines, to the C++ each is.
|
|
44
|
+
*
|
|
45
|
+
* This is the WHOLE of what the plugin has to state, and the reason it is so
|
|
46
|
+
* small is the point. `NativeWebGL2RenderingContext` and `NativeWebGLCanvas`
|
|
47
|
+
* are not host types at all -- they are ordinary TypeScript classes, shipped as
|
|
48
|
+
* source in the package's own `src/nativeWebGL.ts`, whose methods this compiler
|
|
49
|
+
* compiles natively like any other class. What crosses into the host is one
|
|
50
|
+
* layer below them: `threeWebGLCreateBuffer()` and its 126 siblings, ambient
|
|
51
|
+
* names declared in `nativeWebGLHost.ts` and defined in `angle_webgl_host.mm`.
|
|
52
|
+
*
|
|
53
|
+
* v1 states much more -- 88 `runtimeMemberCalls` and 333 `runtimeMemberReads`
|
|
54
|
+
* that recognize a call ON the context object and emit the host call directly,
|
|
55
|
+
* erasing the class. That is an optimization for a compiler that could not
|
|
56
|
+
* compile the class; it is not the meaning of the program, and restating it
|
|
57
|
+
* here would put 421 hand-written rows between this compiler and a class it can
|
|
58
|
+
* already read. If a direct-call fast path is ever worth its cost, it is worth
|
|
59
|
+
* it as a measurement, not as the only way the program compiles.
|
|
60
|
+
*/
|
|
61
|
+
export const webglHostFunctions = () => {
|
|
62
|
+
const rows = new Map();
|
|
63
|
+
for (const [name, emit] of Object.entries(shims()?.embeddedHostFunctions ?? {})) {
|
|
64
|
+
if (typeof emit === 'string' && emit.length > 0)
|
|
65
|
+
rows.set(name, emit);
|
|
66
|
+
}
|
|
67
|
+
return rows;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* What a unit must declare before it may name one of those spellings.
|
|
71
|
+
*
|
|
72
|
+
* Keyed by the spelling, which is how the package already states it: a program
|
|
73
|
+
* that calls two of these carries two `extern "C"` lines and not 127.
|
|
74
|
+
*/
|
|
75
|
+
export const webglHostPreambles = () => {
|
|
76
|
+
const rows = new Map();
|
|
77
|
+
for (const [emit, declarations] of Object.entries(shims()?.hostExternDeclarations ?? {})) {
|
|
78
|
+
const lines = (declarations ?? []).filter((line) => typeof line === 'string' && line.length > 0);
|
|
79
|
+
if (lines.length > 0)
|
|
80
|
+
rows.set(emit, lines);
|
|
81
|
+
}
|
|
82
|
+
return rows;
|
|
83
|
+
};
|
|
84
|
+
/** Source compatibility owned by the native WebGL package itself. */
|
|
85
|
+
export const webglSourceTransform = (input) => shims()?.transformSource?.(input) ?? null;
|
|
86
|
+
/**
|
|
87
|
+
* The browser globals a native ANGLE context does not provide.
|
|
88
|
+
*
|
|
89
|
+
* Scoped deliberately to this host's own neighbourhood -- the image, canvas and
|
|
90
|
+
* video element types a WebGL renderer reaches for when it uploads a texture.
|
|
91
|
+
* That is the surface this plugin replaces: `NativeWebGLCanvas` is the canvas,
|
|
92
|
+
* and there is no DOM behind it.
|
|
93
|
+
*
|
|
94
|
+
* Every name here is one three.js itself guards with `typeof X !== 'undefined'`,
|
|
95
|
+
* because three is written to run where they may not exist. Stating the absence
|
|
96
|
+
* is what makes that guard mean what it says; without it the guard folds to
|
|
97
|
+
* `true`, three takes a branch that reads `image.displayWidth` off something
|
|
98
|
+
* that is not a `VideoFrame`, and the unit emits an `extern` for a symbol no
|
|
99
|
+
* object file defines.
|
|
100
|
+
*
|
|
101
|
+
* Names deliberately NOT here, and why -- absence is a CLAIM about the target,
|
|
102
|
+
* so a name goes in only when this host is sure:
|
|
103
|
+
*
|
|
104
|
+
* - `performance`, `URL`, `Blob`, `fetch` and the network types: nothing about
|
|
105
|
+
* an ANGLE context says whether the target implements them, and `three` calls
|
|
106
|
+
* `performance.now()` unguarded. That is a different host's answer.
|
|
107
|
+
* - `WebGL2RenderingContext`: its constructor identity needs a native binding
|
|
108
|
+
* for programs that use it to detect WebGL 2. The WebGL 1 constructor is
|
|
109
|
+
* absent: this host only creates NativeWebGL2RenderingContext. In three's
|
|
110
|
+
* WebGL 1 rejection guard, absence correctly skips the rejected path.
|
|
111
|
+
* - `self`, `postMessage`, `importScripts`: worker globals, and whether this
|
|
112
|
+
* target has workers is not a fact about its GL context.
|
|
113
|
+
*/
|
|
114
|
+
export const webglAbsentGlobals = new Set([
|
|
115
|
+
...(shims()?.absentGlobals ?? []),
|
|
116
|
+
'WebGLRenderingContext',
|
|
117
|
+
'ImageData',
|
|
118
|
+
'ImageBitmap',
|
|
119
|
+
'VideoFrame',
|
|
120
|
+
'OffscreenCanvas',
|
|
121
|
+
'HTMLCanvasElement',
|
|
122
|
+
'HTMLImageElement',
|
|
123
|
+
'HTMLVideoElement',
|
|
124
|
+
'createImageBitmap',
|
|
125
|
+
// WebXR. A native ANGLE context can no more start an XR session than it can
|
|
126
|
+
// decode an `ImageBitmap`, and three says so in its own source the same way:
|
|
127
|
+
// `const supportsGlBinding = typeof XRWebGLBinding !== 'undefined'`
|
|
128
|
+
// (`renderers/webxr/WebXRManager.js`, `renderers/common/XRManager.js`).
|
|
129
|
+
//
|
|
130
|
+
// These arrive from `@types/webxr` rather than `lib.dom.d.ts`, which is why
|
|
131
|
+
// `absent-globals.ts` asks whether a declaration is the PLATFORM's rather
|
|
132
|
+
// than whether TypeScript ships it -- see `platformDeclarationTest`. Both are
|
|
133
|
+
// `declare class`, the form that made a `declare var`-only value test unable
|
|
134
|
+
// to deny a single WebXR name.
|
|
135
|
+
'XRWebGLBinding',
|
|
136
|
+
'XRWebGLLayer'
|
|
137
|
+
]);
|
|
138
|
+
/**
|
|
139
|
+
* The ambient WebGL context names three's own source (and `@types/three`'s
|
|
140
|
+
* mirrored declarations) states, to the concrete class
|
|
141
|
+
* `@geastack/native-webgl-angle` actually hands a program.
|
|
142
|
+
*
|
|
143
|
+
* Both `WebGLRenderingContext` (`@types/three`'s stale declared type for
|
|
144
|
+
* three's internal `_gl` parameters -- see `WebGLRenderer`'s own comment in
|
|
145
|
+
* a three.js app's entry module) and `WebGL2RenderingContext` (what
|
|
146
|
+
* three's own JSDoc states for `WebGLRenderer~Options.context`) name it: two
|
|
147
|
+
* ambient interfaces, one real replacement, so both keys route to the same
|
|
148
|
+
* `NativeWebGL2RenderingContext`. A package with nothing to state here
|
|
149
|
+
* answers an empty map, and every ambient name keeps whatever the census
|
|
150
|
+
* already does with it -- exactly `nativeTypes`'s own convention.
|
|
151
|
+
*/
|
|
152
|
+
export const webglAmbientTypeRealizations = () => {
|
|
153
|
+
const rows = new Map();
|
|
154
|
+
for (const [name, realization] of Object.entries(shims()?.ambientTypeRealizations ?? {})) {
|
|
155
|
+
if (realization && typeof realization.type === 'string' && typeof realization.importedFrom === 'string') {
|
|
156
|
+
rows.set(name, { type: realization.type, importedFrom: realization.importedFrom });
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return rows;
|
|
160
|
+
};
|
|
161
|
+
export const webglHostArraySnapshotFunctions = () => new Set(shims()?.hostArraySnapshotFunctions ?? []);
|
|
162
|
+
export const webglHostNativeArrayFunctions = () => new Set(shims()?.hostNativeArrayFunctions ?? []);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { CompilerPlugin } from '../model.js';
|
|
2
|
+
/**
|
|
3
|
+
* ANGLE's WebGL bridge, as a plugin.
|
|
4
|
+
*
|
|
5
|
+
* The third host in this build, and the smallest by a long way: it states its
|
|
6
|
+
* free functions and nothing else. That is not a stub. This host's surface
|
|
7
|
+
* really is 127 ambient functions -- `threeWebGLCreateBuffer`,
|
|
8
|
+
* `threeWebGLDrawElements`, `threeWebGLTexImage2D` -- declared in the package's
|
|
9
|
+
* `nativeWebGLHost.ts` and defined in its `angle_webgl_host.mm`. The
|
|
10
|
+
* `WebGL2RenderingContext` a three.js program actually holds is a TypeScript
|
|
11
|
+
* class in that same package, and this compiler compiles it as one.
|
|
12
|
+
*
|
|
13
|
+
* So there is no `nativeTypes` here, and its absence is a statement rather than
|
|
14
|
+
* a gap. `nativeTypes` says "this declared name is a host object, and here is
|
|
15
|
+
* the C++ type its values are carried in"; `NativeWebGL2RenderingContext` has
|
|
16
|
+
* no such type, because the ANGLE context is a process global and the class is
|
|
17
|
+
* a facade over free calls. Naming a carrier for it would mint an identity the
|
|
18
|
+
* runtime does not have. No constructors either, for the same reason -- `new
|
|
19
|
+
* NativeWebGLCanvas()` constructs an ordinary object -- and no members, no
|
|
20
|
+
* bases, no includes, no constants.
|
|
21
|
+
*
|
|
22
|
+
* `ambientTypeRealizations` is the one non-empty table below, and it exists
|
|
23
|
+
* for a fact `nativeTypes` cannot state: three's own `WebGLRenderer` and its
|
|
24
|
+
* `@types/three` declarations describe the context this program holds as an
|
|
25
|
+
* AMBIENT BROWSER interface (`WebGLRenderingContext`, `WebGL2RenderingContext`)
|
|
26
|
+
* -- structurally unrelated to `NativeWebGL2RenderingContext`, which is why a
|
|
27
|
+
* `renderbufferStorageMultisample`/`blitFramebuffer`/`invalidateFramebuffer`
|
|
28
|
+
* call, or a `DRAW_FRAMEBUFFER`/`READ_FRAMEBUFFER` constant read -- real
|
|
29
|
+
* WebGL2 members `WebGLRenderingContext` (WebGL1) lacks entirely -- typed
|
|
30
|
+
* `any` and boxed every one of the ~230 boxed carriers rooted at
|
|
31
|
+
* `WebGLTextures.js`'s own `_gl` parameter. The fix is not a carrier this
|
|
32
|
+
* layer invents; it is the ambient name meaning the class the value already
|
|
33
|
+
* is. See `webglAmbientTypeRealizations` (`host.ts`).
|
|
34
|
+
*
|
|
35
|
+
* No producer and no lowering: like Apple's, this host adds no meaning to a
|
|
36
|
+
* language form. A three.js program is ordinary TypeScript calling methods on
|
|
37
|
+
* ordinary classes; the only thing the core cannot know is that seven-score
|
|
38
|
+
* bare names are C++ functions somebody else links in.
|
|
39
|
+
*/
|
|
40
|
+
export declare const webglPlugin: CompilerPlugin;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { noHostNamespaces } from '../../targets/cpp/host/host-members.js';
|
|
2
|
+
import { webglAbsentGlobals, webglAmbientTypeRealizations, webglHostFunctions, webglHostArraySnapshotFunctions, webglHostNativeArrayFunctions, webglHostPreambles, webglSourceTransform } from './host.js';
|
|
3
|
+
/**
|
|
4
|
+
* ANGLE's WebGL bridge, as a plugin.
|
|
5
|
+
*
|
|
6
|
+
* The third host in this build, and the smallest by a long way: it states its
|
|
7
|
+
* free functions and nothing else. That is not a stub. This host's surface
|
|
8
|
+
* really is 127 ambient functions -- `threeWebGLCreateBuffer`,
|
|
9
|
+
* `threeWebGLDrawElements`, `threeWebGLTexImage2D` -- declared in the package's
|
|
10
|
+
* `nativeWebGLHost.ts` and defined in its `angle_webgl_host.mm`. The
|
|
11
|
+
* `WebGL2RenderingContext` a three.js program actually holds is a TypeScript
|
|
12
|
+
* class in that same package, and this compiler compiles it as one.
|
|
13
|
+
*
|
|
14
|
+
* So there is no `nativeTypes` here, and its absence is a statement rather than
|
|
15
|
+
* a gap. `nativeTypes` says "this declared name is a host object, and here is
|
|
16
|
+
* the C++ type its values are carried in"; `NativeWebGL2RenderingContext` has
|
|
17
|
+
* no such type, because the ANGLE context is a process global and the class is
|
|
18
|
+
* a facade over free calls. Naming a carrier for it would mint an identity the
|
|
19
|
+
* runtime does not have. No constructors either, for the same reason -- `new
|
|
20
|
+
* NativeWebGLCanvas()` constructs an ordinary object -- and no members, no
|
|
21
|
+
* bases, no includes, no constants.
|
|
22
|
+
*
|
|
23
|
+
* `ambientTypeRealizations` is the one non-empty table below, and it exists
|
|
24
|
+
* for a fact `nativeTypes` cannot state: three's own `WebGLRenderer` and its
|
|
25
|
+
* `@types/three` declarations describe the context this program holds as an
|
|
26
|
+
* AMBIENT BROWSER interface (`WebGLRenderingContext`, `WebGL2RenderingContext`)
|
|
27
|
+
* -- structurally unrelated to `NativeWebGL2RenderingContext`, which is why a
|
|
28
|
+
* `renderbufferStorageMultisample`/`blitFramebuffer`/`invalidateFramebuffer`
|
|
29
|
+
* call, or a `DRAW_FRAMEBUFFER`/`READ_FRAMEBUFFER` constant read -- real
|
|
30
|
+
* WebGL2 members `WebGLRenderingContext` (WebGL1) lacks entirely -- typed
|
|
31
|
+
* `any` and boxed every one of the ~230 boxed carriers rooted at
|
|
32
|
+
* `WebGLTextures.js`'s own `_gl` parameter. The fix is not a carrier this
|
|
33
|
+
* layer invents; it is the ambient name meaning the class the value already
|
|
34
|
+
* is. See `webglAmbientTypeRealizations` (`host.ts`).
|
|
35
|
+
*
|
|
36
|
+
* No producer and no lowering: like Apple's, this host adds no meaning to a
|
|
37
|
+
* language form. A three.js program is ordinary TypeScript calling methods on
|
|
38
|
+
* ordinary classes; the only thing the core cannot know is that seven-score
|
|
39
|
+
* bare names are C++ functions somebody else links in.
|
|
40
|
+
*/
|
|
41
|
+
export const webglPlugin = {
|
|
42
|
+
name: 'native-webgl-angle-host',
|
|
43
|
+
instantiate: () => ({
|
|
44
|
+
producers: () => [],
|
|
45
|
+
transformSource: webglSourceTransform,
|
|
46
|
+
lower: () => false,
|
|
47
|
+
capabilities: {
|
|
48
|
+
runtimeHelpers: new Set(),
|
|
49
|
+
propertyRecipes: new Set(),
|
|
50
|
+
// Protocols are derived from the carriers in `nativeTypes`, and this host
|
|
51
|
+
// states none -- see the class-is-not-a-host-object note above.
|
|
52
|
+
nativeProtocols: new Set(),
|
|
53
|
+
nativeTypes: new Map(),
|
|
54
|
+
ambientTypeRealizations: webglAmbientTypeRealizations(),
|
|
55
|
+
hostMembers: new Map(),
|
|
56
|
+
hostMemberVoidResults: new Set(),
|
|
57
|
+
hostConstructors: new Map(),
|
|
58
|
+
hostFunctions: webglHostFunctions(),
|
|
59
|
+
hostArraySnapshotFunctions: webglHostArraySnapshotFunctions(),
|
|
60
|
+
hostNativeArrayFunctions: webglHostNativeArrayFunctions(),
|
|
61
|
+
// One name, one function: nothing in this host is declared twice.
|
|
62
|
+
hostFunctionsByDeclaration: new Map(),
|
|
63
|
+
hostNamespaces: noHostNamespaces,
|
|
64
|
+
hostNamespaceRootsByDeclaration: new Map(),
|
|
65
|
+
hostNamespaceRootTypes: new Map(),
|
|
66
|
+
hostSingletons: new Set(),
|
|
67
|
+
hostSingletonsByDeclaration: new Map(),
|
|
68
|
+
absentGlobals: webglAbsentGlobals,
|
|
69
|
+
hostPreambles: webglHostPreambles(),
|
|
70
|
+
nativeBases: new Map(),
|
|
71
|
+
// Declarations arrive per spelling through `hostPreambles`, not per
|
|
72
|
+
// carrier -- this host has no carriers to key a header by.
|
|
73
|
+
nativeIncludes: new Map(),
|
|
74
|
+
nativeConstants: new Map(),
|
|
75
|
+
hostConstantsByDeclaration: new Map(),
|
|
76
|
+
// The WebGL constants a program reads (`gl.RGBA`, `gl.TRIANGLES`) are
|
|
77
|
+
// `readonly` fields of the TypeScript class, initialized to their
|
|
78
|
+
// numeric literals in the package's own source. They are the program's
|
|
79
|
+
// own data, and this compiler reads them as such.
|
|
80
|
+
// WebGL's declarations reach a unit through `nativeIncludes`, per
|
|
81
|
+
// carrier the plan actually selected. Nothing about this host is true of
|
|
82
|
+
// a unit that names none of its types, so the support header states
|
|
83
|
+
// nothing on its behalf.
|
|
84
|
+
generatedSupportIncludes: [],
|
|
85
|
+
runtimeDefinitions: [],
|
|
86
|
+
elementFragment: null,
|
|
87
|
+
elementTextTags: [],
|
|
88
|
+
// Nothing this host lowers calls a class member the program does not name.
|
|
89
|
+
reachedMemberKeys: new Set(),
|
|
90
|
+
// three's programs take the host mutation census's `*` wildcard through
|
|
91
|
+
// this host, under which no Object-prototype obligation is ever
|
|
92
|
+
// discharged; see `PluginCapabilities.refusesObjectPrototypeAbsenceProofs`.
|
|
93
|
+
refusesObjectPrototypeAbsenceProofs: true,
|
|
94
|
+
reactiveClassFields: new Map(),
|
|
95
|
+
nativeReactiveCell: null,
|
|
96
|
+
nativeReactiveCellPreamble: []
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
};
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import type { ComponentId, DeclarationId, FunctionId, SemanticResultId } from '../identity/ids.js';
|
|
2
|
+
import type { Representation } from '../representation/model.js';
|
|
3
|
+
/**
|
|
4
|
+
* The obligation model.
|
|
5
|
+
*
|
|
6
|
+
* An obligation is one demanded thing the PLAN needs already installed: a
|
|
7
|
+
* selected carrier, a call path, a native boundary, a verifier recipe, an
|
|
8
|
+
* emitter recipe, a physical C++ type. It is not a proof and it does not
|
|
9
|
+
* compute anything -- it names what was checked, what was expected, what was
|
|
10
|
+
* actually found, and whether the two agree. `run.ts` walks the sealed
|
|
11
|
+
* semantic graph and representation plan to build these; nothing here may
|
|
12
|
+
* synthesize a carrier or invent a fact the earlier layers did not already
|
|
13
|
+
* publish. Site-level demands -- which conversion a slot needs, which recipe
|
|
14
|
+
* a receiver takes, which helper a protocol step calls -- are not obligations
|
|
15
|
+
* any more: `ir/certify.ts` reads them off the lowered IR as capability keys
|
|
16
|
+
* (the plan's census).
|
|
17
|
+
*/
|
|
18
|
+
export declare const obligationKinds: readonly ["binding-carrier", "expression-carrier", "return-carrier", "call-abi", "native-boundary", "physical-cpp-type", "verifier-recipe", "emitter-recipe"];
|
|
19
|
+
export type ObligationKind = (typeof obligationKinds)[number];
|
|
20
|
+
/**
|
|
21
|
+
* `blocked-by-upstream` is never assigned by a local check. It is the one
|
|
22
|
+
* status `run.ts`'s propagation step may raise a `satisfied` obligation to,
|
|
23
|
+
* when an obligation it depends on is itself not satisfied -- so a row that
|
|
24
|
+
* reads `missing`/`unsupported` always names an independently provable
|
|
25
|
+
* defect, never a downstream echo of somebody else's.
|
|
26
|
+
*/
|
|
27
|
+
export type ObligationStatus = 'satisfied' | 'missing' | 'unsupported' | 'blocked-by-upstream';
|
|
28
|
+
/**
|
|
29
|
+
* The four fields the spec this module implements requires on every
|
|
30
|
+
* predicate. A reader must be able to see what was expected and what was
|
|
31
|
+
* actually found without reverse-engineering either from the pass bit.
|
|
32
|
+
*/
|
|
33
|
+
export interface ObligationPredicate {
|
|
34
|
+
readonly id: string;
|
|
35
|
+
readonly expected: string;
|
|
36
|
+
readonly actual: string;
|
|
37
|
+
readonly pass: boolean;
|
|
38
|
+
}
|
|
39
|
+
export declare const predicate: (id: string, expected: string, actual: string) => ObligationPredicate;
|
|
40
|
+
declare const obligationBrand: unique symbol;
|
|
41
|
+
/** Opaque the same way `identity/ids.ts` identities are, minted only here. */
|
|
42
|
+
export type ObligationId = string & {
|
|
43
|
+
readonly [obligationBrand]: 'ObligationId';
|
|
44
|
+
};
|
|
45
|
+
export declare const obligationId: (component: ComponentId, kind: ObligationKind, discriminator: string) => ObligationId;
|
|
46
|
+
/**
|
|
47
|
+
* One demanded thing. `derivesFrom` anchors every obligation kind to the
|
|
48
|
+
* semantic result whose lineage it is about, including operation-level
|
|
49
|
+
* obligations such as `call-abi`, which anchor to the invocation's own
|
|
50
|
+
* published result rather than to one of its operands.
|
|
51
|
+
*
|
|
52
|
+
* `optional` marks a fast-path optimization capability rather than the
|
|
53
|
+
* mandatory generic primitive it accelerates -- per the doc, a missing fast
|
|
54
|
+
* path must never read as a compilation failure when the generic path is
|
|
55
|
+
* installed, so only `optional: false` rows can hold back a certificate.
|
|
56
|
+
*/
|
|
57
|
+
export interface Obligation {
|
|
58
|
+
readonly id: ObligationId;
|
|
59
|
+
readonly kind: ObligationKind;
|
|
60
|
+
readonly component: ComponentId;
|
|
61
|
+
readonly derivesFrom: SemanticResultId;
|
|
62
|
+
readonly predicate: ObligationPredicate;
|
|
63
|
+
readonly optional: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* The status this obligation's own check produced, considering nothing but
|
|
66
|
+
* its own predicate. `run.ts`'s propagation may compute a higher-level
|
|
67
|
+
* `blocked-by-upstream` status from this, but never edits this field: it is
|
|
68
|
+
* the row's permanent, independently-provable evidence.
|
|
69
|
+
*/
|
|
70
|
+
readonly localStatus: 'satisfied' | 'missing' | 'unsupported';
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* A failed predicate is `unsupported` only when the model it queried already
|
|
74
|
+
* gives an authoritative "never" answer for this coordinate -- a `Never`
|
|
75
|
+
* conversion node, a helper the manifest lists as never-installable. Every
|
|
76
|
+
* other failure is `missing`: capability that has not been installed yet, not
|
|
77
|
+
* capability that cannot exist. Collapsing the two would make an ordinary gap
|
|
78
|
+
* in an unfinished primitive read as a permanent language limitation.
|
|
79
|
+
*/
|
|
80
|
+
export declare const localStatusOf: (check: ObligationPredicate, declaredUnsupported: boolean) => "satisfied" | "missing" | "unsupported";
|
|
81
|
+
/**
|
|
82
|
+
* Sealed backend registries the census checks against. Every field is a
|
|
83
|
+
* closed set: presence means installed, absence means not yet, and the
|
|
84
|
+
* `unsupported*` sets mean never by design -- the same three-way split the
|
|
85
|
+
* doc draws between generic lowering, optimization, and genuine unsupported
|
|
86
|
+
* behavior. Preflight never writes to this; it is frozen by whoever seals the
|
|
87
|
+
* backend registries before calling `runPreflight`.
|
|
88
|
+
*/
|
|
89
|
+
export interface TargetRuntimeManifest {
|
|
90
|
+
/** The generic dynamic-dispatch call path every invocation may fall back to. */
|
|
91
|
+
readonly hasGenericCallPath: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Whether the box itself can be CALLED -- `const fn: any = table[i]; fn(x)`.
|
|
94
|
+
*
|
|
95
|
+
* Separate from `hasGenericCallPath`, which is about calling through a
|
|
96
|
+
* callable CARRIER whose ABI the plan published: there the frame is known
|
|
97
|
+
* and the call is an ordinary indirect one. This is the case where the
|
|
98
|
+
* callee's carrier is `dynamic` and there is no ABI at all, so the arguments
|
|
99
|
+
* cross as boxes and the callable's own declared parameters are recovered at
|
|
100
|
+
* runtime. A target without it refuses such a call rather than dropping to
|
|
101
|
+
* the generic path, which has no frame to use.
|
|
102
|
+
*/
|
|
103
|
+
readonly hasDynamicCallPath: boolean;
|
|
104
|
+
/** Exact-target callable ABIs registered as a devirtualization fast path. */
|
|
105
|
+
readonly functionAbis: ReadonlySet<FunctionId>;
|
|
106
|
+
/** ABIs for classes with no written constructor, keyed by the class itself. */
|
|
107
|
+
readonly implicitConstructorAbis: ReadonlySet<DeclarationId>;
|
|
108
|
+
/** Authenticated plugin host `[[Call]]` spellings, keyed `${carrier}.call`. */
|
|
109
|
+
readonly hostInvocations?: ReadonlySet<string>;
|
|
110
|
+
/** Authenticated plugin host `[[Construct]]` spellings, keyed by carrier. */
|
|
111
|
+
readonly hostConstructors?: ReadonlySet<string>;
|
|
112
|
+
/**
|
|
113
|
+
* Every `${protocol}.${member}` the installed host member tables claim a
|
|
114
|
+
* spelling for -- the backend's own `host-members.ts` rows unioned with each
|
|
115
|
+
* plugin's. This is the set the printer's `nativeHostMemberText` decides a
|
|
116
|
+
* host property read against, so a constant-keyed read off a `native-handle`
|
|
117
|
+
* receiver is certified against the same rows it will later be rendered
|
|
118
|
+
* from; without it the printer's "claimed by no host member table" refusal
|
|
119
|
+
* was the first place a certified program learned the member did not exist.
|
|
120
|
+
*/
|
|
121
|
+
readonly hostMembers?: ReadonlySet<string>;
|
|
122
|
+
/** Property-access recipes, keyed `${internalMethod}:${keyIsComputed}`. */
|
|
123
|
+
readonly propertyRecipes: ReadonlySet<string>;
|
|
124
|
+
/** Ownerships (`Ownership` values, plus `'value'`) the capture path can transport. */
|
|
125
|
+
readonly captureOwnershipSupport: ReadonlySet<string>;
|
|
126
|
+
/** Authenticated host protocols, keyed `${protocol}@${version}`. */
|
|
127
|
+
readonly nativeProtocols: ReadonlySet<string>;
|
|
128
|
+
/**
|
|
129
|
+
* `${protocol}.${member}:argument:${ordinal | "*"}` keys whose CALL the
|
|
130
|
+
* target spells at the site, from that argument's own carrier, and which
|
|
131
|
+
* take a `dynamic` argument at that exact position unconditionally.
|
|
132
|
+
*
|
|
133
|
+
* The narrow twin of `nativeProtocols`, and narrow for a reason. A call
|
|
134
|
+
* through an ordinary callee reaches the emitter's argument alignment, which
|
|
135
|
+
* reconciles each argument against the callee's DECLARED parameter -- so a
|
|
136
|
+
* dynamic argument there needs an installed conversion, and
|
|
137
|
+
* `invocation-arguments.ts` rightly demands one. A member listed here never
|
|
138
|
+
* reaches that path: the target intercepted the call before it and renders
|
|
139
|
+
* from the operands themselves. `lib`'s declared parameter is then a
|
|
140
|
+
* statement about what the LANGUAGE permits, not about any physical frame,
|
|
141
|
+
* and requiring a conversion into it asks for machinery no emitted line
|
|
142
|
+
* performs.
|
|
143
|
+
*
|
|
144
|
+
* `Object.values(o)` is the case that made this necessary. Its declared
|
|
145
|
+
* parameter is `{ [s: string]: T } | ArrayLike<T>`, which derives a
|
|
146
|
+
* `tagged-union(dictionary | native-record-ref)`; nothing converts a
|
|
147
|
+
* `dynamic` into that union and nothing should, because the emitted call is
|
|
148
|
+
* `gea::host::ObjectConstructor::values(v)` and passes the box straight
|
|
149
|
+
* through to a real own-property enumeration.
|
|
150
|
+
*
|
|
151
|
+
* Keyed per MEMBER, ROLE and POSITION, never per protocol or whole call,
|
|
152
|
+
* because even one intercepted member's arguments differ. In particular,
|
|
153
|
+
* `Object.defineProperty(target, key, descriptor)` accepts a dynamic target
|
|
154
|
+
* and PropertyKey, but its descriptor renderer requires an exact typed
|
|
155
|
+
* descriptor record. A member-wide waiver would certify the descriptor and
|
|
156
|
+
* let emission refuse afterward. `*` is reserved for a genuinely variadic
|
|
157
|
+
* intercepted role such as Object.assign's source list.
|
|
158
|
+
*
|
|
159
|
+
* Optional, and absent reads as empty: a manifest sealed before this
|
|
160
|
+
* existed keeps demanding the conversion, which is the fail-closed default
|
|
161
|
+
* every other optional field in this interface takes.
|
|
162
|
+
*/
|
|
163
|
+
readonly dynamicArgumentHostParameters?: ReadonlySet<string>;
|
|
164
|
+
/**
|
|
165
|
+
* Whether this target can render an ambient value declaration's introducing
|
|
166
|
+
* cell as an `extern` reference to a host-defined symbol.
|
|
167
|
+
*
|
|
168
|
+
* This is one flag rather than a `nativeProtocols`-shaped set keyed per
|
|
169
|
+
* declaration. `nativeProtocols` exists because a `native-handle`'s
|
|
170
|
+
* `protocol`/`version` selects genuinely different runtime glue -- a
|
|
171
|
+
* different materializer, a different opaque layout -- so authenticating one
|
|
172
|
+
* protocol must never be read as authenticating another. An ambient value
|
|
173
|
+
* binding carries no such per-declaration machinery: its carrier is derived
|
|
174
|
+
* from its declared type exactly like any other binding's, and rendering it
|
|
175
|
+
* is one uniform recipe (`extern <carrier-type> <linkageName>;`) that does
|
|
176
|
+
* not vary by which global it is. What genuinely differs per declaration --
|
|
177
|
+
* whether a real host-side definition exists for its specific linkage name
|
|
178
|
+
* -- is a link-time fact this static census cannot see and an ordinary
|
|
179
|
+
* linker already reports; claiming to verify it here would be inventing
|
|
180
|
+
* proof this stage does not have. Optional so a manifest sealed before this
|
|
181
|
+
* capability existed still satisfies this interface: absence reads as
|
|
182
|
+
* `false`, the same fail-closed default `unsupportedRuntimeHelpers` and its
|
|
183
|
+
* siblings use elsewhere in this file.
|
|
184
|
+
*/
|
|
185
|
+
readonly supportsExternalBindings?: boolean;
|
|
186
|
+
readonly runtimeHelpers: ReadonlySet<string>;
|
|
187
|
+
readonly unsupportedRuntimeHelpers: ReadonlySet<string>;
|
|
188
|
+
/** Physical C++ type mappings, keyed by `representationKey`. */
|
|
189
|
+
readonly physicalTypes: ReadonlySet<string>;
|
|
190
|
+
/**
|
|
191
|
+
* The predicate `physicalTypes` is the plan's projection of. Preflight
|
|
192
|
+
* asks about the carriers the plan selected, which the set enumerates;
|
|
193
|
+
* `ir/certify.ts` asks about every carrier the IR holds, including slot
|
|
194
|
+
* and conversion-result carriers the plan never selected, so it needs the
|
|
195
|
+
* predicate itself. Optional: a manifest without it is asked through the
|
|
196
|
+
* set, which is fail-closed for a carrier the set never saw.
|
|
197
|
+
*/
|
|
198
|
+
readonly spellable?: (representation: Representation) => boolean;
|
|
199
|
+
/** Verifier recipes, keyed by `representationKey`. */
|
|
200
|
+
readonly verifierRecipes: ReadonlySet<string>;
|
|
201
|
+
/** Emitter recipes, keyed by `representationKey`. */
|
|
202
|
+
readonly emitterRecipes: ReadonlySet<string>;
|
|
203
|
+
/** Installed abrupt-completion handlers, keyed by completion kind. */
|
|
204
|
+
readonly abruptEdgeHandlers: ReadonlySet<string>;
|
|
205
|
+
}
|
|
206
|
+
export {};
|