Move some property convention helpers to compiler.common.jvm
Since it will be used in FIR, too
This commit is contained in:
+2
-34
@@ -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))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+32
@@ -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))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user