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

public class Base1 { @inline(never) func f() -> Int { return 0 } }

public class Base2: Base1 {
}

private class A: Base2 { }

private class B : A { 
    @inline(never) override func f() -> Int { return 1 }
}

private class C : A { 
    @inline(never) override func f() -> Int { return 2 }
}

@inline(never)
private func foo(_ a: A) -> Int {


// Check that a.f() call can be devirtualized, even
// though f is defined by one of the A's superclasses.
//

// CHECK-LABEL: sil private [noinline] @{{.*}}foo
// CHECK-NOT: class_method
// CHECK: checked_cast_br
// CHECK: function_ref
// CHECK: checked_cast_br
// CHECK: function_ref
  return a.f()
}

// Check that invocation of addConstraint() gets completely devirtualized and inlined
//
// CHECK-LABEL: sil private [noinline] @_T017devirt_base_class2F233_{{.*}}4test
// CHECK-NOT: class_method
// CHECK-NOT: function_ref
// CHECK: return

print("foo(C()) = \(foo(C()))")

private class F1 {
  init() {
  }

  func addConstraint() {
    addToGraph()
  }

  func addToGraph() {
  }
}

private class F2 : F1 {
  init (v : Int) {
    super.init()
    addConstraint()
  }

  override func addToGraph() {
  }
  
  @inline(never) 
  func test() {
    addConstraint()
  }
  
}

private class F3 : F2 {
}

private var f = F2(v:1)
f.test()
print("unary constraint is: \(f)")
