[FIR2IR]: fix translation of this references in instance methods
Currently FirThisReceiverExpression of instance methods are translated to references of the class' thisReceiver, not the method's dispatch receiver, which causes problems with IrFrameMap::typeOf, as the class' thisReceiver is not in the typeMap. This commit translates non-qualified "this" references of instance methods to references of the methods' dispatch receiver.
This commit is contained in:
committed by
Mikhail Glukhikh
parent
6b4e5bc2f0
commit
573188bdc4
@@ -23,13 +23,13 @@ FILE fqName:<root> fileName:/dataClassesGeneric.kt
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun component1 (): T of <root>.Test1 declared in <root>.Test1'
|
||||
CALL 'public final fun <get-x> (): T of <root>.Test1 declared in <root>.Test1' type=T of <root>.Test1 origin=null
|
||||
$this: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1' type=<root>.Test1<T of <root>.Test1> origin=null
|
||||
$this: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1.component1' type=<root>.Test1 origin=null
|
||||
FUN name:copy visibility:public modality:FINAL <> ($this:<root>.Test1, x:T of <root>.Test1) returnType:<root>.Test1<T of <root>.Test1>
|
||||
$this: VALUE_PARAMETER name:<this> type:<root>.Test1
|
||||
VALUE_PARAMETER name:x index:0 type:T of <root>.Test1
|
||||
EXPRESSION_BODY
|
||||
CALL 'public final fun <get-x> (): T of <root>.Test1 declared in <root>.Test1' type=T of <root>.Test1 origin=null
|
||||
$this: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1' type=<root>.Test1<T of <root>.Test1> origin=null
|
||||
$this: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1.copy' type=<root>.Test1 origin=null
|
||||
BLOCK_BODY
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
||||
overridden:
|
||||
@@ -68,13 +68,13 @@ FILE fqName:<root> fileName:/dataClassesGeneric.kt
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun component1 (): T of <root>.Test2 declared in <root>.Test2'
|
||||
CALL 'public final fun <get-x> (): T of <root>.Test2 declared in <root>.Test2' type=T of <root>.Test2 origin=null
|
||||
$this: GET_VAR '<this>: <root>.Test2 declared in <root>.Test2' type=<root>.Test2<T of <root>.Test2> origin=null
|
||||
$this: GET_VAR '<this>: <root>.Test2 declared in <root>.Test2.component1' type=<root>.Test2 origin=null
|
||||
FUN name:copy visibility:public modality:FINAL <> ($this:<root>.Test2, x:T of <root>.Test2) returnType:<root>.Test2<T of <root>.Test2>
|
||||
$this: VALUE_PARAMETER name:<this> type:<root>.Test2
|
||||
VALUE_PARAMETER name:x index:0 type:T of <root>.Test2
|
||||
EXPRESSION_BODY
|
||||
CALL 'public final fun <get-x> (): T of <root>.Test2 declared in <root>.Test2' type=T of <root>.Test2 origin=null
|
||||
$this: GET_VAR '<this>: <root>.Test2 declared in <root>.Test2' type=<root>.Test2<T of <root>.Test2> origin=null
|
||||
$this: GET_VAR '<this>: <root>.Test2 declared in <root>.Test2.copy' type=<root>.Test2 origin=null
|
||||
BLOCK_BODY
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
||||
overridden:
|
||||
@@ -113,13 +113,13 @@ FILE fqName:<root> fileName:/dataClassesGeneric.kt
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun component1 (): kotlin.collections.List<T of <root>.Test3> declared in <root>.Test3'
|
||||
CALL 'public final fun <get-x> (): kotlin.collections.List<T of <root>.Test3> declared in <root>.Test3' type=kotlin.collections.List<T of <root>.Test3> origin=null
|
||||
$this: GET_VAR '<this>: <root>.Test3 declared in <root>.Test3' type=<root>.Test3<T of <root>.Test3> origin=null
|
||||
$this: GET_VAR '<this>: <root>.Test3 declared in <root>.Test3.component1' type=<root>.Test3 origin=null
|
||||
FUN name:copy visibility:public modality:FINAL <> ($this:<root>.Test3, x:kotlin.collections.List<T of <root>.Test3>) returnType:<root>.Test3<T of <root>.Test3>
|
||||
$this: VALUE_PARAMETER name:<this> type:<root>.Test3
|
||||
VALUE_PARAMETER name:x index:0 type:kotlin.collections.List<T of <root>.Test3>
|
||||
EXPRESSION_BODY
|
||||
CALL 'public final fun <get-x> (): kotlin.collections.List<T of <root>.Test3> declared in <root>.Test3' type=kotlin.collections.List<T of <root>.Test3> origin=null
|
||||
$this: GET_VAR '<this>: <root>.Test3 declared in <root>.Test3' type=<root>.Test3<T of <root>.Test3> origin=null
|
||||
$this: GET_VAR '<this>: <root>.Test3 declared in <root>.Test3.copy' type=<root>.Test3 origin=null
|
||||
BLOCK_BODY
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
||||
overridden:
|
||||
@@ -157,13 +157,13 @@ FILE fqName:<root> fileName:/dataClassesGeneric.kt
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun component1 (): kotlin.collections.List<kotlin.String> declared in <root>.Test4'
|
||||
CALL 'public final fun <get-x> (): kotlin.collections.List<kotlin.String> declared in <root>.Test4' type=kotlin.collections.List<kotlin.String> origin=null
|
||||
$this: GET_VAR '<this>: <root>.Test4 declared in <root>.Test4' type=<root>.Test4 origin=null
|
||||
$this: GET_VAR '<this>: <root>.Test4 declared in <root>.Test4.component1' type=<root>.Test4 origin=null
|
||||
FUN name:copy visibility:public modality:FINAL <> ($this:<root>.Test4, x:kotlin.collections.List<kotlin.String>) returnType:<root>.Test4
|
||||
$this: VALUE_PARAMETER name:<this> type:<root>.Test4
|
||||
VALUE_PARAMETER name:x index:0 type:kotlin.collections.List<kotlin.String>
|
||||
EXPRESSION_BODY
|
||||
CALL 'public final fun <get-x> (): kotlin.collections.List<kotlin.String> declared in <root>.Test4' type=kotlin.collections.List<kotlin.String> origin=null
|
||||
$this: GET_VAR '<this>: <root>.Test4 declared in <root>.Test4' type=<root>.Test4 origin=null
|
||||
$this: GET_VAR '<this>: <root>.Test4 declared in <root>.Test4.copy' type=<root>.Test4 origin=null
|
||||
BLOCK_BODY
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
||||
overridden:
|
||||
|
||||
Reference in New Issue
Block a user