psi2ir: dynamic array element get/set
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
fun testArrayAccess1(d: dynamic) = d["KEY"]
|
||||
|
||||
fun testArrayAccess2(d: dynamic) = d()["KEY"]
|
||||
|
||||
fun testArrayAccess3(d: dynamic) = d.get("KEY")
|
||||
@@ -0,0 +1,24 @@
|
||||
FILE fqName:<root> fileName:/dynamicArrayAccess.kt
|
||||
FUN name:testArrayAccess1 visibility:public modality:FINAL <> (d:dynamic) returnType:dynamic flags:
|
||||
VALUE_PARAMETER name:d index:0 type:dynamic flags:
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='testArrayAccess1(dynamic): dynamic'
|
||||
DYN_OP operator=ARRAY_ACCESS type=dynamic
|
||||
receiver: GET_VAR 'value-parameter d: dynamic' type=dynamic origin=null
|
||||
0: CONST String type=kotlin.String value="KEY"
|
||||
FUN name:testArrayAccess2 visibility:public modality:FINAL <> (d:dynamic) returnType:dynamic flags:
|
||||
VALUE_PARAMETER name:d index:0 type:dynamic flags:
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='testArrayAccess2(dynamic): dynamic'
|
||||
DYN_OP operator=ARRAY_ACCESS type=dynamic
|
||||
receiver: DYN_OP operator=INVOKE type=dynamic
|
||||
receiver: GET_VAR 'value-parameter d: dynamic' type=dynamic origin=VARIABLE_AS_FUNCTION
|
||||
0: CONST String type=kotlin.String value="KEY"
|
||||
FUN name:testArrayAccess3 visibility:public modality:FINAL <> (d:dynamic) returnType:dynamic flags:
|
||||
VALUE_PARAMETER name:d index:0 type:dynamic flags:
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='testArrayAccess3(dynamic): dynamic'
|
||||
DYN_OP operator=INVOKE type=dynamic
|
||||
receiver: DYN_MEMBER memberName='get' type=dynamic
|
||||
GET_VAR 'value-parameter d: dynamic' type=dynamic origin=null
|
||||
0: CONST String type=kotlin.String value="KEY"
|
||||
@@ -0,0 +1,7 @@
|
||||
fun testArrayAssignment(d: dynamic) {
|
||||
d["KEY"] = 1
|
||||
}
|
||||
|
||||
fun testArrayAssignmentFake(d: dynamic) {
|
||||
d.set("KEY", 2)
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
FILE fqName:<root> fileName:/dynamicArrayAssignment.kt
|
||||
FUN name:testArrayAssignment visibility:public modality:FINAL <> (d:dynamic) returnType:kotlin.Unit flags:
|
||||
VALUE_PARAMETER name:d index:0 type:dynamic flags:
|
||||
BLOCK_BODY
|
||||
DYN_OP operator=EQ type=dynamic
|
||||
receiver: DYN_OP operator=ARRAY_ACCESS type=dynamic
|
||||
receiver: GET_VAR 'value-parameter d: dynamic' type=dynamic origin=null
|
||||
0: CONST String type=kotlin.String value="KEY"
|
||||
0: CONST Int type=kotlin.Int value=1
|
||||
FUN name:testArrayAssignmentFake visibility:public modality:FINAL <> (d:dynamic) returnType:kotlin.Unit flags:
|
||||
VALUE_PARAMETER name:d index:0 type:dynamic flags:
|
||||
BLOCK_BODY
|
||||
DYN_OP operator=INVOKE type=dynamic
|
||||
receiver: DYN_MEMBER memberName='set' type=dynamic
|
||||
GET_VAR 'value-parameter d: dynamic' type=dynamic origin=null
|
||||
0: CONST String type=kotlin.String value="KEY"
|
||||
1: CONST Int type=kotlin.Int value=2
|
||||
@@ -0,0 +1,7 @@
|
||||
fun testArrayAugmentedAssignment(d: dynamic) {
|
||||
d["KEY"] += "+="
|
||||
d["KEY"] -= "-="
|
||||
d["KEY"] *= "*="
|
||||
d["KEY"] /= "/="
|
||||
d["KEY"] %= "%="
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
FILE fqName:<root> fileName:/dynamicArrayAugmentedAssignment.kt
|
||||
FUN name:testArrayAugmentedAssignment visibility:public modality:FINAL <> (d:dynamic) returnType:kotlin.Unit flags:
|
||||
VALUE_PARAMETER name:d index:0 type:dynamic flags:
|
||||
BLOCK_BODY
|
||||
BLOCK type=kotlin.Unit origin=PLUSEQ
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp0_array type:dynamic flags:val
|
||||
GET_VAR 'value-parameter d: dynamic' type=dynamic origin=null
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp1_index0 type:kotlin.String flags:val
|
||||
CONST String type=kotlin.String value="KEY"
|
||||
DYN_OP operator=PLUSEQ type=kotlin.Unit
|
||||
receiver: DYN_OP operator=ARRAY_ACCESS type=dynamic
|
||||
receiver: GET_VAR 'tmp0_array: dynamic' type=dynamic origin=null
|
||||
0: GET_VAR 'tmp1_index0: String' type=kotlin.String origin=null
|
||||
0: CONST String type=kotlin.String value="+="
|
||||
BLOCK type=kotlin.Unit origin=MINUSEQ
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp2_array type:dynamic flags:val
|
||||
GET_VAR 'value-parameter d: dynamic' type=dynamic origin=null
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp3_index0 type:kotlin.String flags:val
|
||||
CONST String type=kotlin.String value="KEY"
|
||||
DYN_OP operator=MINUSEQ type=kotlin.Unit
|
||||
receiver: DYN_OP operator=ARRAY_ACCESS type=dynamic
|
||||
receiver: GET_VAR 'tmp2_array: dynamic' type=dynamic origin=null
|
||||
0: GET_VAR 'tmp3_index0: String' type=kotlin.String origin=null
|
||||
0: CONST String type=kotlin.String value="-="
|
||||
BLOCK type=kotlin.Unit origin=MULTEQ
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp4_array type:dynamic flags:val
|
||||
GET_VAR 'value-parameter d: dynamic' type=dynamic origin=null
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp5_index0 type:kotlin.String flags:val
|
||||
CONST String type=kotlin.String value="KEY"
|
||||
DYN_OP operator=MULEQ type=kotlin.Unit
|
||||
receiver: DYN_OP operator=ARRAY_ACCESS type=dynamic
|
||||
receiver: GET_VAR 'tmp4_array: dynamic' type=dynamic origin=null
|
||||
0: GET_VAR 'tmp5_index0: String' type=kotlin.String origin=null
|
||||
0: CONST String type=kotlin.String value="*="
|
||||
BLOCK type=kotlin.Unit origin=DIVEQ
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp6_array type:dynamic flags:val
|
||||
GET_VAR 'value-parameter d: dynamic' type=dynamic origin=null
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp7_index0 type:kotlin.String flags:val
|
||||
CONST String type=kotlin.String value="KEY"
|
||||
DYN_OP operator=DIVEQ type=kotlin.Unit
|
||||
receiver: DYN_OP operator=ARRAY_ACCESS type=dynamic
|
||||
receiver: GET_VAR 'tmp6_array: dynamic' type=dynamic origin=null
|
||||
0: GET_VAR 'tmp7_index0: String' type=kotlin.String origin=null
|
||||
0: CONST String type=kotlin.String value="/="
|
||||
BLOCK type=kotlin.Unit origin=PERCEQ
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp8_array type:dynamic flags:val
|
||||
GET_VAR 'value-parameter d: dynamic' type=dynamic origin=null
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp9_index0 type:kotlin.String flags:val
|
||||
CONST String type=kotlin.String value="KEY"
|
||||
DYN_OP operator=MODEQ type=kotlin.Unit
|
||||
receiver: DYN_OP operator=ARRAY_ACCESS type=dynamic
|
||||
receiver: GET_VAR 'tmp8_array: dynamic' type=dynamic origin=null
|
||||
0: GET_VAR 'tmp9_index0: String' type=kotlin.String origin=null
|
||||
0: CONST String type=kotlin.String value="%="
|
||||
@@ -0,0 +1,7 @@
|
||||
|
||||
fun testArrayIncrementDecrement(d: dynamic) {
|
||||
val t1 = ++d["prefixIncr"]
|
||||
val t2 = --d["prefixDecr"]
|
||||
val t3 = d["postfixIncr"]++
|
||||
val t4 = d["postfixDecr"]--
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
FILE fqName:<root> fileName:/dynamicArrayIncrementDecrement.kt
|
||||
FUN name:testArrayIncrementDecrement visibility:public modality:FINAL <> (d:dynamic) returnType:kotlin.Unit flags:
|
||||
VALUE_PARAMETER name:d index:0 type:dynamic flags:
|
||||
BLOCK_BODY
|
||||
VAR name:t1 type:dynamic flags:val
|
||||
BLOCK type=dynamic origin=PREFIX_INCR
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp0_array type:dynamic flags:val
|
||||
GET_VAR 'value-parameter d: dynamic' type=dynamic origin=null
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp1_index0 type:kotlin.String flags:val
|
||||
CONST String type=kotlin.String value="prefixIncr"
|
||||
DYN_OP operator=PREFIX_INCREMENT type=dynamic
|
||||
receiver: DYN_OP operator=ARRAY_ACCESS type=dynamic
|
||||
receiver: GET_VAR 'tmp0_array: dynamic' type=dynamic origin=null
|
||||
0: GET_VAR 'tmp1_index0: String' type=kotlin.String origin=null
|
||||
VAR name:t2 type:dynamic flags:val
|
||||
BLOCK type=dynamic origin=PREFIX_DECR
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp2_array type:dynamic flags:val
|
||||
GET_VAR 'value-parameter d: dynamic' type=dynamic origin=null
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp3_index0 type:kotlin.String flags:val
|
||||
CONST String type=kotlin.String value="prefixDecr"
|
||||
DYN_OP operator=PREFIX_DECREMENT type=dynamic
|
||||
receiver: DYN_OP operator=ARRAY_ACCESS type=dynamic
|
||||
receiver: GET_VAR 'tmp2_array: dynamic' type=dynamic origin=null
|
||||
0: GET_VAR 'tmp3_index0: String' type=kotlin.String origin=null
|
||||
VAR name:t3 type:dynamic flags:val
|
||||
BLOCK type=dynamic origin=POSTFIX_INCR
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp4_array type:dynamic flags:val
|
||||
GET_VAR 'value-parameter d: dynamic' type=dynamic origin=null
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp5_index0 type:kotlin.String flags:val
|
||||
CONST String type=kotlin.String value="postfixIncr"
|
||||
DYN_OP operator=POSTFIX_INCREMENT type=dynamic
|
||||
receiver: DYN_OP operator=ARRAY_ACCESS type=dynamic
|
||||
receiver: GET_VAR 'tmp4_array: dynamic' type=dynamic origin=null
|
||||
0: GET_VAR 'tmp5_index0: String' type=kotlin.String origin=null
|
||||
VAR name:t4 type:dynamic flags:val
|
||||
BLOCK type=dynamic origin=POSTFIX_DECR
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp6_array type:dynamic flags:val
|
||||
GET_VAR 'value-parameter d: dynamic' type=dynamic origin=null
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp7_index0 type:kotlin.String flags:val
|
||||
CONST String type=kotlin.String value="postfixDecr"
|
||||
DYN_OP operator=POSTFIX_DECREMENT type=dynamic
|
||||
receiver: DYN_OP operator=ARRAY_ACCESS type=dynamic
|
||||
receiver: GET_VAR 'tmp6_array: dynamic' type=dynamic origin=null
|
||||
0: GET_VAR 'tmp7_index0: String' type=kotlin.String origin=null
|
||||
Reference in New Issue
Block a user