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.JvmAbi
|
||||||
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
|
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
|
||||||
import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor
|
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.name.Name
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorFactory
|
import org.jetbrains.kotlin.resolve.DescriptorFactory
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
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 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
|
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.load.java.BuiltinSpecialProperties.getPropertyNameCandidatesBySpecialGetterName
|
||||||
import org.jetbrains.kotlin.name.Name
|
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 org.jetbrains.kotlin.util.capitalizeDecapitalize.decapitalizeSmartForCompiler
|
||||||
|
import java.util.ArrayList
|
||||||
|
|
||||||
fun propertyNameByGetMethodName(methodName: Name): Name? =
|
fun propertyNameByGetMethodName(methodName: Name): Name? =
|
||||||
propertyNameFromAccessorMethodName(methodName, "get") ?: propertyNameFromAccessorMethodName(methodName, "is", removePrefix = false)
|
propertyNameFromAccessorMethodName(methodName, "get") ?: propertyNameFromAccessorMethodName(methodName, "is", removePrefix = false)
|
||||||
@@ -60,3 +63,32 @@ fun getPropertyNamesCandidatesByAccessorName(name: Name): List<Name> {
|
|||||||
|
|
||||||
return getPropertyNameCandidatesBySpecialGetterName(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