Commit c9694995 authored by peter's avatar peter
Browse files

IDEA-199875 Rank `println` higher than `print`

parent 2d9a2e83
Branches unavailable Tags unavailable
No related merge requests found
Showing with 16 additions and 19 deletions
+16 -19
...@@ -84,7 +84,11 @@ public class KnownElementWeigher extends ProximityWeigher { ...@@ -84,7 +84,11 @@ public class KnownElementWeigher extends ProximityWeigher {
if (JAVA_LANG_OBJECT.equals(containingClass.getQualifiedName())) { if (JAVA_LANG_OBJECT.equals(containingClass.getQualifiedName())) {
return 0; return 0;
} }
return getJdkClassProximity(method.getContainingClass()); Integer classProximity = getJdkClassProximity(containingClass);
if (classProximity != null && "println".equals(methodName) && method.getParameterList().getParametersCount() > 0) {
return 1 + classProximity;
}
return classProximity;
} }
} }
if (element instanceof PsiField) { if (element instanceof PsiField) {
...@@ -116,7 +120,7 @@ public class KnownElementWeigher extends ProximityWeigher { ...@@ -116,7 +120,7 @@ public class KnownElementWeigher extends ProximityWeigher {
return "getClass".equals(method.getName()) && method.getParameterList().getParametersCount() <= 0; return "getClass".equals(method.getName()) && method.getParameterList().getParametersCount() <= 0;
} }
private static Comparable getJdkClassProximity(@Nullable PsiClass element) { private static Integer getJdkClassProximity(@Nullable PsiClass element) {
String qname = element == null ? null : element.getQualifiedName(); String qname = element == null ? null : element.getQualifiedName();
if (qname == null) return null; if (qname == null) return null;
......
public class Util { public class Util {
{ {
foo(() -> System.out.println()<caret>).bar(); foo(() -> System.out.println(<caret>)).bar();
} }
} }
\ No newline at end of file
...@@ -23,7 +23,6 @@ import com.intellij.openapi.actionSystem.IdeActions ...@@ -23,7 +23,6 @@ import com.intellij.openapi.actionSystem.IdeActions
import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.command.CommandProcessor import com.intellij.openapi.command.CommandProcessor
import com.intellij.openapi.command.WriteCommandAction import com.intellij.openapi.command.WriteCommandAction
import com.intellij.openapi.fileEditor.impl.CurrentEditorProvider
import com.intellij.openapi.command.impl.UndoManagerImpl import com.intellij.openapi.command.impl.UndoManagerImpl
import com.intellij.openapi.command.undo.UndoManager import com.intellij.openapi.command.undo.UndoManager
import com.intellij.openapi.editor.Editor import com.intellij.openapi.editor.Editor
...@@ -36,6 +35,7 @@ import com.intellij.openapi.extensions.Extensions ...@@ -36,6 +35,7 @@ import com.intellij.openapi.extensions.Extensions
import com.intellij.openapi.extensions.LoadingOrder import com.intellij.openapi.extensions.LoadingOrder
import com.intellij.openapi.fileEditor.FileEditor import com.intellij.openapi.fileEditor.FileEditor
import com.intellij.openapi.fileEditor.FileEditorManager import com.intellij.openapi.fileEditor.FileEditorManager
import com.intellij.openapi.fileEditor.impl.CurrentEditorProvider
import com.intellij.openapi.progress.ProgressManager import com.intellij.openapi.progress.ProgressManager
import com.intellij.openapi.util.Computable import com.intellij.openapi.util.Computable
import com.intellij.openapi.util.Disposer import com.intellij.openapi.util.Disposer
...@@ -43,15 +43,12 @@ import com.intellij.psi.NavigatablePsiElement ...@@ -43,15 +43,12 @@ import com.intellij.psi.NavigatablePsiElement
import com.intellij.psi.PsiClass import com.intellij.psi.PsiClass
import com.intellij.psi.PsiJavaFile import com.intellij.psi.PsiJavaFile
import com.intellij.psi.PsiMethod import com.intellij.psi.PsiMethod
import com.intellij.psi.statistics.StatisticsManager
import com.intellij.psi.statistics.impl.StatisticsManagerImpl
import com.intellij.testFramework.fixtures.CodeInsightTestUtil import com.intellij.testFramework.fixtures.CodeInsightTestUtil
import com.intellij.util.ThrowableRunnable import com.intellij.util.ThrowableRunnable
import com.intellij.util.containers.ContainerUtil import com.intellij.util.containers.ContainerUtil
import org.jetbrains.annotations.NotNull import org.jetbrains.annotations.NotNull
import java.awt.event.KeyEvent import java.awt.event.KeyEvent
/** /**
* @author peter * @author peter
*/ */
...@@ -1521,18 +1518,6 @@ class Foo { ...@@ -1521,18 +1518,6 @@ class Foo {
assert !lookup assert !lookup
} }
void testReplaceTypedPrefixPart() {
((StatisticsManagerImpl)StatisticsManager.getInstance()).enableStatistics(myFixture.getTestRootDisposable())
myFixture.configureByText 'a.java', 'class Foo{ { <caret> }}'
for (i in 0..StatisticsManager.OBLIVION_THRESHOLD) {
type 'System.out.printl\n\n'
}
type 'System.out.pr'
assert lookup.currentItem.lookupString == 'println'
type '\n2'
assert myFixture.editor.document.text.contains('.println();2')
}
void testQuickBackspaceEnter() { void testQuickBackspaceEnter() {
myFixture.configureByText 'a.java', '<caret>' myFixture.configureByText 'a.java', '<caret>'
type 'cl' type 'cl'
......
...@@ -867,4 +867,12 @@ class Foo { ...@@ -867,4 +867,12 @@ class Foo {
checkPreferredItems 1, 'Intf', 'IntfImpl' checkPreferredItems 1, 'Intf', 'IntfImpl'
} }
void testPreferPrintln() {
myFixture.configureByText 'a.java', 'class Foo { { System.out.pri<caret>x } }'
myFixture.completeBasic()
myFixture.assertPreferredCompletionItems 0, 'println', 'print'
myFixture.type('\t')
myFixture.checkResult 'class Foo { { System.out.println(<caret>); } }'
}
} }
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment