// RUN: %target-swift-frontend -emit-sil %s | %FileCheck %s

// CHECK-LABEL: sil hidden [noinline] @$s10super_init3FooCyACSicfC : $@convention(method) (Int, @thick Foo.Type) -> @owned Foo
// CHECK-NOT:     class_method
// CHECK-NOT:     super_method
// CHECK:         [[SUPER_INIT:%.*]] = function_ref @$s10super_init3FooCyACSicfc
// CHECK:         [[NEW_SELF:%.*]] = apply [[SUPER_INIT]]

// CHECK-LABEL: sil hidden [noinline] @$s10super_init3BarC{{[_0-9a-zA-Z]*}}fc
// CHECK-NOT:     super_method [[ORIG_SELF]] : $Bar, #Foo.init!initializer.1
// CHECK:         function_ref @$s10super_init3FooCACycfc

class Foo {
  @inline(never)
  init() {}
  @inline(never)
  init(_ x: Foo) {}
  @inline(never)
  init(_ x: Int) {}
}

class Bar: Foo {
  @inline(never)
  override init() {
    super.init()
  }
}

extension Foo {
  @inline(never)
  convenience init(x: Int) {
    self.init()
  }
}

class Zim: Foo {
  var foo = Foo()
  // CHECK-LABEL: sil hidden @$s10super_init3ZimC{{[_0-9a-zA-Z]*}}fc
  // CHECK-NOT:     super_method {{%[0-9]+}} : $Zim, #Foo.init!initializer.1
  // CHECK:         function_ref @$s10super_init3FooCACycfC
  // CHECK:         function_ref @$s10super_init3FooCACycfc
}

class Zang: Foo {
  var foo: Foo

  @inline(never)
  override init() {
    foo = Foo()
    super.init()
  }
  // CHECK-LABEL: sil hidden [noinline] @$s10super_init4ZangCACycfc
  // CHECK-NOT:         super_method {{%[0-9]+}} : $Zang, #Foo.init!initializer.1
  // CHECK:             function_ref @$s10super_init3FooCACycfC
  // CHECK:             function_ref @$s10super_init3FooCACycfc
}

class Good: Foo {
  let x: Int

  // CHECK-LABEL: sil hidden [noinline] @$s10super_init4GoodCACycfc
  // CHECK-NOT:     super_method {{%[0-9]+}} : $Good, #Foo.init!initializer.1
  // CHECK:         [[SUPER_INIT:%.*]] = function_ref @$s10super_init3FooCyACSicfc
  // CHECK:         apply [[SUPER_INIT]]
  @inline(never)
  override init() {
    x = 10
    super.init(x)
  }
}
