Fixed name suggestions for types with abbreviations like "URL"

This commit is contained in:
Valentin Kipyatkov
2015-06-18 22:43:54 +03:00
parent 84ba634c3e
commit 53688d061a
3 changed files with 46 additions and 3 deletions
@@ -219,15 +219,44 @@ public class JetNameSuggester {
} }
} }
boolean upperCaseLetterBefore = false;
for (int i = 0; i < s.length(); ++i) { for (int i = 0; i < s.length(); ++i) {
char c = s.charAt(i);
boolean upperCaseLetter = Character.isUpperCase(c);
if (i == 0) { if (i == 0) {
addName(result, StringUtil.decapitalize(s), validator); addName(result, decapitalize(s), validator);
} }
else if (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z') { else {
addName(result, StringUtil.decapitalize(s.substring(i)), validator); if (upperCaseLetter && !upperCaseLetterBefore) {
addName(result, decapitalize(s.substring(i)), validator);
}
} }
upperCaseLetterBefore = upperCaseLetter;
} }
} }
private static String decapitalize(String s) {
char c = s.charAt(0);
if (!Character.isUpperCase(c)) return s;
StringBuilder builder = new StringBuilder(s.length());
boolean decapitalize = true;
for (int i = 0; i < s.length(); i++) {
c = s.charAt(i);
if (decapitalize) {
if (Character.isUpperCase(c)) {
c = Character.toLowerCase(c);
}
else {
decapitalize = false;
}
}
builder.append(c);
}
return builder.toString();
}
private static String deleteNonLetterFromString(String s) { private static String deleteNonLetterFromString(String s) {
Pattern pattern = Pattern.compile("[^a-zA-Z]"); Pattern pattern = Pattern.compile("[^a-zA-Z]");
+10
View File
@@ -0,0 +1,10 @@
class URL
fun a() {
val x = URL()
<selection>x</selection>
}
/*
url
x
*/
@@ -82,6 +82,10 @@ public class JetNameSuggesterTest extends LightCodeInsightFixtureTestCase {
doTest(); doTest();
} }
public void testURL() {
doTest();
}
@Override @Override
protected void setUp() throws Exception { protected void setUp() throws Exception {
super.setUp(); super.setUp();