/* * 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. */ import kotlin.test.* val sb = StringBuilder() interface I { fun foo(x: Int) } abstract class A { abstract fun foo(x: T) } class B : A(), I { override fun foo(x: Int) { sb.appendLine(x) Unit } } fun box(): String { val b = B() val a: A = b val c: I = b b.foo(42) a.foo(42) c.foo(42) assertEquals("42\n42\n42\n", sb.toString()) return "OK" }