From 82f1eafa0bb5fb2551e32277c3a4f0fcbe54b8d2 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Thu, 9 Jul 2015 12:43:32 +0300 Subject: [PATCH] No synthetic properties of type Unit --- .../jetbrains/kotlin/synthetic/SyntheticExtensionsScope.kt | 2 ++ .../diagnostics/tests/syntheticExtensions/FalseGetters.kt | 6 +++++- .../diagnostics/tests/syntheticExtensions/FalseGetters.txt | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) 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 2ae729be32d..c3a1f4e0d34 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/SyntheticExtensionsScope.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/SyntheticExtensionsScope.kt @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.resolve.lazy.FileScopeProvider import org.jetbrains.kotlin.resolve.scopes.JetScope import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.types.JetType +import org.jetbrains.kotlin.types.typeUtil.isUnit import org.jetbrains.kotlin.types.typeUtil.makeNotNullable import org.jetbrains.kotlin.utils.addIfNotNull import java.util.* @@ -69,6 +70,7 @@ class SyntheticExtensionsScope(storageManager: StorageManager) : JetScope by Jet return descriptor.getValueParameters().isEmpty() && descriptor.getTypeParameters().isEmpty() && descriptor.getVisibility() == Visibilities.PUBLIC //TODO: what about protected and package-local? + && !(descriptor.getReturnType()?.isUnit() ?: true) } private fun isGoodSetMethod(descriptor: FunctionDescriptor, propertyType: JetType): Boolean { diff --git a/compiler/testData/diagnostics/tests/syntheticExtensions/FalseGetters.kt b/compiler/testData/diagnostics/tests/syntheticExtensions/FalseGetters.kt index c822e42778b..f0733cc1564 100644 --- a/compiler/testData/diagnostics/tests/syntheticExtensions/FalseGetters.kt +++ b/compiler/testData/diagnostics/tests/syntheticExtensions/FalseGetters.kt @@ -3,12 +3,16 @@ fun foo(javaClass: JavaClass) { javaClass.something1 javaClass.something2 javaClass.somethingStatic + javaClass.somethingVoid } // FILE: JavaClass.java public class JavaClass { public int getSomething1(int p) { return p; } + public T getSomething2() { return null; } public static int getSomethingStatic() { return 1; } -} \ No newline at end of file + + public void getSomethingVoid() { } +} diff --git a/compiler/testData/diagnostics/tests/syntheticExtensions/FalseGetters.txt b/compiler/testData/diagnostics/tests/syntheticExtensions/FalseGetters.txt index e4ef1a33e60..0b48f1f6f53 100644 --- a/compiler/testData/diagnostics/tests/syntheticExtensions/FalseGetters.txt +++ b/compiler/testData/diagnostics/tests/syntheticExtensions/FalseGetters.txt @@ -7,6 +7,7 @@ public open class JavaClass { public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open fun getSomething1(/*0*/ p: kotlin.Int): kotlin.Int public open fun getSomething2(): T! + public open fun getSomethingVoid(): kotlin.Unit public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String