// RUN: %target-typecheck-verify-swift -I %S/Inputs/custom-modules -F %S/Inputs/custom-frameworks -swift-version 4
import APINotesTest
import APINotesFrameworkTest

#if _runtime(_ObjC)
extension A {
  func implicitlyObjC() { }
}

extension C {
  func alsoImplicitlyObjC() { }
}

class D : C {
  func yetAnotherImplicitlyObjC() { }
}

func testSelectors(a: AnyObject) {
  a.implicitlyObjC?()  // okay: would complain without SwiftObjCMembers
  a.alsoImplicitlyObjC?()  // okay: would complain without SwiftObjCMembers
  a.yetAnotherImplicitlyObjC?()  // okay: would complain without SwiftObjCMembers
}
#endif

func testSwiftName() {
  moveTo(x: 0, y: 0, z: 0)
  moveTo(0, 0, 0) // expected-error{{missing argument labels 'x:y:z:' in call}}

  _ = global
  _ = ANTGlobalValue // expected-error{{'ANTGlobalValue' has been renamed to 'global'}}

  let ps = Point(x: 0.0, y: 0.0)
  let ps2 = PointStruct(x: 0.0, y: 0.0) // expected-error{{'PointStruct' has been renamed to 'Point'}}
  let r: Real = 0.0
  let r2: real_t = 0.0 // expected-error{{'real_t' has been renamed to 'Real'}}

  let rect: Rect
  let rect2: RectStruct // expected-error{{'RectStruct' has been renamed to 'Rect'}}

  let d: Double = __will_be_private

  // From APINotesFrameworkTest.
  jumpTo(x: 0, y: 0, z: 0)
  jumpTo(0, 0, 0) // expected-error{{missing argument labels 'x:y:z:' in call}}
}
