"abstract" modifier on enum class is an error
#KT-3454 Fixed
This commit is contained in:
@@ -174,6 +174,8 @@ public interface Errors {
|
||||
|
||||
DiagnosticFactory0<JetModifierListOwner> OPEN_MODIFIER_IN_ENUM = DiagnosticFactory0
|
||||
.create(ERROR, modifierSetPosition(JetTokens.OPEN_KEYWORD));
|
||||
DiagnosticFactory0<JetModifierListOwner> ABSTRACT_MODIFIER_IN_ENUM = DiagnosticFactory0
|
||||
.create(ERROR, modifierSetPosition(JetTokens.ABSTRACT_KEYWORD));
|
||||
|
||||
DiagnosticFactory0<PsiElement> CLASS_IN_SUPERTYPE_FOR_ENUM = DiagnosticFactory0.create(ERROR);
|
||||
|
||||
|
||||
+1
@@ -98,6 +98,7 @@ public class DefaultErrorMessages {
|
||||
MAP.put(ABSTRACT_MODIFIER_IN_TRAIT, "Modifier ''abstract'' is redundant in trait");
|
||||
MAP.put(OPEN_MODIFIER_IN_TRAIT, "Modifier ''open'' is redundant in trait");
|
||||
MAP.put(OPEN_MODIFIER_IN_ENUM, "Modifier ''open'' is not applicable for enum class");
|
||||
MAP.put(ABSTRACT_MODIFIER_IN_ENUM, "Modifier ''abstract'' is not applicable for enum class");
|
||||
MAP.put(ILLEGAL_ENUM_ANNOTATION, "Annotation ''enum'' is only applicable for class");
|
||||
MAP.put(REDUNDANT_MODIFIER_IN_GETTER, "Visibility modifiers are redundant in getter");
|
||||
MAP.put(TRAIT_CAN_NOT_BE_FINAL, "Trait cannot be final");
|
||||
|
||||
@@ -545,6 +545,9 @@ public class DeclarationsChecker {
|
||||
if (aClass.hasModifier(JetTokens.OPEN_KEYWORD)) {
|
||||
trace.report(OPEN_MODIFIER_IN_ENUM.on(aClass));
|
||||
}
|
||||
if (aClass.hasModifier(JetTokens.ABSTRACT_KEYWORD)) {
|
||||
trace.report(ABSTRACT_MODIFIER_IN_ENUM.on(aClass));
|
||||
}
|
||||
}
|
||||
|
||||
private void checkEnumEntry(@NotNull JetEnumEntry enumEntry, @NotNull ClassDescriptor classDescriptor) {
|
||||
|
||||
+1
-1
@@ -68,7 +68,7 @@ fun t1() {
|
||||
b = <!UNUSED_VALUE!>3<!>
|
||||
}
|
||||
|
||||
abstract enum class ProtocolState {
|
||||
enum class ProtocolState {
|
||||
WAITING {
|
||||
override fun signal() = ProtocolState.TALKING
|
||||
}
|
||||
|
||||
+1
-1
@@ -116,7 +116,7 @@ package uninitialized_reassigned_variables {
|
||||
}
|
||||
}
|
||||
|
||||
internal abstract enum class ProtocolState : kotlin.Enum<uninitialized_reassigned_variables.ProtocolState> {
|
||||
internal final enum class ProtocolState : kotlin.Enum<uninitialized_reassigned_variables.ProtocolState> {
|
||||
private constructor ProtocolState()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
package abstract
|
||||
|
||||
abstract enum class MyAbstractEnum() {}
|
||||
<!ABSTRACT_MODIFIER_IN_ENUM!>abstract<!> enum class MyAbstractEnum() {}
|
||||
@@ -1,4 +1,4 @@
|
||||
abstract enum class ProtocolState {
|
||||
enum class ProtocolState {
|
||||
WAITING {
|
||||
override fun signal() = ProtocolState.TALKING
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package
|
||||
|
||||
internal fun box(): kotlin.String
|
||||
|
||||
internal abstract enum class ProtocolState : kotlin.Enum<ProtocolState> {
|
||||
internal final enum class ProtocolState : kotlin.Enum<ProtocolState> {
|
||||
private constructor ProtocolState()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
abstract enum class ProtocolState {
|
||||
enum class ProtocolState {
|
||||
WAITING {
|
||||
override fun signal() = ProtocolState.TALKING
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ internal final enum class Foo</*0*/ T> : kotlin.Enum<Foo<T>> {
|
||||
public final /*synthesized*/ fun values(): kotlin.Array<Foo<T>>
|
||||
}
|
||||
|
||||
internal abstract enum class ProtocolState : kotlin.Enum<ProtocolState> {
|
||||
internal final enum class ProtocolState : kotlin.Enum<ProtocolState> {
|
||||
private constructor ProtocolState()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
@@ -186,6 +186,7 @@ public class QuickFixRegistrar {
|
||||
QuickFixes.factories.put(PARAMETER_NAME_CHANGED_ON_OVERRIDE, RenameParameterToMatchOverriddenMethodFix.createFactory());
|
||||
|
||||
QuickFixes.factories.put(OPEN_MODIFIER_IN_ENUM, RemoveModifierFix.createRemoveModifierFromListOwnerFactory(OPEN_KEYWORD));
|
||||
QuickFixes.factories.put(ABSTRACT_MODIFIER_IN_ENUM, RemoveModifierFix.createRemoveModifierFromListOwnerFactory(ABSTRACT_KEYWORD));
|
||||
QuickFixes.factories.put(ILLEGAL_ENUM_ANNOTATION, RemoveModifierFix.createRemoveModifierFromListOwnerFactory(ENUM_KEYWORD));
|
||||
|
||||
QuickFixes.factories.put(NESTED_CLASS_NOT_ALLOWED, AddModifierFix.createFactory(INNER_KEYWORD));
|
||||
|
||||
@@ -116,7 +116,7 @@ enum class MyEnum() {
|
||||
<error>abstract</error> fun j() {}
|
||||
}
|
||||
|
||||
abstract enum class MyAbstractEnum() {}
|
||||
<error>abstract</error> enum class MyAbstractEnum() {}
|
||||
|
||||
//properties
|
||||
<error>val a: Int</error>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
abstract enum class ProtocolState {
|
||||
enum class ProtocolState {
|
||||
WAITING {
|
||||
override fun signal() = ProtocolState.TALKING
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
abstract enum class ProtocolState {
|
||||
enum class ProtocolState {
|
||||
WAITING {
|
||||
override fun signal() = ProtocolState.TALKING
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
// "Make 'A' not abstract" "true"
|
||||
<caret>enum class A() {
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
// "Make 'A' not abstract" "true"
|
||||
<caret>abstract enum class A() {
|
||||
}
|
||||
@@ -1716,6 +1716,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
||||
@InnerTestClasses({Modifiers.AddOpenToClassDeclaration.class})
|
||||
@RunWith(org.jetbrains.jet.JUnit3RunnerWithInners.class)
|
||||
public static class Modifiers extends AbstractQuickFixTest {
|
||||
@TestMetadata("beforeAbstractModifierInEnum.kt")
|
||||
public void testAbstractModifierInEnum() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/modifiers/beforeAbstractModifierInEnum.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("beforeAddInnerModifier.kt")
|
||||
public void testAddInnerModifier() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/modifiers/beforeAddInnerModifier.kt");
|
||||
|
||||
Reference in New Issue
Block a user