[FE 1.0] Eliminate resolution ambiguity with external type parameters

^KT-10926 Fixed
This commit is contained in:
Victor Petukhov
2021-11-15 11:14:50 +03:00
committed by teamcityserver
parent 31668ed40d
commit a5c6d370dd
20 changed files with 613 additions and 7 deletions
@@ -25379,6 +25379,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
runTest("compiler/testData/diagnostics/tests/samConversions/javaMemberAgainstExtension.kt");
}
@Test
@TestMetadata("kt17765.kt")
public void testKt17765() throws Exception {
runTest("compiler/testData/diagnostics/tests/samConversions/kt17765.kt");
}
@Test
@TestMetadata("OverloadPriority.kt")
public void testOverloadPriority() throws Exception {
@@ -31933,6 +31939,18 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
runTest("compiler/testData/diagnostics/tests/varargs/inferredNullableArrayAsVararg.kt");
}
@Test
@TestMetadata("kt10926.kt")
public void testKt10926() throws Exception {
runTest("compiler/testData/diagnostics/tests/varargs/kt10926.kt");
}
@Test
@TestMetadata("kt10926EnabledFeature.kt")
public void testKt10926EnabledFeature() throws Exception {
runTest("compiler/testData/diagnostics/tests/varargs/kt10926EnabledFeature.kt");
}
@Test
@TestMetadata("kt1781.kt")
public void testKt1781() throws Exception {
@@ -31933,6 +31933,18 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
runTest("compiler/testData/diagnostics/tests/varargs/inferredNullableArrayAsVararg.kt");
}
@Test
@TestMetadata("kt10926.kt")
public void testKt10926() throws Exception {
runTest("compiler/testData/diagnostics/tests/varargs/kt10926.kt");
}
@Test
@TestMetadata("kt10926EnabledFeature.kt")
public void testKt10926EnabledFeature() throws Exception {
runTest("compiler/testData/diagnostics/tests/varargs/kt10926EnabledFeature.kt");
}
@Test
@TestMetadata("kt1781.kt")
public void testKt1781() throws Exception {
@@ -31933,6 +31933,18 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac
runTest("compiler/testData/diagnostics/tests/varargs/inferredNullableArrayAsVararg.kt");
}
@Test
@TestMetadata("kt10926.kt")
public void testKt10926() throws Exception {
runTest("compiler/testData/diagnostics/tests/varargs/kt10926.kt");
}
@Test
@TestMetadata("kt10926EnabledFeature.kt")
public void testKt10926EnabledFeature() throws Exception {
runTest("compiler/testData/diagnostics/tests/varargs/kt10926EnabledFeature.kt");
}
@Test
@TestMetadata("kt1781.kt")
public void testKt1781() throws Exception {
@@ -44300,6 +44300,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
runTest("compiler/testData/codegen/box/vararg/evaluationOrder.kt");
}
@Test
@TestMetadata("kt10926.kt")
public void testKt10926() throws Exception {
runTest("compiler/testData/codegen/box/vararg/kt10926.kt");
}
@Test
@TestMetadata("kt1978.kt")
public void testKt1978() throws Exception {
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.resolve.calls.components
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.resolve.calls.inference.components.ConstraintInjector
import org.jetbrains.kotlin.resolve.calls.model.KotlinCallArgument
@@ -57,10 +58,15 @@ class NewOverloadingConflictResolver(
companion object {
private fun createFlatSignature(candidate: ResolutionCandidate): FlatSignature<ResolutionCandidate> {
val resolvedCall = candidate.resolvedCall
val originalDescriptor = resolvedCall.candidateDescriptor.original
val originalValueParameters = originalDescriptor.valueParameters
val isEliminationAmbiguitiesWithExternalTypeParametersEnabled =
candidate.callComponents.languageVersionSettings.supportsFeature(LanguageFeature.EliminateAmbiguitiesWithExternalTypeParameters)
val descriptor = if (isEliminationAmbiguitiesWithExternalTypeParametersEnabled) {
resolvedCall.candidateDescriptor
} else {
resolvedCall.candidateDescriptor.original
}
val valueParameters = descriptor.valueParameters
var numDefaults = 0
val valueArgumentToParameterType = HashMap<KotlinCallArgument, KotlinType>()
@@ -68,16 +74,17 @@ class NewOverloadingConflictResolver(
if (resolvedValueArgument is ResolvedCallArgument.DefaultArgument) {
numDefaults++
} else {
val originalValueParameter = originalValueParameters[valueParameter.index]
val originalValueParameter = valueParameters[valueParameter.index]
for (valueArgument in resolvedValueArgument.arguments) {
valueArgumentToParameterType[valueArgument] = candidate.resolvedCall.argumentsWithConversion[valueArgument]?.convertedTypeByOriginParameter ?:
valueArgument.getExpectedType(originalValueParameter, candidate.callComponents.languageVersionSettings)
valueArgumentToParameterType[valueArgument] =
candidate.resolvedCall.argumentsWithConversion[valueArgument]?.convertedTypeByOriginParameter
?: valueArgument.getExpectedType(originalValueParameter, candidate.callComponents.languageVersionSettings)
}
}
}
return FlatSignature.create(candidate,
originalDescriptor,
descriptor,
numDefaults,
resolvedCall.atom.argumentsInParenthesis.map { valueArgumentToParameterType[it] } +
listOfNotNull(resolvedCall.atom.externalArgument?.let { valueArgumentToParameterType[it] })
+125
View File
@@ -0,0 +1,125 @@
// !LANGUAGE: +EliminateAmbiguitiesWithExternalTypeParameters
// WITH_RUNTIME
class AllCollection<T> {
fun addAll1(vararg values: T) = "NOK"
fun addAll1(values: Iterable<out T>) = "OK"
fun addAll2(vararg values: Any) = "NOK"
fun addAll2(values: Any) = "OK"
fun addAll3(vararg values: T) = "NOK"
fun addAll3(values: T) = "OK"
fun addAll4(vararg values: T) = "NOK"
fun addAll4(values: Collection<T>) = "OK"
fun addAll5(vararg values: Any) = "NOK"
fun addAll5(values: Collection<T>) = "OK"
fun addAll6(vararg values: Collection<T>) = "NOK"
fun addAll6(values: Collection<T>) = "OK"
fun addAll7(vararg values: Collection<T>) = "OK"
fun addAll7(values: T) = "NOK"
fun addAll8(vararg values: Collection<T>) = "OK"
fun addAll8(values: Any) = "NOK"
fun addAll9(vararg values: Collection<String>) = "OK"
fun addAll9(values: Any) = "NOK"
fun addAll10(vararg values: Collection<String>) = "OK"
fun addAll10(values: T) = "NOK"
fun addAll11(vararg values: Collection<String>) = "NOK"
fun addAll11(values: Collection<String>) = "OK"
fun addAll12(vararg values: Collection<String>) = "OK"
fun addAll12(values: Collection<T>) = "NOK"
fun addAll13(vararg values: Any) = "NOK"
fun addAll13(values: Collection<String>) = "OK"
fun addAll14(vararg values: T) = "NOK"
fun addAll14(values: Collection<String>) = "OK"
fun addAll15(vararg values: Collection<T>) = "NOK"
fun addAll15(values: Collection<String>) = "OK"
fun addAll16(vararg values: Collection<String>) = "NOK"
fun addAll16(values: Collection<String>, values2: Collection<String>) = "OK"
fun addAll17(vararg values: Collection<String>) = "OK"
fun addAll17(values: Collection<T>, values2: Collection<T>) = "NOK"
fun addAll18(vararg values: Any) = "NOK"
fun addAll18(values: Collection<String>, values2: Collection<String>) = "OK"
fun addAll19(vararg values: T) = "NOK"
fun addAll19(values: Collection<String>, values2: Collection<String>) = "OK"
fun addAll20(vararg values: Collection<T>) = "NOK"
fun addAll20(values: Collection<String>, values2: Collection<String>) = "OK"
fun addAll21(vararg values: Collection<T>) = "NOK"
fun addAll21(values: Collection<String>, values2: Collection<String>) = "OK"
// KT-49620
fun addAll22(vararg values: Collection<String>) = "OK"
fun addAll22(values: Any, values2: Any) = "NOK"
fun addAll23(vararg values: Collection<String>) = "OK"
fun addAll23(values: T, values2: T) = "NOK"
fun addAll24(values: Collection<T>, vararg values2: Collection<T>) = "NOK"
fun addAll24(values: Collection<String>, values2: Collection<String>) = "OK"
// KT-49620
fun addAll25(values: Collection<String>, vararg values2: Collection<String>) = "OK"
fun addAll25(values: Any, values2: Any) = "NOK"
fun addAll26(values: Collection<String>, vararg values2: Collection<String>) = "OK"
fun addAll26(values: T, values2: T) = "NOK"
// KT-49534
fun <K, T> addAll28(vararg values: T, values2: K) = "NOK" // 1
fun <K, T> addAll28(values: K, vararg values2: T) = "OK" // 2
}
fun box(): String {
val c: AllCollection<Any?> = AllCollection()
val x1 = c.addAll1(listOf(""))
val x2 = c.addAll2(listOf(""))
val x3 = c.addAll3(listOf(""))
val x4 = c.addAll4(listOf(""))
val x5 = c.addAll5(listOf(""))
val x6 = c.addAll6(listOf(""))
val x7 = c.addAll7(listOf(""))
val x8 = c.addAll8(listOf(""))
val x9 = c.addAll9(listOf(""))
val x10 = c.addAll10(listOf(""))
val x11 = c.addAll11(listOf(""))
val x12 = c.addAll12(listOf(""))
val x13 = c.addAll13(listOf(""))
val x14 = c.addAll14(listOf(""))
val x15 = c.addAll15(listOf(""))
val x16 = c.addAll16(listOf(""), listOf(""))
val x17 = c.addAll17(listOf(""), listOf(""))
val x18 = c.addAll18(listOf(""), listOf(""))
val x19 = c.addAll19(listOf(""), listOf(""))
val x20 = c.addAll20(listOf(""), listOf(""))
val x21 = c.addAll21(listOf(""), listOf(""))
val x22 = c.addAll22(listOf(""), listOf(""))
val x23 = c.addAll23(listOf(""), listOf(""))
val x24 = c.addAll24(listOf(""), listOf(""))
val x25 = c.addAll25(listOf(""), listOf(""))
val x26 = c.addAll26(listOf(""), listOf(""))
val all = arrayOf(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26)
return if (all.all { it == "OK" }) "OK" else "NOK"
}
@@ -0,0 +1,134 @@
// WITH_RUNTIME
class AllCollection2<T> {
fun <K, T> addAll(vararg values: T, values2: Array<K>) = "OK" // 1
fun <K, T> addAll(values: Array<K>, vararg values2: T) = 1 // 2
}
fun main(c: AllCollection2<Any?>) {
// KT-49620
<!DEBUG_INFO_EXPRESSION_TYPE("ERROR CLASS: Ambiguity: addAll, [/AllCollection2.addAll, /AllCollection2.addAll]")!>c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>addAll<!>(arrayOf(""), values2 = arrayOf(""))<!>
}
class AllCollection<T> {
fun addAll1(vararg values: T) = "NOK"
fun addAll1(values: Iterable<T>) = "OK"
fun addAll2(vararg values: Any) = "NOK"
fun addAll2(values: Any) = "OK"
fun addAll3(vararg values: T) = "NOK"
fun addAll3(values: T) = "OK"
fun addAll4(vararg values: T) = "NOK"
fun addAll4(values: Collection<T>) = "OK"
fun addAll5(vararg values: Any) = "NOK"
fun addAll5(values: Collection<T>) = "OK"
fun addAll6(vararg values: Collection<T>) = "NOK"
fun addAll6(values: Collection<T>) = "OK"
fun addAll7(vararg values: Collection<T>) = "OK"
fun addAll7(values: T) = "NOK"
fun addAll8(vararg values: Collection<T>) = "OK"
fun addAll8(values: Any) = "NOK"
fun addAll9(vararg values: Collection<String>) = "OK"
fun addAll9(values: Any) = "NOK"
fun addAll10(vararg values: Collection<String>) = "OK"
fun addAll10(values: T) = "NOK"
fun addAll11(vararg values: Collection<String>) = "NOK"
fun addAll11(values: Collection<String>) = "OK"
fun addAll12(vararg values: Collection<String>) = "OK"
fun addAll12(values: Collection<T>) = "NOK"
fun addAll13(vararg values: Any) = "NOK"
fun addAll13(values: Collection<String>) = "OK"
fun addAll14(vararg values: T) = "NOK"
fun addAll14(values: Collection<String>) = "OK"
fun addAll15(vararg values: Collection<T>) = "NOK"
fun addAll15(values: Collection<String>) = "OK"
fun addAll16(vararg values: Collection<String>) = "NOK"
fun addAll16(values: Collection<String>, values2: Collection<String>) = "OK"
fun addAll17(vararg values: Collection<String>) = "OK"
fun addAll17(values: Collection<T>, values2: Collection<T>) = "NOK"
fun addAll18(vararg values: Any) = "NOK"
fun addAll18(values: Collection<String>, values2: Collection<String>) = "OK"
fun addAll19(vararg values: T) = "NOK"
fun addAll19(values: Collection<String>, values2: Collection<String>) = "OK"
fun addAll20(vararg values: Collection<T>) = "NOK"
fun addAll20(values: Collection<String>, values2: Collection<String>) = "OK"
fun addAll21(vararg values: Collection<T>) = "NOK"
fun addAll21(values: Collection<String>, values2: Collection<String>) = "OK"
// KT-49620
fun addAll22(vararg values: Collection<String>) = "OK"
fun addAll22(values: Any, values2: Any) = "NOK"
fun addAll23(vararg values: Collection<String>) = "OK"
fun addAll23(values: T, values2: T) = "NOK"
fun addAll24(values: Collection<T>, vararg values2: Collection<T>) = "NOK"
fun addAll24(values: Collection<String>, values2: Collection<String>) = "OK"
// KT-49620
fun addAll25(values: Collection<String>, vararg values2: Collection<String>) = "OK"
fun addAll25(values: Any, values2: Any) = "NOK"
fun addAll26(values: Collection<String>, vararg values2: Collection<String>) = "OK"
fun addAll26(values: T, values2: T) = "NOK"
// KT-49534
fun <K, T> addAll28(vararg values: T, values2: K) = "NOK" // 1
fun <K, T> addAll28(values: K, vararg values2: T) = "OK" // 2
}
fun box(): String {
val c: AllCollection<Any?> = AllCollection()
val x1 = c.addAll1(listOf(""))
val x2 = c.addAll2(listOf(""))
val x3 = c.addAll3(listOf(""))
val x4 = c.addAll4(listOf(""))
val x5 = c.addAll5(listOf(""))
val x6 = c.addAll6(listOf(""))
val x7 = c.addAll7(listOf(""))
val x8 = c.addAll8(listOf(""))
val x9 = c.addAll9(listOf(""))
val x10 = c.addAll10(listOf(""))
val x11 = c.addAll11(listOf(""))
val x12 = c.addAll12(listOf(""))
val x13 = c.addAll13(listOf(""))
val x14 = c.addAll14(listOf(""))
val x15 = c.addAll15(listOf(""))
val x16 = c.addAll16(listOf(""), listOf(""))
val x17 = c.addAll17(listOf(""), listOf(""))
val x18 = c.addAll18(listOf(""), listOf(""))
val x19 = c.addAll19(listOf(""), listOf(""))
val x20 = c.addAll20(listOf(""), listOf(""))
val x21 = c.addAll21(listOf(""), listOf(""))
val x22 = c.addAll22(listOf(""), listOf(""))
val x23 = c.addAll23(listOf(""), listOf(""))
val x24 = c.addAll24(listOf(""), listOf(""))
val x25 = c.addAll25(listOf(""), listOf(""))
val x26 = c.addAll26(listOf(""), listOf(""))
val all = arrayOf(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26)
return if (all.all { it == "OK" }) "OK" else "NOK"
}
+134
View File
@@ -0,0 +1,134 @@
// WITH_RUNTIME
class AllCollection2<T> {
fun <K, T> addAll(vararg values: T, values2: Array<K>) = "OK" // 1
fun <K, T> addAll(values: Array<K>, vararg values2: T) = 1 // 2
}
fun main(c: AllCollection2<Any?>) {
// KT-49620
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Int")!>c.addAll(arrayOf(""), values2 = arrayOf(""))<!>
}
class AllCollection<T> {
fun addAll1(vararg values: T) = "NOK"
fun addAll1(values: Iterable<T>) = "OK"
fun addAll2(vararg values: Any) = "NOK"
fun addAll2(values: Any) = "OK"
fun addAll3(vararg values: T) = "NOK"
fun addAll3(values: T) = "OK"
fun addAll4(vararg values: T) = "NOK"
fun addAll4(values: Collection<T>) = "OK"
fun addAll5(vararg values: Any) = "NOK"
fun addAll5(values: Collection<T>) = "OK"
fun addAll6(vararg values: Collection<T>) = "NOK"
fun addAll6(values: Collection<T>) = "OK"
fun addAll7(vararg values: Collection<T>) = "OK"
fun addAll7(values: T) = "NOK"
fun addAll8(vararg values: Collection<T>) = "OK"
fun addAll8(values: Any) = "NOK"
fun addAll9(vararg values: Collection<String>) = "OK"
fun addAll9(values: Any) = "NOK"
fun addAll10(vararg values: Collection<String>) = "OK"
fun addAll10(values: T) = "NOK"
fun addAll11(vararg values: Collection<String>) = "NOK"
fun addAll11(values: Collection<String>) = "OK"
fun addAll12(vararg values: Collection<String>) = "OK"
fun addAll12(values: Collection<T>) = "NOK"
fun addAll13(vararg values: Any) = "NOK"
fun addAll13(values: Collection<String>) = "OK"
fun addAll14(vararg values: T) = "NOK"
fun addAll14(values: Collection<String>) = "OK"
fun addAll15(vararg values: Collection<T>) = "NOK"
fun addAll15(values: Collection<String>) = "OK"
fun addAll16(vararg values: Collection<String>) = "NOK"
fun addAll16(values: Collection<String>, values2: Collection<String>) = "OK"
fun addAll17(vararg values: Collection<String>) = "OK"
fun addAll17(values: Collection<T>, values2: Collection<T>) = "NOK"
fun addAll18(vararg values: Any) = "NOK"
fun addAll18(values: Collection<String>, values2: Collection<String>) = "OK"
fun addAll19(vararg values: T) = "NOK"
fun addAll19(values: Collection<String>, values2: Collection<String>) = "OK"
fun addAll20(vararg values: Collection<T>) = "NOK"
fun addAll20(values: Collection<String>, values2: Collection<String>) = "OK"
fun addAll21(vararg values: Collection<T>) = "NOK"
fun addAll21(values: Collection<String>, values2: Collection<String>) = "OK"
// KT-49620
fun addAll22(vararg values: Collection<String>) = "OK"
fun addAll22(values: Any, values2: Any) = "NOK"
fun addAll23(vararg values: Collection<String>) = "OK"
fun addAll23(values: T, values2: T) = "NOK"
fun addAll24(values: Collection<T>, vararg values2: Collection<T>) = "NOK"
fun addAll24(values: Collection<String>, values2: Collection<String>) = "OK"
// KT-49620
fun addAll25(values: Collection<String>, vararg values2: Collection<String>) = "OK"
fun addAll25(values: Any, values2: Any) = "NOK"
fun addAll26(values: Collection<String>, vararg values2: Collection<String>) = "OK"
fun addAll26(values: T, values2: T) = "NOK"
// KT-49534
fun <K, T> addAll28(vararg values: T, values2: K) = "NOK" // 1
fun <K, T> addAll28(values: K, vararg values2: T) = "OK" // 2
}
fun box(): String {
val c: AllCollection<Any?> = AllCollection()
val x1 = c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>addAll1<!>(listOf(""))
val x2 = c.addAll2(listOf(""))
val x3 = c.addAll3(listOf(""))
val x4 = c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>addAll4<!>(listOf(""))
val x5 = c.addAll5(listOf(""))
val x6 = c.addAll6(listOf(""))
val x7 = c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>addAll7<!>(listOf(""))
val x8 = c.addAll8(listOf(""))
val x9 = c.addAll9(listOf(""))
val x10 = c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>addAll10<!>(listOf(""))
val x11 = c.addAll11(listOf(""))
val x12 = c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>addAll12<!>(listOf(""))
val x13 = c.addAll13(listOf(""))
val x14 = c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>addAll14<!>(listOf(""))
val x15 = c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>addAll15<!>(listOf(""))
val x16 = c.addAll16(listOf(""), listOf(""))
val x17 = c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>addAll17<!>(listOf(""), listOf(""))
val x18 = c.addAll18(listOf(""), listOf(""))
val x19 = c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>addAll19<!>(listOf(""), listOf(""))
val x20 = c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>addAll20<!>(listOf(""), listOf(""))
val x21 = c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>addAll21<!>(listOf(""), listOf(""))
val x22 = c.addAll22(listOf(""), listOf(""))
val x23 = c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>addAll23<!>(listOf(""), listOf(""))
val x24 = c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>addAll24<!>(listOf(""), listOf(""))
val x25 = c.addAll25(listOf(""), listOf(""))
val x26 = c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>addAll26<!>(listOf(""), listOf(""))
val all = arrayOf(<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x1<!>, x2, x3, <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x4<!>, x5, x6, <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x7<!>, x8, x9, <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x10<!>, x11, <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x12<!>, x13, <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x14<!>, <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x15<!>, x16, <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x17<!>, x18, <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x19<!>, <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x20<!>, <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x21<!>, x22, <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x23<!>, <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x24<!>, x25, <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x26<!>)
return if (all.all { it == "OK" }) "OK" else "NOK"
}
+75
View File
@@ -0,0 +1,75 @@
package
public fun box(): kotlin.String
public fun main(/*0*/ c: AllCollection2<kotlin.Any?>): kotlin.Unit
public final class AllCollection</*0*/ T> {
public constructor AllCollection</*0*/ T>()
public final fun addAll1(/*0*/ vararg values: T /*kotlin.Array<out T>*/): kotlin.String
public final fun addAll1(/*0*/ values: kotlin.collections.Iterable<T>): kotlin.String
public final fun addAll10(/*0*/ values: T): kotlin.String
public final fun addAll10(/*0*/ vararg values: kotlin.collections.Collection<kotlin.String> /*kotlin.Array<out kotlin.collections.Collection<kotlin.String>>*/): kotlin.String
public final fun addAll11(/*0*/ vararg values: kotlin.collections.Collection<kotlin.String> /*kotlin.Array<out kotlin.collections.Collection<kotlin.String>>*/): kotlin.String
public final fun addAll11(/*0*/ values: kotlin.collections.Collection<kotlin.String>): kotlin.String
public final fun addAll12(/*0*/ vararg values: kotlin.collections.Collection<kotlin.String> /*kotlin.Array<out kotlin.collections.Collection<kotlin.String>>*/): kotlin.String
public final fun addAll12(/*0*/ values: kotlin.collections.Collection<T>): kotlin.String
public final fun addAll13(/*0*/ vararg values: kotlin.Any /*kotlin.Array<out kotlin.Any>*/): kotlin.String
public final fun addAll13(/*0*/ values: kotlin.collections.Collection<kotlin.String>): kotlin.String
public final fun addAll14(/*0*/ vararg values: T /*kotlin.Array<out T>*/): kotlin.String
public final fun addAll14(/*0*/ values: kotlin.collections.Collection<kotlin.String>): kotlin.String
public final fun addAll15(/*0*/ vararg values: kotlin.collections.Collection<T> /*kotlin.Array<out kotlin.collections.Collection<T>>*/): kotlin.String
public final fun addAll15(/*0*/ values: kotlin.collections.Collection<kotlin.String>): kotlin.String
public final fun addAll16(/*0*/ vararg values: kotlin.collections.Collection<kotlin.String> /*kotlin.Array<out kotlin.collections.Collection<kotlin.String>>*/): kotlin.String
public final fun addAll16(/*0*/ values: kotlin.collections.Collection<kotlin.String>, /*1*/ values2: kotlin.collections.Collection<kotlin.String>): kotlin.String
public final fun addAll17(/*0*/ vararg values: kotlin.collections.Collection<kotlin.String> /*kotlin.Array<out kotlin.collections.Collection<kotlin.String>>*/): kotlin.String
public final fun addAll17(/*0*/ values: kotlin.collections.Collection<T>, /*1*/ values2: kotlin.collections.Collection<T>): kotlin.String
public final fun addAll18(/*0*/ vararg values: kotlin.Any /*kotlin.Array<out kotlin.Any>*/): kotlin.String
public final fun addAll18(/*0*/ values: kotlin.collections.Collection<kotlin.String>, /*1*/ values2: kotlin.collections.Collection<kotlin.String>): kotlin.String
public final fun addAll19(/*0*/ vararg values: T /*kotlin.Array<out T>*/): kotlin.String
public final fun addAll19(/*0*/ values: kotlin.collections.Collection<kotlin.String>, /*1*/ values2: kotlin.collections.Collection<kotlin.String>): kotlin.String
public final fun addAll2(/*0*/ values: kotlin.Any): kotlin.String
public final fun addAll2(/*0*/ vararg values: kotlin.Any /*kotlin.Array<out kotlin.Any>*/): kotlin.String
public final fun addAll20(/*0*/ vararg values: kotlin.collections.Collection<T> /*kotlin.Array<out kotlin.collections.Collection<T>>*/): kotlin.String
public final fun addAll20(/*0*/ values: kotlin.collections.Collection<kotlin.String>, /*1*/ values2: kotlin.collections.Collection<kotlin.String>): kotlin.String
public final fun addAll21(/*0*/ vararg values: kotlin.collections.Collection<T> /*kotlin.Array<out kotlin.collections.Collection<T>>*/): kotlin.String
public final fun addAll21(/*0*/ values: kotlin.collections.Collection<kotlin.String>, /*1*/ values2: kotlin.collections.Collection<kotlin.String>): kotlin.String
public final fun addAll22(/*0*/ values: kotlin.Any, /*1*/ values2: kotlin.Any): kotlin.String
public final fun addAll22(/*0*/ vararg values: kotlin.collections.Collection<kotlin.String> /*kotlin.Array<out kotlin.collections.Collection<kotlin.String>>*/): kotlin.String
public final fun addAll23(/*0*/ values: T, /*1*/ values2: T): kotlin.String
public final fun addAll23(/*0*/ vararg values: kotlin.collections.Collection<kotlin.String> /*kotlin.Array<out kotlin.collections.Collection<kotlin.String>>*/): kotlin.String
public final fun addAll24(/*0*/ values: kotlin.collections.Collection<T>, /*1*/ vararg values2: kotlin.collections.Collection<T> /*kotlin.Array<out kotlin.collections.Collection<T>>*/): kotlin.String
public final fun addAll24(/*0*/ values: kotlin.collections.Collection<kotlin.String>, /*1*/ values2: kotlin.collections.Collection<kotlin.String>): kotlin.String
public final fun addAll25(/*0*/ values: kotlin.Any, /*1*/ values2: kotlin.Any): kotlin.String
public final fun addAll25(/*0*/ values: kotlin.collections.Collection<kotlin.String>, /*1*/ vararg values2: kotlin.collections.Collection<kotlin.String> /*kotlin.Array<out kotlin.collections.Collection<kotlin.String>>*/): kotlin.String
public final fun addAll26(/*0*/ values: T, /*1*/ values2: T): kotlin.String
public final fun addAll26(/*0*/ values: kotlin.collections.Collection<kotlin.String>, /*1*/ vararg values2: kotlin.collections.Collection<kotlin.String> /*kotlin.Array<out kotlin.collections.Collection<kotlin.String>>*/): kotlin.String
public final fun </*0*/ K, /*1*/ T> addAll28(/*0*/ values: K, /*1*/ vararg values2: T /*kotlin.Array<out T>*/): kotlin.String
public final fun </*0*/ K, /*1*/ T> addAll28(/*0*/ vararg values: T /*kotlin.Array<out T>*/, /*1*/ values2: K): kotlin.String
public final fun addAll3(/*0*/ values: T): kotlin.String
public final fun addAll3(/*0*/ vararg values: T /*kotlin.Array<out T>*/): kotlin.String
public final fun addAll4(/*0*/ vararg values: T /*kotlin.Array<out T>*/): kotlin.String
public final fun addAll4(/*0*/ values: kotlin.collections.Collection<T>): kotlin.String
public final fun addAll5(/*0*/ vararg values: kotlin.Any /*kotlin.Array<out kotlin.Any>*/): kotlin.String
public final fun addAll5(/*0*/ values: kotlin.collections.Collection<T>): kotlin.String
public final fun addAll6(/*0*/ vararg values: kotlin.collections.Collection<T> /*kotlin.Array<out kotlin.collections.Collection<T>>*/): kotlin.String
public final fun addAll6(/*0*/ values: kotlin.collections.Collection<T>): kotlin.String
public final fun addAll7(/*0*/ values: T): kotlin.String
public final fun addAll7(/*0*/ vararg values: kotlin.collections.Collection<T> /*kotlin.Array<out kotlin.collections.Collection<T>>*/): kotlin.String
public final fun addAll8(/*0*/ values: kotlin.Any): kotlin.String
public final fun addAll8(/*0*/ vararg values: kotlin.collections.Collection<T> /*kotlin.Array<out kotlin.collections.Collection<T>>*/): kotlin.String
public final fun addAll9(/*0*/ values: kotlin.Any): kotlin.String
public final fun addAll9(/*0*/ vararg values: kotlin.collections.Collection<kotlin.String> /*kotlin.Array<out kotlin.collections.Collection<kotlin.String>>*/): kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class AllCollection2</*0*/ T> {
public constructor AllCollection2</*0*/ T>()
public final fun </*0*/ K, /*1*/ T> addAll(/*0*/ values: kotlin.Array<K>, /*1*/ vararg values2: T /*kotlin.Array<out T>*/): kotlin.Int
public final fun </*0*/ K, /*1*/ T> addAll(/*0*/ vararg values: T /*kotlin.Array<out T>*/, /*1*/ values2: kotlin.Array<K>): kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,12 @@
// !LANGUAGE: +EliminateAmbiguitiesWithExternalTypeParameters
// WITH_RUNTIME
class AllCollection<T> {
fun <K, T> addAll(vararg values: T, values2: Array<K>) = "OK" // 1
fun <K, T> addAll(values: Array<K>, vararg values2: T) = 1 // 2
}
fun main(c: AllCollection<Any?>) {
// KT-49620
c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>addAll<!>(arrayOf(""), values2 = arrayOf(""))
}
@@ -0,0 +1,12 @@
// !LANGUAGE: +EliminateAmbiguitiesWithExternalTypeParameters
// WITH_RUNTIME
class AllCollection<T> {
fun <K, T> addAll(vararg values: T, values2: Array<K>) = "OK" // 1
fun <K, T> addAll(values: Array<K>, vararg values2: T) = 1 // 2
}
fun main(c: AllCollection<Any?>) {
// KT-49620
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Int")!>c.addAll(arrayOf(""), values2 = arrayOf(""))<!>
}
@@ -0,0 +1,12 @@
package
public fun main(/*0*/ c: AllCollection<kotlin.Any?>): kotlin.Unit
public final class AllCollection</*0*/ T> {
public constructor AllCollection</*0*/ T>()
public final fun </*0*/ K, /*1*/ T> addAll(/*0*/ values: kotlin.Array<K>, /*1*/ vararg values2: T /*kotlin.Array<out T>*/): kotlin.Int
public final fun </*0*/ K, /*1*/ T> addAll(/*0*/ vararg values: T /*kotlin.Array<out T>*/, /*1*/ values2: kotlin.Array<K>): kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -32029,6 +32029,18 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
runTest("compiler/testData/diagnostics/tests/varargs/inferredNullableArrayAsVararg.kt");
}
@Test
@TestMetadata("kt10926.kt")
public void testKt10926() throws Exception {
runTest("compiler/testData/diagnostics/tests/varargs/kt10926.kt");
}
@Test
@TestMetadata("kt10926EnabledFeature.kt")
public void testKt10926EnabledFeature() throws Exception {
runTest("compiler/testData/diagnostics/tests/varargs/kt10926EnabledFeature.kt");
}
@Test
@TestMetadata("kt1781.kt")
public void testKt1781() throws Exception {
@@ -44108,6 +44108,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/vararg/evaluationOrder.kt");
}
@Test
@TestMetadata("kt10926.kt")
public void testKt10926() throws Exception {
runTest("compiler/testData/codegen/box/vararg/kt10926.kt");
}
@Test
@TestMetadata("kt1978.kt")
public void testKt1978() throws Exception {
@@ -44300,6 +44300,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/vararg/evaluationOrder.kt");
}
@Test
@TestMetadata("kt10926.kt")
public void testKt10926() throws Exception {
runTest("compiler/testData/codegen/box/vararg/kt10926.kt");
}
@Test
@TestMetadata("kt1978.kt")
public void testKt1978() throws Exception {
@@ -35649,6 +35649,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/vararg/evaluationOrder.kt");
}
@TestMetadata("kt10926.kt")
public void testKt10926() throws Exception {
runTest("compiler/testData/codegen/box/vararg/kt10926.kt");
}
@TestMetadata("kt1978.kt")
public void testKt1978() throws Exception {
runTest("compiler/testData/codegen/box/vararg/kt1978.kt");
@@ -239,6 +239,7 @@ enum class LanguageFeature(
ForbidExposingTypesInPrimaryConstructorProperties(KOTLIN_1_7, kind = BUG_FIX),
ProhibitAccessToEnumCompanionMembersInEnumConstructorCall(KOTLIN_1_7, kind = BUG_FIX),
PartiallySpecifiedTypeArguments(KOTLIN_1_7),
EliminateAmbiguitiesWithExternalTypeParameters(KOTLIN_1_7),
// 1.8
@@ -29498,6 +29498,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS, true);
}
@Test
@TestMetadata("kt17765.kt")
public void testKt17765() throws Exception {
runTest("compiler/testData/codegen/box/sam/kt17765.kt");
}
@Nested
@TestMetadata("compiler/testData/codegen/box/sam/adapters")
@TestDataPath("$PROJECT_ROOT")
@@ -29600,6 +29600,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
}
@Test
@TestMetadata("kt17765.kt")
public void testKt17765() throws Exception {
runTest("compiler/testData/codegen/box/sam/kt17765.kt");
}
@Nested
@TestMetadata("compiler/testData/codegen/box/sam/adapters")
@TestDataPath("$PROJECT_ROOT")
@@ -24527,6 +24527,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true);
}
@TestMetadata("kt17765.kt")
public void testKt17765() throws Exception {
runTest("compiler/testData/codegen/box/sam/kt17765.kt");
}
@TestMetadata("compiler/testData/codegen/box/sam/adapters")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)