Generate enum values with bodies properly (KT-15803)

This commit is contained in:
Yan Zhulanow
2017-01-30 18:48:55 +03:00
parent 18e0baa13e
commit 1b337e1a48
12 changed files with 284 additions and 50 deletions
+37
View File
@@ -0,0 +1,37 @@
enum class E {
X {
override fun a() {}
},
Y {
override fun a() {}
};
abstract fun a()
fun b() {}
object Obj
class NestedClass
}
enum class E2 {
X("") {
override fun a() {}
},
Y(5) {
override fun a() {}
};
constructor(n: Int) {}
constructor(s: String) {}
abstract fun a()
}
enum class E3(val a: String) {
X(""), Y("")
}
enum class E4(val a: String, val b: Int, val c: Long, val d: Boolean) {
X("", 4, 2L, true)
}
+125
View File
@@ -0,0 +1,125 @@
public enum E {
/*public static final*/ X /* = new X(){
@java.lang.Override()
public void a() {
}
X() {
super();
}
} */,
/*public static final*/ Y /* = new Y(){
@java.lang.Override()
public void a() {
}
Y() {
super();
}
} */;
public abstract void a();
public final void b() {
}
E() {
}
public static final class Obj {
public static final E.Obj INSTANCE = null;
private Obj() {
super();
}
}
public static final class NestedClass {
public NestedClass() {
super();
}
}
}
////////////////////
public enum E2 {
/*public static final*/ X /* = new X(0){
@java.lang.Override()
public void a() {
}
X() {
super(0);
}
} */,
/*public static final*/ Y /* = new Y(0){
@java.lang.Override()
public void a() {
}
Y() {
super(0);
}
} */;
public abstract void a();
E2(int n) {
}
E2(java.lang.String s) {
}
}
////////////////////
public enum E3 {
/*public static final*/ X /* = new X(null) */,
/*public static final*/ Y /* = new Y(null) */;
private final java.lang.String a = null;
public final java.lang.String getA() {
return null;
}
E3(java.lang.String a) {
}
}
////////////////////
public enum E4 {
/*public static final*/ X /* = new X(null, 0, 0L, false) */;
private final java.lang.String a = null;
private final int b = 0;
private final long c = 0L;
private final boolean d = false;
public final java.lang.String getA() {
return null;
}
public final int getB() {
return 0;
}
public final long getC() {
return 0L;
}
public final boolean getD() {
return false;
}
E4(java.lang.String a, int b, long c, boolean d) {
}
}
+2 -2
View File
@@ -37,8 +37,8 @@ public abstract @interface Anno3 {
public enum Colors {
/*public static final*/ WHITE /* = null */,
/*public static final*/ BLACK /* = null */;
/*public static final*/ WHITE /* = new WHITE() */,
/*public static final*/ BLACK /* = new BLACK() */;
Colors() {
}
+2 -2
View File
@@ -37,8 +37,8 @@ package test;
@Anno(value = "enum")
public enum Enum {
/*public static final*/ WHITE /* = null */,
/*public static final*/ BLACK /* = null */;
/*public static final*/ WHITE /* = new WHITE(0) */,
/*public static final*/ BLACK /* = new BLACK(0) */;
private final int x = 0;
public final int getX() {
+4 -4
View File
@@ -7,8 +7,8 @@ public abstract @interface Anno1 {
public enum Enum1 {
/*public static final*/ BLACK /* = null */,
/*public static final*/ WHITE /* = null */;
/*public static final*/ BLACK /* = new BLACK() */,
/*public static final*/ WHITE /* = new WHITE() */;
Enum1() {
}
@@ -18,8 +18,8 @@ public enum Enum1 {
public enum Enum2 {
/*public static final*/ RED /* = null */,
/*public static final*/ WHITE /* = null */;
/*public static final*/ RED /* = new RED(null, 0) */,
/*public static final*/ WHITE /* = new WHITE(null, 0) */;
private final java.lang.String col = null;
private final int col2 = 0;
+2 -2
View File
@@ -32,8 +32,8 @@ public final class Inheritor extends BaseClass {
public enum Result {
/*public static final*/ SUCCESS /* = null */,
/*public static final*/ ERROR /* = null */;
/*public static final*/ SUCCESS /* = new SUCCESS() */,
/*public static final*/ ERROR /* = new ERROR() */;
Result() {
}
+2 -2
View File
@@ -37,8 +37,8 @@ public final class Test {
}
public static enum NestedEnum {
/*public static final*/ BLACK /* = null */,
/*public static final*/ WHITE /* = null */;
/*public static final*/ BLACK /* = new BLACK() */,
/*public static final*/ WHITE /* = new WHITE() */;
NestedEnum() {
}
+14 -14
View File
@@ -1,8 +1,20 @@
package test;
public enum EnumClass {
/*public static final*/ BLACK /* = new BLACK() */,
/*public static final*/ WHITE /* = new WHITE() */;
EnumClass() {
}
}
////////////////////
package test;
public enum EnumClass2 {
/*public static final*/ WHITE /* = null */,
/*public static final*/ RED /* = null */;
/*public static final*/ WHITE /* = new WHITE(null) */,
/*public static final*/ RED /* = new RED(null) */;
private final java.lang.String blah = null;
EnumClass2(java.lang.String blah) {
@@ -18,18 +30,6 @@ public abstract @interface MyAnnotation {
////////////////////
package test;
public enum EnumClass {
/*public static final*/ BLACK /* = null */,
/*public static final*/ WHITE /* = null */;
EnumClass() {
}
}
////////////////////
package error;
public final class NonExistentClass {
+9
View File
@@ -24,4 +24,13 @@ enum EnumClass2 {
EnumClass2(String blah) {
this.blah = blah;
}
}
enum EnumClass3 {
A {
@Override
void a() {}
};
abstract void a();
}