[psi2ir] Add tests for implicit casts "to" and "from" dynamic type
This commit is contained in:
@@ -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
|
||||
@@ -136,6 +136,16 @@ public class IrJsTextTestCaseGenerated extends AbstractIrJsTextTestCase {
|
||||
runTest("compiler/testData/ir/irJsText/dynamic/dynamicWithImplicitCast.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("implicitCastFromDynamic.kt")
|
||||
public void testImplicitCastFromDynamic() throws Exception {
|
||||
runTest("compiler/testData/ir/irJsText/dynamic/implicitCastFromDynamic.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("implicitCastToDynamic.kt")
|
||||
public void testImplicitCastToDynamic() throws Exception {
|
||||
runTest("compiler/testData/ir/irJsText/dynamic/implicitCastToDynamic.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("invokeOperator.kt")
|
||||
public void testInvokeOperator() throws Exception {
|
||||
runTest("compiler/testData/ir/irJsText/dynamic/invokeOperator.kt");
|
||||
|
||||
Reference in New Issue
Block a user