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:
committed by
Yan Zhulanow
parent
e131763cb0
commit
e4158a5571
+31
@@ -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"
|
||||
}
|
||||
@@ -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
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
@@ -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
@@ -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) {
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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() {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user