psi2ir: Merge constant entries in string template expressions

This is required to handle UCNs properly, see KT-28006.

 #KT-28006
This commit is contained in:
Dmitry Petrov
2018-11-06 18:00:35 +03:00
parent 6bb5e028a5
commit bd1491ac8a
84 changed files with 476 additions and 351 deletions
@@ -50,7 +50,7 @@ FILE fqName:<root> fileName:/differentReceivers.kt
EXPRESSION_BODY
CALL 'provideDelegate(Any?, Any) on MyClass: String' type=kotlin.String origin=null
$receiver: CALL 'constructor MyClass(String)' type=MyClass origin=null
value: CONST String type=kotlin.String value=O
value: CONST String type=kotlin.String value="O"
host: CONST Null type=kotlin.Nothing? value=null
p: PROPERTY_REFERENCE 'testO: String' field=null getter='<get-testO>(): String' setter=null type=kotlin.reflect.KProperty0<kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-testO> visibility:public modality:FINAL <> () returnType:kotlin.String flags:
@@ -64,7 +64,7 @@ FILE fqName:<root> fileName:/differentReceivers.kt
PROPERTY name:testK visibility:public modality:FINAL flags:delegated,val
FIELD DELEGATE name:testK$delegate type:kotlin.String visibility:private flags:final,static
EXPRESSION_BODY
CONST String type=kotlin.String value=K
CONST String type=kotlin.String value="K"
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-testK> visibility:public modality:FINAL <> () returnType:kotlin.String flags:
correspondingProperty: PROPERTY name:testK visibility:public modality:FINAL flags:delegated,val
BLOCK_BODY
@@ -84,7 +84,7 @@ FILE fqName:<root> fileName:/local.kt
VAR DELEGATE name:testMember$delegate type:Delegate flags:val
CALL 'provideDelegate(Any?, Any?): Delegate' type=Delegate origin=null
$this: CALL 'constructor DelegateProvider(String)' type=DelegateProvider origin=null
value: CONST String type=kotlin.String value=OK
value: CONST String type=kotlin.String value="OK"
thisRef: CONST Null type=kotlin.Nothing? value=null
property: LOCAL_DELEGATED_PROPERTY_REFERENCE 'testMember: String' delegate='`testMember$delegate`: Delegate' getter='<get-testMember>(): String' setter=null type=kotlin.reflect.KProperty0<kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-testMember> visibility:local modality:FINAL <> () returnType:kotlin.String flags:
@@ -51,7 +51,7 @@ FILE fqName:<root> fileName:/localDifferentReceivers.kt
VAR DELEGATE name:testO$delegate type:kotlin.String flags:val
CALL 'provideDelegate(Any?, Any) on MyClass: String' type=kotlin.String origin=null
$receiver: CALL 'constructor MyClass(String)' type=MyClass origin=null
value: CONST String type=kotlin.String value=O
value: CONST String type=kotlin.String value="O"
host: CONST Null type=kotlin.Nothing? value=null
p: LOCAL_DELEGATED_PROPERTY_REFERENCE 'testO: String' delegate='`testO$delegate`: String' getter='<get-testO>(): String' setter=null type=kotlin.reflect.KProperty0<kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-testO> visibility:local modality:FINAL <> () returnType:kotlin.String flags:
@@ -63,7 +63,7 @@ FILE fqName:<root> fileName:/localDifferentReceivers.kt
p: LOCAL_DELEGATED_PROPERTY_REFERENCE 'testO: String' delegate='`testO$delegate`: String' getter='<get-testO>(): String' setter=null type=kotlin.reflect.KProperty0<kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
LOCAL_DELEGATED_PROPERTY name:testK type:kotlin.String flags:val
VAR DELEGATE name:testK$delegate type:kotlin.String flags:val
CONST String type=kotlin.String value=K
CONST String type=kotlin.String value="K"
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-testK> visibility:local modality:FINAL <> () returnType:kotlin.String flags:
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testK>(): String'
@@ -89,7 +89,7 @@ FILE fqName:<root> fileName:/member.kt
EXPRESSION_BODY
CALL 'provideDelegate(Any?, Any?): Delegate' type=Delegate origin=null
$this: CALL 'constructor DelegateProvider(String)' type=DelegateProvider origin=null
value: CONST String type=kotlin.String value=OK
value: CONST String type=kotlin.String value="OK"
thisRef: GET_VAR 'this@Host: Host' type=Host origin=null
property: PROPERTY_REFERENCE 'testMember: String' field=null getter='<get-testMember>(): String' setter=null type=kotlin.reflect.KProperty1<Host, kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-testMember> visibility:public modality:FINAL <> ($this:Host) returnType:kotlin.String flags:
@@ -60,7 +60,7 @@ FILE fqName:<root> fileName:/memberExtension.kt
EXPRESSION_BODY
CALL 'provideDelegate(Any?, Any) on String: Host.StringDelegate' type=Host.StringDelegate origin=null
$this: GET_VAR 'this@Host: Host' type=Host origin=null
$receiver: CONST String type=kotlin.String value=K
$receiver: CONST String type=kotlin.String value="K"
host: GET_VAR 'this@Host: Host' type=Host origin=null
p: PROPERTY_REFERENCE 'plusK: String on String' field=null getter='<get-plusK>() on String: String' setter=null type=kotlin.reflect.KProperty2<kotlin.String, Host, kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-plusK> visibility:public modality:FINAL <> ($this:Host, $receiver:kotlin.String) returnType:kotlin.String flags:
@@ -79,7 +79,7 @@ FILE fqName:<root> fileName:/memberExtension.kt
EXPRESSION_BODY
CALL '<get-plusK>() on String: String' type=kotlin.String origin=GET_PROPERTY
$this: GET_VAR 'this@Host: Host' type=Host origin=null
$receiver: CONST String type=kotlin.String value=O
$receiver: CONST String type=kotlin.String value="O"
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-ok> visibility:public modality:FINAL <> ($this:Host) returnType:kotlin.String flags:
correspondingProperty: PROPERTY name:ok visibility:public modality:FINAL flags:val
$this: VALUE_PARAMETER name:<this> type:Host flags:
@@ -83,7 +83,7 @@ FILE fqName:<root> fileName:/topLevel.kt
EXPRESSION_BODY
CALL 'provideDelegate(Any?, Any?): Delegate' type=Delegate origin=null
$this: CALL 'constructor DelegateProvider(String)' type=DelegateProvider origin=null
value: CONST String type=kotlin.String value=OK
value: CONST String type=kotlin.String value="OK"
thisRef: CONST Null type=kotlin.Nothing? value=null
property: PROPERTY_REFERENCE 'testTopLevel: String' field=null getter='<get-testTopLevel>(): String' setter=null type=kotlin.reflect.KProperty0<kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-testTopLevel> visibility:public modality:FINAL <> () returnType:kotlin.String flags: