Move some property convention helpers to compiler.common.jvm

Since it will be used in FIR, too
This commit is contained in:
Denis.Zharkov
2021-10-22 13:25:36 +03:00
parent 16e8e0e58b
commit fe1b4d61c2
2 changed files with 34 additions and 34 deletions
@@ -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<Name> {
val result = ArrayList<Name>(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))
}
}
}
@@ -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<Name> {
return getPropertyNameCandidatesBySpecialGetterName(name)
}
fun possibleGetMethodNames(propertyName: Name): List<Name> {
val result = ArrayList<Name>(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))
}