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
@@ -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))
}