Fix KProperty.javaField for fake overrides
#KT-8131 Fixed
This commit is contained in:
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
// KT-8131 Cannot find backing field in ancestor class via reflection
|
||||
|
||||
import kotlin.reflect.*
|
||||
import kotlin.reflect.jvm.*
|
||||
|
||||
open class TestBase {
|
||||
var id = 0L
|
||||
}
|
||||
|
||||
class TestChild : TestBase()
|
||||
|
||||
fun box(): String {
|
||||
val property = TestChild::class.memberProperties.first { it.name == "id" } as KMutableProperty<*>
|
||||
if (property.javaField == null)
|
||||
return "Fail: no field"
|
||||
if (property.javaGetter == null)
|
||||
return "Fail: no getter"
|
||||
if (property.javaSetter == null)
|
||||
return "Fail: no setter"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
import kotlin.reflect.*
|
||||
import kotlin.reflect.jvm.*
|
||||
|
||||
open class TestBase {
|
||||
fun id() = 0L
|
||||
}
|
||||
|
||||
class TestChild : TestBase()
|
||||
|
||||
fun box(): String {
|
||||
if (TestChild::class.memberFunctions.first { it.name == "id" }.javaMethod == null)
|
||||
return "No method for TestChild.id()"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+21
@@ -3987,6 +3987,27 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode
|
||||
doTestWithStdlib(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/codegen/boxWithStdlib/reflection/mapping/fakeOverrides")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
public static class FakeOverrides extends AbstractBlackBoxCodegenTest {
|
||||
public void testAllFilesPresentInFakeOverrides() throws Exception {
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/boxWithStdlib/reflection/mapping/fakeOverrides"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("javaFieldGetterSetter.kt")
|
||||
public void testJavaFieldGetterSetter() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/mapping/fakeOverrides/javaFieldGetterSetter.kt");
|
||||
doTestWithStdlib(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("javaMethod.kt")
|
||||
public void testJavaMethod() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/mapping/fakeOverrides/javaMethod.kt");
|
||||
doTestWithStdlib(fileName);
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/codegen/boxWithStdlib/reflection/mapping/jvmStatic")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
|
||||
Reference in New Issue
Block a user