Name Suggester: Do not strip "get"/"is"/"set" prefixes if remaining sequence is not upper-cased
#KT-7399 Fixed
This commit is contained in:
+13
-2
@@ -192,11 +192,22 @@ public class JetNameSuggester {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final String[] ACCESSOR_PREFIXES = { "get", "is", "set" };
|
||||||
|
|
||||||
private static void addCamelNames(ArrayList<String> result, String name, JetNameValidator validator) {
|
private static void addCamelNames(ArrayList<String> result, String name, JetNameValidator validator) {
|
||||||
if (name == "") return;
|
if (name == "") return;
|
||||||
String s = deleteNonLetterFromString(name);
|
String s = deleteNonLetterFromString(name);
|
||||||
if (s.startsWith("get") || s.startsWith("set")) s = s.substring(3);
|
|
||||||
else if (s.startsWith("is")) s = s.substring(2);
|
for (String prefix : ACCESSOR_PREFIXES) {
|
||||||
|
if (!s.startsWith(prefix)) continue;
|
||||||
|
|
||||||
|
int len = prefix.length();
|
||||||
|
if (len < s.length() && Character.isUpperCase(s.charAt(len))) {
|
||||||
|
s = s.substring(len);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < s.length(); ++i) {
|
for (int i = 0; i < s.length(); ++i) {
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
addName(result, StringUtil.decapitalize(s), validator);
|
addName(result, StringUtil.decapitalize(s), validator);
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
// "Create function 'foo'" "true"
|
||||||
|
class Settings
|
||||||
|
|
||||||
|
fun isModified(settings: Settings, c: C) = c.foo(settings)
|
||||||
|
|
||||||
|
class C {
|
||||||
|
fun foo(settings: Settings): Any {
|
||||||
|
throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
// "Create function 'foo'" "true"
|
||||||
|
class SetOptions
|
||||||
|
|
||||||
|
fun isModified(setOptions: SetOptions, c: C) = c.foo(setOptions)
|
||||||
|
|
||||||
|
class C {
|
||||||
|
fun foo(options: SetOptions): Any {
|
||||||
|
throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
// "Create function 'foo'" "true"
|
||||||
|
class Settings
|
||||||
|
|
||||||
|
fun isModified(settings: Settings, c: C) = c.<caret>foo(settings)
|
||||||
|
|
||||||
|
class C {
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
// "Create function 'foo'" "true"
|
||||||
|
class SetOptions
|
||||||
|
|
||||||
|
fun isModified(setOptions: SetOptions, c: C) = c.<caret>foo(setOptions)
|
||||||
|
|
||||||
|
class C {
|
||||||
|
}
|
||||||
@@ -1586,6 +1586,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeDoNotStripPrefix.kt")
|
||||||
|
public void testDoNotStripPrefix() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createFunction/call/beforeDoNotStripPrefix.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("beforeExtensionFunOnTrait.kt")
|
@TestMetadata("beforeExtensionFunOnTrait.kt")
|
||||||
public void testExtensionFunOnTrait() throws Exception {
|
public void testExtensionFunOnTrait() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createFunction/call/beforeExtensionFunOnTrait.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createFunction/call/beforeExtensionFunOnTrait.kt");
|
||||||
@@ -1778,6 +1784,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeStripPrefix.kt")
|
||||||
|
public void testStripPrefix() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createFunction/call/beforeStripPrefix.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("beforeThisInClass.kt")
|
@TestMetadata("beforeThisInClass.kt")
|
||||||
public void testThisInClass() throws Exception {
|
public void testThisInClass() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createFunction/call/beforeThisInClass.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createFunction/call/beforeThisInClass.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user