diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/JetNameSuggester.java b/idea/src/org/jetbrains/jet/plugin/refactoring/JetNameSuggester.java index 58d84b77067..1fb1ce65a1b 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/JetNameSuggester.java +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/JetNameSuggester.java @@ -152,8 +152,8 @@ public class JetNameSuggester { private static void addCamelNames(ArrayList result, String name, JetNameValidator validator) { if (name == "") return; String s = deleteNonLetterFromString(name); - if (s.startsWith("get") || s.startsWith("set")) s = s.substring(0, 3); - else if (s.startsWith("is")) s = s.substring(0, 2); + if (s.startsWith("get") || s.startsWith("set")) s = s.substring(3); + else if (s.startsWith("is")) s = s.substring(2); for (int i = 0; i < s.length(); ++i) { if (i == 0) { addName(result, StringUtil.decapitalize(s), validator); @@ -172,7 +172,17 @@ public class JetNameSuggester { private static void addNamesForExpression(ArrayList result, JetExpression expression, JetNameValidator validator) { if (expression instanceof JetQualifiedExpression) { JetQualifiedExpression qualifiedExpression = (JetQualifiedExpression) expression; - addNamesForExpression(result, qualifiedExpression.getSelectorExpression(), validator); + JetExpression selectorExpression = qualifiedExpression.getSelectorExpression(); + addNamesForExpression(result, selectorExpression, validator); + if (selectorExpression != null && selectorExpression instanceof JetCallExpression) { + JetExpression calleeExpression = ((JetCallExpression)selectorExpression).getCalleeExpression(); + if (calleeExpression != null && calleeExpression instanceof JetSimpleNameExpression) { + String name = ((JetSimpleNameExpression)calleeExpression).getReferencedName(); + if (name != null && name.equals("sure")) { + addNamesForExpression(result, qualifiedExpression.getReceiverExpression(), validator); + } + } + } } else if (expression instanceof JetSimpleNameExpression) { JetSimpleNameExpression reference = (JetSimpleNameExpression) expression; String referenceName = reference.getReferencedName(); diff --git a/idea/testData/refactoring/nameSuggester/GetterSure.kt b/idea/testData/refactoring/nameSuggester/GetterSure.kt new file mode 100644 index 00000000000..72d401a8c21 --- /dev/null +++ b/idea/testData/refactoring/nameSuggester/GetterSure.kt @@ -0,0 +1,11 @@ +fun getFooGoo(): String? = "text" + +fun a() { + getFooGoo().sure() +} +/* +fooGoo +goo +s +sure +*/ \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/refactoring/nameSuggester/JetNameSuggesterTest.java b/idea/tests/org/jetbrains/jet/plugin/refactoring/nameSuggester/JetNameSuggesterTest.java index 66cded05264..45718691924 100644 --- a/idea/tests/org/jetbrains/jet/plugin/refactoring/nameSuggester/JetNameSuggesterTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/refactoring/nameSuggester/JetNameSuggesterTest.java @@ -35,6 +35,10 @@ import java.util.Arrays; * Date: 07.02.12 */ public class JetNameSuggesterTest extends LightCodeInsightFixtureTestCase { + public void testGetterSure() { + doTest(); + } + public void testNameArrayOfClasses() { doTest(); }