Don't propose to make objects abstract (KT-9795)

#KT-9795 Fixed
This commit is contained in:
Nikolay Krasko
2015-10-28 16:01:50 +03:00
parent 8bef335b71
commit 41cbc12d7f
4 changed files with 25 additions and 11 deletions
@@ -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);
}
+10
View File
@@ -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");