Properly handle the case of backing field access qualified with 'this' reference

This commit is contained in:
Andrey Breslav
2013-12-04 16:10:05 +04:00
parent 5b3bc7f839
commit 6df3a3042c
8 changed files with 57 additions and 8 deletions
@@ -0,0 +1,35 @@
== Bar ==
abstract class Bar {
abstract var bar : String
fun foo() = "foo" + this.$bar
}
---------------------
L0:
<START>
v(abstract var bar : String)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== foo ==
fun foo() = "foo" + this.$bar
---------------------
L0:
<START>
mark("foo" + this.$bar)
mark("foo")
r("foo")
mark(this.$bar)
r(this)
r($bar)
call(+, plus)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
@@ -0,0 +1,4 @@
abstract class Bar {
abstract var bar : String
fun foo() = "foo" + this.$bar
}
@@ -0,0 +1,4 @@
abstract class Bar {
abstract var bar : String
fun foo() = "foo" + this.<!NO_BACKING_FIELD_ABSTRACT_PROPERTY!>$bar<!>
}