Refactor property calls in reflection, fix some corner cases
- compute a FunctionCaller instance for getter and setter so that "call" only delegates to that FunctionCaller's "call", in the same way it's done in KFunctionImpl - use RuntimeTypeMapper.mapPropertySignature to get the exact origin and signature of a property and its accessors. This makes unwrapFakeOverride call unnecessary and also fixes some cases like private Java fields - temporarily drop custom range checks, will be re-added soon
This commit is contained in:
+12
@@ -303,6 +303,18 @@ public class BlackBoxWithJavaCodegenTestGenerated extends AbstractBlackBoxCodege
|
||||
doTestWithJava(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("mutatePrivateJavaInstanceField")
|
||||
public void testMutatePrivateJavaInstanceField() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithJava/reflection/mutatePrivateJavaInstanceField/");
|
||||
doTestWithJava(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("mutatePrivateJavaStaticField")
|
||||
public void testMutatePrivateJavaStaticField() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithJava/reflection/mutatePrivateJavaStaticField/");
|
||||
doTestWithJava(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("noConflictOnKotlinGetterAndJavaField")
|
||||
public void testNoConflictOnKotlinGetterAndJavaField() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithJava/reflection/noConflictOnKotlinGetterAndJavaField/");
|
||||
|
||||
+6
@@ -3537,6 +3537,12 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode
|
||||
doTestWithStdlib(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("privatePlatformStaticVarInObject.kt")
|
||||
public void testPrivatePlatformStaticVarInObject() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/properties/privatePlatformStaticVarInObject.kt");
|
||||
doTestWithStdlib(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("privatePropertyCallIsAccessibleOnAccessors.kt")
|
||||
public void testPrivatePropertyCallIsAccessibleOnAccessors() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/properties/privatePropertyCallIsAccessibleOnAccessors.kt");
|
||||
|
||||
Reference in New Issue
Block a user