/* * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license * that can be found in the LICENSE file. */ // WITH_STDLIB import kotlin.test.* // abstract class vtable call abstract class A { abstract fun foo(): String } abstract class B : A() class Z : B() { override fun foo() = "Z" } fun box(): String { val z = Z() val b: B = z val a: A = z return when { z.foo() != "Z" -> "Fail #1" b.foo() != "Z" -> "Fail #2" a.foo() != "Z" -> "Fail #3" else -> "OK" } }