// CHECK: // Mangled name: C // Public signature: /C|null[0] abstract class C : I { // CHECK: // Mangled name: C#(){} // Public signature: /C.|-5645683436151566731[0] // Public signature debug description: (){} constructor() /* primary */ // CHECK: // Mangled name: C#foo(){} // Public signature: /C.foo|-1041209573719867811[0] // Public signature debug description: foo(){} abstract override fun foo(): Unit } // CHECK: // Mangled name: D // Public signature: /D|null[0] abstract class D : C, J { // CHECK: // Mangled name: D#(){} // Public signature: /D.|-5645683436151566731[0] // Public signature debug description: (){} constructor() /* primary */ // CHECK: // Mangled name: D#foo(){} // Public signature: /D.foo|-1041209573719867811[0] // Public signature debug description: foo(){} abstract /* fake */ override fun foo(): Unit } // CHECK: // Mangled name: E // Public signature: /E|null[0] class E : D { // CHECK: // Mangled name: E#(){} // Public signature: /E.|-5645683436151566731[0] // Public signature debug description: (){} constructor() /* primary */ // CHECK: // Mangled name: E#foo(){} // Public signature: /E.foo|-1041209573719867811[0] // Public signature debug description: foo(){} override fun foo(): Unit } // CHECK: // Mangled name: I // Public signature: /I|null[0] interface I : II { // CHECK: // Mangled name: I#foo(){} // Public signature: /I.foo|-1041209573719867811[0] // Public signature debug description: foo(){} /* fake */ override fun foo(): Unit } // CHECK: // Mangled name: II // Public signature: /II|null[0] interface II { // CHECK: // Mangled name: II#foo(){} // Public signature: /II.foo|-1041209573719867811[0] // Public signature debug description: foo(){} fun foo(): Unit } // CHECK: // Mangled name: #foo(I){} // Public signature: /foo|-4109751996049019888[0] // Public signature debug description: foo(I){} fun foo(x: I): Unit