Do not suggest "Make overridden member open" for already open ones
So #KT-18148 Fixed
This commit is contained in:
committed by
Mikhail Glukhikh
parent
cbccf932a7
commit
0dced8d29c
@@ -57,7 +57,8 @@ class MakeOverriddenMemberOpenFix(declaration: KtDeclaration) : KotlinQuickFixAc
|
|||||||
for (overriddenDescriptor in getAllDeclaredNonOverridableOverriddenDescriptors(descriptor)) {
|
for (overriddenDescriptor in getAllDeclaredNonOverridableOverriddenDescriptors(descriptor)) {
|
||||||
assert(overriddenDescriptor.kind == DECLARATION) { "Can only be applied to declarations." }
|
assert(overriddenDescriptor.kind == DECLARATION) { "Can only be applied to declarations." }
|
||||||
val overriddenMember = DescriptorToSourceUtils.descriptorToDeclaration(overriddenDescriptor)
|
val overriddenMember = DescriptorToSourceUtils.descriptorToDeclaration(overriddenDescriptor)
|
||||||
if (overriddenMember == null || !overriddenMember.canRefactor() || overriddenMember !is KtCallableDeclaration) {
|
if (overriddenMember == null || !overriddenMember.canRefactor() || overriddenMember !is KtCallableDeclaration ||
|
||||||
|
overriddenMember.modifierList?.hasModifier(OPEN_KEYWORD) == true) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
val containingDeclarationName = overriddenDescriptor.containingDeclaration.name.asString()
|
val containingDeclarationName = overriddenDescriptor.containingDeclaration.name.asString()
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
// "Make A.foo open" "false"
|
||||||
|
// ACTION: Convert to expression body
|
||||||
|
// ERROR: 'foo' in 'A' is final and cannot be overridden
|
||||||
|
// ERROR: This type is final, so it cannot be inherited from
|
||||||
|
class A() {
|
||||||
|
open fun foo() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
class B : A() {
|
||||||
|
override<caret> fun foo() { }
|
||||||
|
}
|
||||||
@@ -7505,6 +7505,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("overridingOpenMethodInFinalClass.kt")
|
||||||
|
public void testOverridingOpenMethodInFinalClass() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/override/overridingOpenMethodInFinalClass.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("parameterNameChangedAmbiguousRename.kt")
|
@TestMetadata("parameterNameChangedAmbiguousRename.kt")
|
||||||
public void testParameterNameChangedAmbiguousRename() throws Exception {
|
public void testParameterNameChangedAmbiguousRename() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/override/parameterNameChangedAmbiguousRename.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/override/parameterNameChangedAmbiguousRename.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user