@flighthq/tool-compiler 0.5.1-edge.1687.b63c819
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.md +9 -0
- package/README.md +74 -0
- package/dist/packages/compiler-ambient/src/compilerAmbientSurface.d.ts +3 -0
- package/dist/packages/compiler-ambient/src/compilerAmbientSurface.d.ts.map +1 -0
- package/dist/packages/compiler-ambient/src/compilerAmbientSurface.js +564 -0
- package/dist/packages/compiler-ambient/src/compilerAmbientSurface.js.map +1 -0
- package/dist/packages/compiler-ambient/src/index.d.ts +2 -0
- package/dist/packages/compiler-ambient/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-ambient/src/index.js +2 -0
- package/dist/packages/compiler-ambient/src/index.js.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppAmbientMemberBinding.d.ts +3 -0
- package/dist/packages/compiler-backend-cpp/src/cppAmbientMemberBinding.d.ts.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppAmbientMemberBinding.js +146 -0
- package/dist/packages/compiler-backend-cpp/src/cppAmbientMemberBinding.js.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppBindingTypeInference.d.ts +3 -0
- package/dist/packages/compiler-backend-cpp/src/cppBindingTypeInference.d.ts.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppBindingTypeInference.js +197 -0
- package/dist/packages/compiler-backend-cpp/src/cppBindingTypeInference.js.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppCallableSignatureAbi.d.ts +8 -0
- package/dist/packages/compiler-backend-cpp/src/cppCallableSignatureAbi.d.ts.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppCallableSignatureAbi.js +9 -0
- package/dist/packages/compiler-backend-cpp/src/cppCallableSignatureAbi.js.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppClosureCapturePlan.d.ts +3 -0
- package/dist/packages/compiler-backend-cpp/src/cppClosureCapturePlan.d.ts.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppClosureCapturePlan.js +109 -0
- package/dist/packages/compiler-backend-cpp/src/cppClosureCapturePlan.js.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppCompilerBackend.d.ts +4 -0
- package/dist/packages/compiler-backend-cpp/src/cppCompilerBackend.d.ts.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppCompilerBackend.js +16568 -0
- package/dist/packages/compiler-backend-cpp/src/cppCompilerBackend.js.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppCompilerIdentity.d.ts +7 -0
- package/dist/packages/compiler-backend-cpp/src/cppCompilerIdentity.d.ts.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppCompilerIdentity.js +176 -0
- package/dist/packages/compiler-backend-cpp/src/cppCompilerIdentity.js.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppReferenceRepresentationPlan.d.ts +7 -0
- package/dist/packages/compiler-backend-cpp/src/cppReferenceRepresentationPlan.d.ts.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppReferenceRepresentationPlan.js +1514 -0
- package/dist/packages/compiler-backend-cpp/src/cppReferenceRepresentationPlan.js.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppRuntimeExternalSymbolBinding.d.ts +44 -0
- package/dist/packages/compiler-backend-cpp/src/cppRuntimeExternalSymbolBinding.d.ts.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppRuntimeExternalSymbolBinding.js +1060 -0
- package/dist/packages/compiler-backend-cpp/src/cppRuntimeExternalSymbolBinding.js.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppTupleRepresentation.d.ts +3 -0
- package/dist/packages/compiler-backend-cpp/src/cppTupleRepresentation.d.ts.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppTupleRepresentation.js +13 -0
- package/dist/packages/compiler-backend-cpp/src/cppTupleRepresentation.js.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppUnionRepresentationPlan.d.ts +66 -0
- package/dist/packages/compiler-backend-cpp/src/cppUnionRepresentationPlan.d.ts.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/cppUnionRepresentationPlan.js +196 -0
- package/dist/packages/compiler-backend-cpp/src/cppUnionRepresentationPlan.js.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/index.d.ts +6 -0
- package/dist/packages/compiler-backend-cpp/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-backend-cpp/src/index.js +6 -0
- package/dist/packages/compiler-backend-cpp/src/index.js.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeAmbientMemberBinding.d.ts +4 -0
- package/dist/packages/compiler-backend-hx/src/haxeAmbientMemberBinding.d.ts.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeAmbientMemberBinding.js +160 -0
- package/dist/packages/compiler-backend-hx/src/haxeAmbientMemberBinding.js.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeAsyncIterationLowering.d.ts +3 -0
- package/dist/packages/compiler-backend-hx/src/haxeAsyncIterationLowering.d.ts.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeAsyncIterationLowering.js +129 -0
- package/dist/packages/compiler-backend-hx/src/haxeAsyncIterationLowering.js.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeCompilerBackend.d.ts +5 -0
- package/dist/packages/compiler-backend-hx/src/haxeCompilerBackend.d.ts.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeCompilerBackend.js +5172 -0
- package/dist/packages/compiler-backend-hx/src/haxeCompilerBackend.js.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeCompilerEmittedSourceSyntax.d.ts +3 -0
- package/dist/packages/compiler-backend-hx/src/haxeCompilerEmittedSourceSyntax.d.ts.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeCompilerEmittedSourceSyntax.js +8 -0
- package/dist/packages/compiler-backend-hx/src/haxeCompilerEmittedSourceSyntax.js.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeCompilerIdentity.d.ts +3 -0
- package/dist/packages/compiler-backend-hx/src/haxeCompilerIdentity.d.ts.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeCompilerIdentity.js +51 -0
- package/dist/packages/compiler-backend-hx/src/haxeCompilerIdentity.js.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeCompilerTargetCompilationSmoke.d.ts +3 -0
- package/dist/packages/compiler-backend-hx/src/haxeCompilerTargetCompilationSmoke.d.ts.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeCompilerTargetCompilationSmoke.js +8 -0
- package/dist/packages/compiler-backend-hx/src/haxeCompilerTargetCompilationSmoke.js.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeExternEmission.d.ts +40 -0
- package/dist/packages/compiler-backend-hx/src/haxeExternEmission.d.ts.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeExternEmission.js +968 -0
- package/dist/packages/compiler-backend-hx/src/haxeExternEmission.js.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeRuntimeAbiManifest.d.ts +3 -0
- package/dist/packages/compiler-backend-hx/src/haxeRuntimeAbiManifest.d.ts.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeRuntimeAbiManifest.js +53 -0
- package/dist/packages/compiler-backend-hx/src/haxeRuntimeAbiManifest.js.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeRuntimeExternalConstructorAbi.d.ts +3 -0
- package/dist/packages/compiler-backend-hx/src/haxeRuntimeExternalConstructorAbi.d.ts.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeRuntimeExternalConstructorAbi.js +64 -0
- package/dist/packages/compiler-backend-hx/src/haxeRuntimeExternalConstructorAbi.js.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeRuntimeExternalSymbolBinding.d.ts +8 -0
- package/dist/packages/compiler-backend-hx/src/haxeRuntimeExternalSymbolBinding.d.ts.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeRuntimeExternalSymbolBinding.js +803 -0
- package/dist/packages/compiler-backend-hx/src/haxeRuntimeExternalSymbolBinding.js.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeRuntimeTaskCapability.d.ts +3 -0
- package/dist/packages/compiler-backend-hx/src/haxeRuntimeTaskCapability.d.ts.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeRuntimeTaskCapability.js +66 -0
- package/dist/packages/compiler-backend-hx/src/haxeRuntimeTaskCapability.js.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeTaskEmission.d.ts +3 -0
- package/dist/packages/compiler-backend-hx/src/haxeTaskEmission.d.ts.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeTaskEmission.js +361 -0
- package/dist/packages/compiler-backend-hx/src/haxeTaskEmission.js.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeTaskLowering.d.ts +4 -0
- package/dist/packages/compiler-backend-hx/src/haxeTaskLowering.d.ts.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeTaskLowering.js +265 -0
- package/dist/packages/compiler-backend-hx/src/haxeTaskLowering.js.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeTypeEmission.d.ts +16 -0
- package/dist/packages/compiler-backend-hx/src/haxeTypeEmission.d.ts.map +1 -0
- package/dist/packages/compiler-backend-hx/src/haxeTypeEmission.js +134 -0
- package/dist/packages/compiler-backend-hx/src/haxeTypeEmission.js.map +1 -0
- package/dist/packages/compiler-backend-hx/src/index.d.ts +13 -0
- package/dist/packages/compiler-backend-hx/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-backend-hx/src/index.js +13 -0
- package/dist/packages/compiler-backend-hx/src/index.js.map +1 -0
- package/dist/packages/compiler-backend-rs/src/index.d.ts +8 -0
- package/dist/packages/compiler-backend-rs/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-backend-rs/src/index.js +8 -0
- package/dist/packages/compiler-backend-rs/src/index.js.map +1 -0
- package/dist/packages/compiler-backend-rs/src/rustAmbientMemberBinding.d.ts +3 -0
- package/dist/packages/compiler-backend-rs/src/rustAmbientMemberBinding.d.ts.map +1 -0
- package/dist/packages/compiler-backend-rs/src/rustAmbientMemberBinding.js +99 -0
- package/dist/packages/compiler-backend-rs/src/rustAmbientMemberBinding.js.map +1 -0
- package/dist/packages/compiler-backend-rs/src/rustCompilerBackend.d.ts +5 -0
- package/dist/packages/compiler-backend-rs/src/rustCompilerBackend.d.ts.map +1 -0
- package/dist/packages/compiler-backend-rs/src/rustCompilerBackend.js +4555 -0
- package/dist/packages/compiler-backend-rs/src/rustCompilerBackend.js.map +1 -0
- package/dist/packages/compiler-backend-rs/src/rustCompilerEmittedSourceSyntax.d.ts +3 -0
- package/dist/packages/compiler-backend-rs/src/rustCompilerEmittedSourceSyntax.d.ts.map +1 -0
- package/dist/packages/compiler-backend-rs/src/rustCompilerEmittedSourceSyntax.js +8 -0
- package/dist/packages/compiler-backend-rs/src/rustCompilerEmittedSourceSyntax.js.map +1 -0
- package/dist/packages/compiler-backend-rs/src/rustCompilerIdentity.d.ts +4 -0
- package/dist/packages/compiler-backend-rs/src/rustCompilerIdentity.d.ts.map +1 -0
- package/dist/packages/compiler-backend-rs/src/rustCompilerIdentity.js +113 -0
- package/dist/packages/compiler-backend-rs/src/rustCompilerIdentity.js.map +1 -0
- package/dist/packages/compiler-backend-rs/src/rustCompilerTargetCompilationSmoke.d.ts +3 -0
- package/dist/packages/compiler-backend-rs/src/rustCompilerTargetCompilationSmoke.d.ts.map +1 -0
- package/dist/packages/compiler-backend-rs/src/rustCompilerTargetCompilationSmoke.js +8 -0
- package/dist/packages/compiler-backend-rs/src/rustCompilerTargetCompilationSmoke.js.map +1 -0
- package/dist/packages/compiler-backend-rs/src/rustOwnershipEvidence.d.ts +5 -0
- package/dist/packages/compiler-backend-rs/src/rustOwnershipEvidence.d.ts.map +1 -0
- package/dist/packages/compiler-backend-rs/src/rustOwnershipEvidence.js +345 -0
- package/dist/packages/compiler-backend-rs/src/rustOwnershipEvidence.js.map +1 -0
- package/dist/packages/compiler-backend-rs/src/rustRuntimeExternalConstructorAbi.d.ts +3 -0
- package/dist/packages/compiler-backend-rs/src/rustRuntimeExternalConstructorAbi.d.ts.map +1 -0
- package/dist/packages/compiler-backend-rs/src/rustRuntimeExternalConstructorAbi.js +38 -0
- package/dist/packages/compiler-backend-rs/src/rustRuntimeExternalConstructorAbi.js.map +1 -0
- package/dist/packages/compiler-backend-rs/src/rustRuntimeExternalSymbolBinding.d.ts +6 -0
- package/dist/packages/compiler-backend-rs/src/rustRuntimeExternalSymbolBinding.d.ts.map +1 -0
- package/dist/packages/compiler-backend-rs/src/rustRuntimeExternalSymbolBinding.js +301 -0
- package/dist/packages/compiler-backend-rs/src/rustRuntimeExternalSymbolBinding.js.map +1 -0
- package/dist/packages/compiler-canonical-form/src/compilerPortablePath.d.ts +2 -0
- package/dist/packages/compiler-canonical-form/src/compilerPortablePath.d.ts.map +1 -0
- package/dist/packages/compiler-canonical-form/src/compilerPortablePath.js +4 -0
- package/dist/packages/compiler-canonical-form/src/compilerPortablePath.js.map +1 -0
- package/dist/packages/compiler-canonical-form/src/compilerStructuralValue.d.ts +2 -0
- package/dist/packages/compiler-canonical-form/src/compilerStructuralValue.d.ts.map +1 -0
- package/dist/packages/compiler-canonical-form/src/compilerStructuralValue.js +63 -0
- package/dist/packages/compiler-canonical-form/src/compilerStructuralValue.js.map +1 -0
- package/dist/packages/compiler-canonical-form/src/compilerTextOrder.d.ts +2 -0
- package/dist/packages/compiler-canonical-form/src/compilerTextOrder.d.ts.map +1 -0
- package/dist/packages/compiler-canonical-form/src/compilerTextOrder.js +4 -0
- package/dist/packages/compiler-canonical-form/src/compilerTextOrder.js.map +1 -0
- package/dist/packages/compiler-canonical-form/src/index.d.ts +4 -0
- package/dist/packages/compiler-canonical-form/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-canonical-form/src/index.js +4 -0
- package/dist/packages/compiler-canonical-form/src/index.js.map +1 -0
- package/dist/packages/compiler-check/src/compilerPackageCheck.d.ts +9 -0
- package/dist/packages/compiler-check/src/compilerPackageCheck.d.ts.map +1 -0
- package/dist/packages/compiler-check/src/compilerPackageCheck.js +417 -0
- package/dist/packages/compiler-check/src/compilerPackageCheck.js.map +1 -0
- package/dist/packages/compiler-check/src/index.d.ts +2 -0
- package/dist/packages/compiler-check/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-check/src/index.js +2 -0
- package/dist/packages/compiler-check/src/index.js.map +1 -0
- package/dist/packages/compiler-closure/src/compilerClosureEvidence.d.ts +3 -0
- package/dist/packages/compiler-closure/src/compilerClosureEvidence.d.ts.map +1 -0
- package/dist/packages/compiler-closure/src/compilerClosureEvidence.js +469 -0
- package/dist/packages/compiler-closure/src/compilerClosureEvidence.js.map +1 -0
- package/dist/packages/compiler-closure/src/index.d.ts +2 -0
- package/dist/packages/compiler-closure/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-closure/src/index.js +2 -0
- package/dist/packages/compiler-closure/src/index.js.map +1 -0
- package/dist/packages/compiler-command-line/src/compilerCommandLine.d.ts +12 -0
- package/dist/packages/compiler-command-line/src/compilerCommandLine.d.ts.map +1 -0
- package/dist/packages/compiler-command-line/src/compilerCommandLine.js +549 -0
- package/dist/packages/compiler-command-line/src/compilerCommandLine.js.map +1 -0
- package/dist/packages/compiler-command-line/src/compilerCommandLineEntryPoint.d.ts +5 -0
- package/dist/packages/compiler-command-line/src/compilerCommandLineEntryPoint.d.ts.map +1 -0
- package/dist/packages/compiler-command-line/src/compilerCommandLineEntryPoint.js +134 -0
- package/dist/packages/compiler-command-line/src/compilerCommandLineEntryPoint.js.map +1 -0
- package/dist/packages/compiler-command-line/src/index.d.ts +3 -0
- package/dist/packages/compiler-command-line/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-command-line/src/index.js +3 -0
- package/dist/packages/compiler-command-line/src/index.js.map +1 -0
- package/dist/packages/compiler-completion/src/compilerAsyncTaskCompletion.d.ts +6 -0
- package/dist/packages/compiler-completion/src/compilerAsyncTaskCompletion.d.ts.map +1 -0
- package/dist/packages/compiler-completion/src/compilerAsyncTaskCompletion.js +89 -0
- package/dist/packages/compiler-completion/src/compilerAsyncTaskCompletion.js.map +1 -0
- package/dist/packages/compiler-completion/src/compilerCatchCompletion.d.ts +6 -0
- package/dist/packages/compiler-completion/src/compilerCatchCompletion.d.ts.map +1 -0
- package/dist/packages/compiler-completion/src/compilerCatchCompletion.js +77 -0
- package/dist/packages/compiler-completion/src/compilerCatchCompletion.js.map +1 -0
- package/dist/packages/compiler-completion/src/compilerCompletionSet.d.ts +6 -0
- package/dist/packages/compiler-completion/src/compilerCompletionSet.d.ts.map +1 -0
- package/dist/packages/compiler-completion/src/compilerCompletionSet.js +110 -0
- package/dist/packages/compiler-completion/src/compilerCompletionSet.js.map +1 -0
- package/dist/packages/compiler-completion/src/compilerFinallyCompletion.d.ts +3 -0
- package/dist/packages/compiler-completion/src/compilerFinallyCompletion.d.ts.map +1 -0
- package/dist/packages/compiler-completion/src/compilerFinallyCompletion.js +13 -0
- package/dist/packages/compiler-completion/src/compilerFinallyCompletion.js.map +1 -0
- package/dist/packages/compiler-completion/src/compilerStatementCompletion.d.ts +4 -0
- package/dist/packages/compiler-completion/src/compilerStatementCompletion.d.ts.map +1 -0
- package/dist/packages/compiler-completion/src/compilerStatementCompletion.js +181 -0
- package/dist/packages/compiler-completion/src/compilerStatementCompletion.js.map +1 -0
- package/dist/packages/compiler-completion/src/compilerStatementValueCompletion.d.ts +5 -0
- package/dist/packages/compiler-completion/src/compilerStatementValueCompletion.d.ts.map +1 -0
- package/dist/packages/compiler-completion/src/compilerStatementValueCompletion.js +41 -0
- package/dist/packages/compiler-completion/src/compilerStatementValueCompletion.js.map +1 -0
- package/dist/packages/compiler-completion/src/compilerValueCompletion.d.ts +8 -0
- package/dist/packages/compiler-completion/src/compilerValueCompletion.d.ts.map +1 -0
- package/dist/packages/compiler-completion/src/compilerValueCompletion.js +208 -0
- package/dist/packages/compiler-completion/src/compilerValueCompletion.js.map +1 -0
- package/dist/packages/compiler-completion/src/index.d.ts +8 -0
- package/dist/packages/compiler-completion/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-completion/src/index.js +8 -0
- package/dist/packages/compiler-completion/src/index.js.map +1 -0
- package/dist/packages/compiler-emission/src/compilerEmittedSourceSyntax.d.ts +4 -0
- package/dist/packages/compiler-emission/src/compilerEmittedSourceSyntax.d.ts.map +1 -0
- package/dist/packages/compiler-emission/src/compilerEmittedSourceSyntax.js +122 -0
- package/dist/packages/compiler-emission/src/compilerEmittedSourceSyntax.js.map +1 -0
- package/dist/packages/compiler-emission/src/compilerGeneratedFileProvenance.d.ts +3 -0
- package/dist/packages/compiler-emission/src/compilerGeneratedFileProvenance.d.ts.map +1 -0
- package/dist/packages/compiler-emission/src/compilerGeneratedFileProvenance.js +17 -0
- package/dist/packages/compiler-emission/src/compilerGeneratedFileProvenance.js.map +1 -0
- package/dist/packages/compiler-emission/src/compilerLiteralUnion.d.ts +3 -0
- package/dist/packages/compiler-emission/src/compilerLiteralUnion.d.ts.map +1 -0
- package/dist/packages/compiler-emission/src/compilerLiteralUnion.js +20 -0
- package/dist/packages/compiler-emission/src/compilerLiteralUnion.js.map +1 -0
- package/dist/packages/compiler-emission/src/compilerNullableFlowGuard.d.ts +4 -0
- package/dist/packages/compiler-emission/src/compilerNullableFlowGuard.d.ts.map +1 -0
- package/dist/packages/compiler-emission/src/compilerNullableFlowGuard.js +32 -0
- package/dist/packages/compiler-emission/src/compilerNullableFlowGuard.js.map +1 -0
- package/dist/packages/compiler-emission/src/compilerSourceEmission.d.ts +16 -0
- package/dist/packages/compiler-emission/src/compilerSourceEmission.d.ts.map +1 -0
- package/dist/packages/compiler-emission/src/compilerSourceEmission.js +176 -0
- package/dist/packages/compiler-emission/src/compilerSourceEmission.js.map +1 -0
- package/dist/packages/compiler-emission/src/compilerTargetCompilationSmoke.d.ts +4 -0
- package/dist/packages/compiler-emission/src/compilerTargetCompilationSmoke.d.ts.map +1 -0
- package/dist/packages/compiler-emission/src/compilerTargetCompilationSmoke.js +114 -0
- package/dist/packages/compiler-emission/src/compilerTargetCompilationSmoke.js.map +1 -0
- package/dist/packages/compiler-emission/src/compilerTargetNameAllocation.d.ts +5 -0
- package/dist/packages/compiler-emission/src/compilerTargetNameAllocation.d.ts.map +1 -0
- package/dist/packages/compiler-emission/src/compilerTargetNameAllocation.js +449 -0
- package/dist/packages/compiler-emission/src/compilerTargetNameAllocation.js.map +1 -0
- package/dist/packages/compiler-emission/src/index.d.ts +8 -0
- package/dist/packages/compiler-emission/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-emission/src/index.js +8 -0
- package/dist/packages/compiler-emission/src/index.js.map +1 -0
- package/dist/packages/compiler-inventory/src/compilerInventoryFailure.d.ts +4 -0
- package/dist/packages/compiler-inventory/src/compilerInventoryFailure.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/compilerInventoryFailure.js +42 -0
- package/dist/packages/compiler-inventory/src/compilerInventoryFailure.js.map +1 -0
- package/dist/packages/compiler-inventory/src/compilerModuleResolution.d.ts +4 -0
- package/dist/packages/compiler-inventory/src/compilerModuleResolution.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/compilerModuleResolution.js +74 -0
- package/dist/packages/compiler-inventory/src/compilerModuleResolution.js.map +1 -0
- package/dist/packages/compiler-inventory/src/fileSystemWorkspaceSource.d.ts +3 -0
- package/dist/packages/compiler-inventory/src/fileSystemWorkspaceSource.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/fileSystemWorkspaceSource.js +20 -0
- package/dist/packages/compiler-inventory/src/fileSystemWorkspaceSource.js.map +1 -0
- package/dist/packages/compiler-inventory/src/flightPackageEligibility.d.ts +5 -0
- package/dist/packages/compiler-inventory/src/flightPackageEligibility.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/flightPackageEligibility.js +174 -0
- package/dist/packages/compiler-inventory/src/flightPackageEligibility.js.map +1 -0
- package/dist/packages/compiler-inventory/src/flightPackageExclusion.d.ts +3 -0
- package/dist/packages/compiler-inventory/src/flightPackageExclusion.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/flightPackageExclusion.js +79 -0
- package/dist/packages/compiler-inventory/src/flightPackageExclusion.js.map +1 -0
- package/dist/packages/compiler-inventory/src/flightPackageExportLane.d.ts +4 -0
- package/dist/packages/compiler-inventory/src/flightPackageExportLane.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/flightPackageExportLane.js +30 -0
- package/dist/packages/compiler-inventory/src/flightPackageExportLane.js.map +1 -0
- package/dist/packages/compiler-inventory/src/flightPackageExportManifest.d.ts +3 -0
- package/dist/packages/compiler-inventory/src/flightPackageExportManifest.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/flightPackageExportManifest.js +90 -0
- package/dist/packages/compiler-inventory/src/flightPackageExportManifest.js.map +1 -0
- package/dist/packages/compiler-inventory/src/flightPackageHostFacts.d.ts +3 -0
- package/dist/packages/compiler-inventory/src/flightPackageHostFacts.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/flightPackageHostFacts.js +33 -0
- package/dist/packages/compiler-inventory/src/flightPackageHostFacts.js.map +1 -0
- package/dist/packages/compiler-inventory/src/flightPackageImport.d.ts +3 -0
- package/dist/packages/compiler-inventory/src/flightPackageImport.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/flightPackageImport.js +82 -0
- package/dist/packages/compiler-inventory/src/flightPackageImport.js.map +1 -0
- package/dist/packages/compiler-inventory/src/flightPackageManifest.d.ts +3 -0
- package/dist/packages/compiler-inventory/src/flightPackageManifest.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/flightPackageManifest.js +116 -0
- package/dist/packages/compiler-inventory/src/flightPackageManifest.js.map +1 -0
- package/dist/packages/compiler-inventory/src/flightWorkspaceCompilationInput.d.ts +4 -0
- package/dist/packages/compiler-inventory/src/flightWorkspaceCompilationInput.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/flightWorkspaceCompilationInput.js +315 -0
- package/dist/packages/compiler-inventory/src/flightWorkspaceCompilationInput.js.map +1 -0
- package/dist/packages/compiler-inventory/src/flightWorkspaceInventory.d.ts +3 -0
- package/dist/packages/compiler-inventory/src/flightWorkspaceInventory.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/flightWorkspaceInventory.js +591 -0
- package/dist/packages/compiler-inventory/src/flightWorkspaceInventory.js.map +1 -0
- package/dist/packages/compiler-inventory/src/gitCheckoutRevision.d.ts +2 -0
- package/dist/packages/compiler-inventory/src/gitCheckoutRevision.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/gitCheckoutRevision.js +20 -0
- package/dist/packages/compiler-inventory/src/gitCheckoutRevision.js.map +1 -0
- package/dist/packages/compiler-inventory/src/index.d.ts +17 -0
- package/dist/packages/compiler-inventory/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/index.js +17 -0
- package/dist/packages/compiler-inventory/src/index.js.map +1 -0
- package/dist/packages/compiler-inventory/src/memoryWorkspaceSource.d.ts +3 -0
- package/dist/packages/compiler-inventory/src/memoryWorkspaceSource.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/memoryWorkspaceSource.js +61 -0
- package/dist/packages/compiler-inventory/src/memoryWorkspaceSource.js.map +1 -0
- package/dist/packages/compiler-inventory/src/typeScriptHostEndpointInventory.d.ts +3 -0
- package/dist/packages/compiler-inventory/src/typeScriptHostEndpointInventory.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/typeScriptHostEndpointInventory.js +138 -0
- package/dist/packages/compiler-inventory/src/typeScriptHostEndpointInventory.js.map +1 -0
- package/dist/packages/compiler-inventory/src/typeScriptProject.d.ts +3 -0
- package/dist/packages/compiler-inventory/src/typeScriptProject.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/typeScriptProject.js +28 -0
- package/dist/packages/compiler-inventory/src/typeScriptProject.js.map +1 -0
- package/dist/packages/compiler-inventory/src/typeScriptRuntimeBinding.d.ts +7 -0
- package/dist/packages/compiler-inventory/src/typeScriptRuntimeBinding.d.ts.map +1 -0
- package/dist/packages/compiler-inventory/src/typeScriptRuntimeBinding.js +67 -0
- package/dist/packages/compiler-inventory/src/typeScriptRuntimeBinding.js.map +1 -0
- package/dist/packages/compiler-ir-traversal/src/compilerIntermediateRepresentationTraversal.d.ts +5 -0
- package/dist/packages/compiler-ir-traversal/src/compilerIntermediateRepresentationTraversal.d.ts.map +1 -0
- package/dist/packages/compiler-ir-traversal/src/compilerIntermediateRepresentationTraversal.js +469 -0
- package/dist/packages/compiler-ir-traversal/src/compilerIntermediateRepresentationTraversal.js.map +1 -0
- package/dist/packages/compiler-ir-traversal/src/compilerIntermediateRepresentationTraversalPath.d.ts +3 -0
- package/dist/packages/compiler-ir-traversal/src/compilerIntermediateRepresentationTraversalPath.d.ts.map +1 -0
- package/dist/packages/compiler-ir-traversal/src/compilerIntermediateRepresentationTraversalPath.js +14 -0
- package/dist/packages/compiler-ir-traversal/src/compilerIntermediateRepresentationTraversalPath.js.map +1 -0
- package/dist/packages/compiler-ir-traversal/src/index.d.ts +3 -0
- package/dist/packages/compiler-ir-traversal/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-ir-traversal/src/index.js +3 -0
- package/dist/packages/compiler-ir-traversal/src/index.js.map +1 -0
- package/dist/packages/compiler-ir-validation/src/compilerIrModuleStructure.d.ts +3 -0
- package/dist/packages/compiler-ir-validation/src/compilerIrModuleStructure.d.ts.map +1 -0
- package/dist/packages/compiler-ir-validation/src/compilerIrModuleStructure.js +1258 -0
- package/dist/packages/compiler-ir-validation/src/compilerIrModuleStructure.js.map +1 -0
- package/dist/packages/compiler-ir-validation/src/index.d.ts +2 -0
- package/dist/packages/compiler-ir-validation/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-ir-validation/src/index.js +2 -0
- package/dist/packages/compiler-ir-validation/src/index.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerArrayBindingPatternLowering.d.ts +3 -0
- package/dist/packages/compiler-lowering/src/compilerArrayBindingPatternLowering.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerArrayBindingPatternLowering.js +717 -0
- package/dist/packages/compiler-lowering/src/compilerArrayBindingPatternLowering.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerArrayBindingPatternPresence.d.ts +3 -0
- package/dist/packages/compiler-lowering/src/compilerArrayBindingPatternPresence.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerArrayBindingPatternPresence.js +162 -0
- package/dist/packages/compiler-lowering/src/compilerArrayBindingPatternPresence.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerAwaitConditionHoistingLowering.d.ts +3 -0
- package/dist/packages/compiler-lowering/src/compilerAwaitConditionHoistingLowering.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerAwaitConditionHoistingLowering.js +721 -0
- package/dist/packages/compiler-lowering/src/compilerAwaitConditionHoistingLowering.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerBindingPatternLowering.d.ts +4 -0
- package/dist/packages/compiler-lowering/src/compilerBindingPatternLowering.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerBindingPatternLowering.js +43 -0
- package/dist/packages/compiler-lowering/src/compilerBindingPatternLowering.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerCStyleForLowering.d.ts +3 -0
- package/dist/packages/compiler-lowering/src/compilerCStyleForLowering.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerCStyleForLowering.js +591 -0
- package/dist/packages/compiler-lowering/src/compilerCStyleForLowering.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerCatchAwaitHoistingLowering.d.ts +3 -0
- package/dist/packages/compiler-lowering/src/compilerCatchAwaitHoistingLowering.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerCatchAwaitHoistingLowering.js +244 -0
- package/dist/packages/compiler-lowering/src/compilerCatchAwaitHoistingLowering.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerClassInitialization.d.ts +4 -0
- package/dist/packages/compiler-lowering/src/compilerClassInitialization.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerClassInitialization.js +102 -0
- package/dist/packages/compiler-lowering/src/compilerClassInitialization.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerExtraArgumentErasureLowering.d.ts +3 -0
- package/dist/packages/compiler-lowering/src/compilerExtraArgumentErasureLowering.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerExtraArgumentErasureLowering.js +156 -0
- package/dist/packages/compiler-lowering/src/compilerExtraArgumentErasureLowering.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerFinallyAwaitHoistingLowering.d.ts +3 -0
- package/dist/packages/compiler-lowering/src/compilerFinallyAwaitHoistingLowering.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerFinallyAwaitHoistingLowering.js +255 -0
- package/dist/packages/compiler-lowering/src/compilerFinallyAwaitHoistingLowering.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerInterfaceInheritanceLowering.d.ts +3 -0
- package/dist/packages/compiler-lowering/src/compilerInterfaceInheritanceLowering.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerInterfaceInheritanceLowering.js +1062 -0
- package/dist/packages/compiler-lowering/src/compilerInterfaceInheritanceLowering.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerLoweringPass.d.ts +5 -0
- package/dist/packages/compiler-lowering/src/compilerLoweringPass.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerLoweringPass.js +133 -0
- package/dist/packages/compiler-lowering/src/compilerLoweringPass.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerObjectBindingPatternLowering.d.ts +3 -0
- package/dist/packages/compiler-lowering/src/compilerObjectBindingPatternLowering.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerObjectBindingPatternLowering.js +589 -0
- package/dist/packages/compiler-lowering/src/compilerObjectBindingPatternLowering.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerSwitchClauseCompletion.d.ts +3 -0
- package/dist/packages/compiler-lowering/src/compilerSwitchClauseCompletion.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerSwitchClauseCompletion.js +71 -0
- package/dist/packages/compiler-lowering/src/compilerSwitchClauseCompletion.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerSwitchFallthroughLowering.d.ts +3 -0
- package/dist/packages/compiler-lowering/src/compilerSwitchFallthroughLowering.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerSwitchFallthroughLowering.js +810 -0
- package/dist/packages/compiler-lowering/src/compilerSwitchFallthroughLowering.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerSwitchSuspensionLowering.d.ts +3 -0
- package/dist/packages/compiler-lowering/src/compilerSwitchSuspensionLowering.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerSwitchSuspensionLowering.js +226 -0
- package/dist/packages/compiler-lowering/src/compilerSwitchSuspensionLowering.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerVariableHoistingInitialization.d.ts +3 -0
- package/dist/packages/compiler-lowering/src/compilerVariableHoistingInitialization.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerVariableHoistingInitialization.js +724 -0
- package/dist/packages/compiler-lowering/src/compilerVariableHoistingInitialization.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerVariableHoistingLowering.d.ts +3 -0
- package/dist/packages/compiler-lowering/src/compilerVariableHoistingLowering.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerVariableHoistingLowering.js +797 -0
- package/dist/packages/compiler-lowering/src/compilerVariableHoistingLowering.js.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerVariableInitializationCompletion.d.ts +9 -0
- package/dist/packages/compiler-lowering/src/compilerVariableInitializationCompletion.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/compilerVariableInitializationCompletion.js +42 -0
- package/dist/packages/compiler-lowering/src/compilerVariableInitializationCompletion.js.map +1 -0
- package/dist/packages/compiler-lowering/src/index.d.ts +17 -0
- package/dist/packages/compiler-lowering/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-lowering/src/index.js +17 -0
- package/dist/packages/compiler-lowering/src/index.js.map +1 -0
- package/dist/packages/compiler-module/src/compilerModuleEvaluation.d.ts +4 -0
- package/dist/packages/compiler-module/src/compilerModuleEvaluation.d.ts.map +1 -0
- package/dist/packages/compiler-module/src/compilerModuleEvaluation.js +506 -0
- package/dist/packages/compiler-module/src/compilerModuleEvaluation.js.map +1 -0
- package/dist/packages/compiler-module/src/compilerModuleFacadeIdentity.d.ts +4 -0
- package/dist/packages/compiler-module/src/compilerModuleFacadeIdentity.d.ts.map +1 -0
- package/dist/packages/compiler-module/src/compilerModuleFacadeIdentity.js +182 -0
- package/dist/packages/compiler-module/src/compilerModuleFacadeIdentity.js.map +1 -0
- package/dist/packages/compiler-module/src/compilerModuleFacadeLowering.d.ts +4 -0
- package/dist/packages/compiler-module/src/compilerModuleFacadeLowering.d.ts.map +1 -0
- package/dist/packages/compiler-module/src/compilerModuleFacadeLowering.js +466 -0
- package/dist/packages/compiler-module/src/compilerModuleFacadeLowering.js.map +1 -0
- package/dist/packages/compiler-module/src/compilerModuleFacadeRequirement.d.ts +3 -0
- package/dist/packages/compiler-module/src/compilerModuleFacadeRequirement.d.ts.map +1 -0
- package/dist/packages/compiler-module/src/compilerModuleFacadeRequirement.js +28 -0
- package/dist/packages/compiler-module/src/compilerModuleFacadeRequirement.js.map +1 -0
- package/dist/packages/compiler-module/src/index.d.ts +5 -0
- package/dist/packages/compiler-module/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-module/src/index.js +5 -0
- package/dist/packages/compiler-module/src/index.js.map +1 -0
- package/dist/packages/compiler-orchestration/src/compilerOrchestration.d.ts +8 -0
- package/dist/packages/compiler-orchestration/src/compilerOrchestration.d.ts.map +1 -0
- package/dist/packages/compiler-orchestration/src/compilerOrchestration.js +161 -0
- package/dist/packages/compiler-orchestration/src/compilerOrchestration.js.map +1 -0
- package/dist/packages/compiler-orchestration/src/compilerPackageCompilation.d.ts +4 -0
- package/dist/packages/compiler-orchestration/src/compilerPackageCompilation.d.ts.map +1 -0
- package/dist/packages/compiler-orchestration/src/compilerPackageCompilation.js +745 -0
- package/dist/packages/compiler-orchestration/src/compilerPackageCompilation.js.map +1 -0
- package/dist/packages/compiler-orchestration/src/flightWorkspaceCompilation.d.ts +3 -0
- package/dist/packages/compiler-orchestration/src/flightWorkspaceCompilation.d.ts.map +1 -0
- package/dist/packages/compiler-orchestration/src/flightWorkspaceCompilation.js +14 -0
- package/dist/packages/compiler-orchestration/src/flightWorkspaceCompilation.js.map +1 -0
- package/dist/packages/compiler-orchestration/src/index.d.ts +4 -0
- package/dist/packages/compiler-orchestration/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-orchestration/src/index.js +4 -0
- package/dist/packages/compiler-orchestration/src/index.js.map +1 -0
- package/dist/packages/compiler-patch/src/compilerSemanticPatch.d.ts +6 -0
- package/dist/packages/compiler-patch/src/compilerSemanticPatch.d.ts.map +1 -0
- package/dist/packages/compiler-patch/src/compilerSemanticPatch.js +316 -0
- package/dist/packages/compiler-patch/src/compilerSemanticPatch.js.map +1 -0
- package/dist/packages/compiler-patch/src/index.d.ts +2 -0
- package/dist/packages/compiler-patch/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-patch/src/index.js +2 -0
- package/dist/packages/compiler-patch/src/index.js.map +1 -0
- package/dist/packages/compiler-provenance/src/index.d.ts +2 -0
- package/dist/packages/compiler-provenance/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-provenance/src/index.js +2 -0
- package/dist/packages/compiler-provenance/src/index.js.map +1 -0
- package/dist/packages/compiler-provenance/src/sourceFingerprint.d.ts +7 -0
- package/dist/packages/compiler-provenance/src/sourceFingerprint.d.ts.map +1 -0
- package/dist/packages/compiler-provenance/src/sourceFingerprint.js +58 -0
- package/dist/packages/compiler-provenance/src/sourceFingerprint.js.map +1 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeExternalConstructorAbiCompleteness.d.ts +4 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeExternalConstructorAbiCompleteness.d.ts.map +1 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeExternalConstructorAbiCompleteness.js +110 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeExternalConstructorAbiCompleteness.js.map +1 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeExternalConstructorReachability.d.ts +3 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeExternalConstructorReachability.d.ts.map +1 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeExternalConstructorReachability.js +42 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeExternalConstructorReachability.js.map +1 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeExternalSymbolCompleteness.d.ts +4 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeExternalSymbolCompleteness.d.ts.map +1 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeExternalSymbolCompleteness.js +64 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeExternalSymbolCompleteness.js.map +1 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeExternalSymbolReachability.d.ts +3 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeExternalSymbolReachability.d.ts.map +1 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeExternalSymbolReachability.js +89 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeExternalSymbolReachability.js.map +1 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeTaskCapability.d.ts +6 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeTaskCapability.d.ts.map +1 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeTaskCapability.js +247 -0
- package/dist/packages/compiler-runtime-contract/src/compilerRuntimeTaskCapability.js.map +1 -0
- package/dist/packages/compiler-runtime-contract/src/index.d.ts +6 -0
- package/dist/packages/compiler-runtime-contract/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-runtime-contract/src/index.js +6 -0
- package/dist/packages/compiler-runtime-contract/src/index.js.map +1 -0
- package/dist/packages/compiler-semantic/src/compilerIrStaticFacts.d.ts +4 -0
- package/dist/packages/compiler-semantic/src/compilerIrStaticFacts.d.ts.map +1 -0
- package/dist/packages/compiler-semantic/src/compilerIrStaticFacts.js +396 -0
- package/dist/packages/compiler-semantic/src/compilerIrStaticFacts.js.map +1 -0
- package/dist/packages/compiler-semantic/src/compilerIrTypeMemberEvidence.d.ts +4 -0
- package/dist/packages/compiler-semantic/src/compilerIrTypeMemberEvidence.d.ts.map +1 -0
- package/dist/packages/compiler-semantic/src/compilerIrTypeMemberEvidence.js +63 -0
- package/dist/packages/compiler-semantic/src/compilerIrTypeMemberEvidence.js.map +1 -0
- package/dist/packages/compiler-semantic/src/compilerOperatorDomainEvidence.d.ts +4 -0
- package/dist/packages/compiler-semantic/src/compilerOperatorDomainEvidence.d.ts.map +1 -0
- package/dist/packages/compiler-semantic/src/compilerOperatorDomainEvidence.js +76 -0
- package/dist/packages/compiler-semantic/src/compilerOperatorDomainEvidence.js.map +1 -0
- package/dist/packages/compiler-semantic/src/compilerStaticNumericArithmetic.d.ts +7 -0
- package/dist/packages/compiler-semantic/src/compilerStaticNumericArithmetic.d.ts.map +1 -0
- package/dist/packages/compiler-semantic/src/compilerStaticNumericArithmetic.js +107 -0
- package/dist/packages/compiler-semantic/src/compilerStaticNumericArithmetic.js.map +1 -0
- package/dist/packages/compiler-semantic/src/compilerTypeScriptForInKeyEvidence.d.ts +4 -0
- package/dist/packages/compiler-semantic/src/compilerTypeScriptForInKeyEvidence.d.ts.map +1 -0
- package/dist/packages/compiler-semantic/src/compilerTypeScriptForInKeyEvidence.js +159 -0
- package/dist/packages/compiler-semantic/src/compilerTypeScriptForInKeyEvidence.js.map +1 -0
- package/dist/packages/compiler-semantic/src/compilerTypeScriptInvocationSemantics.d.ts +4 -0
- package/dist/packages/compiler-semantic/src/compilerTypeScriptInvocationSemantics.d.ts.map +1 -0
- package/dist/packages/compiler-semantic/src/compilerTypeScriptInvocationSemantics.js +31 -0
- package/dist/packages/compiler-semantic/src/compilerTypeScriptInvocationSemantics.js.map +1 -0
- package/dist/packages/compiler-semantic/src/compilerTypeScriptSyntacticTypeEvidence.d.ts +8 -0
- package/dist/packages/compiler-semantic/src/compilerTypeScriptSyntacticTypeEvidence.d.ts.map +1 -0
- package/dist/packages/compiler-semantic/src/compilerTypeScriptSyntacticTypeEvidence.js +83 -0
- package/dist/packages/compiler-semantic/src/compilerTypeScriptSyntacticTypeEvidence.js.map +1 -0
- package/dist/packages/compiler-semantic/src/index.d.ts +4 -0
- package/dist/packages/compiler-semantic/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-semantic/src/index.js +4 -0
- package/dist/packages/compiler-semantic/src/index.js.map +1 -0
- package/dist/packages/compiler-semantic/src/typeScriptSemanticLowering.d.ts +6 -0
- package/dist/packages/compiler-semantic/src/typeScriptSemanticLowering.d.ts.map +1 -0
- package/dist/packages/compiler-semantic/src/typeScriptSemanticLowering.js +8158 -0
- package/dist/packages/compiler-semantic/src/typeScriptSemanticLowering.js.map +1 -0
- package/dist/packages/compiler-structural/src/compilerStructuralObjectCompatibility.d.ts +5 -0
- package/dist/packages/compiler-structural/src/compilerStructuralObjectCompatibility.d.ts.map +1 -0
- package/dist/packages/compiler-structural/src/compilerStructuralObjectCompatibility.js +500 -0
- package/dist/packages/compiler-structural/src/compilerStructuralObjectCompatibility.js.map +1 -0
- package/dist/packages/compiler-structural/src/compilerStructuralObjectCopySemantics.d.ts +3 -0
- package/dist/packages/compiler-structural/src/compilerStructuralObjectCopySemantics.d.ts.map +1 -0
- package/dist/packages/compiler-structural/src/compilerStructuralObjectCopySemantics.js +11 -0
- package/dist/packages/compiler-structural/src/compilerStructuralObjectCopySemantics.js.map +1 -0
- package/dist/packages/compiler-structural/src/compilerStructuralTypeAssignability.d.ts +4 -0
- package/dist/packages/compiler-structural/src/compilerStructuralTypeAssignability.d.ts.map +1 -0
- package/dist/packages/compiler-structural/src/compilerStructuralTypeAssignability.js +261 -0
- package/dist/packages/compiler-structural/src/compilerStructuralTypeAssignability.js.map +1 -0
- package/dist/packages/compiler-structural/src/compilerStructuralTypeShapeIdentity.d.ts +4 -0
- package/dist/packages/compiler-structural/src/compilerStructuralTypeShapeIdentity.d.ts.map +1 -0
- package/dist/packages/compiler-structural/src/compilerStructuralTypeShapeIdentity.js +168 -0
- package/dist/packages/compiler-structural/src/compilerStructuralTypeShapeIdentity.js.map +1 -0
- package/dist/packages/compiler-structural/src/compilerStructuralTypeShapeInventory.d.ts +3 -0
- package/dist/packages/compiler-structural/src/compilerStructuralTypeShapeInventory.d.ts.map +1 -0
- package/dist/packages/compiler-structural/src/compilerStructuralTypeShapeInventory.js +50 -0
- package/dist/packages/compiler-structural/src/compilerStructuralTypeShapeInventory.js.map +1 -0
- package/dist/packages/compiler-structural/src/compilerStructuralTypeSubstitution.d.ts +5 -0
- package/dist/packages/compiler-structural/src/compilerStructuralTypeSubstitution.d.ts.map +1 -0
- package/dist/packages/compiler-structural/src/compilerStructuralTypeSubstitution.js +224 -0
- package/dist/packages/compiler-structural/src/compilerStructuralTypeSubstitution.js.map +1 -0
- package/dist/packages/compiler-structural/src/compilerTypeValueIdentityAnalysis.d.ts +4 -0
- package/dist/packages/compiler-structural/src/compilerTypeValueIdentityAnalysis.d.ts.map +1 -0
- package/dist/packages/compiler-structural/src/compilerTypeValueIdentityAnalysis.js +592 -0
- package/dist/packages/compiler-structural/src/compilerTypeValueIdentityAnalysis.js.map +1 -0
- package/dist/packages/compiler-structural/src/index.d.ts +8 -0
- package/dist/packages/compiler-structural/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-structural/src/index.js +8 -0
- package/dist/packages/compiler-structural/src/index.js.map +1 -0
- package/dist/packages/compiler-task/src/compilerAsyncStateMachine.d.ts +3 -0
- package/dist/packages/compiler-task/src/compilerAsyncStateMachine.d.ts.map +1 -0
- package/dist/packages/compiler-task/src/compilerAsyncStateMachine.js +785 -0
- package/dist/packages/compiler-task/src/compilerAsyncStateMachine.js.map +1 -0
- package/dist/packages/compiler-task/src/compilerAsyncTaskInventory.d.ts +3 -0
- package/dist/packages/compiler-task/src/compilerAsyncTaskInventory.d.ts.map +1 -0
- package/dist/packages/compiler-task/src/compilerAsyncTaskInventory.js +182 -0
- package/dist/packages/compiler-task/src/compilerAsyncTaskInventory.js.map +1 -0
- package/dist/packages/compiler-task/src/compilerTaskOperationSemantics.d.ts +4 -0
- package/dist/packages/compiler-task/src/compilerTaskOperationSemantics.d.ts.map +1 -0
- package/dist/packages/compiler-task/src/compilerTaskOperationSemantics.js +101 -0
- package/dist/packages/compiler-task/src/compilerTaskOperationSemantics.js.map +1 -0
- package/dist/packages/compiler-task/src/index.d.ts +4 -0
- package/dist/packages/compiler-task/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-task/src/index.js +4 -0
- package/dist/packages/compiler-task/src/index.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerAccessSemanticIntermediateRepresentation.d.ts +79 -0
- package/dist/packages/compiler-types/src/compilerAccessSemanticIntermediateRepresentation.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerAccessSemanticIntermediateRepresentation.js +2 -0
- package/dist/packages/compiler-types/src/compilerAccessSemanticIntermediateRepresentation.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerAmbientMemberBindingContract.d.ts +87 -0
- package/dist/packages/compiler-types/src/compilerAmbientMemberBindingContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerAmbientMemberBindingContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerAmbientMemberBindingContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerAsyncStateMachineContract.d.ts +126 -0
- package/dist/packages/compiler-types/src/compilerAsyncStateMachineContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerAsyncStateMachineContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerAsyncStateMachineContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerAsyncTaskCompletionContract.d.ts +32 -0
- package/dist/packages/compiler-types/src/compilerAsyncTaskCompletionContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerAsyncTaskCompletionContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerAsyncTaskCompletionContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerAsyncTaskInventoryContract.d.ts +63 -0
- package/dist/packages/compiler-types/src/compilerAsyncTaskInventoryContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerAsyncTaskInventoryContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerAsyncTaskInventoryContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerBackendContract.d.ts +183 -0
- package/dist/packages/compiler-types/src/compilerBackendContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerBackendContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerBackendContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerBindingIntermediateRepresentation.d.ts +46 -0
- package/dist/packages/compiler-types/src/compilerBindingIntermediateRepresentation.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerBindingIntermediateRepresentation.js +2 -0
- package/dist/packages/compiler-types/src/compilerBindingIntermediateRepresentation.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerBindingPatternIntermediateRepresentation.d.ts +43 -0
- package/dist/packages/compiler-types/src/compilerBindingPatternIntermediateRepresentation.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerBindingPatternIntermediateRepresentation.js +2 -0
- package/dist/packages/compiler-types/src/compilerBindingPatternIntermediateRepresentation.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerCatchCompletionContract.d.ts +23 -0
- package/dist/packages/compiler-types/src/compilerCatchCompletionContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerCatchCompletionContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerCatchCompletionContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerClassInitializationContract.d.ts +30 -0
- package/dist/packages/compiler-types/src/compilerClassInitializationContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerClassInitializationContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerClassInitializationContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerClosureEvidenceContract.d.ts +60 -0
- package/dist/packages/compiler-types/src/compilerClosureEvidenceContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerClosureEvidenceContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerClosureEvidenceContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerCommandLineContract.d.ts +79 -0
- package/dist/packages/compiler-types/src/compilerCommandLineContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerCommandLineContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerCommandLineContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerCompletionContract.d.ts +25 -0
- package/dist/packages/compiler-types/src/compilerCompletionContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerCompletionContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerCompletionContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerCppClosureCaptureContract.d.ts +21 -0
- package/dist/packages/compiler-types/src/compilerCppClosureCaptureContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerCppClosureCaptureContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerCppClosureCaptureContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerCppReferenceRepresentationContract.d.ts +74 -0
- package/dist/packages/compiler-types/src/compilerCppReferenceRepresentationContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerCppReferenceRepresentationContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerCppReferenceRepresentationContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerDeclarationIntermediateRepresentation.d.ts +113 -0
- package/dist/packages/compiler-types/src/compilerDeclarationIntermediateRepresentation.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerDeclarationIntermediateRepresentation.js +2 -0
- package/dist/packages/compiler-types/src/compilerDeclarationIntermediateRepresentation.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerDependentCallablePackContract.d.ts +11 -0
- package/dist/packages/compiler-types/src/compilerDependentCallablePackContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerDependentCallablePackContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerDependentCallablePackContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerDiagnosticContract.d.ts +11 -0
- package/dist/packages/compiler-types/src/compilerDiagnosticContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerDiagnosticContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerDiagnosticContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerEmittedSourceSyntaxContract.d.ts +28 -0
- package/dist/packages/compiler-types/src/compilerEmittedSourceSyntaxContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerEmittedSourceSyntaxContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerEmittedSourceSyntaxContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerExecutableIntermediateRepresentation.d.ts +343 -0
- package/dist/packages/compiler-types/src/compilerExecutableIntermediateRepresentation.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerExecutableIntermediateRepresentation.js +2 -0
- package/dist/packages/compiler-types/src/compilerExecutableIntermediateRepresentation.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerFlightWorkspaceContract.d.ts +26 -0
- package/dist/packages/compiler-types/src/compilerFlightWorkspaceContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerFlightWorkspaceContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerFlightWorkspaceContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerHaxeTaskEmissionContract.d.ts +12 -0
- package/dist/packages/compiler-types/src/compilerHaxeTaskEmissionContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerHaxeTaskEmissionContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerHaxeTaskEmissionContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerHaxeTaskLoweringContract.d.ts +119 -0
- package/dist/packages/compiler-types/src/compilerHaxeTaskLoweringContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerHaxeTaskLoweringContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerHaxeTaskLoweringContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerHostEndpointContract.d.ts +27 -0
- package/dist/packages/compiler-types/src/compilerHostEndpointContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerHostEndpointContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerHostEndpointContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerInvariantContract.d.ts +7 -0
- package/dist/packages/compiler-types/src/compilerInvariantContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerInvariantContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerInvariantContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerInventoryContract.d.ts +186 -0
- package/dist/packages/compiler-types/src/compilerInventoryContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerInventoryContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerInventoryContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerIrValidationContract.d.ts +13 -0
- package/dist/packages/compiler-types/src/compilerIrValidationContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerIrValidationContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerIrValidationContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerLoweringContract.d.ts +32 -0
- package/dist/packages/compiler-types/src/compilerLoweringContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerLoweringContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerLoweringContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerModuleEvaluationContract.d.ts +84 -0
- package/dist/packages/compiler-types/src/compilerModuleEvaluationContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerModuleEvaluationContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerModuleEvaluationContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerModuleFacadeContract.d.ts +78 -0
- package/dist/packages/compiler-types/src/compilerModuleFacadeContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerModuleFacadeContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerModuleFacadeContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerModuleIntermediateRepresentation.d.ts +53 -0
- package/dist/packages/compiler-types/src/compilerModuleIntermediateRepresentation.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerModuleIntermediateRepresentation.js +2 -0
- package/dist/packages/compiler-types/src/compilerModuleIntermediateRepresentation.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerModuleResolutionContract.d.ts +20 -0
- package/dist/packages/compiler-types/src/compilerModuleResolutionContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerModuleResolutionContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerModuleResolutionContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerOperatorIntermediateRepresentation.d.ts +5 -0
- package/dist/packages/compiler-types/src/compilerOperatorIntermediateRepresentation.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerOperatorIntermediateRepresentation.js +2 -0
- package/dist/packages/compiler-types/src/compilerOperatorIntermediateRepresentation.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerOperatorSemanticIntermediateRepresentation.d.ts +34 -0
- package/dist/packages/compiler-types/src/compilerOperatorSemanticIntermediateRepresentation.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerOperatorSemanticIntermediateRepresentation.js +2 -0
- package/dist/packages/compiler-types/src/compilerOperatorSemanticIntermediateRepresentation.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerOrchestrationContract.d.ts +43 -0
- package/dist/packages/compiler-types/src/compilerOrchestrationContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerOrchestrationContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerOrchestrationContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerPackageCheckContract.d.ts +96 -0
- package/dist/packages/compiler-types/src/compilerPackageCheckContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerPackageCheckContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerPackageCheckContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerPackageCompilationContract.d.ts +108 -0
- package/dist/packages/compiler-types/src/compilerPackageCompilationContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerPackageCompilationContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerPackageCompilationContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerRefusalClassificationContract.d.ts +3 -0
- package/dist/packages/compiler-types/src/compilerRefusalClassificationContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerRefusalClassificationContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerRefusalClassificationContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerRuntimeContract.d.ts +122 -0
- package/dist/packages/compiler-types/src/compilerRuntimeContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerRuntimeContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerRuntimeContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerRuntimeTaskCapabilityContract.d.ts +96 -0
- package/dist/packages/compiler-types/src/compilerRuntimeTaskCapabilityContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerRuntimeTaskCapabilityContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerRuntimeTaskCapabilityContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerRustOwnershipContract.d.ts +25 -0
- package/dist/packages/compiler-types/src/compilerRustOwnershipContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerRustOwnershipContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerRustOwnershipContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerSemanticPatchContract.d.ts +80 -0
- package/dist/packages/compiler-types/src/compilerSemanticPatchContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerSemanticPatchContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerSemanticPatchContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerSourceFingerprint.d.ts +2 -0
- package/dist/packages/compiler-types/src/compilerSourceFingerprint.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerSourceFingerprint.js +2 -0
- package/dist/packages/compiler-types/src/compilerSourceFingerprint.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerSourceIdentity.d.ts +21 -0
- package/dist/packages/compiler-types/src/compilerSourceIdentity.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerSourceIdentity.js +2 -0
- package/dist/packages/compiler-types/src/compilerSourceIdentity.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerStatementCompletionContract.d.ts +7 -0
- package/dist/packages/compiler-types/src/compilerStatementCompletionContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerStatementCompletionContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerStatementCompletionContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerStaticFactContract.d.ts +71 -0
- package/dist/packages/compiler-types/src/compilerStaticFactContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerStaticFactContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerStaticFactContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerStructuralObjectCompatibilityContract.d.ts +18 -0
- package/dist/packages/compiler-types/src/compilerStructuralObjectCompatibilityContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerStructuralObjectCompatibilityContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerStructuralObjectCompatibilityContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerStructuralTypeAssignabilityContract.d.ts +20 -0
- package/dist/packages/compiler-types/src/compilerStructuralTypeAssignabilityContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerStructuralTypeAssignabilityContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerStructuralTypeAssignabilityContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerStructuralTypeShapeContract.d.ts +22 -0
- package/dist/packages/compiler-types/src/compilerStructuralTypeShapeContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerStructuralTypeShapeContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerStructuralTypeShapeContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerStructuralTypeSubstitutionContract.d.ts +17 -0
- package/dist/packages/compiler-types/src/compilerStructuralTypeSubstitutionContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerStructuralTypeSubstitutionContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerStructuralTypeSubstitutionContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerTargetCompilationSmokeContract.d.ts +26 -0
- package/dist/packages/compiler-types/src/compilerTargetCompilationSmokeContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerTargetCompilationSmokeContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerTargetCompilationSmokeContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerTargetNamingContract.d.ts +27 -0
- package/dist/packages/compiler-types/src/compilerTargetNamingContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerTargetNamingContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerTargetNamingContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerTaskOperationSemanticsContract.d.ts +65 -0
- package/dist/packages/compiler-types/src/compilerTaskOperationSemanticsContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerTaskOperationSemanticsContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerTaskOperationSemanticsContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerTraversalObserverContract.d.ts +29 -0
- package/dist/packages/compiler-types/src/compilerTraversalObserverContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerTraversalObserverContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerTraversalObserverContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerTypeIntermediateRepresentation.d.ts +99 -0
- package/dist/packages/compiler-types/src/compilerTypeIntermediateRepresentation.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerTypeIntermediateRepresentation.js +2 -0
- package/dist/packages/compiler-types/src/compilerTypeIntermediateRepresentation.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerTypeScriptContract.d.ts +39 -0
- package/dist/packages/compiler-types/src/compilerTypeScriptContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerTypeScriptContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerTypeScriptContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerTypeValueIdentityContract.d.ts +14 -0
- package/dist/packages/compiler-types/src/compilerTypeValueIdentityContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerTypeValueIdentityContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerTypeValueIdentityContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerValueCompletionContract.d.ts +46 -0
- package/dist/packages/compiler-types/src/compilerValueCompletionContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerValueCompletionContract.js +2 -0
- package/dist/packages/compiler-types/src/compilerValueCompletionContract.js.map +1 -0
- package/dist/packages/compiler-types/src/compilerWorkspaceSourceContract.d.ts +11 -0
- package/dist/packages/compiler-types/src/compilerWorkspaceSourceContract.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/compilerWorkspaceSourceContract.js +12 -0
- package/dist/packages/compiler-types/src/compilerWorkspaceSourceContract.js.map +1 -0
- package/dist/packages/compiler-types/src/index.d.ts +60 -0
- package/dist/packages/compiler-types/src/index.d.ts.map +1 -0
- package/dist/packages/compiler-types/src/index.js +2 -0
- package/dist/packages/compiler-types/src/index.js.map +1 -0
- package/dist/packages/tool-compiler/src/index.d.ts +24 -0
- package/dist/packages/tool-compiler/src/index.d.ts.map +1 -0
- package/dist/packages/tool-compiler/src/index.js +23 -0
- package/dist/packages/tool-compiler/src/index.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,1514 @@
|
|
|
1
|
+
import { compareTextCodeUnits, normalizeCompilerStructuralValueCanonical, normalizePathPortable, } from '../../compiler-canonical-form/src/index.js';
|
|
2
|
+
import { analyzeIrTypeStructuralAssignability, createIrTypeParameterSubstitutionPlan, createIrTypeValueIdentityAnalyzer, isCompilerStructuralTypeSubstitutionFailure, resolveIrTypeStructuralSubstitution, } from '../../compiler-structural/src/index.js';
|
|
3
|
+
import { getCompilerExternalBindingEvidenceCpp } from './cppRuntimeExternalSymbolBinding.js';
|
|
4
|
+
import { getIrHomogeneousTupleElementTypeCpp } from './cppTupleRepresentation.js';
|
|
5
|
+
export function createIrTypeReferenceRepresentationPlanCpp(type, module, modules = [module], moduleResolution = compilerEmptyModuleResolutionPlanCpp, externalBindings) {
|
|
6
|
+
return createIrTypeReferenceRepresentationPlannerCpp(modules, moduleResolution, externalBindings).plan(type, module);
|
|
7
|
+
}
|
|
8
|
+
export function createIrTypeReferenceRepresentationPlannerCpp(modules, moduleResolution = compilerEmptyModuleResolutionPlanCpp, externalBindings) {
|
|
9
|
+
const moduleSnapshot = structuredClone(modules);
|
|
10
|
+
const resolutionSnapshot = structuredClone(moduleResolution);
|
|
11
|
+
const externalBindingSnapshot = externalBindings ? structuredClone(externalBindings) : undefined;
|
|
12
|
+
const analyzer = createIrTypeValueIdentityAnalyzer(moduleSnapshot, resolutionSnapshot);
|
|
13
|
+
const moduleSet = createReferenceModuleSetCpp(moduleSnapshot, resolutionSnapshot);
|
|
14
|
+
const aliasCache = new Map();
|
|
15
|
+
const resolutionCache = createReferenceResolutionCacheCpp();
|
|
16
|
+
const context = {
|
|
17
|
+
analyzeIdentity: analyzer.analyze,
|
|
18
|
+
...(externalBindingSnapshot ? { externalBindings: externalBindingSnapshot } : {}),
|
|
19
|
+
moduleSet,
|
|
20
|
+
resolutionCache,
|
|
21
|
+
};
|
|
22
|
+
return Object.freeze({
|
|
23
|
+
isStructurallyAssignable(source, target, module) {
|
|
24
|
+
const subject = getReferenceModuleRecordCpp(module, moduleSet);
|
|
25
|
+
if (!subject)
|
|
26
|
+
throw new TypeError('C++ structural comparison subject must belong to the explicit module set');
|
|
27
|
+
return isIrTypeStructurallyAssignableCpp(source, target, subject, moduleSet, resolutionCache, new Set(), {
|
|
28
|
+
aliases: new Set(),
|
|
29
|
+
ancestors: new WeakMap(),
|
|
30
|
+
valueQueries: new Set(),
|
|
31
|
+
});
|
|
32
|
+
},
|
|
33
|
+
plan(type, module) {
|
|
34
|
+
const subject = getReferenceModuleRecordCpp(module, moduleSet);
|
|
35
|
+
if (!subject)
|
|
36
|
+
throw new TypeError('C++ reference representation subject must belong to the explicit module set');
|
|
37
|
+
return createIrTypeReferenceRepresentationPlanInternalCpp(type, subject, context);
|
|
38
|
+
},
|
|
39
|
+
resolveAlias(type, module) {
|
|
40
|
+
return resolveIrTypeAliasCpp(type, module, moduleSet, resolutionCache, aliasCache);
|
|
41
|
+
},
|
|
42
|
+
resolveConditionalFacetReference(type, module) {
|
|
43
|
+
const subject = getReferenceModuleRecordCpp(module, moduleSet);
|
|
44
|
+
if (!subject)
|
|
45
|
+
throw new TypeError('C++ conditional-facet subject must belong to the explicit module set');
|
|
46
|
+
return resolveIrConditionalFacetReferenceCpp(type, subject, moduleSet, resolutionCache, aliasCache, new Set());
|
|
47
|
+
},
|
|
48
|
+
resolveFacetReference(type, module) {
|
|
49
|
+
const subject = getReferenceModuleRecordCpp(module, moduleSet);
|
|
50
|
+
if (!subject)
|
|
51
|
+
throw new TypeError('C++ facet subject must belong to the explicit module set');
|
|
52
|
+
return resolveIrFacetReferenceCpp(type, subject, moduleSet, resolutionCache);
|
|
53
|
+
},
|
|
54
|
+
resolveExternalProjection(type, module) {
|
|
55
|
+
const subject = getReferenceModuleRecordCpp(module, moduleSet);
|
|
56
|
+
if (!subject)
|
|
57
|
+
throw new TypeError('C++ external projection subject must belong to the explicit module set');
|
|
58
|
+
return resolveIrExternalProjectionCpp(type, subject, context);
|
|
59
|
+
},
|
|
60
|
+
resolveClosedIntersectionDistribution(type, module) {
|
|
61
|
+
const subject = getReferenceModuleRecordCpp(module, moduleSet);
|
|
62
|
+
if (!subject)
|
|
63
|
+
throw new TypeError('C++ intersection-distribution subject must belong to the explicit module set');
|
|
64
|
+
return resolveIrTypeClosedIntersectionDistributionCpp(type, subject, moduleSet, resolutionCache);
|
|
65
|
+
},
|
|
66
|
+
resolveModule(specifier, module) {
|
|
67
|
+
const subject = getReferenceModuleRecordCpp(module, moduleSet);
|
|
68
|
+
if (!subject)
|
|
69
|
+
throw new TypeError('C++ module resolution subject must belong to the explicit module set');
|
|
70
|
+
const targets = getReferenceSpecifierModulesCpp(subject, specifier, moduleSet, resolutionCache);
|
|
71
|
+
return targets.length === 1 ? targets[0].module : undefined;
|
|
72
|
+
},
|
|
73
|
+
resolveModules(specifier, module) {
|
|
74
|
+
const subject = getReferenceModuleRecordCpp(module, moduleSet);
|
|
75
|
+
if (!subject)
|
|
76
|
+
throw new TypeError('C++ module resolution subject must belong to the explicit module set');
|
|
77
|
+
return getReferenceSpecifierModulesCpp(subject, specifier, moduleSet, resolutionCache).map((target) => target.module);
|
|
78
|
+
},
|
|
79
|
+
resolveObjectShape(type, module) {
|
|
80
|
+
const subject = getReferenceModuleRecordCpp(module, moduleSet);
|
|
81
|
+
if (!subject)
|
|
82
|
+
throw new TypeError('C++ object-shape subject must belong to the explicit module set');
|
|
83
|
+
return resolveIrTypeObjectShapeCpp(type, subject, moduleSet, resolutionCache, new Set());
|
|
84
|
+
},
|
|
85
|
+
resolveOwnObjectProperty(type, propertyName, module) {
|
|
86
|
+
const subject = getReferenceModuleRecordCpp(module, moduleSet);
|
|
87
|
+
if (!subject)
|
|
88
|
+
throw new TypeError('C++ own-property subject must belong to the explicit module set');
|
|
89
|
+
return resolveIrTypeOwnObjectPropertyCpp(type, propertyName, subject, moduleSet, resolutionCache);
|
|
90
|
+
},
|
|
91
|
+
resolveStructuralRow(type, module) {
|
|
92
|
+
const subject = getReferenceModuleRecordCpp(module, moduleSet);
|
|
93
|
+
if (!subject)
|
|
94
|
+
throw new TypeError('C++ structural-row subject must belong to the explicit module set');
|
|
95
|
+
return resolveIrTypeStructuralRowCpp(type, subject, moduleSet, resolutionCache, new Set(), false);
|
|
96
|
+
},
|
|
97
|
+
schema: 'flight-compiler-cpp-reference-representation-planner/1',
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
function resolveIrTypeOwnObjectPropertyCpp(type, propertyName, module, moduleSet, cache) {
|
|
101
|
+
if (type.kind !== 'named' || type.reference.kind !== 'binding')
|
|
102
|
+
return undefined;
|
|
103
|
+
const resolution = getReferenceDeclarationResolutionCpp(type.reference, module, moduleSet, cache);
|
|
104
|
+
if (resolution.kind !== 'location')
|
|
105
|
+
return undefined;
|
|
106
|
+
const declaration = resolution.location.declaration;
|
|
107
|
+
if (declaration.kind === 'typeAlias')
|
|
108
|
+
return undefined;
|
|
109
|
+
const substitution = createIrTypeParameterSubstitutionPlan(declaration.typeParameters, type.typeArguments);
|
|
110
|
+
if (declaration.kind === 'interface') {
|
|
111
|
+
const property = declaration.properties.find((candidate) => candidate.name === propertyName);
|
|
112
|
+
return property
|
|
113
|
+
? { ...property, type: resolveIrTypeStructuralSubstitution(property.type, substitution) }
|
|
114
|
+
: undefined;
|
|
115
|
+
}
|
|
116
|
+
const field = declaration.fields.find((candidate) => candidate.name === propertyName && !candidate.static && candidate.visibility === 'public' && !candidate.branded);
|
|
117
|
+
if (field)
|
|
118
|
+
return { ...field, type: resolveIrTypeStructuralSubstitution(field.type, substitution) };
|
|
119
|
+
const getter = declaration.methods.find((candidate) => candidate.name === propertyName &&
|
|
120
|
+
candidate.accessor === 'get' &&
|
|
121
|
+
!candidate.static &&
|
|
122
|
+
candidate.visibility === 'public' &&
|
|
123
|
+
!candidate.branded);
|
|
124
|
+
return getter
|
|
125
|
+
? {
|
|
126
|
+
name: getter.name,
|
|
127
|
+
optional: false,
|
|
128
|
+
readonly: true,
|
|
129
|
+
type: resolveIrTypeStructuralSubstitution(getter.returns, substitution),
|
|
130
|
+
}
|
|
131
|
+
: undefined;
|
|
132
|
+
}
|
|
133
|
+
function resolveIrTypeStructuralRowCpp(type, module, moduleSet, cache, aliases, allowRowOf) {
|
|
134
|
+
if (type.kind === 'named' && type.reference.kind === 'ambient') {
|
|
135
|
+
if ((type.reference.name === 'NoInfer' || type.reference.name === 'Readonly' || type.reference.name === 'Required') &&
|
|
136
|
+
type.typeArguments.length === 1 &&
|
|
137
|
+
type.typeArguments[0]) {
|
|
138
|
+
const argument = type.typeArguments[0];
|
|
139
|
+
const row = resolveIrTypeStructuralRowCpp(argument, module, moduleSet, cache, aliases, type.reference.name === 'NoInfer' ? allowRowOf : true) ??
|
|
140
|
+
// `Required` is the one marker a plain subject reference cannot express, so it is the one
|
|
141
|
+
// that needs the projection resolved to a row. See the helper.
|
|
142
|
+
(type.reference.name === 'Required'
|
|
143
|
+
? resolveIrTypeProjectionSubjectRowCpp(argument, module, moduleSet, cache, aliases)
|
|
144
|
+
: undefined);
|
|
145
|
+
if (!row)
|
|
146
|
+
return undefined;
|
|
147
|
+
if (type.reference.name === 'Readonly')
|
|
148
|
+
return { kind: 'readonly', row };
|
|
149
|
+
// `Required` names every member as present, which is what the row marker states: the subject
|
|
150
|
+
// keeps its own storage, and the row is what makes an optional member readable as its value.
|
|
151
|
+
if (type.reference.name === 'Required')
|
|
152
|
+
return { kind: 'required', row };
|
|
153
|
+
return row;
|
|
154
|
+
}
|
|
155
|
+
if (type.reference.name === 'Partial' && type.typeArguments.length === 1 && type.typeArguments[0]) {
|
|
156
|
+
if (!allowRowOf && resolveIrTypeObjectShapeCpp(type.typeArguments[0], module, moduleSet, cache, new Set())) {
|
|
157
|
+
return undefined;
|
|
158
|
+
}
|
|
159
|
+
const row = resolveIrTypeStructuralRowCpp(type.typeArguments[0], module, moduleSet, cache, aliases, true);
|
|
160
|
+
return row ? { kind: 'partial', row } : undefined;
|
|
161
|
+
}
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
if (type.kind === 'named' && type.reference.kind === 'binding') {
|
|
165
|
+
if (type.reference.binding.kind === 'typeParameter') {
|
|
166
|
+
const local = module.typeParameterBindingIds.has(type.reference.binding.id);
|
|
167
|
+
const owners = moduleSet.typeParameterOwnersByBindingId.get(type.reference.binding.id) ?? [];
|
|
168
|
+
const owner = local ? module : owners.length === 1 ? owners[0] : undefined;
|
|
169
|
+
return owner && allowRowOf && type.reference.path.length === 0 && type.typeArguments.length === 0
|
|
170
|
+
? { kind: 'rowOf', type }
|
|
171
|
+
: undefined;
|
|
172
|
+
}
|
|
173
|
+
const resolution = getReferenceDeclarationResolutionCpp(type.reference, module, moduleSet, cache);
|
|
174
|
+
if (resolution.kind !== 'location')
|
|
175
|
+
return undefined;
|
|
176
|
+
const location = resolution.location;
|
|
177
|
+
const declaration = location.declaration;
|
|
178
|
+
const key = `${location.identity}\0${JSON.stringify(type.typeArguments)}`;
|
|
179
|
+
if (aliases.has(key))
|
|
180
|
+
return undefined;
|
|
181
|
+
if (declaration.kind !== 'typeAlias') {
|
|
182
|
+
// An interface with no storage of its own can be a declaration name for an authored
|
|
183
|
+
// structural-row alias. TypeScript uses this form for compatibility names such as
|
|
184
|
+
// `interface DisplayObject extends Node2D {}`: it does not create another object, so emitting a
|
|
185
|
+
// second native reference carrier would make a value of the base row impossible to preserve.
|
|
186
|
+
// Keep this deliberately narrower than ordinary interface inheritance. One base must supply
|
|
187
|
+
// the complete row, and any own member means the interface needs its own representation.
|
|
188
|
+
if (declaration.kind === 'interface' && declaration.extends.length === 1 && declaration.properties.length === 0) {
|
|
189
|
+
const substitutions = createIrTypeParameterSubstitutionPlan(declaration.typeParameters, type.typeArguments);
|
|
190
|
+
const base = resolveIrTypeStructuralSubstitution(declaration.extends[0], substitutions);
|
|
191
|
+
const row = resolveIrTypeStructuralRowCpp(base, location.module, moduleSet, cache, new Set(aliases).add(key), false);
|
|
192
|
+
if (row)
|
|
193
|
+
return row;
|
|
194
|
+
}
|
|
195
|
+
return allowRowOf ? { kind: 'rowOf', type } : undefined;
|
|
196
|
+
}
|
|
197
|
+
const typeArguments = type.typeArguments.length === 0 && declaration.typeParameters.length > 0
|
|
198
|
+
? declaration.typeParameters.map((parameter) => ({
|
|
199
|
+
kind: 'named',
|
|
200
|
+
reference: { binding: parameter.binding, kind: 'binding', path: [] },
|
|
201
|
+
typeArguments: [],
|
|
202
|
+
}))
|
|
203
|
+
: type.typeArguments;
|
|
204
|
+
const substitutions = createIrTypeParameterSubstitutionPlan(declaration.typeParameters, typeArguments);
|
|
205
|
+
const overrideProperties = resolveIrTypeAliasStructuralRowOverrideCpp(declaration, substitutions, location.module, moduleSet, cache, new Set(aliases).add(key));
|
|
206
|
+
if (overrideProperties) {
|
|
207
|
+
return { kind: 'rowOf', type: { kind: 'object', properties: overrideProperties } };
|
|
208
|
+
}
|
|
209
|
+
const resolved = resolveIrTypeStructuralSubstitution(declaration.type, substitutions);
|
|
210
|
+
let row = resolveIrTypeStructuralRowCpp(resolved, location.module, moduleSet, cache, new Set(aliases).add(key), declaration.objectView === 'writable');
|
|
211
|
+
// A generic alias can establish a structural view while its concrete expansion becomes a closed
|
|
212
|
+
// object shape. Keep that declared view instead of forgetting the representation the alias itself
|
|
213
|
+
// emits: `NodeOf<T> = Node<T> & NoInfer<T>` is an open row, but `NodeOf<Node2DTraits>` has a
|
|
214
|
+
// flattenable object shape. The applied alias still names the StructuralRef emitted for NodeOf.
|
|
215
|
+
// Require the concrete expansion to have a valid shape before restoring the open row so a
|
|
216
|
+
// conflicting instantiation cannot bypass the intersection conflict check.
|
|
217
|
+
if ((!row ||
|
|
218
|
+
(row.kind === 'rowOf' &&
|
|
219
|
+
normalizeCompilerStructuralValueCanonical(row.type) === normalizeCompilerStructuralValueCanonical(type))) &&
|
|
220
|
+
resolveIrTypeObjectShapeCpp(resolved, location.module, moduleSet, cache, new Set())) {
|
|
221
|
+
const openRow = resolveIrTypeStructuralRowCpp(declaration.type, location.module, moduleSet, cache, new Set(aliases).add(key), declaration.objectView === 'writable');
|
|
222
|
+
if (openRow) {
|
|
223
|
+
row = substituteCppStructuralRowPlan(openRow, substitutions);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (row)
|
|
227
|
+
return declaration.objectView === 'writable' ? { kind: 'writable', row } : row;
|
|
228
|
+
if (declaration.objectView === 'writable' &&
|
|
229
|
+
resolveIrTypeObjectShapeCpp(resolved, location.module, moduleSet, cache, new Set())) {
|
|
230
|
+
return { kind: 'writable', row: { kind: 'rowOf', type: resolved } };
|
|
231
|
+
}
|
|
232
|
+
return allowRowOf && resolveIrTypeObjectShapeCpp(type, module, moduleSet, cache, new Set())
|
|
233
|
+
? { kind: 'rowOf', type }
|
|
234
|
+
: undefined;
|
|
235
|
+
}
|
|
236
|
+
if (type.kind === 'intersection') {
|
|
237
|
+
const shape = resolveIrTypeObjectShapeCpp(type, module, moduleSet, cache, new Set());
|
|
238
|
+
const memberShapes = type.types.map((member) => resolveIrTypeObjectShapeCpp(member, module, moduleSet, cache, new Set()));
|
|
239
|
+
const carriesRuntimeSymbol = memberShapes.some((memberShape) => memberShape?.some((property) => property.computedKey && !property.phantom));
|
|
240
|
+
const pairsGenericSubjectWithConcreteRow = type.types.some((member, memberIndex) => member.kind === 'named' &&
|
|
241
|
+
member.typeArguments.some((argument) => type.types.some((candidate, candidateIndex) => candidateIndex !== memberIndex &&
|
|
242
|
+
normalizeCompilerStructuralValueCanonical(candidate) ===
|
|
243
|
+
normalizeCompilerStructuralValueCanonical(argument))));
|
|
244
|
+
const concreteRuntimeRow = carriesRuntimeSymbol && pairsGenericSubjectWithConcreteRow;
|
|
245
|
+
if (shape && !concreteRuntimeRow)
|
|
246
|
+
return undefined;
|
|
247
|
+
// When every closed member resolves but their merge does not, the missing shape is a conflict,
|
|
248
|
+
// not an open row. A symbol-bearing entity intersection cannot turn that conflict into storage.
|
|
249
|
+
if (!shape && concreteRuntimeRow && memberShapes.every((memberShape) => memberShape))
|
|
250
|
+
return undefined;
|
|
251
|
+
const rows = type.types.map((member) => resolveIrTypeStructuralRowCpp(member, module, moduleSet, cache, aliases, true));
|
|
252
|
+
if (rows.some((row) => !row) ||
|
|
253
|
+
!type.types.some((member, index) => isIrBareStructuralRowTypeParameterCpp(member) || rows[index]?.kind !== 'rowOf' || concreteRuntimeRow)) {
|
|
254
|
+
return undefined;
|
|
255
|
+
}
|
|
256
|
+
return {
|
|
257
|
+
kind: 'merge',
|
|
258
|
+
rows: [rows[0], rows[1], ...rows.slice(2).map((row) => row)],
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
return allowRowOf && type.kind === 'object' ? { kind: 'rowOf', type } : undefined;
|
|
262
|
+
}
|
|
263
|
+
function substituteCppStructuralRowPlan(row, substitutions) {
|
|
264
|
+
switch (row.kind) {
|
|
265
|
+
case 'merge':
|
|
266
|
+
return {
|
|
267
|
+
kind: 'merge',
|
|
268
|
+
rows: [
|
|
269
|
+
substituteCppStructuralRowPlan(row.rows[0], substitutions),
|
|
270
|
+
substituteCppStructuralRowPlan(row.rows[1], substitutions),
|
|
271
|
+
...row.rows.slice(2).map((member) => substituteCppStructuralRowPlan(member, substitutions)),
|
|
272
|
+
],
|
|
273
|
+
};
|
|
274
|
+
case 'partial':
|
|
275
|
+
case 'readonly':
|
|
276
|
+
case 'required':
|
|
277
|
+
case 'writable':
|
|
278
|
+
return { kind: row.kind, row: substituteCppStructuralRowPlan(row.row, substitutions) };
|
|
279
|
+
case 'rowOf':
|
|
280
|
+
return { kind: 'rowOf', type: resolveIrTypeStructuralSubstitution(row.type, substitutions) };
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// A key projection is a subset of its subject's members, every one of which the row the target keeps
|
|
284
|
+
// for that subject already carries, so the projection's row is its subject's row. `Required` is the
|
|
285
|
+
// one marker that needs it: the projection alone is still a view the subject reference can carry,
|
|
286
|
+
// but stating that a member is present needs a member cell to state it about. This is the spelling
|
|
287
|
+
// the downstream register names for `Required<Pick<HostClipboardChangeProvider, 'subscribe' |
|
|
288
|
+
// 'unsubscribe'>>`, where the optional member has to read as its value at the call site.
|
|
289
|
+
function resolveIrTypeProjectionSubjectRowCpp(type, module, moduleSet, cache, aliases) {
|
|
290
|
+
if (type.kind !== 'named' || type.reference.kind !== 'ambient')
|
|
291
|
+
return undefined;
|
|
292
|
+
if (type.reference.name !== 'Omit' && type.reference.name !== 'Pick')
|
|
293
|
+
return undefined;
|
|
294
|
+
if (type.typeArguments.length !== 2 || !type.typeArguments[0])
|
|
295
|
+
return undefined;
|
|
296
|
+
return resolveIrTypeStructuralRowCpp(type.typeArguments[0], module, moduleSet, cache, aliases, true);
|
|
297
|
+
}
|
|
298
|
+
function isIrBareStructuralRowTypeParameterCpp(type) {
|
|
299
|
+
if (type.kind === 'named' && type.reference.kind === 'binding' && type.reference.binding.kind === 'typeParameter') {
|
|
300
|
+
return type.reference.path.length === 0 && type.typeArguments.length === 0;
|
|
301
|
+
}
|
|
302
|
+
return (type.kind === 'named' &&
|
|
303
|
+
type.reference.kind === 'ambient' &&
|
|
304
|
+
type.reference.name === 'NoInfer' &&
|
|
305
|
+
type.typeArguments.length === 1 &&
|
|
306
|
+
Boolean(type.typeArguments[0] && isIrBareStructuralRowTypeParameterCpp(type.typeArguments[0])));
|
|
307
|
+
}
|
|
308
|
+
function resolveIrTypeAliasCpp(type, module, moduleSet, resolutionCache, cache) {
|
|
309
|
+
if (type.kind !== 'named' || type.reference.kind !== 'binding')
|
|
310
|
+
return undefined;
|
|
311
|
+
const subject = getReferenceModuleRecordCpp(module, moduleSet);
|
|
312
|
+
if (!subject)
|
|
313
|
+
throw new TypeError('C++ type-alias subject must belong to the explicit module set');
|
|
314
|
+
const reference = type.reference;
|
|
315
|
+
const key = `${subject.identity}\0${reference.binding.id}\0${reference.path.join('\0')}\0${JSON.stringify(type.typeArguments)}`;
|
|
316
|
+
const cached = cache.get(key);
|
|
317
|
+
if (cached !== undefined)
|
|
318
|
+
return cached ?? undefined;
|
|
319
|
+
let locations;
|
|
320
|
+
if (reference.binding.kind === 'import') {
|
|
321
|
+
const resolution = getReferenceDeclarationResolutionCpp(reference, subject, moduleSet, resolutionCache);
|
|
322
|
+
locations = resolution.kind === 'location' ? [resolution.location] : [];
|
|
323
|
+
}
|
|
324
|
+
else if (reference.path.length === 0) {
|
|
325
|
+
locations = moduleSet.declarationsByBindingId.get(reference.binding.id) ?? [];
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
locations = [];
|
|
329
|
+
}
|
|
330
|
+
const aliases = deduplicateReferenceDeclarationLocationsCpp(locations).filter((location) => location.declaration.kind === 'typeAlias');
|
|
331
|
+
const alias = aliases.length === 1 ? aliases[0] : undefined;
|
|
332
|
+
let result = null;
|
|
333
|
+
if (alias?.declaration.kind === 'typeAlias') {
|
|
334
|
+
try {
|
|
335
|
+
result = resolveIrTypeStructuralSubstitution(alias.declaration.type, createIrTypeParameterSubstitutionPlan(alias.declaration.typeParameters, type.typeArguments));
|
|
336
|
+
}
|
|
337
|
+
catch (error) {
|
|
338
|
+
if (!isCompilerStructuralTypeSubstitutionFailure(error))
|
|
339
|
+
throw error;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
cache.set(key, result);
|
|
343
|
+
return result ?? undefined;
|
|
344
|
+
}
|
|
345
|
+
// `Partial`, `Readonly` and `Required` are homomorphic: they distribute over a union, so
|
|
346
|
+
// `Partial<A | B>` is `Partial<A> | Partial<B>`. The target keeps one storage shape, so the
|
|
347
|
+
// distributed members are merged into the one object their union can name -- a member any branch
|
|
348
|
+
// carries is a member the value may have. `Pick` and `Omit` are deliberately not distributed: they
|
|
349
|
+
// key off `keyof T`, which over a union is the keys the branches agree on, so distributing them would
|
|
350
|
+
// name members the source cannot reach. Without this a utility applied to a union of interfaces has
|
|
351
|
+
// no shape at all, which is why `Partial<TextureLike> & { resource?: ... }` refused while
|
|
352
|
+
// `Partial<Texture2D> & { resource?: ... }` emitted and the Omit-over-Partial case refused the same way.
|
|
353
|
+
function resolveIrTypeDistributedObjectShapeCpp(type, module, moduleSet, cache, ancestors) {
|
|
354
|
+
if (type.kind === 'union') {
|
|
355
|
+
const members = type.types.map((member) => resolveIrTypeDistributedObjectShapeCpp(member, module, moduleSet, cache, ancestors));
|
|
356
|
+
if (members.some((properties) => !properties))
|
|
357
|
+
return undefined;
|
|
358
|
+
return mergeIrObjectShapePropertiesCpp(members.flatMap((properties) => properties), module, moduleSet, cache, ancestors, true);
|
|
359
|
+
}
|
|
360
|
+
const step = resolveIrTypeShapeAliasStepCpp(type, module, moduleSet, cache, ancestors);
|
|
361
|
+
return step
|
|
362
|
+
? resolveIrTypeDistributedObjectShapeCpp(step.type, step.module, moduleSet, cache, step.ancestors)
|
|
363
|
+
: resolveIrTypeObjectShapeCpp(type, module, moduleSet, cache, ancestors);
|
|
364
|
+
}
|
|
365
|
+
// A union usually arrives as the alias that names it -- `Partial<TextureLike>` holds `TextureLike` as a
|
|
366
|
+
// binding, not as a union of its branches, and `Exclude<TrayCreateProviderResult, ...>` holds an alias
|
|
367
|
+
// too -- so a branch that only inspects the type never sees the union underneath. The alias is
|
|
368
|
+
// resolved here, one step, exactly as the structural-row resolver does, and the caller is told which
|
|
369
|
+
// module and which ancestor set to continue in. Undefined means the type is not an alias, NOT that it
|
|
370
|
+
// has no shape.
|
|
371
|
+
function resolveIrTypeShapeAliasStepCpp(type, module, moduleSet, cache, ancestors) {
|
|
372
|
+
if (type.kind !== 'named' || type.reference.kind !== 'binding')
|
|
373
|
+
return undefined;
|
|
374
|
+
const resolution = getReferenceDeclarationResolutionCpp(type.reference, module, moduleSet, cache);
|
|
375
|
+
if (resolution.kind !== 'location' || resolution.location.declaration.kind !== 'typeAlias')
|
|
376
|
+
return undefined;
|
|
377
|
+
const declaration = resolution.location.declaration;
|
|
378
|
+
const key = `${resolution.location.identity}\0${JSON.stringify(type.typeArguments)}`;
|
|
379
|
+
if (ancestors.has(key))
|
|
380
|
+
return undefined;
|
|
381
|
+
const typeArguments = type.typeArguments.length === 0 && declaration.typeParameters.length > 0
|
|
382
|
+
? declaration.typeParameters.map((parameter) => ({
|
|
383
|
+
kind: 'named',
|
|
384
|
+
reference: { binding: parameter.binding, kind: 'binding', path: [] },
|
|
385
|
+
typeArguments: [],
|
|
386
|
+
}))
|
|
387
|
+
: type.typeArguments;
|
|
388
|
+
return {
|
|
389
|
+
ancestors: new Set(ancestors).add(key),
|
|
390
|
+
module: resolution.location.module,
|
|
391
|
+
type: resolveIrTypeStructuralSubstitution(declaration.type, createIrTypeParameterSubstitutionPlan(declaration.typeParameters, typeArguments)),
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
// `Exclude<T, U>` is `T extends U ? never : T`: the members of `T` that `U` does not accept. The
|
|
395
|
+
// comparison is ASSIGNABILITY and not shape equality, and the difference is not academic. A subject
|
|
396
|
+
// whose `outcome` is the literal `'created'` IS assignable to an exclusion naming `outcome: string`,
|
|
397
|
+
// so an equality rule would keep a member the source resolves to `never`. Worse, the shape that
|
|
398
|
+
// prompted this -- `Exclude<TrayCreateProviderResult, { outcome: 'created' }>` -- is right under
|
|
399
|
+
// either rule, which is exactly how a rule that is wrong in general passes the one case in front of
|
|
400
|
+
// it. A member `U` accepts is dropped, and if none survive the answer is `never`, which has no object
|
|
401
|
+
// shape and refuses.
|
|
402
|
+
function resolveIrTypeExcludedObjectShapeCpp(type, module, moduleSet, cache, ancestors) {
|
|
403
|
+
const [subject, exclusion] = type.typeArguments;
|
|
404
|
+
if (!subject || !exclusion)
|
|
405
|
+
return undefined;
|
|
406
|
+
const comparison = {
|
|
407
|
+
aliases: new Set(),
|
|
408
|
+
ancestors: new WeakMap(),
|
|
409
|
+
valueQueries: new Set(),
|
|
410
|
+
};
|
|
411
|
+
// `Exclude` is `T extends U ? never : T` applied to the members `T` distributes into, so an alias
|
|
412
|
+
// subject has to be resolved before there are any members to test. Without this the subject is one
|
|
413
|
+
// binding, the test is made against the binding, and the refusal names `Exclude` at a site whose
|
|
414
|
+
// answer was already decided.
|
|
415
|
+
const step = resolveIrTypeShapeAliasStepCpp(subject, module, moduleSet, cache, ancestors);
|
|
416
|
+
const resolved = step?.type ?? subject;
|
|
417
|
+
const resolvedModule = step?.module ?? module;
|
|
418
|
+
const resolvedAncestors = step?.ancestors ?? ancestors;
|
|
419
|
+
const members = resolved.kind === 'union' ? resolved.types : [resolved];
|
|
420
|
+
const surviving = members.filter((member) => !isIrTypeStructurallyAssignableCpp(member, exclusion, resolvedModule, moduleSet, cache, resolvedAncestors, comparison));
|
|
421
|
+
const [first, second, ...rest] = surviving;
|
|
422
|
+
if (!first)
|
|
423
|
+
return undefined;
|
|
424
|
+
const remaining = second ? { kind: 'union', types: [first, second, ...rest] } : first;
|
|
425
|
+
// The survivors of an exclusion over a union alias are themselves a union -- `Exclude<TrayCreateProviderResult,
|
|
426
|
+
// { outcome: 'created' }>` keeps four of five branches -- so what remains has to be resolved the way any
|
|
427
|
+
// other union is, by merging the branches. Asking for its object shape alone is the path that has no arm
|
|
428
|
+
// for a union, which is how this arm resolved its subject correctly and still refused.
|
|
429
|
+
return resolveIrTypeDistributedObjectShapeCpp(remaining, resolvedModule, moduleSet, cache, resolvedAncestors);
|
|
430
|
+
}
|
|
431
|
+
function resolveIrTypeObjectShapeCpp(type, module, moduleSet, cache, ancestors) {
|
|
432
|
+
if (type.kind === 'object')
|
|
433
|
+
return type.properties;
|
|
434
|
+
if (type.kind === 'indexedAccess') {
|
|
435
|
+
const member = resolveIrTypeIndexedAccessCpp(type, module, moduleSet, cache, ancestors);
|
|
436
|
+
return member ? resolveIrTypeObjectShapeCpp(member, module, moduleSet, cache, ancestors) : undefined;
|
|
437
|
+
}
|
|
438
|
+
if (type.kind === 'conditionalFacet') {
|
|
439
|
+
return resolveIrConditionalFacetArmCpp(type, module, moduleSet, cache) ? [] : undefined;
|
|
440
|
+
}
|
|
441
|
+
if (type.kind === 'intersection') {
|
|
442
|
+
const members = type.types.map((member) => resolveIrTypeObjectShapeCpp(member, module, moduleSet, cache, ancestors));
|
|
443
|
+
if (members.some((properties) => !properties))
|
|
444
|
+
return undefined;
|
|
445
|
+
return mergeIrObjectShapePropertiesCpp(members.flatMap((properties) => properties), module, moduleSet, cache, ancestors);
|
|
446
|
+
}
|
|
447
|
+
if (type.kind !== 'named')
|
|
448
|
+
return undefined;
|
|
449
|
+
if (type.reference.kind === 'ambient') {
|
|
450
|
+
if ((type.reference.name === 'Omit' || type.reference.name === 'Pick') &&
|
|
451
|
+
type.typeArguments.length === 2 &&
|
|
452
|
+
type.typeArguments[0] &&
|
|
453
|
+
type.typeArguments[1]) {
|
|
454
|
+
const properties = resolveIrTypeObjectShapeCpp(type.typeArguments[0], module, moduleSet, cache, ancestors);
|
|
455
|
+
const keys = getIrObjectProjectionKeysCpp(type.typeArguments[1]);
|
|
456
|
+
if (!properties || !keys)
|
|
457
|
+
return undefined;
|
|
458
|
+
const available = new Set(properties.map((property) => property.name));
|
|
459
|
+
if ([...keys].some((key) => !available.has(key)))
|
|
460
|
+
return undefined;
|
|
461
|
+
const projection = type.reference.name;
|
|
462
|
+
return properties.filter((property) => projection === 'Pick' ? keys.has(property.name) : !keys.has(property.name));
|
|
463
|
+
}
|
|
464
|
+
if (type.reference.name === 'Exclude' && type.typeArguments.length === 2) {
|
|
465
|
+
return resolveIrTypeExcludedObjectShapeCpp(type, module, moduleSet, cache, ancestors);
|
|
466
|
+
}
|
|
467
|
+
if (type.typeArguments.length !== 1 || !type.typeArguments[0])
|
|
468
|
+
return undefined;
|
|
469
|
+
const properties = resolveIrTypeDistributedObjectShapeCpp(type.typeArguments[0], module, moduleSet, cache, ancestors);
|
|
470
|
+
if (!properties)
|
|
471
|
+
return undefined;
|
|
472
|
+
if (type.reference.name === 'Partial') {
|
|
473
|
+
return properties.map((property) => ({ ...property, optional: true }));
|
|
474
|
+
}
|
|
475
|
+
if (type.reference.name === 'Readonly') {
|
|
476
|
+
return properties.map((property) => ({ ...property, readonly: true }));
|
|
477
|
+
}
|
|
478
|
+
if (type.reference.name === 'Required') {
|
|
479
|
+
return properties.map((property) => ({ ...property, optional: false }));
|
|
480
|
+
}
|
|
481
|
+
// `NoInfer<T>` withholds a position from TypeScript's inference and is otherwise exactly `T`, so it
|
|
482
|
+
// contributes the shape its argument has. Without this arm the conjunct that `NodeOf<Traits>` turns
|
|
483
|
+
// on -- `Node<Traits> & NoInfer<Traits>` -- is the one member of the intersection with no shape, and
|
|
484
|
+
// the whole family refuses for a wrapper that says nothing about the value it wraps.
|
|
485
|
+
if (type.reference.name === 'NoInfer') {
|
|
486
|
+
return properties;
|
|
487
|
+
}
|
|
488
|
+
return undefined;
|
|
489
|
+
}
|
|
490
|
+
const resolution = getReferenceDeclarationResolutionCpp(type.reference, module, moduleSet, cache);
|
|
491
|
+
if (resolution.kind !== 'location')
|
|
492
|
+
return undefined;
|
|
493
|
+
const location = resolution.location;
|
|
494
|
+
if (ancestors.has(location.identity))
|
|
495
|
+
return undefined;
|
|
496
|
+
const nextAncestors = new Set(ancestors).add(location.identity);
|
|
497
|
+
const declaration = location.declaration;
|
|
498
|
+
const substitutions = createIrTypeParameterSubstitutionPlan(declaration.typeParameters, type.typeArguments);
|
|
499
|
+
if (declaration.kind === 'typeAlias') {
|
|
500
|
+
const overrideProperties = resolveIrTypeAliasStructuralRowOverrideCpp(declaration, substitutions, location.module, moduleSet, cache, nextAncestors);
|
|
501
|
+
if (overrideProperties)
|
|
502
|
+
return overrideProperties;
|
|
503
|
+
return resolveIrTypeObjectShapeCpp(resolveIrTypeStructuralSubstitution(declaration.type, substitutions), location.module, moduleSet, cache, nextAncestors);
|
|
504
|
+
}
|
|
505
|
+
const inherited = declaration.kind === 'interface' ? declaration.extends : declaration.extends ? [declaration.extends] : [];
|
|
506
|
+
const inheritedProperties = inherited.map((base) => resolveIrTypeObjectShapeCpp(resolveIrTypeStructuralSubstitution(base, substitutions), location.module, moduleSet, cache, nextAncestors));
|
|
507
|
+
if (inheritedProperties.some((properties) => !properties))
|
|
508
|
+
return undefined;
|
|
509
|
+
const ownProperties = declaration.kind === 'interface'
|
|
510
|
+
? declaration.properties.map((property) => ({
|
|
511
|
+
...property,
|
|
512
|
+
type: resolveIrTypeStructuralSubstitution(property.type, substitutions),
|
|
513
|
+
}))
|
|
514
|
+
: declaration.fields.flatMap((field) => field.static || field.visibility !== 'public' || field.branded
|
|
515
|
+
? []
|
|
516
|
+
: [
|
|
517
|
+
{
|
|
518
|
+
name: field.name,
|
|
519
|
+
optional: field.optional,
|
|
520
|
+
readonly: field.readonly,
|
|
521
|
+
type: resolveIrTypeStructuralSubstitution(field.type, substitutions),
|
|
522
|
+
},
|
|
523
|
+
]);
|
|
524
|
+
if (declaration.kind === 'class' && declaration.methods.some((method) => !method.static))
|
|
525
|
+
return undefined;
|
|
526
|
+
return mergeIrObjectShapePropertiesCpp([...inheritedProperties.flatMap((properties) => properties), ...ownProperties], location.module, moduleSet, cache, nextAncestors);
|
|
527
|
+
}
|
|
528
|
+
function resolveIrTypeAliasStructuralRowOverrideCpp(declaration, substitutions, module, moduleSet, cache, ancestors) {
|
|
529
|
+
if (!declaration.structuralRowOverride || declaration.structuralRowOverride.length === 0)
|
|
530
|
+
return undefined;
|
|
531
|
+
const fallback = resolveIrTypeStructuralSubstitution(declaration.type, substitutions);
|
|
532
|
+
if (fallback.kind !== 'named' ||
|
|
533
|
+
fallback.reference.kind !== 'ambient' ||
|
|
534
|
+
fallback.reference.name !== 'Partial' ||
|
|
535
|
+
fallback.typeArguments.length !== 1 ||
|
|
536
|
+
!fallback.typeArguments[0]) {
|
|
537
|
+
return undefined;
|
|
538
|
+
}
|
|
539
|
+
const subjectProperties = resolveIrTypeObjectShapeCpp(fallback.typeArguments[0], module, moduleSet, cache, ancestors);
|
|
540
|
+
if (!subjectProperties)
|
|
541
|
+
return undefined;
|
|
542
|
+
const subjectByName = new Map(subjectProperties.map((property) => [property.name, property]));
|
|
543
|
+
const overrides = declaration.structuralRowOverride.map((property) => ({
|
|
544
|
+
...property,
|
|
545
|
+
type: resolveIrTypeStructuralSubstitution(property.type, substitutions),
|
|
546
|
+
}));
|
|
547
|
+
const overrideByName = new Map();
|
|
548
|
+
for (const override of overrides) {
|
|
549
|
+
const subject = subjectByName.get(override.name);
|
|
550
|
+
if (!subject ||
|
|
551
|
+
overrideByName.has(override.name) ||
|
|
552
|
+
!areIrObjectShapeComputedKeysEquivalentCpp(subject, override, module, moduleSet) ||
|
|
553
|
+
subject.role !== override.role ||
|
|
554
|
+
(subject.optional && containsIrTypeIndexedAccessCpp(override.type))) {
|
|
555
|
+
return undefined;
|
|
556
|
+
}
|
|
557
|
+
const comparison = {
|
|
558
|
+
aliases: new Set(),
|
|
559
|
+
ancestors: new WeakMap(),
|
|
560
|
+
valueQueries: new Set(),
|
|
561
|
+
};
|
|
562
|
+
if (!isIrTypeStructurallyAssignableCpp(subject.type, override.type, module, moduleSet, cache, ancestors, comparison) &&
|
|
563
|
+
!isIrTypeStructurallyAssignableCpp(override.type, subject.type, module, moduleSet, cache, ancestors, {
|
|
564
|
+
aliases: new Set(),
|
|
565
|
+
ancestors: new WeakMap(),
|
|
566
|
+
valueQueries: new Set(),
|
|
567
|
+
})) {
|
|
568
|
+
return undefined;
|
|
569
|
+
}
|
|
570
|
+
overrideByName.set(override.name, override);
|
|
571
|
+
}
|
|
572
|
+
return subjectProperties.map((property) => overrideByName.get(property.name) ?? { ...property, optional: true });
|
|
573
|
+
}
|
|
574
|
+
function containsIrTypeIndexedAccessCpp(type) {
|
|
575
|
+
switch (type.kind) {
|
|
576
|
+
case 'indexedAccess':
|
|
577
|
+
return true;
|
|
578
|
+
case 'array':
|
|
579
|
+
return containsIrTypeIndexedAccessCpp(type.element);
|
|
580
|
+
case 'conditionalFacet':
|
|
581
|
+
return containsIrTypeIndexedAccessCpp(type.check) || containsIrTypeIndexedAccessCpp(type.facet);
|
|
582
|
+
case 'function':
|
|
583
|
+
return (type.parameters.some((parameter) => containsIrTypeIndexedAccessCpp(parameter.type)) ||
|
|
584
|
+
containsIrTypeIndexedAccessCpp(type.returns));
|
|
585
|
+
case 'intersection':
|
|
586
|
+
case 'union':
|
|
587
|
+
return type.types.some(containsIrTypeIndexedAccessCpp);
|
|
588
|
+
case 'keyof':
|
|
589
|
+
return containsIrTypeIndexedAccessCpp(type.type);
|
|
590
|
+
case 'named':
|
|
591
|
+
return type.typeArguments.some(containsIrTypeIndexedAccessCpp);
|
|
592
|
+
case 'object':
|
|
593
|
+
return type.properties.some((property) => containsIrTypeIndexedAccessCpp(property.type));
|
|
594
|
+
case 'tuple':
|
|
595
|
+
return type.elements.some((element) => containsIrTypeIndexedAccessCpp(element.type));
|
|
596
|
+
case 'literal':
|
|
597
|
+
case 'never':
|
|
598
|
+
case 'null':
|
|
599
|
+
case 'primitive':
|
|
600
|
+
case 'typeOf':
|
|
601
|
+
case 'undefined':
|
|
602
|
+
case 'unknown':
|
|
603
|
+
return false;
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
function resolveIrTypeIndexedAccessCpp(type, module, moduleSet, cache, ancestors) {
|
|
607
|
+
if (type.index.kind !== 'literal' || (typeof type.index.value !== 'string' && typeof type.index.value !== 'number')) {
|
|
608
|
+
return undefined;
|
|
609
|
+
}
|
|
610
|
+
const index = String(type.index.value);
|
|
611
|
+
const properties = resolveIrTypeObjectShapeCpp(type.object, module, moduleSet, cache, ancestors);
|
|
612
|
+
const property = properties?.find((candidate) => !candidate.computedKey && candidate.name === index);
|
|
613
|
+
return property && !property.optional ? property.type : undefined;
|
|
614
|
+
}
|
|
615
|
+
function resolveIrFacetReferenceCpp(type, module, moduleSet, cache) {
|
|
616
|
+
if (type.kind !== 'named' ||
|
|
617
|
+
type.reference.kind !== 'binding' ||
|
|
618
|
+
type.reference.binding.kind === 'typeParameter' ||
|
|
619
|
+
type.reference.path.length > 0 ||
|
|
620
|
+
type.typeArguments.length > 0) {
|
|
621
|
+
return undefined;
|
|
622
|
+
}
|
|
623
|
+
const resolution = getReferenceDeclarationResolutionCpp(type.reference, module, moduleSet, cache);
|
|
624
|
+
if (resolution.kind !== 'location' || resolution.location.declaration.kind !== 'interface')
|
|
625
|
+
return undefined;
|
|
626
|
+
const declaration = resolution.location.declaration;
|
|
627
|
+
if (declaration.typeParameters.length > 0 ||
|
|
628
|
+
declaration.extends.length !== 1 ||
|
|
629
|
+
declaration.properties.length !== 1) {
|
|
630
|
+
return undefined;
|
|
631
|
+
}
|
|
632
|
+
const marker = declaration.properties[0];
|
|
633
|
+
if (marker.phantom !== true ||
|
|
634
|
+
!marker.computedKey ||
|
|
635
|
+
marker.optional ||
|
|
636
|
+
!marker.readonly ||
|
|
637
|
+
marker.role ||
|
|
638
|
+
marker.type.kind !== 'literal' ||
|
|
639
|
+
marker.type.value !== true) {
|
|
640
|
+
return undefined;
|
|
641
|
+
}
|
|
642
|
+
return { base: declaration.extends[0], facet: type };
|
|
643
|
+
}
|
|
644
|
+
function resolveIrConditionalFacetArmCpp(type, module, moduleSet, cache) {
|
|
645
|
+
if (type.path.length === 0 ||
|
|
646
|
+
type.path.some((segment) => segment.length === 0) ||
|
|
647
|
+
type.check.kind !== 'named' ||
|
|
648
|
+
type.check.reference.kind !== 'binding' ||
|
|
649
|
+
type.check.reference.binding.kind !== 'typeParameter' ||
|
|
650
|
+
type.check.reference.path.length > 0 ||
|
|
651
|
+
type.check.typeArguments.length > 0) {
|
|
652
|
+
return undefined;
|
|
653
|
+
}
|
|
654
|
+
const facet = resolveIrFacetReferenceCpp(type.facet, module, moduleSet, cache);
|
|
655
|
+
return facet ? { base: facet.base, facet: facet.facet, path: type.path } : undefined;
|
|
656
|
+
}
|
|
657
|
+
function resolveIrConditionalFacetReferenceCpp(type, module, moduleSet, cache, aliasCache, aliases) {
|
|
658
|
+
if (type.kind === 'named' && type.reference.kind === 'binding') {
|
|
659
|
+
const key = `${type.reference.binding.id}\0${JSON.stringify(type.typeArguments)}`;
|
|
660
|
+
if (aliases.has(key))
|
|
661
|
+
return undefined;
|
|
662
|
+
const resolved = resolveIrTypeAliasCpp(type, module.module, moduleSet, cache, aliasCache);
|
|
663
|
+
return resolved
|
|
664
|
+
? resolveIrConditionalFacetReferenceCpp(resolved, module, moduleSet, cache, aliasCache, new Set(aliases).add(key))
|
|
665
|
+
: undefined;
|
|
666
|
+
}
|
|
667
|
+
if (type.kind !== 'intersection')
|
|
668
|
+
return undefined;
|
|
669
|
+
const conditional = type.types.filter((member) => member.kind === 'conditionalFacet');
|
|
670
|
+
const bases = type.types.filter((member) => member.kind !== 'conditionalFacet');
|
|
671
|
+
if (conditional.length === 0 || bases.length !== 1)
|
|
672
|
+
return undefined;
|
|
673
|
+
const base = bases[0];
|
|
674
|
+
if (base.kind !== 'named')
|
|
675
|
+
return undefined;
|
|
676
|
+
const arms = conditional.map((member) => resolveIrConditionalFacetArmCpp(member, module, moduleSet, cache));
|
|
677
|
+
if (arms.some((arm) => !arm))
|
|
678
|
+
return undefined;
|
|
679
|
+
const check = conditional[0].check;
|
|
680
|
+
const checkIdentity = normalizeCompilerStructuralValueCanonical(check);
|
|
681
|
+
if (conditional.some((member) => normalizeCompilerStructuralValueCanonical(member.check) !== checkIdentity) ||
|
|
682
|
+
arms.some((arm) => normalizeCompilerStructuralValueCanonical(arm.base) !== normalizeCompilerStructuralValueCanonical(base))) {
|
|
683
|
+
return undefined;
|
|
684
|
+
}
|
|
685
|
+
const rules = arms.map((arm) => ({ facet: arm.facet, path: arm.path }));
|
|
686
|
+
const paths = rules.map((rule) => JSON.stringify(rule.path));
|
|
687
|
+
const facets = rules.map((rule) => normalizeCompilerStructuralValueCanonical(rule.facet));
|
|
688
|
+
if (new Set(paths).size !== paths.length || new Set(facets).size !== facets.length)
|
|
689
|
+
return undefined;
|
|
690
|
+
return { base, check, rules };
|
|
691
|
+
}
|
|
692
|
+
function resolveIrTypeClosedIntersectionDistributionCpp(type, module, moduleSet, cache) {
|
|
693
|
+
// A union usually arrives as the alias that names it. `CollisionBuiltInShape2D & Entity` holds
|
|
694
|
+
// `CollisionBuiltInShape2D`, a binding, and looking only for a literal union member found no union at
|
|
695
|
+
// all -- so distribution never ran and the intersection refused with a message about
|
|
696
|
+
// multiple-inheritance lowering, four call sites away from the alias that caused it. Each member is
|
|
697
|
+
// resolved one alias step first, the same rule the rest of this file applies: the wrapper is between
|
|
698
|
+
// the value and the thing being looked for, and it is invisible from the symptom every time.
|
|
699
|
+
const resolvedMembers = type.types.map((member, index) => {
|
|
700
|
+
const step = resolveIrTypeShapeAliasStepCpp(member, module, moduleSet, cache, new Set());
|
|
701
|
+
return step?.type ?? type.types[index];
|
|
702
|
+
});
|
|
703
|
+
const unionIndexes = resolvedMembers.flatMap((member, index) => (member.kind === 'union' ? [index] : []));
|
|
704
|
+
if (unionIndexes.length !== 1)
|
|
705
|
+
return undefined;
|
|
706
|
+
const unionIndex = unionIndexes[0];
|
|
707
|
+
const union = resolvedMembers[unionIndex];
|
|
708
|
+
if (union?.kind !== 'union')
|
|
709
|
+
return undefined;
|
|
710
|
+
const branchAlternatives = union.types.map((alternative) => {
|
|
711
|
+
const distributedMembers = resolvedMembers.map((member, index) => (index === unionIndex ? alternative : member));
|
|
712
|
+
const distributed = {
|
|
713
|
+
kind: 'intersection',
|
|
714
|
+
types: [distributedMembers[0], distributedMembers[1], ...distributedMembers.slice(2)],
|
|
715
|
+
};
|
|
716
|
+
// A branch that is ITSELF a union alias distributes the same way one level down.
|
|
717
|
+
// `CollisionColliderShape3D` is `CollisionBuiltInShape3D | CollisionStaticShape3D` and both members
|
|
718
|
+
// are unions, so the branch reaches here as an alias to a union -- and asking it for an object shape
|
|
719
|
+
// is asking a union for the one thing it does not have. Recursing terminates because each level's
|
|
720
|
+
// union is strictly a branch of the one above it, and the innermost branches are intersections with
|
|
721
|
+
// no union left to find.
|
|
722
|
+
const nested = resolveIrTypeClosedIntersectionDistributionCpp(distributed, module, moduleSet, cache);
|
|
723
|
+
if (!nested) {
|
|
724
|
+
const memberShapes = distributedMembers.map((member) => resolveIrTypeObjectShapeCpp(member, module, moduleSet, cache, new Set()));
|
|
725
|
+
if (memberShapes.some((properties) => !properties))
|
|
726
|
+
return undefined;
|
|
727
|
+
// A branch whose discriminant contradicts another member is `never` and drops out of the union:
|
|
728
|
+
// no value is both a sphere and a capsule, so `CollisionBuiltInShape3D & { kind: 'capsule' }`
|
|
729
|
+
// keeps only the capsule branch. The check is narrow on purpose -- both sides must be literal
|
|
730
|
+
// values that cannot overlap -- so a member that is merely unresolvable still refuses rather
|
|
731
|
+
// than silently dropping a branch that might be inhabited.
|
|
732
|
+
const shapes = memberShapes.map((properties) => properties);
|
|
733
|
+
const contradicts = shapes.some((left, index) => shapes.slice(index + 1).some((right) => isIrContradictoryObjectShapePairCpp(left, right)));
|
|
734
|
+
if (contradicts)
|
|
735
|
+
return [];
|
|
736
|
+
const properties = resolveIrTypeObjectShapeCpp(distributed, module, moduleSet, cache, new Set());
|
|
737
|
+
return properties ? [{ kind: 'object', properties }] : undefined;
|
|
738
|
+
}
|
|
739
|
+
// The nested branches stay SEPARATE alternatives rather than being merged into one. Merging would
|
|
740
|
+
// claim the value carries every branch's members at once, which is what a union does not say. A
|
|
741
|
+
// fully narrowed nested branch is not a union at all, so it is one alternative.
|
|
742
|
+
const nestedMembers = nested.kind === 'union' ? nested.types : [nested];
|
|
743
|
+
const nestedProperties = nestedMembers.map((member) => resolveIrTypeObjectShapeCpp(member, module, moduleSet, cache, new Set()));
|
|
744
|
+
if (nestedProperties.some((properties) => !properties))
|
|
745
|
+
return undefined;
|
|
746
|
+
return nestedProperties.map((properties) => ({ kind: 'object', properties: properties }));
|
|
747
|
+
});
|
|
748
|
+
if (branchAlternatives.some((alternatives) => !alternatives))
|
|
749
|
+
return undefined;
|
|
750
|
+
const alternatives = branchAlternatives.flatMap((alternatives) => alternatives);
|
|
751
|
+
const [first, second, ...rest] = alternatives;
|
|
752
|
+
if (!first)
|
|
753
|
+
return undefined;
|
|
754
|
+
return second ? { kind: 'union', types: [first, second, ...rest] } : first;
|
|
755
|
+
}
|
|
756
|
+
// Two object shapes contradict when they state the same member as literal values that cannot overlap.
|
|
757
|
+
// That is the discriminant case and only that case: a member one side leaves unresolvable, or states as
|
|
758
|
+
// a non-literal type, is not a contradiction and the caller keeps refusing for it.
|
|
759
|
+
function isIrContradictoryObjectShapePairCpp(left, right) {
|
|
760
|
+
return left.some((property) => {
|
|
761
|
+
const other = right.find((candidate) => candidate.name === property.name);
|
|
762
|
+
if (!other)
|
|
763
|
+
return false;
|
|
764
|
+
const leftValues = getIrLiteralValueSetCpp(property.type);
|
|
765
|
+
const rightValues = getIrLiteralValueSetCpp(other.type);
|
|
766
|
+
return Boolean(leftValues && rightValues && ![...leftValues].some((value) => rightValues.has(value)));
|
|
767
|
+
});
|
|
768
|
+
}
|
|
769
|
+
function getIrLiteralValueSetCpp(type) {
|
|
770
|
+
if (type.kind === 'literal')
|
|
771
|
+
return new Set([JSON.stringify(type.value)]);
|
|
772
|
+
if (type.kind !== 'union')
|
|
773
|
+
return undefined;
|
|
774
|
+
const members = type.types.map(getIrLiteralValueSetCpp);
|
|
775
|
+
return members.some((member) => !member) ? undefined : new Set(members.flatMap((member) => [...member]));
|
|
776
|
+
}
|
|
777
|
+
// A member repeated across the branches of a distributed union names the union of what those branches
|
|
778
|
+
// carry. An already-union member stays flat, so three branches spell one three-member union rather
|
|
779
|
+
// than a union nested inside another.
|
|
780
|
+
function createIrTypeDistributedMemberTypeCpp(existing, property) {
|
|
781
|
+
const members = [
|
|
782
|
+
...(existing.kind === 'union' ? existing.types : [existing]),
|
|
783
|
+
...(property.kind === 'union' ? property.types : [property]),
|
|
784
|
+
];
|
|
785
|
+
return { kind: 'union', types: [members[0], members[1], ...members.slice(2)] };
|
|
786
|
+
}
|
|
787
|
+
function getIrObjectProjectionKeysCpp(type) {
|
|
788
|
+
if (type.kind === 'literal' && (typeof type.value === 'number' || typeof type.value === 'string')) {
|
|
789
|
+
return new Set([String(type.value)]);
|
|
790
|
+
}
|
|
791
|
+
if (type.kind === 'typeOf' && type.reference.kind === 'binding' && type.reference.path.length === 0) {
|
|
792
|
+
return new Set([type.reference.binding.name]);
|
|
793
|
+
}
|
|
794
|
+
if (type.kind !== 'union')
|
|
795
|
+
return undefined;
|
|
796
|
+
const members = type.types.map(getIrObjectProjectionKeysCpp);
|
|
797
|
+
return members.some((member) => !member) ? undefined : new Set(members.flatMap((member) => [...member]));
|
|
798
|
+
}
|
|
799
|
+
// `unionOnConflict` separates the two readings of a repeated member name. Members of an INTERSECTION
|
|
800
|
+
// must agree: TypeScript gives `{ a: 'x' } & { a: 'y' }` the member `a: never`, so a disagreement is a
|
|
801
|
+
// refusal, which is the default. Members of a DISTRIBUTED union must not: `Partial<A | B>` is
|
|
802
|
+
// `Partial<A> | Partial<B>`, so reading that member yields the union of what the branches carry, and
|
|
803
|
+
// the merged shape states exactly that. Using the intersection reading there would refuse an
|
|
804
|
+
// expression whose own type is well formed.
|
|
805
|
+
function mergeIrObjectShapePropertiesCpp(properties, module, moduleSet, cache, ancestors, unionOnConflict = false) {
|
|
806
|
+
const result = new Map();
|
|
807
|
+
for (const property of properties) {
|
|
808
|
+
const existing = result.get(property.name);
|
|
809
|
+
if (!existing) {
|
|
810
|
+
result.set(property.name, property);
|
|
811
|
+
continue;
|
|
812
|
+
}
|
|
813
|
+
if (!areIrObjectShapeComputedKeysEquivalentCpp(existing, property, module, moduleSet) ||
|
|
814
|
+
existing.role !== property.role) {
|
|
815
|
+
return undefined;
|
|
816
|
+
}
|
|
817
|
+
const type = mergeIrObjectShapePropertyTypesCpp(existing.type, property.type, module, moduleSet, cache, ancestors, { aliases: new Set(), ancestors: new WeakMap(), valueQueries: new Set() }, unionOnConflict) ?? (unionOnConflict ? createIrTypeDistributedMemberTypeCpp(existing.type, property.type) : undefined);
|
|
818
|
+
if (!type)
|
|
819
|
+
return undefined;
|
|
820
|
+
result.set(property.name, {
|
|
821
|
+
...existing,
|
|
822
|
+
optional: existing.optional && property.optional,
|
|
823
|
+
readonly: existing.readonly && property.readonly,
|
|
824
|
+
type,
|
|
825
|
+
});
|
|
826
|
+
}
|
|
827
|
+
return [...result.values()];
|
|
828
|
+
}
|
|
829
|
+
function areIrObjectShapeComputedKeysEquivalentCpp(left, right, module, moduleSet) {
|
|
830
|
+
if (!left.computedKey || !right.computedKey)
|
|
831
|
+
return left.computedKey === right.computedKey;
|
|
832
|
+
return (getIrComputedPropertySourceNameCpp(left.computedKey, module, moduleSet) ===
|
|
833
|
+
getIrComputedPropertySourceNameCpp(right.computedKey, module, moduleSet));
|
|
834
|
+
}
|
|
835
|
+
function getIrComputedPropertySourceNameCpp(reference, module, moduleSet) {
|
|
836
|
+
if (reference.kind === 'ambient')
|
|
837
|
+
return reference.name;
|
|
838
|
+
if (reference.binding.kind === 'import') {
|
|
839
|
+
const local = module.importsByBindingId.has(reference.binding.id);
|
|
840
|
+
const owners = moduleSet.namedBindingOwnersByBindingId.get(reference.binding.id) ?? [];
|
|
841
|
+
const owner = local ? module : owners.length === 1 ? owners[0] : undefined;
|
|
842
|
+
const imported = owner?.importsByBindingId.get(reference.binding.id);
|
|
843
|
+
if (imported?.length === 1 && imported[0].imported !== '*') {
|
|
844
|
+
return [imported[0].imported, ...reference.path].join('.');
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
return [reference.binding.name, ...reference.path].join('.');
|
|
848
|
+
}
|
|
849
|
+
function mergeIrObjectShapePropertyTypesCpp(existing, property, module, moduleSet, cache, ancestors, comparison, unionOnConflict = false) {
|
|
850
|
+
if (JSON.stringify(existing) === JSON.stringify(property))
|
|
851
|
+
return existing;
|
|
852
|
+
if (isIrTypeStructurallyAssignableCpp(property, existing, module, moduleSet, cache, ancestors, comparison)) {
|
|
853
|
+
return property;
|
|
854
|
+
}
|
|
855
|
+
if (isIrTypeStructurallyAssignableCpp(existing, property, module, moduleSet, cache, ancestors, comparison)) {
|
|
856
|
+
return existing;
|
|
857
|
+
}
|
|
858
|
+
const existingProperties = resolveIrTypeObjectShapeCpp(existing, module, moduleSet, cache, ancestors);
|
|
859
|
+
const propertyProperties = resolveIrTypeObjectShapeCpp(property, module, moduleSet, cache, ancestors);
|
|
860
|
+
if (!existingProperties || !propertyProperties)
|
|
861
|
+
return undefined;
|
|
862
|
+
const properties = mergeIrObjectShapePropertiesCpp([...existingProperties, ...propertyProperties], module, moduleSet, cache, ancestors, unionOnConflict);
|
|
863
|
+
return properties ? { kind: 'object', properties } : undefined;
|
|
864
|
+
}
|
|
865
|
+
function isIrTypeStructurallyAssignableCpp(source, target, module, moduleSet, cache, shapeAncestors, comparison) {
|
|
866
|
+
if (JSON.stringify(source) === JSON.stringify(target))
|
|
867
|
+
return true;
|
|
868
|
+
if (source.kind === 'indexedAccess') {
|
|
869
|
+
const resolved = resolveIrTypeIndexedAccessCpp(source, module, moduleSet, cache, shapeAncestors);
|
|
870
|
+
if (resolved) {
|
|
871
|
+
return isIrTypeStructurallyAssignableCpp(resolved, target, module, moduleSet, cache, shapeAncestors, comparison);
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
if (target.kind === 'indexedAccess') {
|
|
875
|
+
const resolved = resolveIrTypeIndexedAccessCpp(target, module, moduleSet, cache, shapeAncestors);
|
|
876
|
+
if (resolved) {
|
|
877
|
+
return isIrTypeStructurallyAssignableCpp(source, resolved, module, moduleSet, cache, shapeAncestors, comparison);
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
const targets = comparison.ancestors.get(source) ?? new WeakSet();
|
|
881
|
+
if (targets.has(target))
|
|
882
|
+
return true;
|
|
883
|
+
targets.add(target);
|
|
884
|
+
comparison.ancestors.set(source, targets);
|
|
885
|
+
try {
|
|
886
|
+
if (source.kind === 'union') {
|
|
887
|
+
return source.types.every((member) => isIrTypeStructurallyAssignableCpp(member, target, module, moduleSet, cache, shapeAncestors, comparison));
|
|
888
|
+
}
|
|
889
|
+
if (target.kind === 'union') {
|
|
890
|
+
return target.types.some((member) => isIrTypeStructurallyAssignableCpp(source, member, module, moduleSet, cache, shapeAncestors, comparison));
|
|
891
|
+
}
|
|
892
|
+
const sourceValueQuery = resolveIrTypeValueQueryForShapeComparisonCpp(source, module, moduleSet);
|
|
893
|
+
if (sourceValueQuery && !comparison.valueQueries.has(sourceValueQuery.identity)) {
|
|
894
|
+
comparison.valueQueries.add(sourceValueQuery.identity);
|
|
895
|
+
try {
|
|
896
|
+
return isIrTypeStructurallyAssignableCpp(sourceValueQuery.type, target, sourceValueQuery.module, moduleSet, cache, shapeAncestors, comparison);
|
|
897
|
+
}
|
|
898
|
+
finally {
|
|
899
|
+
comparison.valueQueries.delete(sourceValueQuery.identity);
|
|
900
|
+
}
|
|
901
|
+
}
|
|
902
|
+
const targetValueQuery = resolveIrTypeValueQueryForShapeComparisonCpp(target, module, moduleSet);
|
|
903
|
+
if (targetValueQuery && !comparison.valueQueries.has(targetValueQuery.identity)) {
|
|
904
|
+
comparison.valueQueries.add(targetValueQuery.identity);
|
|
905
|
+
try {
|
|
906
|
+
return isIrTypeStructurallyAssignableCpp(source, targetValueQuery.type, targetValueQuery.module, moduleSet, cache, shapeAncestors, comparison);
|
|
907
|
+
}
|
|
908
|
+
finally {
|
|
909
|
+
comparison.valueQueries.delete(targetValueQuery.identity);
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
const sourceAlias = resolveIrTypeAliasForShapeComparisonCpp(source, module, moduleSet, cache);
|
|
913
|
+
const targetAlias = resolveIrTypeAliasForShapeComparisonCpp(target, module, moduleSet, cache);
|
|
914
|
+
// Two import bindings can name the same declaration from different modules. Their binding ids
|
|
915
|
+
// deliberately differ, but resolving both references proves that the applied aliases are the
|
|
916
|
+
// same type. Recognize that identity before expanding either side: expanding the source marks
|
|
917
|
+
// this declaration as active, which otherwise prevents the target from taking the identical
|
|
918
|
+
// alias step and makes a repeated inherited property look contradictory.
|
|
919
|
+
if (sourceAlias && targetAlias && sourceAlias.identity === targetAlias.identity)
|
|
920
|
+
return true;
|
|
921
|
+
if (sourceAlias && !comparison.aliases.has(sourceAlias.identity)) {
|
|
922
|
+
comparison.aliases.add(sourceAlias.identity);
|
|
923
|
+
try {
|
|
924
|
+
return isIrTypeStructurallyAssignableCpp(sourceAlias.type, target, sourceAlias.module, moduleSet, cache, shapeAncestors, comparison);
|
|
925
|
+
}
|
|
926
|
+
finally {
|
|
927
|
+
comparison.aliases.delete(sourceAlias.identity);
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
if (targetAlias && !comparison.aliases.has(targetAlias.identity)) {
|
|
931
|
+
comparison.aliases.add(targetAlias.identity);
|
|
932
|
+
try {
|
|
933
|
+
return isIrTypeStructurallyAssignableCpp(source, targetAlias.type, targetAlias.module, moduleSet, cache, shapeAncestors, comparison);
|
|
934
|
+
}
|
|
935
|
+
finally {
|
|
936
|
+
comparison.aliases.delete(targetAlias.identity);
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
const sourceProperties = resolveIrTypeObjectShapeCpp(source, module, moduleSet, cache, shapeAncestors);
|
|
940
|
+
const targetProperties = resolveIrTypeObjectShapeCpp(target, module, moduleSet, cache, shapeAncestors);
|
|
941
|
+
if (sourceProperties && targetProperties) {
|
|
942
|
+
const sourceByName = new Map(sourceProperties.map((candidate) => [candidate.name, candidate]));
|
|
943
|
+
return targetProperties.every((targetProperty) => {
|
|
944
|
+
const sourceProperty = sourceByName.get(targetProperty.name);
|
|
945
|
+
if (!sourceProperty)
|
|
946
|
+
return targetProperty.optional;
|
|
947
|
+
return (areIrObjectShapeComputedKeysEquivalentCpp(sourceProperty, targetProperty, module, moduleSet) &&
|
|
948
|
+
sourceProperty.role === targetProperty.role &&
|
|
949
|
+
(!sourceProperty.optional || targetProperty.optional) &&
|
|
950
|
+
(!sourceProperty.readonly || targetProperty.readonly) &&
|
|
951
|
+
isIrTypeStructurallyAssignableCpp(sourceProperty.type, targetProperty.type, module, moduleSet, cache, shapeAncestors, comparison));
|
|
952
|
+
});
|
|
953
|
+
}
|
|
954
|
+
return analyzeIrTypeStructuralAssignability(source, target).status === 'compatible';
|
|
955
|
+
}
|
|
956
|
+
finally {
|
|
957
|
+
targets.delete(target);
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
function resolveIrTypeAliasForShapeComparisonCpp(type, module, moduleSet, cache) {
|
|
961
|
+
if (type.kind !== 'named' || type.reference.kind !== 'binding')
|
|
962
|
+
return undefined;
|
|
963
|
+
const resolution = getReferenceDeclarationResolutionCpp(type.reference, module, moduleSet, cache);
|
|
964
|
+
if (resolution.kind !== 'location')
|
|
965
|
+
return undefined;
|
|
966
|
+
const location = resolution.location;
|
|
967
|
+
const declaration = location.declaration;
|
|
968
|
+
if (declaration.kind !== 'typeAlias')
|
|
969
|
+
return undefined;
|
|
970
|
+
return {
|
|
971
|
+
identity: `${location.identity}\0${JSON.stringify(type.typeArguments)}`,
|
|
972
|
+
module: location.module,
|
|
973
|
+
type: resolveIrTypeStructuralSubstitution(declaration.type, createIrTypeParameterSubstitutionPlan(declaration.typeParameters, type.typeArguments)),
|
|
974
|
+
};
|
|
975
|
+
}
|
|
976
|
+
function resolveIrTypeValueQueryForShapeComparisonCpp(type, module, moduleSet) {
|
|
977
|
+
if (type.kind !== 'typeOf' || type.reference.kind !== 'binding' || type.reference.path.length > 0)
|
|
978
|
+
return undefined;
|
|
979
|
+
const bindingId = type.reference.binding.id;
|
|
980
|
+
const local = module.valueTypesByBindingId.has(bindingId);
|
|
981
|
+
const owners = moduleSet.valueBindingOwnersByBindingId.get(bindingId) ?? [];
|
|
982
|
+
const owner = local ? module : owners.length === 1 ? owners[0] : undefined;
|
|
983
|
+
const valueType = owner?.valueTypesByBindingId.get(bindingId);
|
|
984
|
+
return owner && valueType
|
|
985
|
+
? {
|
|
986
|
+
identity: `${owner.identity}\0${bindingId}`,
|
|
987
|
+
module: owner,
|
|
988
|
+
type: valueType,
|
|
989
|
+
}
|
|
990
|
+
: undefined;
|
|
991
|
+
}
|
|
992
|
+
function createIrTypeReferenceRepresentationPlanInternalCpp(type, module, context) {
|
|
993
|
+
const externalProjection = resolveIrExternalProjectionCpp(type, module, context);
|
|
994
|
+
if (externalProjection) {
|
|
995
|
+
return createIrTypeReferenceRepresentationPlanInternalCpp(externalProjection, module, context);
|
|
996
|
+
}
|
|
997
|
+
const structuralRow = resolveIrTypeStructuralRowCpp(type, module, context.moduleSet, context.resolutionCache, new Set(), false);
|
|
998
|
+
if (structuralRow) {
|
|
999
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(context.analyzeIdentity(type, module.module), 'structuralRow', 'object', 'runtimeManaged', 'runtimeReference');
|
|
1000
|
+
}
|
|
1001
|
+
const conditionalFacet = resolveIrConditionalFacetReferenceCpp(type, module, context.moduleSet, context.resolutionCache, new Map(), new Set());
|
|
1002
|
+
if (conditionalFacet) {
|
|
1003
|
+
const base = createIrTypeReferenceRepresentationPlanInternalCpp(conditionalFacet.base, module, context);
|
|
1004
|
+
if (base.kind === 'represented' && base.valueRepresentation === 'flightReference') {
|
|
1005
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(base.identity, 'facet', 'object', 'runtimeManaged', 'runtimeReference');
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
if (type.kind === 'named' && type.reference.kind === 'ambient') {
|
|
1009
|
+
const external = getCompilerExternalBindingEvidenceCpp(type.reference.name, 'type', context.externalBindings);
|
|
1010
|
+
if (external) {
|
|
1011
|
+
const reference = external.ownership !== 'value';
|
|
1012
|
+
const managed = external.ownership === 'owned' || external.ownership === 'shared';
|
|
1013
|
+
return createCompilerCppReferenceRepresentationSuccessCpp({
|
|
1014
|
+
identity: reference ? 'reference' : 'value',
|
|
1015
|
+
reason: reference ? 'declared-reference' : 'declared-value',
|
|
1016
|
+
schema: 'flight-compiler-type-value-identity/1',
|
|
1017
|
+
}, 'external', reference ? 'object' : 'none', managed ? 'runtimeManaged' : 'inlineValue', managed ? 'runtimeReference' : 'inlineValue');
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
const identity = context.analyzeIdentity(type, module.module);
|
|
1021
|
+
if (identity.identity === 'indeterminate') {
|
|
1022
|
+
const importedAlias = createIndeterminateImportedTypeAliasRepresentationPlanCpp(type, module, context, identity);
|
|
1023
|
+
if (importedAlias)
|
|
1024
|
+
return importedAlias;
|
|
1025
|
+
if (identity.reason === 'unresolved-reference' && isUnresolvedImportBindingReferenceCpp(type)) {
|
|
1026
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, 'interface', 'object', 'rawNamedObject', 'flightReference');
|
|
1027
|
+
}
|
|
1028
|
+
return createCompilerCppReferenceRepresentationRefusalCpp(identity, 'indeterminateIdentity');
|
|
1029
|
+
}
|
|
1030
|
+
if (identity.identity === 'value') {
|
|
1031
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, 'value', 'none', 'inlineValue', 'inlineValue');
|
|
1032
|
+
}
|
|
1033
|
+
if (type.kind === 'array' || getIrHomogeneousTupleElementTypeCpp(type)) {
|
|
1034
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, 'array', 'object', 'runtimeManaged', 'runtimeReference');
|
|
1035
|
+
}
|
|
1036
|
+
if (type.kind === 'function' || type.kind === 'tuple') {
|
|
1037
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, 'value', 'none', 'inlineValue', 'inlineValue');
|
|
1038
|
+
}
|
|
1039
|
+
if (type.kind === 'object') {
|
|
1040
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, 'anonymousObject', 'object', 'rawAnonymousObject', 'flightReference');
|
|
1041
|
+
}
|
|
1042
|
+
if (type.kind === 'named')
|
|
1043
|
+
return createNamedReferenceRepresentationPlanCpp(type, module, context, identity);
|
|
1044
|
+
if (type.kind === 'union') {
|
|
1045
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, 'value', 'none', 'inlineValue', 'inlineValue');
|
|
1046
|
+
}
|
|
1047
|
+
if (type.kind === 'intersection') {
|
|
1048
|
+
if (isIrCallableOverloadIntersectionRepresentableCpp(type)) {
|
|
1049
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, 'value', 'none', 'inlineValue', 'inlineValue');
|
|
1050
|
+
}
|
|
1051
|
+
if (isIrCallableObjectIntersectionRepresentableCpp(type, module, context)) {
|
|
1052
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, 'anonymousObject', 'object', 'rawAnonymousObject', 'flightReference');
|
|
1053
|
+
}
|
|
1054
|
+
const properties = resolveIrTypeObjectShapeCpp(type, module, context.moduleSet, context.resolutionCache, new Set());
|
|
1055
|
+
if (properties) {
|
|
1056
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, 'anonymousObject', 'object', 'rawAnonymousObject', 'flightReference');
|
|
1057
|
+
}
|
|
1058
|
+
const distributed = resolveIrTypeClosedIntersectionDistributionCpp(type, module, context.moduleSet, context.resolutionCache);
|
|
1059
|
+
return distributed
|
|
1060
|
+
? createCompilerCppReferenceRepresentationSuccessCpp(identity, 'value', 'none', 'inlineValue', 'inlineValue')
|
|
1061
|
+
: createCompilerCppReferenceRepresentationRefusalCpp(identity, 'compoundReference');
|
|
1062
|
+
}
|
|
1063
|
+
return createCompilerCppReferenceRepresentationRefusalCpp(identity, 'unsupportedReferenceForm');
|
|
1064
|
+
}
|
|
1065
|
+
// A closed Pick of one externally represented host interface is a source-level view of that host
|
|
1066
|
+
// value. The checker materializes the selected slots on the derived interface, but those slots do not
|
|
1067
|
+
// become a second runtime object: WebGL2RenderingContext itself satisfies GlContext. Preserve that
|
|
1068
|
+
// exact representation only when the declaration adds no members outside the closed key set and the
|
|
1069
|
+
// target profile owns the projected host type.
|
|
1070
|
+
function resolveIrExternalProjectionCpp(type, module, context) {
|
|
1071
|
+
if (type.kind !== 'named' ||
|
|
1072
|
+
type.reference.kind !== 'binding' ||
|
|
1073
|
+
type.reference.binding.kind === 'typeParameter' ||
|
|
1074
|
+
type.reference.path.length > 0 ||
|
|
1075
|
+
type.typeArguments.length > 0) {
|
|
1076
|
+
return undefined;
|
|
1077
|
+
}
|
|
1078
|
+
const resolution = getReferenceDeclarationResolutionCpp(type.reference, module, context.moduleSet, context.resolutionCache);
|
|
1079
|
+
if (resolution.kind !== 'location' || resolution.location.declaration.kind !== 'interface')
|
|
1080
|
+
return undefined;
|
|
1081
|
+
const declaration = resolution.location.declaration;
|
|
1082
|
+
if (declaration.typeParameters.length > 0 || declaration.extends.length !== 1)
|
|
1083
|
+
return undefined;
|
|
1084
|
+
const projection = declaration.extends[0];
|
|
1085
|
+
if (projection.reference.kind !== 'ambient' ||
|
|
1086
|
+
projection.reference.name !== 'Pick' ||
|
|
1087
|
+
projection.typeArguments.length !== 2) {
|
|
1088
|
+
return undefined;
|
|
1089
|
+
}
|
|
1090
|
+
const target = projection.typeArguments[0];
|
|
1091
|
+
const keyType = projection.typeArguments[1];
|
|
1092
|
+
const resolvedKeyType = resolveIrTypeAliasCpp(keyType, resolution.location.module.module, context.moduleSet, context.resolutionCache, new Map()) ?? keyType;
|
|
1093
|
+
const keys = getIrObjectProjectionKeysCpp(resolvedKeyType);
|
|
1094
|
+
if (target?.kind !== 'named' ||
|
|
1095
|
+
target.reference.kind !== 'ambient' ||
|
|
1096
|
+
target.typeArguments.length > 0 ||
|
|
1097
|
+
!keys ||
|
|
1098
|
+
!getCompilerExternalBindingEvidenceCpp(target.reference.name, 'type', context.externalBindings)) {
|
|
1099
|
+
return undefined;
|
|
1100
|
+
}
|
|
1101
|
+
const materialized = new Set(declaration.properties.map((property) => property.name));
|
|
1102
|
+
if (materialized.size !== keys.size || [...keys].some((key) => !materialized.has(key)))
|
|
1103
|
+
return undefined;
|
|
1104
|
+
return target;
|
|
1105
|
+
}
|
|
1106
|
+
function isIrCallableOverloadIntersectionRepresentableCpp(type) {
|
|
1107
|
+
return (type.types.length >= 2 &&
|
|
1108
|
+
type.types.every((member) => member.kind === 'function' &&
|
|
1109
|
+
member.typeParameters.length === 0 &&
|
|
1110
|
+
member.parameters.every((parameter) => !parameter.optional && !parameter.rest)));
|
|
1111
|
+
}
|
|
1112
|
+
function isIrCallableObjectIntersectionRepresentableCpp(type, module, context) {
|
|
1113
|
+
if (type.types.length !== 2)
|
|
1114
|
+
return false;
|
|
1115
|
+
const callable = type.types.find((member) => member.kind === 'function');
|
|
1116
|
+
const object = type.types.find((member) => member !== callable);
|
|
1117
|
+
return Boolean(callable?.kind === 'function' &&
|
|
1118
|
+
callable.typeParameters.length === 0 &&
|
|
1119
|
+
callable.parameters.every((parameter) => !parameter.optional && !parameter.rest) &&
|
|
1120
|
+
object &&
|
|
1121
|
+
resolveIrTypeObjectShapeCpp(object, module, context.moduleSet, context.resolutionCache, new Set()));
|
|
1122
|
+
}
|
|
1123
|
+
// A resolved imported type alias already has one C++ representation in its defining header. Its
|
|
1124
|
+
// source value identity may legitimately be heterogeneous (a scalar/reference union or a phantom
|
|
1125
|
+
// brand intersection), but the alias name itself is an inline ABI type and must not be wrapped again.
|
|
1126
|
+
function createIndeterminateImportedTypeAliasRepresentationPlanCpp(type, module, context, identity) {
|
|
1127
|
+
if (identity.reason !== 'ambiguous-compound' && identity.reason !== 'unsupported-ambient-utility')
|
|
1128
|
+
return undefined;
|
|
1129
|
+
if (type.kind !== 'named' || type.reference.kind !== 'binding' || type.reference.binding.kind !== 'import') {
|
|
1130
|
+
return undefined;
|
|
1131
|
+
}
|
|
1132
|
+
const resolution = getReferenceDeclarationResolutionCpp(type.reference, module, context.moduleSet, context.resolutionCache);
|
|
1133
|
+
if (resolution.kind !== 'location' || resolution.location.declaration.kind !== 'typeAlias')
|
|
1134
|
+
return undefined;
|
|
1135
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, 'value', 'none', 'inlineValue', 'inlineValue');
|
|
1136
|
+
}
|
|
1137
|
+
function createNamedReferenceRepresentationPlanCpp(type, module, context, identity) {
|
|
1138
|
+
if (type.reference.kind === 'ambient') {
|
|
1139
|
+
const utilityArity = cppIdentityPreservingAmbientUtilities.get(type.reference.name);
|
|
1140
|
+
if (utilityArity !== undefined && type.typeArguments.length === utilityArity && type.typeArguments[0]) {
|
|
1141
|
+
return createIrTypeReferenceRepresentationPlanInternalCpp(type.typeArguments[0], module, context);
|
|
1142
|
+
}
|
|
1143
|
+
const category = getCppRuntimeReferenceCategory(type.reference.name);
|
|
1144
|
+
if (!category) {
|
|
1145
|
+
return createCompilerCppReferenceRepresentationRefusalCpp(identity, 'unsupportedAmbientReference');
|
|
1146
|
+
}
|
|
1147
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, category, category === 'typedArray' ? 'view' : 'object', 'runtimeManaged', 'runtimeReference');
|
|
1148
|
+
}
|
|
1149
|
+
if (type.reference.binding.kind === 'typeParameter') {
|
|
1150
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, 'interface', 'object', 'rawNamedObject', 'flightReference');
|
|
1151
|
+
}
|
|
1152
|
+
const resolution = getReferenceDeclarationResolutionCpp(type.reference, module, context.moduleSet, context.resolutionCache);
|
|
1153
|
+
if (resolution.kind !== 'location') {
|
|
1154
|
+
if (type.reference.binding.kind === 'import') {
|
|
1155
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, 'interface', 'object', 'rawNamedObject', 'flightReference');
|
|
1156
|
+
}
|
|
1157
|
+
return createCompilerCppReferenceRepresentationRefusalCpp(identity, 'unresolvedReferenceRepresentation');
|
|
1158
|
+
}
|
|
1159
|
+
const facet = resolveIrFacetReferenceCpp(type, module, context.moduleSet, context.resolutionCache);
|
|
1160
|
+
if (facet) {
|
|
1161
|
+
const base = createIrTypeReferenceRepresentationPlanInternalCpp(facet.base, resolution.location.module, context);
|
|
1162
|
+
if (base.kind !== 'represented' || base.valueRepresentation !== 'flightReference') {
|
|
1163
|
+
return createCompilerCppReferenceRepresentationRefusalCpp(identity, 'compoundReference');
|
|
1164
|
+
}
|
|
1165
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, 'facet', 'object', 'runtimeManaged', 'runtimeReference');
|
|
1166
|
+
}
|
|
1167
|
+
const declaration = resolution.location.declaration;
|
|
1168
|
+
if (declaration.kind === 'class') {
|
|
1169
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, 'class', 'object', 'rawNamedObject', 'flightReference');
|
|
1170
|
+
}
|
|
1171
|
+
if (declaration.kind === 'interface') {
|
|
1172
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, 'interface', 'object', 'rawNamedObject', 'flightReference');
|
|
1173
|
+
}
|
|
1174
|
+
return createTypeAliasReferenceRepresentationPlanCpp(type, declaration, resolution.location.module, context, identity);
|
|
1175
|
+
}
|
|
1176
|
+
function createTypeAliasReferenceRepresentationPlanCpp(type, declaration, module, context, identity) {
|
|
1177
|
+
let substitution;
|
|
1178
|
+
try {
|
|
1179
|
+
substitution = createIrTypeParameterSubstitutionPlan(declaration.typeParameters, type.typeArguments);
|
|
1180
|
+
}
|
|
1181
|
+
catch (error) {
|
|
1182
|
+
if (!isCompilerStructuralTypeSubstitutionFailure(error))
|
|
1183
|
+
throw error;
|
|
1184
|
+
return createCompilerCppReferenceRepresentationRefusalCpp(identity, 'indeterminateIdentity');
|
|
1185
|
+
}
|
|
1186
|
+
const resolved = resolveIrTypeStructuralSubstitution(declaration.type, substitution);
|
|
1187
|
+
const plan = createIrTypeReferenceRepresentationPlanInternalCpp(resolved, module, context);
|
|
1188
|
+
if (plan.kind === 'represented' &&
|
|
1189
|
+
plan.valueRepresentation === 'flightReference' &&
|
|
1190
|
+
(plan.category === 'anonymousObject' || plan.category === 'objectAlias')) {
|
|
1191
|
+
return createCompilerCppReferenceRepresentationSuccessCpp(identity, 'objectAlias', 'object', 'rawNamedObject', 'flightReference');
|
|
1192
|
+
}
|
|
1193
|
+
return plan;
|
|
1194
|
+
}
|
|
1195
|
+
function createCompilerCppReferenceRepresentationRefusalCpp(identity, reason) {
|
|
1196
|
+
return Object.freeze({
|
|
1197
|
+
identity,
|
|
1198
|
+
kind: 'refused',
|
|
1199
|
+
reason,
|
|
1200
|
+
schema: 'flight-compiler-cpp-reference-representation/1',
|
|
1201
|
+
});
|
|
1202
|
+
}
|
|
1203
|
+
function createCompilerCppReferenceRepresentationSuccessCpp(identity, category, identityDomain, storageRepresentation, valueRepresentation) {
|
|
1204
|
+
return Object.freeze({
|
|
1205
|
+
category,
|
|
1206
|
+
identity,
|
|
1207
|
+
identityDomain,
|
|
1208
|
+
kind: 'represented',
|
|
1209
|
+
schema: 'flight-compiler-cpp-reference-representation/1',
|
|
1210
|
+
storageRepresentation,
|
|
1211
|
+
valueRepresentation,
|
|
1212
|
+
});
|
|
1213
|
+
}
|
|
1214
|
+
export function getCppRuntimeReferenceCategory(sourceName) {
|
|
1215
|
+
if (cppArrayReferenceTypes.has(sourceName))
|
|
1216
|
+
return 'array';
|
|
1217
|
+
if (cppMapReferenceTypes.has(sourceName))
|
|
1218
|
+
return 'map';
|
|
1219
|
+
if (cppSetReferenceTypes.has(sourceName))
|
|
1220
|
+
return 'set';
|
|
1221
|
+
if (cppTaskReferenceTypes.has(sourceName))
|
|
1222
|
+
return 'task';
|
|
1223
|
+
if (cppTypedArrayReferenceTypes.has(sourceName))
|
|
1224
|
+
return 'typedArray';
|
|
1225
|
+
if (sourceName === 'Date')
|
|
1226
|
+
return 'date';
|
|
1227
|
+
if (sourceName === 'WeakMap')
|
|
1228
|
+
return 'weakMap';
|
|
1229
|
+
return undefined;
|
|
1230
|
+
}
|
|
1231
|
+
function getReferenceDeclarationResolutionCpp(reference, module, moduleSet, cache) {
|
|
1232
|
+
const binding = reference.binding;
|
|
1233
|
+
const local = module.declarations.has(binding.id) || module.importsByBindingId.has(binding.id);
|
|
1234
|
+
const owners = moduleSet.namedBindingOwnersByBindingId.get(binding.id) ?? [];
|
|
1235
|
+
const owner = local ? module : owners.length === 1 ? owners[0] : undefined;
|
|
1236
|
+
if (!owner)
|
|
1237
|
+
return { kind: 'indeterminate' };
|
|
1238
|
+
if (binding.kind !== 'import') {
|
|
1239
|
+
if (reference.path.length > 0)
|
|
1240
|
+
return { kind: 'indeterminate' };
|
|
1241
|
+
const location = owner.declarations.get(binding.id);
|
|
1242
|
+
return location ? { kind: 'location', location } : { kind: 'indeterminate' };
|
|
1243
|
+
}
|
|
1244
|
+
const imported = owner.importsByBindingId.get(binding.id) ?? [];
|
|
1245
|
+
const imports = imported.flatMap(({ imported: importedName, specifier }) => {
|
|
1246
|
+
if (importedName === '*' && reference.path.length === 1) {
|
|
1247
|
+
return [{ exportName: reference.path[0], specifier }];
|
|
1248
|
+
}
|
|
1249
|
+
return reference.path.length === 0 && importedName !== '*' ? [{ exportName: importedName, specifier }] : [];
|
|
1250
|
+
});
|
|
1251
|
+
const locations = deduplicateReferenceDeclarationLocationsCpp(imports.flatMap(({ exportName, specifier }) => getReferenceSpecifierModulesCpp(owner, specifier, moduleSet, cache).flatMap((target) => getReferenceExportLocationsCpp(target, exportName, moduleSet, new Set(), cache))));
|
|
1252
|
+
if (locations.length === 1)
|
|
1253
|
+
return { kind: 'location', location: locations[0] };
|
|
1254
|
+
return { kind: 'indeterminate' };
|
|
1255
|
+
}
|
|
1256
|
+
function getReferenceExportLocationsCpp(module, exportName, moduleSet, seen, cache) {
|
|
1257
|
+
const identity = `${module.identity}\0${exportName}`;
|
|
1258
|
+
const cached = cache?.exportLocations.get(identity);
|
|
1259
|
+
if (cached)
|
|
1260
|
+
return cached;
|
|
1261
|
+
if (seen.has(identity))
|
|
1262
|
+
return [];
|
|
1263
|
+
cache?.exportLocations.set(identity, []);
|
|
1264
|
+
const nextSeen = new Set(seen);
|
|
1265
|
+
nextSeen.add(identity);
|
|
1266
|
+
const locations = [...module.declarations.values()].filter((location) => location.declaration.exported && location.declaration.binding.name === exportName);
|
|
1267
|
+
for (const exported of module.module.exports) {
|
|
1268
|
+
if (exported.kind === 'local' && exported.exported === exportName) {
|
|
1269
|
+
const location = module.declarations.get(exported.binding.id);
|
|
1270
|
+
if (location)
|
|
1271
|
+
locations.push(location);
|
|
1272
|
+
}
|
|
1273
|
+
if (exported.kind === 'reexport' && exported.exported === exportName) {
|
|
1274
|
+
for (const target of getReferenceSpecifierModulesCpp(module, exported.specifier, moduleSet, cache)) {
|
|
1275
|
+
locations.push(...getReferenceExportLocationsCpp(target, exported.imported, moduleSet, nextSeen, cache));
|
|
1276
|
+
}
|
|
1277
|
+
}
|
|
1278
|
+
if (exported.kind === 'all') {
|
|
1279
|
+
for (const target of getReferenceSpecifierModulesCpp(module, exported.specifier, moduleSet, cache)) {
|
|
1280
|
+
locations.push(...getReferenceExportLocationsCpp(target, exportName, moduleSet, nextSeen, cache));
|
|
1281
|
+
}
|
|
1282
|
+
}
|
|
1283
|
+
}
|
|
1284
|
+
const result = deduplicateReferenceDeclarationLocationsCpp(locations);
|
|
1285
|
+
cache?.exportLocations.set(identity, result);
|
|
1286
|
+
return result;
|
|
1287
|
+
}
|
|
1288
|
+
function getReferenceSpecifierModulesCpp(from, specifier, moduleSet, cache) {
|
|
1289
|
+
const key = `${from.identity}\0${specifier}`;
|
|
1290
|
+
const cached = cache?.specifierModules.get(key);
|
|
1291
|
+
if (cached)
|
|
1292
|
+
return cached;
|
|
1293
|
+
const candidates = getReferenceSpecifierSourceCandidatesCpp(from.source, specifier);
|
|
1294
|
+
const resolved = moduleSet.resolutionTargetsBySpecifier.get(specifier);
|
|
1295
|
+
const resolutionTargets = resolved?.byImporter.get(from.identity) ?? resolved?.fallback ?? [];
|
|
1296
|
+
const resultByIdentity = new Map();
|
|
1297
|
+
for (const source of candidates) {
|
|
1298
|
+
for (const candidate of moduleSet.modulesByPackageSource.get(`${from.module.packageName}\0${source}`) ?? []) {
|
|
1299
|
+
resultByIdentity.set(candidate.identity, candidate);
|
|
1300
|
+
}
|
|
1301
|
+
}
|
|
1302
|
+
for (const target of resolutionTargets) {
|
|
1303
|
+
for (const candidate of moduleSet.modulesByPackageSource.get(target) ?? []) {
|
|
1304
|
+
resultByIdentity.set(candidate.identity, candidate);
|
|
1305
|
+
}
|
|
1306
|
+
}
|
|
1307
|
+
const result = [...resultByIdentity.values()].sort(compareReferenceModuleRecordsCpp);
|
|
1308
|
+
cache?.specifierModules.set(key, result);
|
|
1309
|
+
return result;
|
|
1310
|
+
}
|
|
1311
|
+
function createReferenceResolutionCacheCpp() {
|
|
1312
|
+
return { exportLocations: new Map(), specifierModules: new Map() };
|
|
1313
|
+
}
|
|
1314
|
+
function getReferenceSpecifierSourceCandidatesCpp(source, specifier) {
|
|
1315
|
+
const normalized = normalizePathPortable(specifier);
|
|
1316
|
+
if (normalized !== '.' && normalized !== '..' && !normalized.startsWith('./') && !normalized.startsWith('../')) {
|
|
1317
|
+
return new Set();
|
|
1318
|
+
}
|
|
1319
|
+
const parts = source.split('/');
|
|
1320
|
+
parts.pop();
|
|
1321
|
+
for (const part of normalized.split('/')) {
|
|
1322
|
+
if (part === '' || part === '.')
|
|
1323
|
+
continue;
|
|
1324
|
+
if (part === '..') {
|
|
1325
|
+
if (parts.length === 0)
|
|
1326
|
+
return new Set();
|
|
1327
|
+
parts.pop();
|
|
1328
|
+
}
|
|
1329
|
+
else {
|
|
1330
|
+
parts.push(part);
|
|
1331
|
+
}
|
|
1332
|
+
}
|
|
1333
|
+
const resolved = parts.join('/');
|
|
1334
|
+
const candidates = new Set([resolved]);
|
|
1335
|
+
for (const [emitted, sourceExtension] of cppModuleSourceExtensions) {
|
|
1336
|
+
if (resolved.endsWith(emitted))
|
|
1337
|
+
candidates.add(`${resolved.slice(0, -emitted.length)}${sourceExtension}`);
|
|
1338
|
+
}
|
|
1339
|
+
if (!/\.[^/]+$/u.test(resolved)) {
|
|
1340
|
+
candidates.add(`${resolved}.ts`);
|
|
1341
|
+
candidates.add(`${resolved}/index.ts`);
|
|
1342
|
+
}
|
|
1343
|
+
return candidates;
|
|
1344
|
+
}
|
|
1345
|
+
function isUnresolvedImportBindingReferenceCpp(type) {
|
|
1346
|
+
return type.kind === 'named' && type.reference.kind === 'binding' && type.reference.binding.kind === 'import';
|
|
1347
|
+
}
|
|
1348
|
+
function createReferenceModuleSetCpp(modules, resolution) {
|
|
1349
|
+
const records = modules.map(createReferenceModuleRecordCpp).sort(compareReferenceModuleRecordsCpp);
|
|
1350
|
+
const declarationsByBindingId = new Map();
|
|
1351
|
+
const modulesByPackageSource = new Map();
|
|
1352
|
+
const namedBindingOwnersByBindingId = new Map();
|
|
1353
|
+
const typeParameterOwnersByBindingId = new Map();
|
|
1354
|
+
const valueBindingOwnersByBindingId = new Map();
|
|
1355
|
+
for (const record of records) {
|
|
1356
|
+
const moduleKey = `${record.module.packageName}\0${record.source}`;
|
|
1357
|
+
const sourceRecords = modulesByPackageSource.get(moduleKey) ?? [];
|
|
1358
|
+
sourceRecords.push(record);
|
|
1359
|
+
modulesByPackageSource.set(moduleKey, sourceRecords);
|
|
1360
|
+
for (const [bindingId, location] of record.declarations) {
|
|
1361
|
+
const locations = declarationsByBindingId.get(bindingId) ?? [];
|
|
1362
|
+
locations.push(location);
|
|
1363
|
+
declarationsByBindingId.set(bindingId, locations);
|
|
1364
|
+
}
|
|
1365
|
+
for (const bindingId of new Set([...record.declarations.keys(), ...record.importsByBindingId.keys()])) {
|
|
1366
|
+
const owners = namedBindingOwnersByBindingId.get(bindingId) ?? [];
|
|
1367
|
+
owners.push(record);
|
|
1368
|
+
namedBindingOwnersByBindingId.set(bindingId, owners);
|
|
1369
|
+
}
|
|
1370
|
+
for (const bindingId of record.typeParameterBindingIds) {
|
|
1371
|
+
const owners = typeParameterOwnersByBindingId.get(bindingId) ?? [];
|
|
1372
|
+
owners.push(record);
|
|
1373
|
+
typeParameterOwnersByBindingId.set(bindingId, owners);
|
|
1374
|
+
}
|
|
1375
|
+
for (const bindingId of record.valueTypesByBindingId.keys()) {
|
|
1376
|
+
const owners = valueBindingOwnersByBindingId.get(bindingId) ?? [];
|
|
1377
|
+
owners.push(record);
|
|
1378
|
+
valueBindingOwnersByBindingId.set(bindingId, owners);
|
|
1379
|
+
}
|
|
1380
|
+
}
|
|
1381
|
+
return {
|
|
1382
|
+
declarationsByBindingId,
|
|
1383
|
+
modules: records,
|
|
1384
|
+
modulesByIdentity: new Map(records.map((record) => [record.identity, record])),
|
|
1385
|
+
modulesByPackageSource,
|
|
1386
|
+
namedBindingOwnersByBindingId,
|
|
1387
|
+
resolutionTargetsBySpecifier: createReferenceResolutionTargetsCpp(resolution),
|
|
1388
|
+
typeParameterOwnersByBindingId,
|
|
1389
|
+
valueBindingOwnersByBindingId,
|
|
1390
|
+
};
|
|
1391
|
+
}
|
|
1392
|
+
function createReferenceResolutionTargetsCpp(resolution) {
|
|
1393
|
+
const targets = new Map();
|
|
1394
|
+
for (const edge of resolution.edges) {
|
|
1395
|
+
const entry = targets.get(edge.specifier) ?? { fallback: new Set(), byImporter: new Map() };
|
|
1396
|
+
const target = `${edge.target.packageName}\0${normalizePathPortable(edge.target.source)}`;
|
|
1397
|
+
if (edge.importer) {
|
|
1398
|
+
const importer = createReferenceModuleKeyCpp(edge.importer);
|
|
1399
|
+
const exact = entry.byImporter.get(importer) ?? new Set();
|
|
1400
|
+
exact.add(target);
|
|
1401
|
+
entry.byImporter.set(importer, exact);
|
|
1402
|
+
}
|
|
1403
|
+
else {
|
|
1404
|
+
entry.fallback.add(target);
|
|
1405
|
+
}
|
|
1406
|
+
targets.set(edge.specifier, entry);
|
|
1407
|
+
}
|
|
1408
|
+
return new Map([...targets].map(([specifier, entry]) => [
|
|
1409
|
+
specifier,
|
|
1410
|
+
{
|
|
1411
|
+
byImporter: new Map([...entry.byImporter].map(([importer, exact]) => [importer, [...exact].sort(compareTextCodeUnits)])),
|
|
1412
|
+
fallback: [...entry.fallback].sort(compareTextCodeUnits),
|
|
1413
|
+
},
|
|
1414
|
+
]));
|
|
1415
|
+
}
|
|
1416
|
+
function createReferenceModuleRecordCpp(module) {
|
|
1417
|
+
const source = normalizePathPortable(module.source);
|
|
1418
|
+
const identity = `${module.packageName}\0${source}\0${module.name}`;
|
|
1419
|
+
const record = {
|
|
1420
|
+
declarations: new Map(),
|
|
1421
|
+
identity,
|
|
1422
|
+
importsByBindingId: new Map(),
|
|
1423
|
+
module,
|
|
1424
|
+
source,
|
|
1425
|
+
typeParameterBindingIds: new Set(),
|
|
1426
|
+
valueTypesByBindingId: new Map(),
|
|
1427
|
+
};
|
|
1428
|
+
for (const declaration of module.declarations) {
|
|
1429
|
+
if (declaration.kind === 'class' || declaration.kind === 'interface' || declaration.kind === 'typeAlias') {
|
|
1430
|
+
record.declarations.set(declaration.binding.id, {
|
|
1431
|
+
declaration,
|
|
1432
|
+
identity: `${identity}\0${declaration.binding.id}`,
|
|
1433
|
+
module: record,
|
|
1434
|
+
});
|
|
1435
|
+
}
|
|
1436
|
+
if (declaration.kind === 'variable' && 'binding' in declaration && declaration.type) {
|
|
1437
|
+
record.valueTypesByBindingId.set(declaration.binding.id, declaration.type);
|
|
1438
|
+
}
|
|
1439
|
+
collectReferenceDeclarationTypeParameterBindingIdsCpp(declaration, record.typeParameterBindingIds);
|
|
1440
|
+
}
|
|
1441
|
+
for (const entry of module.imports) {
|
|
1442
|
+
for (const binding of entry.bindings) {
|
|
1443
|
+
const imports = record.importsByBindingId.get(binding.binding.id) ?? [];
|
|
1444
|
+
imports.push({ imported: binding.imported, specifier: entry.specifier });
|
|
1445
|
+
record.importsByBindingId.set(binding.binding.id, imports);
|
|
1446
|
+
}
|
|
1447
|
+
}
|
|
1448
|
+
return record;
|
|
1449
|
+
}
|
|
1450
|
+
function collectReferenceDeclarationTypeParameterBindingIdsCpp(declaration, bindingIds) {
|
|
1451
|
+
switch (declaration.kind) {
|
|
1452
|
+
case 'class':
|
|
1453
|
+
addReferenceTypeParameterBindingIdsCpp(declaration.typeParameters, bindingIds);
|
|
1454
|
+
declaration.methods.forEach((method) => addReferenceTypeParameterBindingIdsCpp(method.typeParameters, bindingIds));
|
|
1455
|
+
break;
|
|
1456
|
+
case 'function':
|
|
1457
|
+
case 'interface':
|
|
1458
|
+
case 'typeAlias':
|
|
1459
|
+
addReferenceTypeParameterBindingIdsCpp(declaration.typeParameters, bindingIds);
|
|
1460
|
+
break;
|
|
1461
|
+
case 'enum':
|
|
1462
|
+
case 'variable':
|
|
1463
|
+
break;
|
|
1464
|
+
}
|
|
1465
|
+
}
|
|
1466
|
+
function addReferenceTypeParameterBindingIdsCpp(parameters, bindingIds) {
|
|
1467
|
+
for (const parameter of parameters)
|
|
1468
|
+
bindingIds.add(parameter.binding.id);
|
|
1469
|
+
}
|
|
1470
|
+
function getReferenceModuleRecordCpp(module, moduleSet) {
|
|
1471
|
+
return moduleSet.modulesByIdentity.get(createReferenceModuleKeyCpp(module));
|
|
1472
|
+
}
|
|
1473
|
+
function createReferenceModuleKeyCpp(module) {
|
|
1474
|
+
return `${module.packageName}\0${normalizePathPortable(module.source)}\0${module.name}`;
|
|
1475
|
+
}
|
|
1476
|
+
function deduplicateReferenceDeclarationLocationsCpp(locations) {
|
|
1477
|
+
return [...new Map(locations.map((location) => [location.identity, location])).values()];
|
|
1478
|
+
}
|
|
1479
|
+
function compareReferenceModuleRecordsCpp(left, right) {
|
|
1480
|
+
return compareTextCodeUnits(left.identity, right.identity);
|
|
1481
|
+
}
|
|
1482
|
+
const compilerEmptyModuleResolutionPlanCpp = Object.freeze({
|
|
1483
|
+
edges: Object.freeze([]),
|
|
1484
|
+
schema: 'flight-compiler-module-resolution/1',
|
|
1485
|
+
});
|
|
1486
|
+
const cppIdentityPreservingAmbientUtilities = new Map([
|
|
1487
|
+
['Omit', 2],
|
|
1488
|
+
['Partial', 1],
|
|
1489
|
+
['Pick', 2],
|
|
1490
|
+
['Readonly', 1],
|
|
1491
|
+
['Required', 1],
|
|
1492
|
+
]);
|
|
1493
|
+
const cppArrayReferenceTypes = new Set(['Array', 'ReadonlyArray']);
|
|
1494
|
+
const cppMapReferenceTypes = new Set(['Map', 'ReadonlyMap']);
|
|
1495
|
+
const cppModuleSourceExtensions = [
|
|
1496
|
+
['.cjs', '.cts'],
|
|
1497
|
+
['.js', '.ts'],
|
|
1498
|
+
['.jsx', '.tsx'],
|
|
1499
|
+
['.mjs', '.mts'],
|
|
1500
|
+
];
|
|
1501
|
+
const cppSetReferenceTypes = new Set(['ReadonlySet', 'Set']);
|
|
1502
|
+
const cppTaskReferenceTypes = new Set(['Promise', 'PromiseLike']);
|
|
1503
|
+
const cppTypedArrayReferenceTypes = new Set([
|
|
1504
|
+
'Float32Array',
|
|
1505
|
+
'Float64Array',
|
|
1506
|
+
'Int16Array',
|
|
1507
|
+
'Int32Array',
|
|
1508
|
+
'Int8Array',
|
|
1509
|
+
'Uint16Array',
|
|
1510
|
+
'Uint32Array',
|
|
1511
|
+
'Uint8Array',
|
|
1512
|
+
'Uint8ClampedArray',
|
|
1513
|
+
]);
|
|
1514
|
+
//# sourceMappingURL=cppReferenceRepresentationPlan.js.map
|