Pseudocode: Implement computation of expected type predicates
This commit is contained in:
@@ -9,21 +9,21 @@ fun foo() {
|
||||
a[10] += 1
|
||||
}
|
||||
---------------------
|
||||
Array<Int> <v0> NEW()
|
||||
3 <v1> NEW()
|
||||
a <v2> NEW()
|
||||
10 <v3> NEW()
|
||||
4 <v4> NEW()
|
||||
a[10] = 4 <v5> NEW(<v2>, <v3>, <v4>)
|
||||
2 <v6> NEW()
|
||||
a <v7> NEW()
|
||||
10 <v8> NEW()
|
||||
a[10] <v9> NEW(<v7>, <v8>)
|
||||
100 <v10> NEW()
|
||||
a <v16> NEW()
|
||||
10 <v17> NEW()
|
||||
a[10] <v13> NEW(<v11>, <v12>)
|
||||
1 <v14> NEW()
|
||||
a[10] += 1 <v18> NEW(<v16>, <v17>, <v15>)
|
||||
{ val a = Array<Int> 3 a[10] = 4 2 a[10] 100 a[10] += 1 } <v18> COPY
|
||||
Array<Int> <v0>: {<: Array<Int>} NEW()
|
||||
3 <v1>: * NEW()
|
||||
a <v2>: {<: Array<Int>} NEW()
|
||||
10 <v3>: Int NEW()
|
||||
4 <v4>: Int NEW()
|
||||
a[10] = 4 <v5>: * NEW(<v2>, <v3>, <v4>)
|
||||
2 <v6>: * NEW()
|
||||
a <v7>: {<: Array<Int>} NEW()
|
||||
10 <v8>: Int NEW()
|
||||
a[10] <v9>: * NEW(<v7>, <v8>)
|
||||
100 <v10>: * NEW()
|
||||
a <v16>: {<: Array<Int>} NEW()
|
||||
10 <v17>: Int NEW()
|
||||
a[10] <v13>: Int NEW(<v11>, <v12>)
|
||||
1 <v14>: Int NEW()
|
||||
a[10] += 1 <v18>: * NEW(<v16>, <v17>, <v15>)
|
||||
{ val a = Array<Int> 3 a[10] = 4 2 a[10] 100 a[10] += 1 } <v18>: * COPY
|
||||
=====================
|
||||
|
||||
@@ -3,10 +3,10 @@ fun test(array: Array<(Int)->Unit>) {
|
||||
array[11](3)
|
||||
}
|
||||
---------------------
|
||||
array <v1> NEW()
|
||||
11 <v2> NEW()
|
||||
array[11] <v3> NEW(<v1>, <v2>)
|
||||
3 <v4> NEW()
|
||||
array[11](3) <v5> NEW(<v3>, <v4>)
|
||||
{ array[11](3) } <v5> COPY
|
||||
array <v1>: {<: Array<(Int) -> Unit>} NEW()
|
||||
11 <v2>: Int NEW()
|
||||
array[11] <v3>: {<: (Int) -> Unit} NEW(<v1>, <v2>)
|
||||
3 <v4>: Int NEW()
|
||||
array[11](3) <v5>: * NEW(<v3>, <v4>)
|
||||
{ array[11](3) } <v5>: * COPY
|
||||
=====================
|
||||
|
||||
@@ -13,10 +13,10 @@ fun test(ab: Ab) {
|
||||
ab.getArray()[1]
|
||||
}
|
||||
---------------------
|
||||
ab <v1> NEW()
|
||||
getArray() <v2> NEW(<v1>)
|
||||
ab.getArray() <v2> COPY
|
||||
1 <v3> NEW()
|
||||
ab.getArray()[1] <v4> NEW(<v2>, <v3>)
|
||||
{ ab.getArray()[1] } <v4> COPY
|
||||
ab <v1>: {<: Ab} NEW()
|
||||
getArray() <v2>: {<: Array<Int>} NEW(<v1>)
|
||||
ab.getArray() <v2>: {<: Array<Int>} COPY
|
||||
1 <v3>: Int NEW()
|
||||
ab.getArray()[1] <v4>: * NEW(<v2>, <v3>)
|
||||
{ ab.getArray()[1] } <v4>: * COPY
|
||||
=====================
|
||||
|
||||
@@ -3,9 +3,9 @@ fun foo(a: Array<Int>) {
|
||||
a[0]++
|
||||
}
|
||||
---------------------
|
||||
a <v5> NEW()
|
||||
0 <v6> NEW()
|
||||
a[0] <v3> NEW(<v1>, <v2>)
|
||||
a[0]++ <v3> COPY
|
||||
{ a[0]++ } <v3> COPY
|
||||
a <v5>: {<: Array<Int>} NEW()
|
||||
0 <v6>: Int NEW()
|
||||
a[0] <v3>: Int NEW(<v1>, <v2>)
|
||||
a[0]++ <v3>: Int COPY
|
||||
{ a[0]++ } <v3>: Int COPY
|
||||
=====================
|
||||
|
||||
@@ -3,9 +3,9 @@ fun foo(a: Array<Int>) {
|
||||
a[1] = 2
|
||||
}
|
||||
---------------------
|
||||
a <v1> NEW()
|
||||
1 <v2> NEW()
|
||||
2 <v3> NEW()
|
||||
a[1] = 2 <v4> NEW(<v1>, <v2>, <v3>)
|
||||
{ a[1] = 2 } <v4> COPY
|
||||
a <v1>: {<: Array<Int>} NEW()
|
||||
1 <v2>: Int NEW()
|
||||
2 <v3>: Int NEW()
|
||||
a[1] = 2 <v4>: * NEW(<v1>, <v2>, <v3>)
|
||||
{ a[1] = 2 } <v4>: * COPY
|
||||
=====================
|
||||
|
||||
@@ -3,10 +3,10 @@ fun foo(a: Array<Int>) {
|
||||
a[0] += 1
|
||||
}
|
||||
---------------------
|
||||
a <v6> NEW()
|
||||
0 <v7> NEW()
|
||||
a[0] <v3> NEW(<v1>, <v2>)
|
||||
1 <v4> NEW()
|
||||
a[0] += 1 <v8> NEW(<v6>, <v7>, <v5>)
|
||||
{ a[0] += 1 } <v8> COPY
|
||||
a <v6>: {<: Array<Int>} NEW()
|
||||
0 <v7>: Int NEW()
|
||||
a[0] <v3>: Int NEW(<v1>, <v2>)
|
||||
1 <v4>: Int NEW()
|
||||
a[0] += 1 <v8>: * NEW(<v6>, <v7>, <v5>)
|
||||
{ a[0] += 1 } <v8>: * COPY
|
||||
=====================
|
||||
|
||||
Reference in New Issue
Block a user