Minor, add some tests on get/set/name/instanceof for properties w/o reflection

This commit is contained in:
Alexander Udalov
2015-08-07 16:43:25 +03:00
parent 9f7cb752db
commit ccb58d8601
3 changed files with 65 additions and 0 deletions
@@ -0,0 +1,16 @@
// NO_KOTLIN_REFLECT
import kotlin.reflect.*
data class Box(val value: String)
var pr = Box("first")
fun box(): String {
val p = ::pr
if (p.get().value != "first") return "Fail value 1: ${p.get()}"
if (p.name != "pr") return "Fail name: ${p.name}"
p.set(Box("second"))
if (p.get().value != "second") return "Fail value 2: ${p.get()}"
return "OK"
}
@@ -0,0 +1,37 @@
// NO_KOTLIN_REFLECT
import kotlin.reflect.*
import kotlin.test.assertTrue
import kotlin.test.assertFalse
class A {
val readonly: String = ""
var mutable: String = ""
}
val readonly: String = ""
var mutable: String = ""
fun box(): String {
assertTrue(::readonly is KProperty0<*>)
assertFalse(::readonly is KMutableProperty0<*>)
assertFalse(::readonly is KProperty1<*, *>)
assertFalse(::readonly is KProperty2<*, *, *>)
assertTrue(::mutable is KProperty0<*>)
assertTrue(::mutable is KMutableProperty0<*>)
assertFalse(::mutable is KProperty1<*, *>)
assertFalse(::mutable is KProperty2<*, *, *>)
assertFalse(A::readonly is KProperty0<*>)
assertTrue(A::readonly is KProperty1<*, *>)
assertFalse(A::readonly is KMutableProperty1<*, *>)
assertFalse(A::readonly is KProperty2<*, *, *>)
assertFalse(A::mutable is KProperty0<*>)
assertTrue(A::mutable is KProperty1<*, *>)
assertTrue(A::mutable is KMutableProperty1<*, *>)
assertFalse(A::mutable is KProperty2<*, *, *>)
return "OK"
}
@@ -3495,6 +3495,18 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/boxWithStdlib/reflection/noKotlinReflect"), Pattern.compile("^(.+)\\.kt$"), true);
}
@TestMetadata("propertyGetSetName.kt")
public void testPropertyGetSetName() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/noKotlinReflect/propertyGetSetName.kt");
doTestWithStdlib(fileName);
}
@TestMetadata("propertyInstanceof.kt")
public void testPropertyInstanceof() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/noKotlinReflect/propertyInstanceof.kt");
doTestWithStdlib(fileName);
}
@TestMetadata("simpleClassLiterals.kt")
public void testSimpleClassLiterals() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/noKotlinReflect/simpleClassLiterals.kt");