Accessor naming should be locale-independant
This commit is contained in:
@@ -15,6 +15,8 @@ interface I {
|
||||
var HTTPProtocol: String
|
||||
|
||||
var issueFlag: Boolean
|
||||
|
||||
var русскаяПропертя: Int // should not capitalize it because we only do it for ASCII
|
||||
}
|
||||
|
||||
// 1 getSimpleFoo
|
||||
@@ -39,3 +41,5 @@ interface I {
|
||||
// 1 setHTTPProtocol
|
||||
// 1 getIssueFlag
|
||||
// 1 setIssueFlag
|
||||
// 1 getрусскаяПропертя
|
||||
// 1 setрусскаяПропертя
|
||||
|
||||
@@ -16,12 +16,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.load.java;
|
||||
|
||||
import kotlin.KotlinPackage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.name.ClassId;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.serialization.deserialization.BinaryVersion;
|
||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.CapitalizeDecapitalizeKt;
|
||||
|
||||
public final class JvmAbi {
|
||||
/**
|
||||
@@ -79,7 +79,7 @@ public final class JvmAbi {
|
||||
public static String getterName(@NotNull String propertyName) {
|
||||
return startsWithIsPrefix(propertyName)
|
||||
? propertyName
|
||||
: GET_PREFIX + KotlinPackage.capitalize(propertyName);
|
||||
: GET_PREFIX + CapitalizeDecapitalizeKt.capitalizeAsciiOnly(propertyName);
|
||||
|
||||
}
|
||||
|
||||
@@ -87,14 +87,14 @@ public final class JvmAbi {
|
||||
public static String setterName(@NotNull String propertyName) {
|
||||
return startsWithIsPrefix(propertyName)
|
||||
? SET_PREFIX + propertyName.substring(IS_PREFIX.length())
|
||||
: SET_PREFIX + KotlinPackage.capitalize(propertyName);
|
||||
: SET_PREFIX + CapitalizeDecapitalizeKt.capitalizeAsciiOnly(propertyName);
|
||||
}
|
||||
|
||||
private static boolean startsWithIsPrefix(String name) {
|
||||
if (!name.startsWith(IS_PREFIX)) return false;
|
||||
if (name.length() == IS_PREFIX.length()) return false;
|
||||
char c = name.charAt(IS_PREFIX.length());
|
||||
return !Character.isLowerCase(c);
|
||||
return !('a' <= c && c <= 'z');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+10
@@ -44,3 +44,13 @@ public fun String.capitalizeFirstWord(): String {
|
||||
return substring(0, secondWordStart).toUpperCase() + substring(secondWordStart)
|
||||
}
|
||||
|
||||
public fun String.capitalizeAsciiOnly(): String {
|
||||
if (isEmpty()) return this
|
||||
val c = charAt(0)
|
||||
return if (c in 'a'..'z')
|
||||
c.toUpperCase() + substring(1)
|
||||
else
|
||||
this
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user