Quick-Fixes: Do not add 'abstract' modifier to anonymous objects
#KT-6656 Fixed
This commit is contained in:
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.lexer.JetModifierKeywordToken;
|
||||
import org.jetbrains.kotlin.lexer.JetTokens;
|
||||
import org.jetbrains.kotlin.psi.JetFile;
|
||||
import org.jetbrains.kotlin.psi.JetModifierListOwner;
|
||||
import org.jetbrains.kotlin.psi.JetObjectDeclaration;
|
||||
import org.jetbrains.kotlin.psi.JetPropertyAccessor;
|
||||
|
||||
import static org.jetbrains.kotlin.lexer.JetTokens.ABSTRACT_KEYWORD;
|
||||
@@ -90,6 +91,11 @@ public class AddModifierFix extends JetIntentionAction<JetModifierListOwner> {
|
||||
public IntentionAction createAction(Diagnostic diagnostic) {
|
||||
JetModifierListOwner modifierListOwner = QuickFixUtil.getParentElementOfType(diagnostic, modifierOwnerClass);
|
||||
if (modifierListOwner == null) return null;
|
||||
|
||||
if (modifier == JetTokens.ABSTRACT_KEYWORD &&
|
||||
modifierListOwner instanceof JetObjectDeclaration &&
|
||||
((JetObjectDeclaration) modifierListOwner).isObjectLiteral()) return null;
|
||||
|
||||
return new AddModifierFix(modifierListOwner, modifier);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
// "Make 'object : T {}' abstract" "false"
|
||||
// ACTION: Implement members
|
||||
// ACTION: Split property declaration
|
||||
// ERROR: <html>Object must be declared abstract or implement abstract member<br/><b>internal</b> <b>abstract</b> <b>fun</b> foo(): kotlin.Unit <i>defined in</i> T</html>
|
||||
trait T {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
fun test() {
|
||||
val o = <caret>object : T {}
|
||||
}
|
||||
@@ -62,6 +62,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix"), Pattern.compile("^before(\\w+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("beforeAnonymousObject.kt")
|
||||
public void testAnonymousObject() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/beforeAnonymousObject.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("idea/testData/quickfix/abstract")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
|
||||
Reference in New Issue
Block a user