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

class Parent {
  @inline(never)
  class func onlyInParent() {}
  @inline(never)
  final class func finalOnlyInParent() {}
  @inline(never)
  class func foo() {}
}

class Child : Parent {}

class Grandchild : Child {
  class func onlyInGrandchild() {
    // CHECK-LABEL: sil hidden @_TZFC18super_class_method10Grandchild16onlyInGrandchildfT_T_
    // CHECK-NOT: super_method %0 : $@thick Grandchild.Type, #Parent.onlyInParent!1 : Parent.Type -> () -> () , $@convention(method) (@thick Parent.Type) -> (){{.*}} // user: %5
    // CHECK: function_ref @_TZFC18super_class_method6Parent12onlyInParentfT_T_
    super.onlyInParent()
    // CHECK: function_ref @_TZFC18super_class_method6Parent17finalOnlyInParentfT_T_
    super.finalOnlyInParent()
  }

  override class func foo() {
    // CHECK: sil hidden @_TZFC18super_class_method10Grandchild3foofT_T_ : $@convention(method) (@thick Grandchild.Type) -> () {
    // CHECK-NOT: super_method %0 : $@thick Grandchild.Type, #Parent.foo!1 : Parent.Type -> () -> () , $@convention(method) (@thick Parent.Type) -> ()
    // CHECK: function_ref @_TZFC18super_class_method6Parent3foofT_T_ 
    super.foo()
  }
}
