An implementation of KT-7753: now enum constructors cannot be called explicitly.

Several tests are provided.
 #KT-7753 Fixed.
This commit is contained in:
Mikhail Glukhikh
2015-05-19 15:01:33 +03:00
parent 8cf21f24cd
commit 3c7225e83a
16 changed files with 402 additions and 3 deletions
@@ -217,6 +217,7 @@ public interface Errors {
DiagnosticFactory2<JetEnumEntry, ClassDescriptor, String> ENUM_ENTRY_USES_DEPRECATED_OR_NO_DELIMITER = DiagnosticFactory2.create(WARNING, DECLARATION_NAME);
DiagnosticFactory1<JetEnumEntry, ClassDescriptor> ENUM_ENTRY_USES_DEPRECATED_SUPER_CONSTRUCTOR = DiagnosticFactory1.create(WARNING, DELEGATOR_SUPER_CALL);
DiagnosticFactory1<JetEnumEntry, ClassDescriptor> ENUM_ENTRY_AFTER_ENUM_MEMBER = DiagnosticFactory1.create(WARNING, DECLARATION_NAME);
DiagnosticFactory0<JetCallExpression> ENUM_CLASS_CONSTRUCTOR_CALL = DiagnosticFactory0.create(ERROR);
// Companion objects
@@ -261,6 +261,8 @@ public class DefaultErrorMessages {
MAP.put(ENUM_ENTRY_USES_DEPRECATED_OR_NO_DELIMITER, "Enum entry ''{0}'' should have a correct delimiter ''{1}'' after it", NAME, STRING);
MAP.put(ENUM_ENTRY_USES_DEPRECATED_SUPER_CONSTRUCTOR, "Enum entry ''{0}'' uses deprecated super constructor syntax, use ENTRY(arguments) instead", NAME);
MAP.put(ENUM_ENTRY_AFTER_ENUM_MEMBER, "Enum entry ''{0}'' is not allowed after a member", NAME);
MAP.put(ENUM_CLASS_CONSTRUCTOR_CALL, "Enum types cannot be instantiated");
MAP.put(DELEGATION_IN_TRAIT, "Interfaces cannot use delegation");
MAP.put(DELEGATION_NOT_TO_TRAIT, "Only interfaces can be delegated to");
MAP.put(DEPRECATED_TRAIT_KEYWORD, "'trait' keyword is deprecated, use 'interface' instead");
@@ -210,11 +210,14 @@ public class CallExpressionResolver {
if (functionDescriptor == null) {
return TypeInfoFactoryPackage.noTypeInfo(context);
}
if (functionDescriptor instanceof ConstructorDescriptor &&
DescriptorUtils.isAnnotationClass(functionDescriptor.getContainingDeclaration())) {
if (!canInstantiateAnnotationClass(callExpression)) {
if (functionDescriptor instanceof ConstructorDescriptor) {
if (DescriptorUtils.isAnnotationClass(functionDescriptor.getContainingDeclaration())
&& !canInstantiateAnnotationClass(callExpression)) {
context.trace.report(ANNOTATION_CLASS_CONSTRUCTOR_CALL.on(callExpression));
}
if (DescriptorUtils.isEnumClass(functionDescriptor.getContainingDeclaration())) {
context.trace.report(ENUM_CLASS_CONSTRUCTOR_CALL.on(callExpression));
}
}
JetType type = functionDescriptor.getReturnType();
@@ -0,0 +1,10 @@
// KT-7753: attempt to call enum constructor explicitly
enum class A(val c: Int) {
ONE(1),
TWO(2);
}
fun createA(): A {
// Error should be here!
return <!ENUM_CLASS_CONSTRUCTOR_CALL!><!INVISIBLE_MEMBER!>A<!>(10)<!>
}
@@ -0,0 +1,40 @@
package
internal fun createA(): A
internal final enum class A : kotlin.Enum<A> {
public enum entry ONE : A {
private constructor ONE()
internal final override /*1*/ /*fake_override*/ val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public enum entry TWO : A {
private constructor TWO()
internal final override /*1*/ /*fake_override*/ val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
private constructor A(/*0*/ c: kotlin.Int)
internal final val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): A
public final /*synthesized*/ fun values(): kotlin.Array<A>
}
@@ -0,0 +1,10 @@
// KT-7753: attempt to call enum constructor explicitly
enum class A(val c: Int) {
ONE(1),
TWO(2);
fun createA(): A {
// Error should be here!
return <!ENUM_CLASS_CONSTRUCTOR_CALL!>A(10)<!>
}
}
@@ -0,0 +1,41 @@
package
internal final enum class A : kotlin.Enum<A> {
public enum entry ONE : A {
private constructor ONE()
internal final override /*1*/ /*fake_override*/ val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
internal final override /*1*/ /*fake_override*/ fun createA(): A
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public enum entry TWO : A {
private constructor TWO()
internal final override /*1*/ /*fake_override*/ val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
internal final override /*1*/ /*fake_override*/ fun createA(): A
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
private constructor A(/*0*/ c: kotlin.Int)
internal final val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
internal final fun createA(): A
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): A
public final /*synthesized*/ fun values(): kotlin.Array<A>
}
@@ -0,0 +1,15 @@
// KT-7753: attempt to call enum constructor explicitly
enum class A(val c: Int) {
ONE(1) {
override fun selfOrFriend(): A {
return this
}
},
TWO(2) {
override fun selfOrFriend(): A {
return <!ENUM_CLASS_CONSTRUCTOR_CALL!>A(42)<!>
}
};
abstract fun selfOrFriend(): A
}
@@ -0,0 +1,41 @@
package
internal final enum class A : kotlin.Enum<A> {
public enum entry ONE : A {
private constructor ONE()
internal final override /*1*/ /*fake_override*/ val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
internal open override /*1*/ fun selfOrFriend(): A
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public enum entry TWO : A {
private constructor TWO()
internal final override /*1*/ /*fake_override*/ val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
internal open override /*1*/ fun selfOrFriend(): A
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
private constructor A(/*0*/ c: kotlin.Int)
internal final val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
internal abstract fun selfOrFriend(): A
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): A
public final /*synthesized*/ fun values(): kotlin.Array<A>
}
@@ -0,0 +1,13 @@
// KT-7753: attempt to call enum constructor explicitly
enum class A(val c: Int) {
ONE(1),
TWO(2),
THREE(3),
FOURTY_TWO();
var last: A? = null
constructor(): this(42) {
last = <!ENUM_CLASS_CONSTRUCTOR_CALL!>A(13)<!>
}
}
@@ -0,0 +1,66 @@
package
internal final enum class A : kotlin.Enum<A> {
public enum entry ONE : A {
private constructor ONE()
internal final override /*1*/ /*fake_override*/ val c: kotlin.Int
internal final override /*1*/ /*fake_override*/ var last: A?
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public enum entry TWO : A {
private constructor TWO()
internal final override /*1*/ /*fake_override*/ val c: kotlin.Int
internal final override /*1*/ /*fake_override*/ var last: A?
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public enum entry THREE : A {
private constructor THREE()
internal final override /*1*/ /*fake_override*/ val c: kotlin.Int
internal final override /*1*/ /*fake_override*/ var last: A?
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public enum entry FOURTY_TWO : A {
private constructor FOURTY_TWO()
internal final override /*1*/ /*fake_override*/ val c: kotlin.Int
internal final override /*1*/ /*fake_override*/ var last: A?
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
private constructor A()
private constructor A(/*0*/ c: kotlin.Int)
internal final val c: kotlin.Int
internal final var last: A?
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): A
public final /*synthesized*/ fun values(): kotlin.Array<A>
}
@@ -0,0 +1,10 @@
// KT-7753: attempt to call enum constructor explicitly
enum class A(val c: Int) {
// No errors at both places, but warnings about deprecated
ONE: <!ENUM_ENTRY_USES_DEPRECATED_SUPER_CONSTRUCTOR!>A(1)<!>,
TWO: <!ENUM_ENTRY_USES_DEPRECATED_SUPER_CONSTRUCTOR!>A(2)<!>;
fun getA(): A {
return ONE
}
}
@@ -0,0 +1,41 @@
package
internal final enum class A : kotlin.Enum<A> {
public enum entry ONE : A {
private constructor ONE()
internal final override /*1*/ /*fake_override*/ val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
internal final override /*1*/ /*fake_override*/ fun getA(): A
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public enum entry TWO : A {
private constructor TWO()
internal final override /*1*/ /*fake_override*/ val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
internal final override /*1*/ /*fake_override*/ fun getA(): A
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
private constructor A(/*0*/ c: kotlin.Int)
internal final val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
internal final fun getA(): A
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): A
public final /*synthesized*/ fun values(): kotlin.Array<A>
}
@@ -0,0 +1,9 @@
// KT-7753 false positive: enum constructor can be called from secondary constructor
enum class A(val c: Int) {
ONE(1),
TWO(2),
THREE(3),
FOURTY_TWO();
constructor(): this(42)
}
@@ -0,0 +1,61 @@
package
internal final enum class A : kotlin.Enum<A> {
public enum entry ONE : A {
private constructor ONE()
internal final override /*1*/ /*fake_override*/ val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public enum entry TWO : A {
private constructor TWO()
internal final override /*1*/ /*fake_override*/ val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public enum entry THREE : A {
private constructor THREE()
internal final override /*1*/ /*fake_override*/ val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public enum entry FOURTY_TWO : A {
private constructor FOURTY_TWO()
internal final override /*1*/ /*fake_override*/ val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
private constructor A()
private constructor A(/*0*/ c: kotlin.Int)
internal final val c: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): A
public final /*synthesized*/ fun values(): kotlin.Array<A>
}
@@ -4185,6 +4185,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
doTest(fileName);
}
@TestMetadata("ConstructorCallFromOutside.kt")
public void testConstructorCallFromOutside() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/enum/ConstructorCallFromOutside.kt");
doTest(fileName);
}
@TestMetadata("dontCreatePackageTypeForEnumEntry.kt")
public void testDontCreatePackageTypeForEnumEntry() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/enum/dontCreatePackageTypeForEnumEntry.kt");
@@ -4329,6 +4335,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
doTest(fileName);
}
@TestMetadata("ExplicitConstructorCall.kt")
public void testExplicitConstructorCall() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/enum/ExplicitConstructorCall.kt");
doTest(fileName);
}
@TestMetadata("extensionNamedAsEnumEntry.kt")
public void testExtensionNamedAsEnumEntry() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/enum/extensionNamedAsEnumEntry.kt");
@@ -4353,6 +4365,18 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
doTest(fileName);
}
@TestMetadata("InsideEntryConstructorCall.kt")
public void testInsideEntryConstructorCall() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/enum/InsideEntryConstructorCall.kt");
doTest(fileName);
}
@TestMetadata("InsideSecondaryConstructorCall.kt")
public void testInsideSecondaryConstructorCall() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/enum/InsideSecondaryConstructorCall.kt");
doTest(fileName);
}
@TestMetadata("javaEnumValueOfMethod.kt")
public void testJavaEnumValueOfMethod() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/enum/javaEnumValueOfMethod.kt");
@@ -4407,6 +4431,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
doTest(fileName);
}
@TestMetadata("OldSyntaxConstructorCall.kt")
public void testOldSyntaxConstructorCall() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/enum/OldSyntaxConstructorCall.kt");
doTest(fileName);
}
@TestMetadata("openMemberInEnum.kt")
public void testOpenMemberInEnum() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/enum/openMemberInEnum.kt");
@@ -4419,6 +4449,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
doTest(fileName);
}
@TestMetadata("SecondaryConstructorCall.kt")
public void testSecondaryConstructorCall() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/enum/SecondaryConstructorCall.kt");
doTest(fileName);
}
@TestMetadata("starImportNestedClassAndEntries.kt")
public void testStarImportNestedClassAndEntries() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/enum/starImportNestedClassAndEntries.kt");