K2: Allow PCLA inference when a value parameter has a TV type

^KT-64877 Fixed
This commit is contained in:
Denis.Zharkov
2024-01-10 19:10:15 +01:00
committed by Space Team
parent b2ca19da73
commit 72b0372927
39 changed files with 272 additions and 44 deletions
@@ -17199,6 +17199,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothOuterAndProperConstraints.kt");
}
@Test
@TestMetadata("bothReceiverAndValueParameterNotFixed.kt")
public void testBothReceiverAndValueParameterNotFixed() throws Exception {
runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothReceiverAndValueParameterNotFixed.kt");
}
@Test
@TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt")
public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception {
@@ -2772,6 +2772,12 @@ public class LLFirBlackBoxCodegenBasedTestGenerated extends AbstractLLFirBlackBo
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -17199,6 +17199,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothOuterAndProperConstraints.kt");
}
@Test
@TestMetadata("bothReceiverAndValueParameterNotFixed.kt")
public void testBothReceiverAndValueParameterNotFixed() throws Exception {
runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothReceiverAndValueParameterNotFixed.kt");
}
@Test
@TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt")
public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception {
@@ -2772,6 +2772,12 @@ public class LLFirReversedBlackBoxCodegenBasedTestGenerated extends AbstractLLFi
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -17193,6 +17193,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir
runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothOuterAndProperConstraints.kt");
}
@Test
@TestMetadata("bothReceiverAndValueParameterNotFixed.kt")
public void testBothReceiverAndValueParameterNotFixed() throws Exception {
runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothReceiverAndValueParameterNotFixed.kt");
}
@Test
@TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt")
public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception {
@@ -17199,6 +17199,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia
runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothOuterAndProperConstraints.kt");
}
@Test
@TestMetadata("bothReceiverAndValueParameterNotFixed.kt")
public void testBothReceiverAndValueParameterNotFixed() throws Exception {
runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothReceiverAndValueParameterNotFixed.kt");
}
@Test
@TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt")
public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception {
@@ -2755,6 +2755,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -2755,6 +2755,12 @@ public class FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -2755,6 +2755,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -267,7 +267,7 @@ class FirCallCompleter(
this.name = name
symbol = FirValueParameterSymbol(name)
returnTypeRef =
itType.approximateLambdaInputType(symbol).toFirResolvedTypeRef(
itType.approximateLambdaInputType(symbol, withPCLASession).toFirResolvedTypeRef(
lambdaAtom.atom.source?.fakeElement(KtFakeSourceElementKind.ItLambdaParameter)
)
defaultValue = null
@@ -285,7 +285,7 @@ class FirCallCompleter(
receiverType == null -> lambdaArgument.replaceReceiverParameter(null)
!lambdaAtom.coerceFirstParameterToExtensionReceiver -> {
lambdaArgument.receiverParameter?.apply {
val type = receiverType.approximateLambdaInputType(valueParameter = null)
val type = receiverType.approximateLambdaInputType(valueParameter = null, withPCLASession)
val source =
source?.fakeElement(KtFakeSourceElementKind.LambdaReceiver)
?: lambdaArgument.source?.fakeElement(KtFakeSourceElementKind.LambdaReceiver)
@@ -330,7 +330,7 @@ class FirCallCompleter(
)
return@forEachIndexed
}
val newReturnType = theParameters[index].approximateLambdaInputType(parameter.symbol)
val newReturnType = theParameters[index].approximateLambdaInputType(parameter.symbol, withPCLASession)
val newReturnTypeRef = if (parameter.returnTypeRef is FirImplicitTypeRef) {
newReturnType.toFirResolvedTypeRef(parameter.source?.fakeElement(KtFakeSourceElementKind.ImplicitReturnTypeOfLambdaValueParameter))
} else parameter.returnTypeRef.resolvedTypeFromPrototype(newReturnType)
@@ -376,11 +376,14 @@ class FirCallCompleter(
}
}
private fun ConeKotlinType.approximateLambdaInputType(valueParameter: FirValueParameterSymbol?): ConeKotlinType {
private fun ConeKotlinType.approximateLambdaInputType(
valueParameter: FirValueParameterSymbol?,
isRootLambdaForPCLASession: Boolean,
): ConeKotlinType {
// We only run lambda completion from ConstraintSystemCompletionContext.analyzeRemainingNotAnalyzedPostponedArgument when they are
// left uninferred.
// Currently, we use stub types for builder inference, so CANNOT_INFER_PARAMETER_TYPE is the only possible result here.
if (isTypeVariableThatShouldBeFixedBeforeLambdaAnalysis(isReceiver = valueParameter == null)) {
if (useErrorTypeInsteadOfTypeVariableForParameterType(isReceiver = valueParameter == null, isRootLambdaForPCLASession)) {
val diagnostic = valueParameter?.let(::ConeCannotInferValueParameterType) ?: ConeCannotInferReceiverParameterType()
return ConeErrorType(diagnostic)
}
@@ -390,18 +393,28 @@ class FirCallCompleter(
) ?: this
}
private fun ConeKotlinType.isTypeVariableThatShouldBeFixedBeforeLambdaAnalysis(isReceiver: Boolean): Boolean {
private fun ConeKotlinType.useErrorTypeInsteadOfTypeVariableForParameterType(
isReceiver: Boolean,
isRootLambdaForPCLASession: Boolean,
): Boolean {
if (this !is ConeTypeVariableType) return false
// Outside PCLA, all type variables for parameter types should be fixed before lambda analysis
// Inside PCLA, we force fixing receivers before lambda analysis
if (inferenceSession !is FirPCLAInferenceSession || isReceiver) return true
// Receivers are expected to be fixed both for PCLA/nonPCLA lambdas, so just build error type
if (isReceiver) return true
// For type variables not based on type parameters (created for lambda parameters with no expected type)
// we force them to be fixed before lambda analysis
if (typeConstructor.originalTypeParameter == null) return true
// Besides PCLA, all type variables for parameter types should be fixed before lambda analysis
// Inside PCLA (or when we start it), we force fixing receivers before lambda analysis, but allow value parameters
// to remain unfixed TVs.
if (isRootLambdaForPCLASession || inferenceSession is FirPCLAInferenceSession) {
// For type variables not based on type parameters (created for lambda parameters with no expected type)
// we force them to be fixed before lambda analysis.
//
// Otherwise, it's a type variable based on a type parameter which resulting type might be inferred from the lambda body,
// so in that case leave type variable type
return typeConstructor.originalTypeParameter == null
}
return false
return true
}
}
@@ -1,7 +1,7 @@
// ISSUE: KT-53553
// IGNORE_LIGHT_ANALYSIS
// IGNORE_BACKEND: ANY
// IGNORE_BACKEND_K1: ANY
// REASON: red code (see corresponding diagnostic test)
fun box(): String {
@@ -0,0 +1,18 @@
class Controller<K>
fun <T> generate(lambda: Controller<T>.(T) -> Unit) {}
fun consume(f: Controller<String>) {}
fun consumeString(f: String) {}
fun box(): String {
generate {
consume(this)
}
generate {
consumeString(it)
}
return "OK"
}
@@ -4,7 +4,7 @@
fun test() {
val buildee = buildFromValue(
innerBuild { setInnerTypeVariable(TargetType()) },
<!CANNOT_INFER_PARAMETER_TYPE!>{ it.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>placeholderExtensionInvokeOnInnerBuildee<!>() }<!>
{ <!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>.placeholderExtensionInvokeOnInnerBuildee() }
)
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
@@ -3,13 +3,13 @@
fun test() {
val buildee = stepByStepBuild(
<!CANNOT_INFER_PARAMETER_TYPE!>{
{
it.<!UNRESOLVED_REFERENCE!>concreteTypeMemberProperty<!>
TargetType()
}<!>,
<!CANNOT_INFER_PARAMETER_TYPE!>{
},
{
consumeTargetTypeBase(it)
}<!>
}
)
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
@@ -2,17 +2,17 @@
// CHECK_TYPE_WITH_EXACT
fun test() {
val buildee = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>parallelBuild<!>(
<!CANNOT_INFER_PARAMETER_TYPE!>{
val buildee = parallelBuild(
{
consumeTargetTypeBase(it)
}<!>,
<!CANNOT_INFER_PARAMETER_TYPE!>{
},
{
consumeTargetType(it)
}<!>
}
)
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>checkExactType<!><<!CANNOT_INFER_PARAMETER_TYPE!>Buildee<TargetType><!>>(buildee)
checkExactType<Buildee<TargetType>>(buildee)
}
@@ -3,12 +3,12 @@
fun test() {
val buildee = parallelBuild(
<!CANNOT_INFER_PARAMETER_TYPE!>{
{
setTypeVariable(TargetType())
}<!>,
<!CANNOT_INFER_PARAMETER_TYPE!>{
},
{
consumeDifferentType(<!ARGUMENT_TYPE_MISMATCH!>getTypeVariable()<!>)
}<!>
}
)
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
@@ -3,12 +3,12 @@
fun test() {
val buildee = parallelInOutBuild(
<!CANNOT_INFER_PARAMETER_TYPE!>{
{
setInProjectedTypeVariable(TargetType())
}<!>,
<!CANNOT_INFER_PARAMETER_TYPE!>{
},
{
consumeDifferentType(<!ARGUMENT_TYPE_MISMATCH!>getOutProjectedTypeVariable()<!>)
}<!>
}
)
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
@@ -0,0 +1,24 @@
// ISSUE: KT-64876
class Controller<K>
fun <T1> generate1(lambda: T1.(Controller<T1>) -> Unit): T1 = TODO()
fun <T2> generate2(lambda: Controller<T2>.(T2) -> Unit): T2 = TODO()
fun consume(f: Controller<String>) {}
fun consumeString(f: String) {}
fun main() {
// We don't expect to allow running PCLA with not fixed TV as receiver
// because all the calls should be resolved inside its member scope and we can't do that properly
generate1 <!CANNOT_INFER_PARAMETER_TYPE!>{
consume(it)
}<!>.length
generate2 {
consume(this)
}.length
generate2 {
consumeString(it)
}.length
}
@@ -0,0 +1,24 @@
// ISSUE: KT-64876
class Controller<K>
fun <T1> generate1(lambda: T1.(Controller<T1>) -> Unit): T1 = TODO()
fun <T2> generate2(lambda: Controller<T2>.(T2) -> Unit): T2 = TODO()
fun consume(f: Controller<String>) {}
fun consumeString(f: String) {}
fun main() {
// We don't expect to allow running PCLA with not fixed TV as receiver
// because all the calls should be resolved inside its member scope and we can't do that properly
generate1 {
consume(it)
}.length
generate2 {
consume(this)
}.length
generate2 {
consumeString(it)
}.length
}
@@ -3,7 +3,7 @@
fun test() {
foo(
flow { emit(0) }
) <!CANNOT_INFER_PARAMETER_TYPE!>{ it.collect <!TOO_MANY_ARGUMENTS!>{}<!> }<!>
) { <!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>.collect <!TOO_MANY_ARGUMENTS!>{}<!> }
// 0. Initial
// W <: Any / declared upper bound
@@ -11,7 +11,7 @@ fun test1() {
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>a<!> <!CANNOT_INFER_PARAMETER_TYPE!>{
<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)<!>::extension)
use(it::extension)
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
}<!>
}
@@ -21,7 +21,7 @@ fun test2() {
val v = this.get(0)
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
use(it::extension)
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
}<!>
}
@@ -31,7 +31,7 @@ fun test3() {
val v by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>this.get(0)<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
use(it::extension)
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
}<!>
}
@@ -44,7 +44,7 @@ fun test4() {
val v by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>this.get(0)<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
use(it::extension)
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
}<!>
}
@@ -12,7 +12,7 @@ fun test1() {
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>a<!> <!CANNOT_INFER_PARAMETER_TYPE!>{
<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)<!>::extension)
use(it::extension)
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
}<!>
}
@@ -22,7 +22,7 @@ fun test2() {
val v = this.get(0)
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
use(it::extension)
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
}<!>
}
@@ -32,7 +32,7 @@ fun test3() {
val v by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>this.get(0)<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
use(it::extension)
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
}<!>
}
@@ -45,7 +45,7 @@ fun test4() {
val v by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>this.get(0)<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
use(it::extension)
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
}<!>
}
@@ -8,9 +8,9 @@ class GenericController<T> {
fun <S> generate(g: suspend GenericController<S>.(S) -> Unit): S = TODO()
val test1 = generate <!CANNOT_INFER_PARAMETER_TYPE!>{
val test1 = generate {
yield(4)
}<!>
}
val test2 = generate<Int> {
yield(4)
@@ -17199,6 +17199,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothOuterAndProperConstraints.kt");
}
@Test
@TestMetadata("bothReceiverAndValueParameterNotFixed.kt")
public void testBothReceiverAndValueParameterNotFixed() throws Exception {
runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothReceiverAndValueParameterNotFixed.kt");
}
@Test
@TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt")
public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception {
@@ -2755,6 +2755,12 @@ public class JvmAbiConsistencyTestBoxGenerated extends AbstractJvmAbiConsistency
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -2575,6 +2575,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -2755,6 +2755,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -2755,6 +2755,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -2403,6 +2403,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/receiverUsesOuterTVButReturnTypeIsProper.kt");
@@ -1861,6 +1861,12 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -1861,6 +1861,12 @@ public class FirJsES6CodegenBoxTestGenerated extends AbstractFirJsES6CodegenBoxT
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -1861,6 +1861,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -1861,6 +1861,12 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -1920,6 +1920,12 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -1966,6 +1966,12 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -1874,6 +1874,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -1921,6 +1921,12 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -1849,6 +1849,12 @@ public class FirWasmCodegenBoxTestGenerated extends AbstractFirWasmCodegenBoxTes
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
@@ -1849,6 +1849,12 @@ public class K1WasmCodegenBoxTestGenerated extends AbstractK1WasmCodegenBoxTest
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true);
}
@Test
@TestMetadata("lambdaParameterHasTVType.kt")
public void testLambdaParameterHasTVType() throws Exception {
runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt");
}
@Test
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {