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 2cfee30c56a..1ab7001f845 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/JavaSyntheticPropertiesScope.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/JavaSyntheticPropertiesScope.kt @@ -29,6 +29,8 @@ import org.jetbrains.kotlin.incremental.record import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor +import org.jetbrains.kotlin.load.java.possibleGetMethodNames +import org.jetbrains.kotlin.load.java.setMethodName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.DescriptorFactory import org.jetbrains.kotlin.resolve.DescriptorUtils @@ -85,9 +87,6 @@ interface SyntheticJavaPropertyDescriptor : PropertyDescriptor, SyntheticPropert }) fun propertyNameByGetMethodName(methodName: Name): Name? = org.jetbrains.kotlin.load.java.propertyNameByGetMethodName(methodName) - - fun propertyNameBySetMethodName(methodName: Name, withIsPrefix: Boolean): Name? = - org.jetbrains.kotlin.load.java.propertyNameBySetMethodName(methodName, withIsPrefix) } } @@ -458,35 +457,4 @@ class JavaSyntheticPropertiesScope( return descriptor } } - - companion object { - fun possibleGetMethodNames(propertyName: Name): List { - val result = ArrayList(3) - val identifier = propertyName.identifier - - if (JvmAbi.startsWithIsPrefix(identifier)) { - result.add(propertyName) - } - - val capitalize1 = identifier.capitalizeAsciiOnly() - val capitalize2 = identifier.capitalizeFirstWord(asciiOnly = true) - result.add(Name.identifier("get" + capitalize1)) - if (capitalize2 != capitalize1) { - result.add(Name.identifier("get" + capitalize2)) - } - - return result - .filter { SyntheticJavaPropertyDescriptor.propertyNameByGetMethodName(it) == propertyName } // don't accept "uRL" for "getURL" etc - } - - fun setMethodName(getMethodName: Name): Name { - val identifier = getMethodName.identifier - val prefix = when { - identifier.startsWith("get") -> "get" - identifier.startsWith("is") -> "is" - else -> throw IllegalArgumentException() - } - return Name.identifier("set" + identifier.removePrefix(prefix)) - } - } } diff --git a/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/propertiesConventionUtil.kt b/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/propertiesConventionUtil.kt index dcbf0251d77..6d9b595634d 100644 --- a/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/propertiesConventionUtil.kt +++ b/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/propertiesConventionUtil.kt @@ -7,7 +7,10 @@ package org.jetbrains.kotlin.load.java import org.jetbrains.kotlin.load.java.BuiltinSpecialProperties.getPropertyNameCandidatesBySpecialGetterName import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly +import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeFirstWord import org.jetbrains.kotlin.util.capitalizeDecapitalize.decapitalizeSmartForCompiler +import java.util.ArrayList fun propertyNameByGetMethodName(methodName: Name): Name? = propertyNameFromAccessorMethodName(methodName, "get") ?: propertyNameFromAccessorMethodName(methodName, "is", removePrefix = false) @@ -60,3 +63,32 @@ fun getPropertyNamesCandidatesByAccessorName(name: Name): List { return getPropertyNameCandidatesBySpecialGetterName(name) } + +fun possibleGetMethodNames(propertyName: Name): List { + val result = ArrayList(3) + val identifier = propertyName.identifier + + if (JvmAbi.startsWithIsPrefix(identifier)) { + result.add(propertyName) + } + + val capitalize1 = identifier.capitalizeAsciiOnly() + val capitalize2 = identifier.capitalizeFirstWord(asciiOnly = true) + result.add(Name.identifier("get$capitalize1")) + if (capitalize2 != capitalize1) { + result.add(Name.identifier("get$capitalize2")) + } + + return result + .filter { propertyNameByGetMethodName(it) == propertyName } // don't accept "uRL" for "getURL" etc +} + +fun setMethodName(getMethodName: Name): Name { + val identifier = getMethodName.identifier + val prefix = when { + identifier.startsWith("get") -> "get" + identifier.startsWith("is") -> "is" + else -> throw IllegalArgumentException() + } + return Name.identifier("set" + identifier.removePrefix(prefix)) +}