From 5cc12b49fcaf828c4bf4279293b1c8a1f61a114f Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Tue, 6 Oct 2020 17:12:23 +0300 Subject: [PATCH] Hide java.lang.CharSequence::isEmpty from Kotlin built-in class Also, prohibit using it as a synthetic property ^KT-42467 In progress --- .../kotlin/synthetic/JavaSyntheticPropertiesScope.kt | 2 ++ .../builtins/AdditionalBuiltInsMembersSignatureListsTest.kt | 3 ++- .../jetbrains/kotlin/builtins/jvm/JvmBuiltInsSignatures.kt | 4 +++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/JavaSyntheticPropertiesScope.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/JavaSyntheticPropertiesScope.kt index 3330bbe05ea..138ab8ef42d 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/JavaSyntheticPropertiesScope.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/JavaSyntheticPropertiesScope.kt @@ -162,6 +162,7 @@ class JavaSyntheticPropertiesScope(storageManager: StorageManager, private val l return descriptor.valueParameters.isEmpty() && descriptor.typeParameters.isEmpty() && descriptor.visibility.isVisibleOutside() + && !descriptor.isHiddenForResolutionEverywhereBesideSupercalls } private fun isGoodSetMethod(descriptor: FunctionDescriptor, getMethod: FunctionDescriptor): Boolean { @@ -178,6 +179,7 @@ class JavaSyntheticPropertiesScope(storageManager: StorageManager, private val l return parameter.varargElementType == null && descriptor.typeParameters.isEmpty() && descriptor.visibility.isVisibleOutside() + && !descriptor.isHiddenForResolutionEverywhereBesideSupercalls } private fun FunctionDescriptor.findOverridden(condition: (FunctionDescriptor) -> Boolean): FunctionDescriptor? { diff --git a/compiler/tests-java8/tests/org/jetbrains/kotlin/serialization/builtins/AdditionalBuiltInsMembersSignatureListsTest.kt b/compiler/tests-java8/tests/org/jetbrains/kotlin/serialization/builtins/AdditionalBuiltInsMembersSignatureListsTest.kt index 52da09d13e3..91bac3a6304 100644 --- a/compiler/tests-java8/tests/org/jetbrains/kotlin/serialization/builtins/AdditionalBuiltInsMembersSignatureListsTest.kt +++ b/compiler/tests-java8/tests/org/jetbrains/kotlin/serialization/builtins/AdditionalBuiltInsMembersSignatureListsTest.kt @@ -76,6 +76,7 @@ class AdditionalBuiltInsMembersSignatureListsTest : KotlinTestWithEnvironment() } private val LATE_JDK_SIGNATURES = mapOf( - "java/lang/String" to setOf("isBlank()Z", "lines()Ljava/util/stream/Stream;", "repeat(I)Ljava/lang/String;") + "java/lang/String" to setOf("isBlank()Z", "lines()Ljava/util/stream/Stream;", "repeat(I)Ljava/lang/String;"), + "java/lang/CharSequence" to setOf("isEmpty()Z"), ) } diff --git a/core/compiler.common.jvm/src/org/jetbrains/kotlin/builtins/jvm/JvmBuiltInsSignatures.kt b/core/compiler.common.jvm/src/org/jetbrains/kotlin/builtins/jvm/JvmBuiltInsSignatures.kt index b10cd10e836..d0ce29847ba 100644 --- a/core/compiler.common.jvm/src/org/jetbrains/kotlin/builtins/jvm/JvmBuiltInsSignatures.kt +++ b/core/compiler.common.jvm/src/org/jetbrains/kotlin/builtins/jvm/JvmBuiltInsSignatures.kt @@ -51,7 +51,9 @@ object JvmBuiltInsSignatures { inJavaLang("Double", "isInfinite()Z", "isNaN()Z") + inJavaLang("Float", "isInfinite()Z", "isNaN()Z") + - inJavaLang("Enum", "getDeclaringClass()Ljava/lang/Class;", "finalize()V") + inJavaLang("Enum", "getDeclaringClass()Ljava/lang/Class;", "finalize()V") + + inJavaLang("CharSequence", "isEmpty()Z") + } private fun buildPrimitiveValueMethodsSet(): Set =