Adjust receivers for possibly synthetic properties access

Synthetic property accessors are treated as extension functions on Java
classes by the front-end. However, underlying Java accessor methods are
proper members.
This commit is contained in:
Dmitry Petrov
2018-07-19 15:37:57 +03:00
parent 73acc86785
commit 779cae7db5
7 changed files with 67 additions and 18 deletions
@@ -3,7 +3,7 @@ FILE fqName:<root> fileName:/javaSyntheticProperty.kt
FIELD PROPERTY_BACKING_FIELD name:test type:kotlin.String? visibility:public flags:final
EXPRESSION_BODY
CALL 'getFoo(): String!' type=kotlin.String? origin=GET_PROPERTY
$receiver: CALL 'constructor J()' type=J origin=null
$this: CALL 'constructor J()' type=J origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test> visibility:public modality:FINAL <> () returnType:kotlin.String? flags:
correspondingProperty: PROPERTY name:test visibility:public modality:FINAL flags:val
BLOCK_BODY
@@ -7,4 +7,4 @@ FILE fqName:<root> fileName:/jdkClassSyntheticProperty.kt
RETURN type=kotlin.Nothing from='<get-test>() on Class<*>: Array<(out) Field!>!'
CALL 'getDeclaredFields(): Array<(out) Field!>!' type=kotlin.Array<out java.lang.reflect.Field!>? origin=GET_PROPERTY
<`0>: kotlin.Any?
$receiver: GET_VAR 'this@test: Class<*>' type=java.lang.Class<*> origin=null
$this: GET_VAR 'this@test: Class<*>' type=java.lang.Class<*> origin=null