JS: fixed subSequence in CharSequence descendants (KT-14035) + added support for function intrics in delegation

This commit is contained in:
Anton Bannykh
2017-01-20 14:06:06 +03:00
parent 4fe040eeb9
commit 847ec9e550
5 changed files with 60 additions and 3 deletions
@@ -1,5 +1,15 @@
package foo
class CC(val s: CharSequence) : CharSequence by s, MyCharSequence {}
interface MyCharSequence {
val length: Int
operator fun get(index: Int): Char
fun subSequence(startIndex: Int, endIndex: Int): CharSequence
}
fun box(): String {
val kotlin: String = "kotlin"
@@ -11,5 +21,20 @@ fun box(): String {
val tlin = (kotlin as CharSequence).subSequence(2, 6)
if (tlin.toString() != "tlin") return "Fail 2: $tlin"
val cc: CharSequence = CC(kotlin)
if (cc.length != 6) return "Fail 3: ${cc.length}"
if (cc.subSequence(0, 3) != kot) return "Fail 4"
if (cc[2] != 't') return "Fail 5: ${cc[2]}"
val mcc: MyCharSequence = CC(kotlin)
if (mcc.length != 6) return "Fail 6: ${mcc.length}"
if (mcc.subSequence(0, 3) != kot) return "Fail 7"
if (mcc[2] != 't') return "Fail 8: ${mcc[2]}"
val ccc = CC(cc)
if (ccc.length != 6) return "Fail 6: ${ccc.length}"
if (ccc.subSequence(0, 3) != kot) return "Fail 7"
if (ccc[2] != 't') return "Fail 8: ${ccc[2]}"
return "OK"
}