Kapt3: Number of bugfixes in JCTreeConverter:

Convert Java primitive and array types properly.
Enums: ignore first two synthetic constructor parameters, do not generate super class constructor call, add ACC_ENUM flag to enum values, do not generate "values" and "valueOf" methods.
Provide a JavaFileObject for JCCompilationUnit.
Handle DefaultImpls, ignore empty DefaultImpls classes.
Use a name table from Javac Names.
This commit is contained in:
Yan Zhulanow
2016-10-26 22:07:31 +03:00
committed by Yan Zhulanow
parent e131763cb0
commit e4158a5571
18 changed files with 618 additions and 92 deletions
+31
View File
@@ -0,0 +1,31 @@
annotation class Anno1
enum class Colors { WHITE, BLACK }
annotation class Anno2(
val i: Int = 5,
val s: String = "ABC",
val ii: IntArray = intArrayOf(1, 2, 3),
val ss: Array<String> = arrayOf("A", "B"),
val a: Anno1,
val color: Colors = Colors.BLACK,
val colors: Array<Colors> = arrayOf(Colors.BLACK, Colors.WHITE),
val clazz: kotlin.reflect.KClass<*>,
val classes: Array<kotlin.reflect.KClass<*>>
)
annotation class Anno3(val value: String)
@Anno1
@Anno2(a = Anno1(), clazz = TestAnno::class, classes = arrayOf(TestAnno::class, Anno1::class))
@Anno3(value = "value")
class TestAnno
@Anno3("value")
@Anno2(i = 6, s = "BCD", ii = intArrayOf(4, 5, 6), ss = arrayOf("Z", "X"),
a = Anno1(), color = Colors.WHITE, colors = arrayOf(Colors.WHITE),
clazz = TestAnno::class, classes = arrayOf(TestAnno::class, Anno1::class))
class TestAnno2 {
@Anno1
fun a(@Anno3("param-pam-pam") param: String) {}
@get:Anno3("getter") @set:Anno3("setter") @property:Anno3("property") @field:Anno3("field") @setparam:Anno3("setparam")
var b: String = "property initializer"
}
+87
View File
@@ -0,0 +1,87 @@
public abstract @interface Anno1 {
}
////////////////////
public enum Colors {
/*public static final*/ WHITE /* = null */,
/*public static final*/ BLACK /* = null */;
Colors() {
}
}
////////////////////
public abstract @interface Anno2 {
public abstract int i() default 5;
public abstract java.lang.String s() default "ABC";
public abstract int[] ii() default {1, 2, 3};
public abstract java.lang.String[] ss() default {"A", "B"};
public abstract Anno1 a();
public abstract Colors color() default Colors.BLACK;
public abstract Colors[] colors() default {Colors.BLACK, Colors.WHITE};
public abstract java.lang.Class clazz();
public abstract java.lang.Class[] classes();
}
////////////////////
public abstract @interface Anno3 {
public abstract java.lang.String value();
}
////////////////////
@Anno3(value = "value")
@Anno2(a = @Anno1(), clazz = TestAnno.class, classes = {TestAnno.class, Anno1.class})
@Anno1()
public final class TestAnno {
public TestAnno() {
super();
}
}
////////////////////
@Anno2(i = 6, s = "BCD", ii = {4, 5, 6}, ss = {"Z", "X"}, a = @Anno1(), color = Colors.WHITE, colors = {Colors.WHITE}, clazz = TestAnno.class, classes = {TestAnno.class, Anno1.class})
@Anno3(value = "value")
public final class TestAnno2 {
@Anno3(value = "field")
private java.lang.String b;
@Anno1()
public final void a(@Anno3(value = "param-pam-pam")
java.lang.String param) {
}
@Anno3(value = "getter")
public final java.lang.String getB() {
return null;
}
@Anno3(value = "setter")
public final void setB(@Anno3(value = "setparam")
java.lang.String p0) {
}
public TestAnno2() {
super();
}
}
+1 -1
View File
@@ -19,7 +19,7 @@ public final class User {
return 0;
}
public /*missing*/ User(java.lang.String firstName, java.lang.String secondName, int age) {
public User(java.lang.String firstName, java.lang.String secondName, int age) {
super();
}
+15
View File
@@ -0,0 +1,15 @@
interface IntfWithoutDefaultImpls
interface IntfWithDefaultImpls {
fun a() {}
}
interface Intf {
companion object {
val BLACK = 1
const val WHITE = 2
}
val color: Int
get() = BLACK
}
+54
View File
@@ -0,0 +1,54 @@
public abstract interface IntfWithoutDefaultImpls {
}
////////////////////
public abstract interface IntfWithDefaultImpls {
public abstract void a();
public static final class DefaultImpls {
public DefaultImpls() {
super();
}
public static void a(IntfWithDefaultImpls $this) {
}
}
}
////////////////////
public abstract interface Intf {
public static final Intf.Companion Companion = null;
public static final int WHITE = 2;
public abstract int getColor();
public static final class DefaultImpls {
public DefaultImpls() {
super();
}
public static int getColor(Intf $this) {
return 0;
}
}
public static final class Companion {
private static final int BLACK = 1;
public static final int WHITE = 2;
public final int getBLACK() {
return 0;
}
private Companion() {
super();
}
}
}
+10
View File
@@ -0,0 +1,10 @@
enum class Enum1 {
BLACK, WHITE
}
annotation class Anno1(val value: String)
enum class Enum2(@Anno1("first") val col: String, @Anno1("second") val col2: Int) {
RED("red", 1), WHITE("white", 2);
fun color() = col
}
+42
View File
@@ -0,0 +1,42 @@
public enum Enum1 {
/*public static final*/ BLACK /* = null */,
/*public static final*/ WHITE /* = null */;
Enum1() {
}
}
////////////////////
public abstract @interface Anno1 {
public abstract java.lang.String value();
}
////////////////////
public enum Enum2 {
/*public static final*/ RED /* = null */,
/*public static final*/ WHITE /* = null */;
private final java.lang.String col = null;
private final int col2 = 0;
final java.lang.String color() {
return null;
}
final java.lang.String getCol() {
return null;
}
final int getCol2() {
return 0;
}
Enum2(@Anno1(value = "first")
java.lang.String col, @Anno1(value = "second")
int col2) {
}
}
+6
View File
@@ -0,0 +1,6 @@
class FunctionsTest {
fun f() = String::length
fun f2() = fun (a: Int, b: Int) = a > b
fun f3() = run {}
fun f4() = run { 3 }
}
+22
View File
@@ -0,0 +1,22 @@
public final class FunctionsTest {
public final kotlin.reflect.KProperty1 f() {
return null;
}
public final kotlin.jvm.functions.Function2 f2() {
return null;
}
public final void f3() {
}
public final int f4() {
return 0;
}
public FunctionsTest() {
super();
}
}
+11 -28
View File
@@ -1,31 +1,14 @@
public abstract interface Context {
}
////////////////////
public final class Context {
}
////////////////////
public enum Result {
;
public static final Result SUCCESS = null;
public static final Result ERROR = null;
protected /*missing*/ Result(java.lang.String $enum_name_or_ordinal$0, int $enum_name_or_ordinal$1) {
super(null, 0);
}
public static Result[] values() {
return null;
}
public static Result valueOf(java.lang.String p0) {
return null;
/*public static final*/ SUCCESS /* = null */,
/*public static final*/ ERROR /* = null */;
Result() {
}
}
@@ -33,10 +16,10 @@ public enum Result {
public abstract class BaseClass {
public abstract Result doJob();
public /*missing*/ BaseClass(Context context, int num, boolean bool) {
public BaseClass(Context context, int num, boolean bool) {
super();
}
}
@@ -45,13 +28,13 @@ public abstract class BaseClass {
public final class Inheritor extends BaseClass {
@java.lang.Override()
public Result doJob() {
return null;
}
public /*missing*/ Inheritor(Context context) {
public Inheritor(Context context) {
super(null, 0, false);
}
}
}
+13
View File
@@ -0,0 +1,13 @@
class JvmStaticTest {
companion object {
@JvmStatic
val one = 1
val two = 2
const val c: Char = 'C'
}
val three: Byte = 3.toByte()
val d: Char = 'D'
}
+40
View File
@@ -0,0 +1,40 @@
public final class JvmStaticTest {
private final byte three = "3";
private final char d = 'D';
private static final int one = 1;
private static final int two = 2;
public static final char c = 'C';
public static final JvmStaticTest.Companion Companion = null;
public final byte getThree() {
return "0";
}
public final char getD() {
return '\u0000';
}
public JvmStaticTest() {
super();
}
public static final int getOne() {
return 0;
}
public static final class Companion {
public final int getOne() {
return 0;
}
public final int getTwo() {
return 0;
}
private Companion() {
super();
}
}
}
+9 -20
View File
@@ -1,19 +1,18 @@
public final class Test {
public /*missing*/ Test() {
public Test() {
super();
}
public static final class Nested {
public /*missing*/ Nested() {
public Nested() {
super();
}
public static final class NestedNested {
public /*missing*/ NestedNested() {
public NestedNested() {
super();
}
}
@@ -21,7 +20,7 @@ public final class Test {
public final class Inner {
public /*missing*/ Inner(Test $outer) {
public Inner(Test $outer) {
super();
}
}
@@ -29,7 +28,7 @@ public final class Test {
public static final class NestedObject {
public static final Test.NestedObject INSTANCE = null;
private /*missing*/ NestedObject() {
private NestedObject() {
super();
}
}
@@ -38,20 +37,10 @@ public final class Test {
}
public static enum NestedEnum {
;
public static final Test.NestedEnum BLACK = null;
public static final Test.NestedEnum WHITE = null;
/*public static final*/ BLACK /* = null */,
/*public static final*/ WHITE /* = null */;
protected /*missing*/ NestedEnum(java.lang.String $enum_name_or_ordinal$0, int $enum_name_or_ordinal$1) {
super(null, 0);
}
public static Test.NestedEnum[] values() {
return null;
}
public static Test.NestedEnum valueOf(java.lang.String p0) {
return null;
NestedEnum() {
}
}
}
}