KT-9688 Completion of methods to override: prefer those that need to be implemented
#KT-9688 Fixed
This commit is contained in:
@@ -67,6 +67,7 @@ tailrec fun <T : Any> LookupElement.getUserDataDeep(key: Key<T>): T? {
|
||||
|
||||
enum class ItemPriority {
|
||||
DEFAULT,
|
||||
IMPLEMENT,
|
||||
OVERRIDE,
|
||||
NAMED_PARAMETER
|
||||
}
|
||||
|
||||
+4
-2
@@ -77,7 +77,8 @@ class OverridesCompletion(
|
||||
val baseClassName = baseClass.name.asString()
|
||||
|
||||
val baseIcon = (lookupElement.`object` as DeclarationLookupObject).getIcon(0)
|
||||
val additionalIcon = if (descriptor.modality == Modality.ABSTRACT)
|
||||
val isImplement = descriptor.modality == Modality.ABSTRACT
|
||||
val additionalIcon = if (isImplement)
|
||||
AllIcons.Gutter.ImplementingMethod
|
||||
else
|
||||
AllIcons.Gutter.OverridingMethod
|
||||
@@ -94,6 +95,7 @@ class OverridesCompletion(
|
||||
super.renderElement(presentation)
|
||||
|
||||
presentation.itemText = text
|
||||
presentation.isItemTextBold = isImplement
|
||||
presentation.icon = icon
|
||||
presentation.clearTail()
|
||||
presentation.setTypeText(baseClassName, baseClassIcon)
|
||||
@@ -134,7 +136,7 @@ class OverridesCompletion(
|
||||
}
|
||||
}
|
||||
|
||||
lookupElement.assignPriority(ItemPriority.OVERRIDE)
|
||||
lookupElement.assignPriority(if (isImplement) ItemPriority.IMPLEMENT else ItemPriority.OVERRIDE)
|
||||
|
||||
collector.addElement(lookupElement)
|
||||
}
|
||||
|
||||
@@ -7,6 +7,6 @@ class A<T> : List<String>, I<T> {
|
||||
}
|
||||
|
||||
// EXIST: { lookupString: "override", itemText: "override" }
|
||||
// EXIST: { itemText: "override fun hashCode(): Int {...}", tailText: null, typeText: "Any" }
|
||||
// EXIST: { itemText: "override fun foo(t: T): T {...}", tailText: null, typeText: "I" }
|
||||
// EXIST: { itemText: "override operator fun get(index: Int): String {...}", tailText: null, typeText: "List" }
|
||||
// EXIST: { itemText: "override fun hashCode(): Int {...}", tailText: null, typeText: "Any", attributes: "" }
|
||||
// EXIST: { itemText: "override fun foo(t: T): T {...}", tailText: null, typeText: "I", attributes: "bold" }
|
||||
// EXIST: { itemText: "override operator fun get(index: Int): String {...}", tailText: null, typeText: "List", attributes: "bold" }
|
||||
|
||||
+3
-3
@@ -15,8 +15,8 @@ open class Base2 : Base1() {
|
||||
class A(overr<caret>) : Base2(), I
|
||||
|
||||
// EXIST: { lookupString: "override", itemText: "override" }
|
||||
// EXIST: { itemText: "override val someVal: Int", tailText: null, typeText: "I" }
|
||||
// EXIST: { itemText: "override var someVar: Int", tailText: null, typeText: "I" }
|
||||
// EXIST: { itemText: "override val fromBase: String", tailText: null, typeText: "Base1" }
|
||||
// EXIST: { itemText: "override val someVal: Int", tailText: null, typeText: "I", attributes: "bold" }
|
||||
// EXIST: { itemText: "override var someVar: Int", tailText: null, typeText: "I", attributes: "bold" }
|
||||
// EXIST: { itemText: "override val fromBase: String", tailText: null, typeText: "Base1", attributes: "" }
|
||||
// EXIST_JAVA_ONLY: { lookupString: "override: Override", itemText: "override: Override" }
|
||||
// NOTHING_ELSE
|
||||
|
||||
+2
-2
@@ -14,6 +14,6 @@ open class Base2 : Base1() {
|
||||
|
||||
class A(some<caret>) : Base2(), I
|
||||
|
||||
// EXIST: { itemText: "override val someVal: Int", tailText: null, typeText: "I" }
|
||||
// EXIST: { itemText: "override var someVar: Int", tailText: null, typeText: "I" }
|
||||
// EXIST: { itemText: "override val someVal: Int", tailText: null, typeText: "I", attributes: "bold" }
|
||||
// EXIST: { itemText: "override var someVar: Int", tailText: null, typeText: "I", attributes: "bold" }
|
||||
// NOTHING_ELSE
|
||||
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
interface I {
|
||||
fun bbb()
|
||||
}
|
||||
|
||||
open class Base {
|
||||
open fun aaa()
|
||||
}
|
||||
|
||||
class A : Base(), I {
|
||||
overr<caret>
|
||||
}
|
||||
|
||||
// WITH_ORDER
|
||||
// EXIST: { itemText: "override" }
|
||||
// EXIST: { itemText: "override fun bbb() {...}" }
|
||||
// EXIST: { itemText: "override fun aaa() {...}" }
|
||||
+1
-1
@@ -6,6 +6,6 @@ interface Foo {
|
||||
class A(override val bar: Int, overr<caret>): Foo
|
||||
|
||||
// EXIST: { lookupString: "override", itemText: "override" }
|
||||
// EXIST: { itemText: "override val foo: Int", tailText: null, typeText: "Foo" }
|
||||
// EXIST: { itemText: "override val foo: Int", tailText: null, typeText: "Foo", attributes: "bold" }
|
||||
// EXIST_JAVA_ONLY: { itemText: "override: Override", tailText: " (java.lang)" }
|
||||
// NOTHING_ELSE
|
||||
|
||||
@@ -16,9 +16,9 @@ class A : Base2(), I {
|
||||
}
|
||||
|
||||
// EXIST: { lookupString: "override", itemText: "override" }
|
||||
// EXIST: { itemText: "override fun bar() {...}", lookupString: "override", tailText: null, typeText: "Base1" }
|
||||
// EXIST: { itemText: "override operator fun equals(other: Any?): Boolean {...}", lookupString: "override", tailText: null, typeText: "Any" }
|
||||
// EXIST: { itemText: "override fun foo() {...}", lookupString: "override", tailText: null, typeText: "I" }
|
||||
// EXIST: { itemText: "override fun hashCode(): Int {...}", lookupString: "override", tailText: null, typeText: "Any" }
|
||||
// EXIST: { itemText: "override val someVal: Int", lookupString: "override", tailText: null, typeText: "I" }
|
||||
// EXIST: { itemText: "override var someVar: Int", lookupString: "override", tailText: null, typeText: "I" }
|
||||
// EXIST: { itemText: "override fun bar() {...}", lookupString: "override", tailText: null, typeText: "Base1", attributes: "" }
|
||||
// EXIST: { itemText: "override operator fun equals(other: Any?): Boolean {...}", lookupString: "override", tailText: null, typeText: "Any", attributes: "" }
|
||||
// EXIST: { itemText: "override fun foo() {...}", lookupString: "override", tailText: null, typeText: "I", attributes: "bold" }
|
||||
// EXIST: { itemText: "override fun hashCode(): Int {...}", lookupString: "override", tailText: null, typeText: "Any", attributes: "" }
|
||||
// EXIST: { itemText: "override val someVal: Int", lookupString: "override", tailText: null, typeText: "I", attributes: "bold" }
|
||||
// EXIST: { itemText: "override var someVar: Int", lookupString: "override", tailText: null, typeText: "I", attributes: "bold" }
|
||||
|
||||
@@ -17,6 +17,6 @@ class A : Base2(), I {
|
||||
|
||||
// ABSENT: { itemText: "override" }
|
||||
// ABSENT: { itemText: "override fun bar() {...}" }
|
||||
// EXIST: { itemText: "override fun someFun() {...}", lookupString: "override", allLookupStrings: "override, someFun", tailText: null, typeText: "I" }
|
||||
// EXIST: { itemText: "override val someVal: Int", lookupString: "override", allLookupStrings: "override, someVal", tailText: null, typeText: "I" }
|
||||
// EXIST: { itemText: "override var someVar: Int", lookupString: "override", allLookupStrings: "override, someVar", tailText: null, typeText: "I" }
|
||||
// EXIST: { itemText: "override fun someFun() {...}", lookupString: "override", allLookupStrings: "override, someFun", tailText: null, typeText: "I", attributes: "bold" }
|
||||
// EXIST: { itemText: "override val someVal: Int", lookupString: "override", allLookupStrings: "override, someVal", tailText: null, typeText: "I", attributes: "bold" }
|
||||
// EXIST: { itemText: "override var someVar: Int", lookupString: "override", allLookupStrings: "override, someVar", tailText: null, typeText: "I", attributes: "bold" }
|
||||
|
||||
+6
@@ -1683,6 +1683,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("PreferImplementToOverride.kt")
|
||||
public void testPreferImplementToOverride() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/override/PreferImplementToOverride.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("SecondConstructorParameter.kt")
|
||||
public void testSecondConstructorParameter() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/override/SecondConstructorParameter.kt");
|
||||
|
||||
+6
@@ -1683,6 +1683,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("PreferImplementToOverride.kt")
|
||||
public void testPreferImplementToOverride() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/override/PreferImplementToOverride.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("SecondConstructorParameter.kt")
|
||||
public void testSecondConstructorParameter() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/override/SecondConstructorParameter.kt");
|
||||
|
||||
Reference in New Issue
Block a user