// CHECK:
//   Mangled name: Foo
//   Public signature: /Foo|null[0]
fun interface Foo {
  // CHECK JVM_IR:
  //   Mangled name: Foo#invoke(){}kotlin.String
  //   Public signature: /Foo.invoke|8861605044563078664[0]
  //   Public signature debug description: invoke(){}kotlin.String
  // CHECK JS_IR NATIVE:
  //   Mangled name: Foo#invoke(){}
  //   Public signature: /Foo.invoke|-4663091332620260873[0]
  //   Public signature debug description: invoke(){}
  abstract fun invoke(): String

}

// CHECK JVM_IR:
//   Mangled name: #foo(Foo){}kotlin.String
//   Public signature: /foo|-5888774885663875480[0]
//   Public signature debug description: foo(Foo){}kotlin.String
// CHECK JS_IR NATIVE:
//   Mangled name: #foo(Foo){}
//   Public signature: /foo|-8233162121880232317[0]
//   Public signature debug description: foo(Foo){}
fun foo(f: Foo): String

// CHECK JVM_IR:
//   Mangled name: #test(){}kotlin.String
//   Public signature: /test|-7008832412320199001[0]
//   Public signature debug description: test(){}kotlin.String
// CHECK JS_IR NATIVE:
//   Mangled name: #test(){}
//   Public signature: /test|6620506149988718649[0]
//   Public signature debug description: test(){}
fun test(): String

