[FE 1.0] Eliminate resolution ambiguity with external type parameters
^KT-10926 Fixed
This commit is contained in:
committed by
teamcityserver
parent
31668ed40d
commit
a5c6d370dd
+18
@@ -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 {
|
||||
|
||||
+12
@@ -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 {
|
||||
|
||||
+12
@@ -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 {
|
||||
|
||||
+6
@@ -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 {
|
||||
|
||||
+14
-7
@@ -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
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
Generated
+12
@@ -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 {
|
||||
|
||||
+6
@@ -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 {
|
||||
|
||||
+6
@@ -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 {
|
||||
|
||||
+5
@@ -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
|
||||
|
||||
|
||||
+6
@@ -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")
|
||||
|
||||
+6
@@ -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")
|
||||
|
||||
+5
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user