//test for KT-3722 Write correct generic type information for generated fields import kotlin.properties.Delegates class Z { } class TParam { } class Zout { } class Zin { } class Test(val constructorProperty: T) { val classField1 : Z? = null val classField2 : Z? = null val classField3 : Zout? = null val classField4 : Zin? = null val delegates : Z? by Delegates.lazy {Z()} } fun box(): String { val clz = javaClass>() val constructorProperty = clz.getDeclaredField("constructorProperty"); if (constructorProperty.getGenericType().toString() != "T") return "fail0: " + constructorProperty.getGenericType(); val classField = clz.getDeclaredField("classField1"); if (classField.getGenericType().toString() != "Z") return "fail1:" + classField.getGenericType(); val classField2 = clz.getDeclaredField("classField2"); if (classField2.getGenericType().toString() != "Z") return "fail2:" + classField2.getGenericType(); val classField3 = clz.getDeclaredField("classField3"); if (classField3.getGenericType().toString() != "Zout") return "fail3:" + classField3.getGenericType(); val classField4 = clz.getDeclaredField("classField4"); if (classField4.getGenericType().toString() != "Zin") return "fail4:" + classField4.getGenericType(); val classField5 = clz.getDeclaredField("delegates\$delegate"); if (classField5.getGenericType().toString() != "kotlin.properties.ReadOnlyProperty>") return "fail5:" + classField5.getGenericType(); return "OK" }