Mark some expressions after processing their components

when it's semantically correct

Expressions: calls, 'for' loops, elvis operators
It's significant for reporting 'unreachable code' correctly
This commit is contained in:
Svetlana Isakova
2014-06-12 12:58:57 +04:00
parent 6e622f2301
commit 9480907514
39 changed files with 181 additions and 178 deletions
@@ -70,8 +70,8 @@ L0:
r(object : A by b {}) -> <v2>
w(o|<v2>)
mark(o.foo())
mark(foo())
r(o) -> <v3>
mark(foo())
call(foo, foo|<v3>) -> <v4>
ret(*|<v4>) L1
L1:
@@ -19,12 +19,12 @@ fun foo() = "foo" + this.$bar
---------------------
L0:
1 <START>
mark("foo" + this.$bar)
mark("foo")
r("foo") -> <v0>
mark(this.$bar)
r(this) -> <v1>
r($bar|<v1>) -> <v2>
mark("foo" + this.$bar)
call(+, plus|<v0>, <v2>) -> <v3>
L1:
<END> NEXT:[<SINK>]