From ccb58d86010f451e974f7c744375ae4cc94bab12 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 7 Aug 2015 16:43:25 +0300 Subject: [PATCH] Minor, add some tests on get/set/name/instanceof for properties w/o reflection --- .../noKotlinReflect/propertyGetSetName.kt | 16 ++++++++ .../noKotlinReflect/propertyInstanceof.kt | 37 +++++++++++++++++++ ...lackBoxWithStdlibCodegenTestGenerated.java | 12 ++++++ 3 files changed, 65 insertions(+) create mode 100644 compiler/testData/codegen/boxWithStdlib/reflection/noKotlinReflect/propertyGetSetName.kt create mode 100644 compiler/testData/codegen/boxWithStdlib/reflection/noKotlinReflect/propertyInstanceof.kt diff --git a/compiler/testData/codegen/boxWithStdlib/reflection/noKotlinReflect/propertyGetSetName.kt b/compiler/testData/codegen/boxWithStdlib/reflection/noKotlinReflect/propertyGetSetName.kt new file mode 100644 index 00000000000..2f989b02118 --- /dev/null +++ b/compiler/testData/codegen/boxWithStdlib/reflection/noKotlinReflect/propertyGetSetName.kt @@ -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" +} diff --git a/compiler/testData/codegen/boxWithStdlib/reflection/noKotlinReflect/propertyInstanceof.kt b/compiler/testData/codegen/boxWithStdlib/reflection/noKotlinReflect/propertyInstanceof.kt new file mode 100644 index 00000000000..c9133e2ec24 --- /dev/null +++ b/compiler/testData/codegen/boxWithStdlib/reflection/noKotlinReflect/propertyInstanceof.kt @@ -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" +} diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java index 519199607c1..28e19e180f0 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java @@ -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");