Fix incorrect 'original' in property accessors

#KT-3930 Fixed
This commit is contained in:
Alexander Udalov
2015-06-15 21:51:42 +03:00
parent 7c846388bd
commit 98ce0d529c
10 changed files with 104 additions and 37 deletions
@@ -1,24 +0,0 @@
// Changed when traits were introduced. May not make sense any more
open class Base() {
public var v : Int = 0
}
open class Left() : Base() {}
interface Right : Base {}
class D() : Left(), Right
fun vl(l : Left) : Int = l.v
fun vr(r : Right) : Int = r.v
fun box() : String {
val d = D()
d.v = 42
if (d.v != 42) return "Fail #1"
if (vl(d) != 42) return "Fail #2"
if (vr(d) != 42) return "Fail #3"
return "OK"
}
+16
View File
@@ -0,0 +1,16 @@
public abstract class Foo {
var isOpen = true
private set
}
public class Bar: Foo() {
inner class Baz {
fun call() {
val s = this@Bar
s.isOpen
}
}
}
fun box(): String {
Bar().Baz()
return "OK"
}
@@ -0,0 +1,23 @@
interface A {
var bar: Boolean
get() = false
set(value) { throw AssertionError("Fail set") }
}
interface B : A
interface C : A {
override var bar: Boolean
get() = true
set(value) {}
}
interface D : B, C
class Impl : D
fun box(): String {
Impl().bar = false
if (!Impl().bar) return "Fail get"
return "OK"
}
@@ -0,0 +1,10 @@
interface A {
val str: String
get() = "OK"
}
interface B : A
class Impl : B
fun box() = Impl().str
@@ -0,0 +1,3 @@
abstract class Test<F> {
protected final F value = null;
}
@@ -0,0 +1,7 @@
class A : Test<String>() {
fun foo(): String? = value
}
fun box(): String {
return if (A().foo() == null) "OK" else "Fail"
}