K2: Allow PCLA inference when a value parameter has a TV type
^KT-64877 Fixed
This commit is contained in:
committed by
Space Team
parent
b2ca19da73
commit
72b0372927
+6
@@ -17199,6 +17199,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
|
|||||||
runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothOuterAndProperConstraints.kt");
|
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
|
@Test
|
||||||
@TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt")
|
@TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt")
|
||||||
public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception {
|
public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
+6
@@ -17199,6 +17199,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
|
|||||||
runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothOuterAndProperConstraints.kt");
|
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
|
@Test
|
||||||
@TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt")
|
@TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt")
|
||||||
public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception {
|
public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
+6
@@ -17193,6 +17193,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir
|
|||||||
runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothOuterAndProperConstraints.kt");
|
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
|
@Test
|
||||||
@TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt")
|
@TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt")
|
||||||
public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception {
|
public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception {
|
||||||
|
|||||||
+6
@@ -17199,6 +17199,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia
|
|||||||
runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothOuterAndProperConstraints.kt");
|
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
|
@Test
|
||||||
@TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt")
|
@TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt")
|
||||||
public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception {
|
public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
+26
-13
@@ -267,7 +267,7 @@ class FirCallCompleter(
|
|||||||
this.name = name
|
this.name = name
|
||||||
symbol = FirValueParameterSymbol(name)
|
symbol = FirValueParameterSymbol(name)
|
||||||
returnTypeRef =
|
returnTypeRef =
|
||||||
itType.approximateLambdaInputType(symbol).toFirResolvedTypeRef(
|
itType.approximateLambdaInputType(symbol, withPCLASession).toFirResolvedTypeRef(
|
||||||
lambdaAtom.atom.source?.fakeElement(KtFakeSourceElementKind.ItLambdaParameter)
|
lambdaAtom.atom.source?.fakeElement(KtFakeSourceElementKind.ItLambdaParameter)
|
||||||
)
|
)
|
||||||
defaultValue = null
|
defaultValue = null
|
||||||
@@ -285,7 +285,7 @@ class FirCallCompleter(
|
|||||||
receiverType == null -> lambdaArgument.replaceReceiverParameter(null)
|
receiverType == null -> lambdaArgument.replaceReceiverParameter(null)
|
||||||
!lambdaAtom.coerceFirstParameterToExtensionReceiver -> {
|
!lambdaAtom.coerceFirstParameterToExtensionReceiver -> {
|
||||||
lambdaArgument.receiverParameter?.apply {
|
lambdaArgument.receiverParameter?.apply {
|
||||||
val type = receiverType.approximateLambdaInputType(valueParameter = null)
|
val type = receiverType.approximateLambdaInputType(valueParameter = null, withPCLASession)
|
||||||
val source =
|
val source =
|
||||||
source?.fakeElement(KtFakeSourceElementKind.LambdaReceiver)
|
source?.fakeElement(KtFakeSourceElementKind.LambdaReceiver)
|
||||||
?: lambdaArgument.source?.fakeElement(KtFakeSourceElementKind.LambdaReceiver)
|
?: lambdaArgument.source?.fakeElement(KtFakeSourceElementKind.LambdaReceiver)
|
||||||
@@ -330,7 +330,7 @@ class FirCallCompleter(
|
|||||||
)
|
)
|
||||||
return@forEachIndexed
|
return@forEachIndexed
|
||||||
}
|
}
|
||||||
val newReturnType = theParameters[index].approximateLambdaInputType(parameter.symbol)
|
val newReturnType = theParameters[index].approximateLambdaInputType(parameter.symbol, withPCLASession)
|
||||||
val newReturnTypeRef = if (parameter.returnTypeRef is FirImplicitTypeRef) {
|
val newReturnTypeRef = if (parameter.returnTypeRef is FirImplicitTypeRef) {
|
||||||
newReturnType.toFirResolvedTypeRef(parameter.source?.fakeElement(KtFakeSourceElementKind.ImplicitReturnTypeOfLambdaValueParameter))
|
newReturnType.toFirResolvedTypeRef(parameter.source?.fakeElement(KtFakeSourceElementKind.ImplicitReturnTypeOfLambdaValueParameter))
|
||||||
} else parameter.returnTypeRef.resolvedTypeFromPrototype(newReturnType)
|
} 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
|
// We only run lambda completion from ConstraintSystemCompletionContext.analyzeRemainingNotAnalyzedPostponedArgument when they are
|
||||||
// left uninferred.
|
// left uninferred.
|
||||||
// Currently, we use stub types for builder inference, so CANNOT_INFER_PARAMETER_TYPE is the only possible result here.
|
// 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()
|
val diagnostic = valueParameter?.let(::ConeCannotInferValueParameterType) ?: ConeCannotInferReceiverParameterType()
|
||||||
return ConeErrorType(diagnostic)
|
return ConeErrorType(diagnostic)
|
||||||
}
|
}
|
||||||
@@ -390,18 +393,28 @@ class FirCallCompleter(
|
|||||||
) ?: this
|
) ?: this
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ConeKotlinType.isTypeVariableThatShouldBeFixedBeforeLambdaAnalysis(isReceiver: Boolean): Boolean {
|
private fun ConeKotlinType.useErrorTypeInsteadOfTypeVariableForParameterType(
|
||||||
|
isReceiver: Boolean,
|
||||||
|
isRootLambdaForPCLASession: Boolean,
|
||||||
|
): Boolean {
|
||||||
if (this !is ConeTypeVariableType) return false
|
if (this !is ConeTypeVariableType) return false
|
||||||
|
|
||||||
// Outside PCLA, all type variables for parameter types should be fixed before lambda analysis
|
// Receivers are expected to be fixed both for PCLA/nonPCLA lambdas, so just build error type
|
||||||
// Inside PCLA, we force fixing receivers before lambda analysis
|
if (isReceiver) return true
|
||||||
if (inferenceSession !is FirPCLAInferenceSession || isReceiver) return true
|
|
||||||
|
|
||||||
// For type variables not based on type parameters (created for lambda parameters with no expected type)
|
// Besides PCLA, all type variables for parameter types should be fixed before lambda analysis
|
||||||
// we force them to be fixed before lambda analysis
|
// Inside PCLA (or when we start it), we force fixing receivers before lambda analysis, but allow value parameters
|
||||||
if (typeConstructor.originalTypeParameter == null) return true
|
// 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
|
// ISSUE: KT-53553
|
||||||
|
|
||||||
// IGNORE_LIGHT_ANALYSIS
|
// IGNORE_LIGHT_ANALYSIS
|
||||||
// IGNORE_BACKEND: ANY
|
// IGNORE_BACKEND_K1: ANY
|
||||||
// REASON: red code (see corresponding diagnostic test)
|
// REASON: red code (see corresponding diagnostic test)
|
||||||
|
|
||||||
fun box(): String {
|
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"
|
||||||
|
}
|
||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
fun test() {
|
fun test() {
|
||||||
val buildee = buildFromValue(
|
val buildee = buildFromValue(
|
||||||
innerBuild { setInnerTypeVariable(TargetType()) },
|
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
|
// 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
|
// considered to be non-user-reproducible code for the purposes of these tests
|
||||||
|
|||||||
+4
-4
@@ -3,13 +3,13 @@
|
|||||||
|
|
||||||
fun test() {
|
fun test() {
|
||||||
val buildee = stepByStepBuild(
|
val buildee = stepByStepBuild(
|
||||||
<!CANNOT_INFER_PARAMETER_TYPE!>{
|
{
|
||||||
it.<!UNRESOLVED_REFERENCE!>concreteTypeMemberProperty<!>
|
it.<!UNRESOLVED_REFERENCE!>concreteTypeMemberProperty<!>
|
||||||
TargetType()
|
TargetType()
|
||||||
}<!>,
|
},
|
||||||
<!CANNOT_INFER_PARAMETER_TYPE!>{
|
{
|
||||||
consumeTargetTypeBase(it)
|
consumeTargetTypeBase(it)
|
||||||
}<!>
|
}
|
||||||
)
|
)
|
||||||
// exact type equality check — turns unexpected compile-time behavior into red code
|
// 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
|
// considered to be non-user-reproducible code for the purposes of these tests
|
||||||
|
|||||||
@@ -2,17 +2,17 @@
|
|||||||
// CHECK_TYPE_WITH_EXACT
|
// CHECK_TYPE_WITH_EXACT
|
||||||
|
|
||||||
fun test() {
|
fun test() {
|
||||||
val buildee = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>parallelBuild<!>(
|
val buildee = parallelBuild(
|
||||||
<!CANNOT_INFER_PARAMETER_TYPE!>{
|
{
|
||||||
consumeTargetTypeBase(it)
|
consumeTargetTypeBase(it)
|
||||||
}<!>,
|
},
|
||||||
<!CANNOT_INFER_PARAMETER_TYPE!>{
|
{
|
||||||
consumeTargetType(it)
|
consumeTargetType(it)
|
||||||
}<!>
|
}
|
||||||
)
|
)
|
||||||
// exact type equality check — turns unexpected compile-time behavior into red code
|
// 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
|
// 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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -3,12 +3,12 @@
|
|||||||
|
|
||||||
fun test() {
|
fun test() {
|
||||||
val buildee = parallelBuild(
|
val buildee = parallelBuild(
|
||||||
<!CANNOT_INFER_PARAMETER_TYPE!>{
|
{
|
||||||
setTypeVariable(TargetType())
|
setTypeVariable(TargetType())
|
||||||
}<!>,
|
},
|
||||||
<!CANNOT_INFER_PARAMETER_TYPE!>{
|
{
|
||||||
consumeDifferentType(<!ARGUMENT_TYPE_MISMATCH!>getTypeVariable()<!>)
|
consumeDifferentType(<!ARGUMENT_TYPE_MISMATCH!>getTypeVariable()<!>)
|
||||||
}<!>
|
}
|
||||||
)
|
)
|
||||||
// exact type equality check — turns unexpected compile-time behavior into red code
|
// 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
|
// considered to be non-user-reproducible code for the purposes of these tests
|
||||||
|
|||||||
+4
-4
@@ -3,12 +3,12 @@
|
|||||||
|
|
||||||
fun test() {
|
fun test() {
|
||||||
val buildee = parallelInOutBuild(
|
val buildee = parallelInOutBuild(
|
||||||
<!CANNOT_INFER_PARAMETER_TYPE!>{
|
{
|
||||||
setInProjectedTypeVariable(TargetType())
|
setInProjectedTypeVariable(TargetType())
|
||||||
}<!>,
|
},
|
||||||
<!CANNOT_INFER_PARAMETER_TYPE!>{
|
{
|
||||||
consumeDifferentType(<!ARGUMENT_TYPE_MISMATCH!>getOutProjectedTypeVariable()<!>)
|
consumeDifferentType(<!ARGUMENT_TYPE_MISMATCH!>getOutProjectedTypeVariable()<!>)
|
||||||
}<!>
|
}
|
||||||
)
|
)
|
||||||
// exact type equality check — turns unexpected compile-time behavior into red code
|
// 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
|
// considered to be non-user-reproducible code for the purposes of these tests
|
||||||
|
|||||||
+24
@@ -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
|
||||||
|
}
|
||||||
+24
@@ -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
|
||||||
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
fun test() {
|
fun test() {
|
||||||
foo(
|
foo(
|
||||||
flow { emit(0) }
|
flow { emit(0) }
|
||||||
) <!CANNOT_INFER_PARAMETER_TYPE!>{ it.collect <!TOO_MANY_ARGUMENTS!>{}<!> }<!>
|
) { <!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>.collect <!TOO_MANY_ARGUMENTS!>{}<!> }
|
||||||
|
|
||||||
// 0. Initial
|
// 0. Initial
|
||||||
// W <: Any / declared upper bound
|
// W <: Any / declared upper bound
|
||||||
|
|||||||
+4
-4
@@ -11,7 +11,7 @@ fun test1() {
|
|||||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>a<!> <!CANNOT_INFER_PARAMETER_TYPE!>{
|
<!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<!>()
|
<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
||||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)<!>::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)
|
val v = this.get(0)
|
||||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
||||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::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)<!>
|
val v by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>this.get(0)<!>
|
||||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
||||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::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)<!>
|
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<!>()
|
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
||||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
|
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
|
||||||
use(it::extension)
|
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
|
||||||
}<!>
|
}<!>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -12,7 +12,7 @@ fun test1() {
|
|||||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>a<!> <!CANNOT_INFER_PARAMETER_TYPE!>{
|
<!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<!>()
|
<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
||||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)<!>::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)
|
val v = this.get(0)
|
||||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
||||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::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)<!>
|
val v by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>this.get(0)<!>
|
||||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
||||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::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)<!>
|
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<!>()
|
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
||||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
|
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
|
||||||
use(it::extension)
|
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
|
||||||
}<!>
|
}<!>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
-2
@@ -8,9 +8,9 @@ class GenericController<T> {
|
|||||||
|
|
||||||
fun <S> generate(g: suspend GenericController<S>.(S) -> Unit): S = TODO()
|
fun <S> generate(g: suspend GenericController<S>.(S) -> Unit): S = TODO()
|
||||||
|
|
||||||
val test1 = generate <!CANNOT_INFER_PARAMETER_TYPE!>{
|
val test1 = generate {
|
||||||
yield(4)
|
yield(4)
|
||||||
}<!>
|
}
|
||||||
|
|
||||||
val test2 = generate<Int> {
|
val test2 = generate<Int> {
|
||||||
yield(4)
|
yield(4)
|
||||||
|
|||||||
Generated
+6
@@ -17199,6 +17199,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
|||||||
runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothOuterAndProperConstraints.kt");
|
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
|
@Test
|
||||||
@TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt")
|
@TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt")
|
||||||
public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception {
|
public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
+5
@@ -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);
|
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")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/builderInference/receiverUsesOuterTVButReturnTypeIsProper.kt");
|
runTest("compiler/testData/codegen/box/builderInference/receiverUsesOuterTVButReturnTypeIsProper.kt");
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
Generated
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
Generated
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
Generated
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
@TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt")
|
||||||
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user