Rename: @JvmName support
#KT-8044 Fixed #KT-9432 Fixed
This commit is contained in:
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.load.kotlin
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -45,6 +46,15 @@ object PackagePartClassUtils {
|
||||
else
|
||||
"_$str"
|
||||
|
||||
private @JvmStatic fun decapitalizeAsJavaClassName(str: String): String =
|
||||
// NB use Locale.ENGLISH so that build is locale-independent.
|
||||
// See Javadoc on java.lang.String.toUpperCase() for more details.
|
||||
when {
|
||||
Character.isJavaIdentifierStart(str[0]) -> str.substring(0, 1).toLowerCase(Locale.ENGLISH) + str.substring(1)
|
||||
str[0] == '_' -> str.substring(1)
|
||||
else -> str
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
@JvmStatic fun getDefaultPartFqName(facadeClassFqName: FqName, file: VirtualFile): FqName =
|
||||
getPackagePartFqName(facadeClassFqName.parent(), file.name)
|
||||
@@ -68,4 +78,10 @@ object PackagePartClassUtils {
|
||||
@JvmStatic fun getFilePartShortName(fileName: String): String =
|
||||
getPartClassName(FileUtil.getNameWithoutExtension(fileName))
|
||||
|
||||
@JvmStatic fun getFileNameByFacadeName(facadeClassName: String): String? {
|
||||
if (!facadeClassName.endsWith(PART_CLASS_NAME_SUFFIX)) return null
|
||||
val baseName = facadeClassName.substring(0, facadeClassName.length - PART_CLASS_NAME_SUFFIX.length)
|
||||
if (baseName == "_") return null
|
||||
return "${decapitalizeAsJavaClassName(baseName)}.${KotlinFileType.EXTENSION}"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user