Prohibit type parameters for enum classes

#KT-5696 Fixed
This commit is contained in:
Alexander Udalov
2014-10-17 15:01:26 +04:00
parent 63366042ed
commit ae401cac0f
17 changed files with 114 additions and 109 deletions
@@ -1,5 +1,7 @@
enum class List<out T>(val size : Int) {
Nil : List<Nothing>(0)
class List<out T>(val size : Int) {
class object {
val Nil = List<Nothing>(0)
}
}
fun List<String>.join() =
@@ -1,40 +1,19 @@
package
package
internal fun List<kotlin.String>.join(): kotlin.String
internal final enum class List</*0*/ out T> : kotlin.Enum<List<T>> {
private constructor List</*0*/ out T>(/*0*/ size: kotlin.Int)
internal final class List</*0*/ out T> {
public constructor List</*0*/ out T>(/*0*/ size: kotlin.Int)
internal final val size: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: List<T>): 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 equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public enum entry Nil : List<kotlin.Nothing> {
private constructor Nil()
internal final override /*1*/ /*fake_override*/ val size: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: List<kotlin.Nothing>): 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 class object <class-object-for-List> {
private constructor <class-object-for-List>()
internal final val Nil: List<kotlin.Nothing>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public class object <class-object-for-Nil> : List.Nil {
private constructor <class-object-for-Nil>()
internal final override /*1*/ /*fake_override*/ val size: kotlin.Int
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: List<kotlin.Nothing>): 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): List<T>
public final /*synthesized*/ fun values(): kotlin.Array<List<T>>
}
}
@@ -0,0 +1,7 @@
// KT-5696 Prohibit type parameters for enum classes
package bug
public enum class Foo<!TYPE_PARAMETERS_IN_ENUM!><T><!> {
A : Foo<String>()
}
@@ -0,0 +1,38 @@
package
package bug {
public final enum class Foo</*0*/ T> : kotlin.Enum<bug.Foo<T>> {
private constructor Foo</*0*/ T>()
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: bug.Foo<T>): 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 A : bug.Foo<kotlin.String> {
private constructor A()
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: bug.Foo<kotlin.String>): 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 class object <class-object-for-A> : bug.Foo.A {
private constructor <class-object-for-A>()
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: bug.Foo<kotlin.String>): 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): bug.Foo<T>
public final /*synthesized*/ fun values(): kotlin.Array<bug.Foo<T>>
}
}
@@ -10,13 +10,6 @@ enum class ProtocolState {
abstract fun signal() : ProtocolState
}
enum class Foo<T> {
<!NO_GENERICS_IN_SUPERTYPE_SPECIFIER!>X<!>
}
fun box() {
val <!UNUSED_VARIABLE!>x<!>: ProtocolState = ProtocolState.WAITING
}
@@ -1,29 +1,7 @@
package
package
internal fun box(): kotlin.Unit
internal final enum class Foo</*0*/ T> : kotlin.Enum<Foo<T>> {
private constructor Foo</*0*/ T>()
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: Foo<T>): 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 X {
private constructor X()
public class object <class-object-for-X> : Foo.X {
private constructor <class-object-for-X>()
}
}
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): Foo<T>
public final /*synthesized*/ fun values(): kotlin.Array<Foo<T>>
}
internal final enum class ProtocolState : kotlin.Enum<ProtocolState> {
private constructor ProtocolState()
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: ProtocolState): kotlin.Int
@@ -33,7 +11,7 @@ internal final enum class ProtocolState : kotlin.Enum<ProtocolState> {
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
internal abstract fun signal(): ProtocolState
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public enum entry TALKING : ProtocolState {
private constructor TALKING()
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: ProtocolState): kotlin.Int
@@ -43,7 +21,7 @@ internal final enum class ProtocolState : kotlin.Enum<ProtocolState> {
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
internal open override /*1*/ fun signal(): ProtocolState
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public class object <class-object-for-TALKING> : ProtocolState.TALKING {
private constructor <class-object-for-TALKING>()
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: ProtocolState): kotlin.Int
@@ -55,7 +33,7 @@ internal final enum class ProtocolState : kotlin.Enum<ProtocolState> {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
public enum entry WAITING : ProtocolState {
private constructor WAITING()
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: ProtocolState): kotlin.Int
@@ -65,7 +43,7 @@ internal final enum class ProtocolState : kotlin.Enum<ProtocolState> {
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
internal open override /*1*/ fun signal(): ProtocolState
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public class object <class-object-for-WAITING> : ProtocolState.WAITING {
private constructor <class-object-for-WAITING>()
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: ProtocolState): kotlin.Int
@@ -77,8 +55,8 @@ internal final enum class ProtocolState : kotlin.Enum<ProtocolState> {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): ProtocolState
public final /*synthesized*/ fun values(): kotlin.Array<ProtocolState>
}
}