[psi2ir] Add tests for implicit casts "to" and "from" dynamic type

This commit is contained in:
Zalim Bashorov
2019-04-04 15:38:24 +03:00
parent dffcfdc02f
commit 57a6b53780
5 changed files with 179 additions and 0 deletions
@@ -0,0 +1,11 @@
val d: dynamic = 1
val p: Int = d
fun test1(d: dynamic): Int = d
fun test2(d: dynamic): Any = d
fun test3(d: dynamic): Any? = d
fun test4(d: dynamic): String = d.member(1, 2, 3)
@@ -0,0 +1,48 @@
FILE fqName:<root> fileName:/implicitCastFromDynamic.kt
PROPERTY name:d visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:d type:dynamic visibility:public [final,static]
EXPRESSION_BODY
CONST Int type=kotlin.Int value=1
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-d> visibility:public modality:FINAL <> () returnType:dynamic
correspondingProperty: PROPERTY name:d visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-d> (): dynamic declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:d type:dynamic visibility:public [final,static] ' type=dynamic origin=null
PROPERTY name:p visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.Int visibility:public [final,static]
EXPRESSION_BODY
TYPE_OP type=kotlin.Int origin=IMPLICIT_CAST typeOperand=kotlin.Int
CALL 'public final fun <get-d> (): dynamic declared in <root>' type=dynamic origin=GET_PROPERTY
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-p> visibility:public modality:FINAL <> () returnType:kotlin.Int
correspondingProperty: PROPERTY name:p visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-p> (): kotlin.Int declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.Int visibility:public [final,static] ' type=kotlin.Int origin=null
FUN name:test1 visibility:public modality:FINAL <> (d:dynamic) returnType:kotlin.Int
VALUE_PARAMETER name:d index:0 type:dynamic
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test1 (d: dynamic): kotlin.Int declared in <root>'
TYPE_OP type=kotlin.Int origin=IMPLICIT_CAST typeOperand=kotlin.Int
GET_VAR 'd: dynamic declared in <root>.test1' type=dynamic origin=null
FUN name:test2 visibility:public modality:FINAL <> (d:dynamic) returnType:kotlin.Any
VALUE_PARAMETER name:d index:0 type:dynamic
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test2 (d: dynamic): kotlin.Any declared in <root>'
TYPE_OP type=kotlin.Any origin=IMPLICIT_CAST typeOperand=kotlin.Any
GET_VAR 'd: dynamic declared in <root>.test2' type=dynamic origin=null
FUN name:test3 visibility:public modality:FINAL <> (d:dynamic) returnType:kotlin.Any?
VALUE_PARAMETER name:d index:0 type:dynamic
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test3 (d: dynamic): kotlin.Any? declared in <root>'
GET_VAR 'd: dynamic declared in <root>.test3' type=dynamic origin=null
FUN name:test4 visibility:public modality:FINAL <> (d:dynamic) returnType:kotlin.String
VALUE_PARAMETER name:d index:0 type:dynamic
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test4 (d: dynamic): kotlin.String declared in <root>'
TYPE_OP type=kotlin.String origin=IMPLICIT_CAST typeOperand=kotlin.String
DYN_OP operator=INVOKE type=dynamic
receiver: DYN_MEMBER memberName='member' type=dynamic
GET_VAR 'd: dynamic declared in <root>.test4' type=dynamic origin=null
0: CONST Int type=kotlin.Int value=1
1: CONST Int type=kotlin.Int value=2
2: CONST Int type=kotlin.Int value=3
@@ -0,0 +1,32 @@
val d1: dynamic = 1
val p: Int = 1
var d2: dynamic = p
fun withDynamic(d: dynamic) = d
fun test1(s: String) {
withDynamic(s)
}
fun test2(a: Any) {
val d: dynamic = a
}
fun test3(a: Any?) {
val d: dynamic = a
}
fun test4(a: Any, s: String, na: Any?) {
var d: dynamic = p
d = a
d = na
d = s
}
fun test5(a: Any, s: String, na: Any?) {
d2 = a
d2 = na
d2 = s
}
@@ -0,0 +1,78 @@
FILE fqName:<root> fileName:/implicitCastToDynamic.kt
PROPERTY name:d1 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:d1 type:dynamic visibility:public [final,static]
EXPRESSION_BODY
CONST Int type=kotlin.Int value=1
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-d1> visibility:public modality:FINAL <> () returnType:dynamic
correspondingProperty: PROPERTY name:d1 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-d1> (): dynamic declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:d1 type:dynamic visibility:public [final,static] ' type=dynamic origin=null
PROPERTY name:p visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.Int visibility:public [final,static]
EXPRESSION_BODY
CONST Int type=kotlin.Int value=1
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-p> visibility:public modality:FINAL <> () returnType:kotlin.Int
correspondingProperty: PROPERTY name:p visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-p> (): kotlin.Int declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.Int visibility:public [final,static] ' type=kotlin.Int origin=null
PROPERTY name:d2 visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:d2 type:dynamic visibility:public [static]
EXPRESSION_BODY
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>' type=kotlin.Int origin=GET_PROPERTY
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-d2> visibility:public modality:FINAL <> () returnType:dynamic
correspondingProperty: PROPERTY name:d2 visibility:public modality:FINAL [var]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-d2> (): dynamic declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:d2 type:dynamic visibility:public [static] ' type=dynamic origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-d2> visibility:public modality:FINAL <> (<set-?>:dynamic) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:d2 visibility:public modality:FINAL [var]
VALUE_PARAMETER name:<set-?> index:0 type:dynamic
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:d2 type:dynamic visibility:public [static] ' type=kotlin.Unit origin=null
value: GET_VAR '<set-?>: dynamic declared in <root>.<set-d2>' type=dynamic origin=null
FUN name:withDynamic visibility:public modality:FINAL <> (d:dynamic) returnType:dynamic
VALUE_PARAMETER name:d index:0 type:dynamic
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun withDynamic (d: dynamic): dynamic declared in <root>'
GET_VAR 'd: dynamic declared in <root>.withDynamic' type=dynamic origin=null
FUN name:test1 visibility:public modality:FINAL <> (s:kotlin.String) returnType:kotlin.Unit
VALUE_PARAMETER name:s index:0 type:kotlin.String
BLOCK_BODY
CALL 'public final fun withDynamic (d: dynamic): dynamic declared in <root>' type=dynamic origin=null
d: GET_VAR 's: kotlin.String declared in <root>.test1' type=kotlin.String origin=null
FUN name:test2 visibility:public modality:FINAL <> (a:kotlin.Any) returnType:kotlin.Unit
VALUE_PARAMETER name:a index:0 type:kotlin.Any
BLOCK_BODY
VAR name:d type:dynamic [val]
GET_VAR 'a: kotlin.Any declared in <root>.test2' type=kotlin.Any origin=null
FUN name:test3 visibility:public modality:FINAL <> (a:kotlin.Any?) returnType:kotlin.Unit
VALUE_PARAMETER name:a index:0 type:kotlin.Any?
BLOCK_BODY
VAR name:d type:dynamic [val]
GET_VAR 'a: kotlin.Any? declared in <root>.test3' type=kotlin.Any? origin=null
FUN name:test4 visibility:public modality:FINAL <> (a:kotlin.Any, s:kotlin.String, na:kotlin.Any?) returnType:kotlin.Unit
VALUE_PARAMETER name:a index:0 type:kotlin.Any
VALUE_PARAMETER name:s index:1 type:kotlin.String
VALUE_PARAMETER name:na index:2 type:kotlin.Any?
BLOCK_BODY
VAR name:d type:dynamic [var]
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>' type=kotlin.Int origin=GET_PROPERTY
SET_VAR 'var d: dynamic [var] declared in <root>.test4' type=kotlin.Unit origin=EQ
GET_VAR 'a: kotlin.Any declared in <root>.test4' type=kotlin.Any origin=null
SET_VAR 'var d: dynamic [var] declared in <root>.test4' type=kotlin.Unit origin=EQ
GET_VAR 'na: kotlin.Any? declared in <root>.test4' type=kotlin.Any? origin=null
SET_VAR 'var d: dynamic [var] declared in <root>.test4' type=kotlin.Unit origin=EQ
GET_VAR 's: kotlin.String declared in <root>.test4' type=kotlin.String origin=null
FUN name:test5 visibility:public modality:FINAL <> (a:kotlin.Any, s:kotlin.String, na:kotlin.Any?) returnType:kotlin.Unit
VALUE_PARAMETER name:a index:0 type:kotlin.Any
VALUE_PARAMETER name:s index:1 type:kotlin.String
VALUE_PARAMETER name:na index:2 type:kotlin.Any?
BLOCK_BODY
CALL 'public final fun <set-d2> (<set-?>: dynamic): kotlin.Unit declared in <root>' type=kotlin.Unit origin=EQ
<set-?>: GET_VAR 'a: kotlin.Any declared in <root>.test5' type=kotlin.Any origin=null
CALL 'public final fun <set-d2> (<set-?>: dynamic): kotlin.Unit declared in <root>' type=kotlin.Unit origin=EQ
<set-?>: GET_VAR 'na: kotlin.Any? declared in <root>.test5' type=kotlin.Any? origin=null
CALL 'public final fun <set-d2> (<set-?>: dynamic): kotlin.Unit declared in <root>' type=kotlin.Unit origin=EQ
<set-?>: GET_VAR 's: kotlin.String declared in <root>.test5' type=kotlin.String origin=null