diff --git a/java/java-impl/src/com/intellij/psi/util/proximity/KnownElementWeigher.java b/java/java-impl/src/com/intellij/psi/util/proximity/KnownElementWeigher.java index 4f492e818a20..f31a5d5de067 100644 --- a/java/java-impl/src/com/intellij/psi/util/proximity/KnownElementWeigher.java +++ b/java/java-impl/src/com/intellij/psi/util/proximity/KnownElementWeigher.java @@ -81,13 +81,14 @@ public class KnownElementWeigher extends ProximityWeigher { if (qname != null) { String pkg = StringUtil.getPackageName(qname); if (qname.equals(CommonClassNames.JAVA_LANG_OBJECT)) return 5; - if (pkg.equals("java.lang")) return 7; - if (pkg.equals("java.util")) return 6; + if (qname.startsWith(CommonClassNames.JAVA_LANG_STRING) || qname.equals(System.class.getName())) return 8; + if (pkg.equals("java.lang")) return 6; + if (pkg.equals("java.util")) return 7; if (qname.startsWith("java.lang")) return 5; if (qname.startsWith("java.util")) return 4; - if (pkg.equals("javax.swing")) return element instanceof PsiClass ? 3 : 2; + if (pkg.equals("javax.swing")) return 3; if (qname.startsWith("java.")) return 2; if (qname.startsWith("javax.")) return 1; if (qname.startsWith("com.")) return -1; diff --git a/java/java-tests/testData/codeInsight/completion/normalSorting/PreferString.java b/java/java-tests/testData/codeInsight/completion/normalSorting/PreferString.java new file mode 100644 index 000000000000..6ebf1edb0f21 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normalSorting/PreferString.java @@ -0,0 +1,6 @@ +public class Foo { + + void foo() { + S + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy index 01af09c888b7..e1c17cdc62a1 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy @@ -616,4 +616,8 @@ interface TxANotAnno {} assertPreferredItems 0, 'setText', 'setOurText' } + public void testPreferString() { + checkPreferredItems 0, 'String', 'StringBuffer', 'StringBuilder', 'System', 'Set' + } + }