Accessor naming should be locale-independant
This commit is contained in:
@@ -15,6 +15,8 @@ interface I {
|
|||||||
var HTTPProtocol: String
|
var HTTPProtocol: String
|
||||||
|
|
||||||
var issueFlag: Boolean
|
var issueFlag: Boolean
|
||||||
|
|
||||||
|
var русскаяПропертя: Int // should not capitalize it because we only do it for ASCII
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1 getSimpleFoo
|
// 1 getSimpleFoo
|
||||||
@@ -39,3 +41,5 @@ interface I {
|
|||||||
// 1 setHTTPProtocol
|
// 1 setHTTPProtocol
|
||||||
// 1 getIssueFlag
|
// 1 getIssueFlag
|
||||||
// 1 setIssueFlag
|
// 1 setIssueFlag
|
||||||
|
// 1 getрусскаяПропертя
|
||||||
|
// 1 setрусскаяПропертя
|
||||||
|
|||||||
@@ -16,12 +16,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.load.java;
|
package org.jetbrains.kotlin.load.java;
|
||||||
|
|
||||||
import kotlin.KotlinPackage;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.kotlin.name.ClassId;
|
import org.jetbrains.kotlin.name.ClassId;
|
||||||
import org.jetbrains.kotlin.name.FqName;
|
import org.jetbrains.kotlin.name.FqName;
|
||||||
import org.jetbrains.kotlin.name.Name;
|
import org.jetbrains.kotlin.name.Name;
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.BinaryVersion;
|
import org.jetbrains.kotlin.serialization.deserialization.BinaryVersion;
|
||||||
|
import org.jetbrains.kotlin.util.capitalizeDecapitalize.CapitalizeDecapitalizeKt;
|
||||||
|
|
||||||
public final class JvmAbi {
|
public final class JvmAbi {
|
||||||
/**
|
/**
|
||||||
@@ -79,7 +79,7 @@ public final class JvmAbi {
|
|||||||
public static String getterName(@NotNull String propertyName) {
|
public static String getterName(@NotNull String propertyName) {
|
||||||
return startsWithIsPrefix(propertyName)
|
return startsWithIsPrefix(propertyName)
|
||||||
? 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) {
|
public static String setterName(@NotNull String propertyName) {
|
||||||
return startsWithIsPrefix(propertyName)
|
return startsWithIsPrefix(propertyName)
|
||||||
? SET_PREFIX + propertyName.substring(IS_PREFIX.length())
|
? SET_PREFIX + propertyName.substring(IS_PREFIX.length())
|
||||||
: SET_PREFIX + KotlinPackage.capitalize(propertyName);
|
: SET_PREFIX + CapitalizeDecapitalizeKt.capitalizeAsciiOnly(propertyName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean startsWithIsPrefix(String name) {
|
private static boolean startsWithIsPrefix(String name) {
|
||||||
if (!name.startsWith(IS_PREFIX)) return false;
|
if (!name.startsWith(IS_PREFIX)) return false;
|
||||||
if (name.length() == IS_PREFIX.length()) return false;
|
if (name.length() == IS_PREFIX.length()) return false;
|
||||||
char c = name.charAt(IS_PREFIX.length());
|
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)
|
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