Don't propose to make objects abstract (KT-9795)
#KT-9795 Fixed
This commit is contained in:
@@ -77,7 +77,7 @@ public class AddModifierFix extends KotlinQuickFixAction<KtModifierListOwner> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invoke(@NotNull Project project, Editor editor, KtFile file) throws IncorrectOperationException {
|
||||
public void invoke(@NotNull Project project, Editor editor, @NotNull KtFile file) throws IncorrectOperationException {
|
||||
getElement().addModifier(modifier);
|
||||
}
|
||||
|
||||
@@ -89,13 +89,11 @@ public class AddModifierFix extends KotlinQuickFixAction<KtModifierListOwner> {
|
||||
public static <T extends KtModifierListOwner> JetSingleIntentionActionFactory createFactory(final KtModifierKeywordToken modifier, final Class<T> modifierOwnerClass) {
|
||||
return new JetSingleIntentionActionFactory() {
|
||||
@Override
|
||||
public IntentionAction createAction(Diagnostic diagnostic) {
|
||||
public IntentionAction createAction(@NotNull Diagnostic diagnostic) {
|
||||
KtModifierListOwner modifierListOwner = QuickFixUtil.getParentElementOfType(diagnostic, modifierOwnerClass);
|
||||
if (modifierListOwner == null) return null;
|
||||
|
||||
if (modifier == KtTokens.ABSTRACT_KEYWORD &&
|
||||
modifierListOwner instanceof KtObjectDeclaration &&
|
||||
((KtObjectDeclaration) modifierListOwner).isObjectLiteral()) return null;
|
||||
if (modifier == KtTokens.ABSTRACT_KEYWORD && modifierListOwner instanceof KtObjectDeclaration) return null;
|
||||
|
||||
return new AddModifierFix(modifierListOwner, modifier);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
// "Make 'Some' abstract" "false"
|
||||
// ACTION: Create test
|
||||
// ACTION: Implement members
|
||||
// ACTION: Move 'Some' to separate file
|
||||
// ERROR: Object 'Some' must be declared abstract or implement abstract member public abstract fun foo(): kotlin.Unit defined in T
|
||||
interface T {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
object <caret>Some : T
|
||||
@@ -35,12 +35,6 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("anonymousObject.kt")
|
||||
public void testAnonymousObject() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/anonymousObject.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("idea/testData/quickfix/abstract")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
@@ -4502,6 +4496,18 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("noAbstractForAnonymousObject.kt")
|
||||
public void testNoAbstractForAnonymousObject() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/modifiers/noAbstractForAnonymousObject.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("noAbstractForObject.kt")
|
||||
public void testNoAbstractForObject() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/modifiers/noAbstractForObject.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("notAnAnnotationClass.kt")
|
||||
public void testNotAnAnnotationClass() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/modifiers/notAnAnnotationClass.kt");
|
||||
|
||||
Reference in New Issue
Block a user