Kapt: Fix anonymous type transformer, do not use ClassDescriptor.defaultType as a replacement (KT-27119)

This commit is contained in:
Yan Zhulanow
2018-09-28 22:18:03 +03:00
parent 39863edd0e
commit ac1dd59472
8 changed files with 181 additions and 24 deletions
@@ -0,0 +1,37 @@
// WITH_RUNTIME
// FILE: lib/Prop.java
package lib;
public abstract class Prop<T> {
public abstract int get(T key);
public abstract void set(T key, int value);
}
// FILE: test.kt
package test
import lib.Prop
class Cl(var name: String)
val TEST = object : Prop<Cl>() {
override fun get(key: Cl) = key.name.length
override fun set(key: Cl, value: Int) {
key.name = " ".repeat(value)
}
}
val TESTS_ARRAY = arrayOf(object : Prop<Cl>() {
override fun get(key: Cl) = key.name.length
override fun set(key: Cl, value: Int) {
key.name = " ".repeat(value)
}
})
val TESTS_LIST = listOf(object : Prop<Cl>() {
override fun get(key: Cl) = key.name.length
override fun set(key: Cl, value: Int) {
key.name = " ".repeat(value)
}
})
@@ -0,0 +1,73 @@
package lib;
public abstract class Prop<T> {
public Prop() {
super();
}
public abstract int get(T key);
public abstract void set(T key, int value);
}
////////////////////
package test;
import java.lang.System;
@kotlin.Metadata()
public final class Cl {
@org.jetbrains.annotations.NotNull()
private java.lang.String name;
@org.jetbrains.annotations.NotNull()
public final java.lang.String getName() {
return null;
}
public final void setName(@org.jetbrains.annotations.NotNull()
java.lang.String p0) {
}
public Cl(@org.jetbrains.annotations.NotNull()
java.lang.String name) {
super();
}
}
////////////////////
package test;
import java.lang.System;
@kotlin.Metadata()
public final class TestKt {
public TestKt() {
super();
}
@org.jetbrains.annotations.NotNull()
private static final lib.Prop<test.Cl> TEST = null;
@org.jetbrains.annotations.NotNull()
private static final lib.Prop<test.Cl>[] TESTS_ARRAY = null;
@org.jetbrains.annotations.NotNull()
private static final java.util.List<lib.Prop<test.Cl>> TESTS_LIST = null;
@org.jetbrains.annotations.NotNull()
public static final lib.Prop<test.Cl> getTEST() {
return null;
}
@org.jetbrains.annotations.NotNull()
public static final lib.Prop<test.Cl>[] getTESTS_ARRAY() {
return null;
}
@org.jetbrains.annotations.NotNull()
public static final java.util.List<lib.Prop<test.Cl>> getTESTS_LIST() {
return null;
}
}
@@ -0,0 +1,11 @@
interface Named {
val name: String?
}
class Product2 : Named {
override var name: String? = null
constructor(otherName: String) {
this.name = otherName
}
}
@@ -0,0 +1,34 @@
import java.lang.System;
@kotlin.Metadata()
public abstract interface Named {
@org.jetbrains.annotations.Nullable()
public abstract java.lang.String getName();
}
////////////////////
import java.lang.System;
@kotlin.Metadata()
public final class Product2 implements Named {
@org.jetbrains.annotations.Nullable()
private java.lang.String name;
@org.jetbrains.annotations.Nullable()
@java.lang.Override()
public java.lang.String getName() {
return null;
}
public void setName(@org.jetbrains.annotations.Nullable()
java.lang.String p0) {
}
public Product2(@org.jetbrains.annotations.NotNull()
java.lang.String otherName) {
super();
}
}
@@ -28,12 +28,12 @@ public final class Kt14997Kt {
}
@org.jetbrains.annotations.NotNull()
public static final java.lang.Runnable b() {
public static final java.lang.Object b() {
return null;
}
@org.jetbrains.annotations.NotNull()
public static final CrashMe c() {
public static final java.lang.Object c() {
return null;
}
@@ -36,7 +36,7 @@ public final class Kt18682Kt {
}
@org.jetbrains.annotations.NotNull()
public static final java.util.List<Foo> test4() {
public static final java.util.List<java.lang.Object> test4() {
return null;
}
}