Pseudocode: Implement computation of expected type predicates

This commit is contained in:
Alexey Sedunov
2014-06-23 14:02:22 +04:00
parent 50228fa085
commit 5e2c2b4eca
87 changed files with 1154 additions and 803 deletions
+30 -30
View File
@@ -17,40 +17,40 @@ fun f(a : Boolean) : Unit {
}
---------------------
1 <v1> NEW()
a <v2> NEW()
2 <v3> NEW()
toLong() <v4> NEW(<v3>)
2.toLong() <v4> COPY
a <v5> NEW()
3 <v6> NEW()
foo(a, 3) <v7> NEW(<v5>, <v6>)
genfun<Any>() <v8> NEW()
{1} <v9> NEW()
flfun {1} <v10> NEW(<v9>)
3 <v11> NEW()
4 <v12> NEW()
equals(4) <v13> NEW(<v11>, <v12>)
3.equals(4) <v13> COPY
3 <v14> NEW()
4 <v15> NEW()
3 equals 4 <v16> NEW(<v14>, <v15>)
1 <v17> NEW()
2 <v18> NEW()
1 + 2 <v19> NEW(<v17>, <v18>)
a <v20> NEW()
true <v21> NEW()
a && true <v22> NEW(<v20>, <v21>)
a <v23> NEW()
false <v24> NEW()
a || false <v25> NEW(<v23>, <v24>)
{ 1 a 2.toLong() foo(a, 3) genfun<Any>() flfun {1} 3.equals(4) 3 equals 4 1 + 2 a && true a || false } <v25> COPY
1 <v1>: * NEW()
a <v2>: * NEW()
2 <v3>: {<: Number} NEW()
toLong() <v4>: * NEW(<v3>)
2.toLong() <v4>: * COPY
a <v5>: Boolean NEW()
3 <v6>: Int NEW()
foo(a, 3) <v7>: * NEW(<v5>, <v6>)
genfun<Any>() <v8>: * NEW()
{1} <v9>: {<: () -> Any} NEW()
flfun {1} <v10>: * NEW(<v9>)
3 <v11>: OR{{<: Any}, {<: Any}} NEW()
4 <v12>: {<: Any?} NEW()
equals(4) <v13>: * NEW(<v11>, <v12>)
3.equals(4) <v13>: * COPY
3 <v14>: OR{{<: Any}, {<: Any}} NEW()
4 <v15>: {<: Any?} NEW()
3 equals 4 <v16>: * NEW(<v14>, <v15>)
1 <v17>: Int NEW()
2 <v18>: Int NEW()
1 + 2 <v19>: * NEW(<v17>, <v18>)
a <v20>: Boolean NEW()
true <v21>: Boolean NEW()
a && true <v22>: * NEW(<v20>, <v21>)
a <v23>: Boolean NEW()
false <v24>: Boolean NEW()
a || false <v25>: * NEW(<v23>, <v24>)
{ 1 a 2.toLong() foo(a, 3) genfun<Any>() flfun {1} 3.equals(4) 3 equals 4 1 + 2 a && true a || false } <v25>: * COPY
=====================
== anonymous_0 ==
{1}
---------------------
1 <v0> NEW()
1 <v0> COPY
1 <v0>: Int NEW()
1 <v0>: Int COPY
=====================
== foo ==
fun foo(a : Boolean, b : Int) : Unit {}