diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/SyntheticExtensionsScope.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/SyntheticExtensionsScope.kt index c3a1f4e0d34..ab7b91d3933 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/SyntheticExtensionsScope.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/SyntheticExtensionsScope.kt @@ -74,7 +74,9 @@ class SyntheticExtensionsScope(storageManager: StorageManager) : JetScope by Jet } private fun isGoodSetMethod(descriptor: FunctionDescriptor, propertyType: JetType): Boolean { - return descriptor.getValueParameters().singleOrNull()?.getType() == propertyType + val parameter = descriptor.getValueParameters().singleOrNull() ?: return false + return parameter.getType() == propertyType + && parameter.getVarargElementType() == null && descriptor.getTypeParameters().isEmpty() && descriptor.getReturnType()?.let { KotlinBuiltIns.isUnit(it) } ?: false && descriptor.getVisibility() == Visibilities.PUBLIC diff --git a/compiler/testData/diagnostics/tests/syntheticExtensions/FalseSetters.kt b/compiler/testData/diagnostics/tests/syntheticExtensions/FalseSetters.kt index d82f34ef121..1c46a2c1073 100644 --- a/compiler/testData/diagnostics/tests/syntheticExtensions/FalseSetters.kt +++ b/compiler/testData/diagnostics/tests/syntheticExtensions/FalseSetters.kt @@ -5,6 +5,7 @@ fun foo(javaClass: JavaClass) { javaClass.something3++ javaClass.something4++ javaClass.something5++ + javaClass.something6 = null } // FILE: JavaClass.java @@ -23,4 +24,7 @@ public class JavaClass { public int getSomething5() { return 1; } public static void setSomething5(int value) { } + + public int[] getSomething6() { return null; } + public void setSomething6(int... value) { } } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/syntheticExtensions/FalseSetters.txt b/compiler/testData/diagnostics/tests/syntheticExtensions/FalseSetters.txt index 8b6a8a97784..9493dc52099 100644 --- a/compiler/testData/diagnostics/tests/syntheticExtensions/FalseSetters.txt +++ b/compiler/testData/diagnostics/tests/syntheticExtensions/FalseSetters.txt @@ -10,11 +10,13 @@ public open class JavaClass { public open fun getSomething3(): kotlin.Int public open fun getSomething4(): kotlin.Int public open fun getSomething5(): kotlin.Int + public open fun getSomething6(): kotlin.IntArray! public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open fun setSomething1(/*0*/ value: kotlin.Int, /*1*/ c: kotlin.Char): kotlin.Unit public open fun setSomething2(/*0*/ value: kotlin.String!): kotlin.Unit public open fun setSomething3(/*0*/ value: kotlin.Int): kotlin.Int public open fun setSomething4(/*0*/ value: kotlin.Int): kotlin.Unit + public open fun setSomething6(/*0*/ vararg value: kotlin.Int /*kotlin.IntArray!*/): kotlin.Unit public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String // Static members