// REQUIRES: plus_zero_runtime
// RUN: %empty-directory(%t)
// RUN: %utils/chex.py < %s > %t/keypaths_objc.sil
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-ir %t/keypaths_objc.sil | %FileCheck %t/keypaths_objc.sil --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize
// REQUIRES: objc_interop

import Swift
import Foundation

class C: NSObject {
  dynamic var x: NSString { get }
  @sil_stored final var stored: Int
  override init()
}

sil_vtable C {}

sil @x_get : $@convention(thin) (@in_guaranteed C) -> @out NSString

// CHECK: [[KEYPATH_A:@keypath.*]] = private global
// --             0x0100_0002: computed, get-only, indirect identifier
// CHECK-SAME: <i32 0x0100_0002>,
// CHECK-SAME: i8** @"\01L_selector(x)"

// CHECK: [[KEYPATH_B:@keypath.*]] = private global
// --             0x02fffffd: class stored property with indirect offset
// CHECK-SAME: <i32 0x02fffffd>,
// CHECK-SAME: @"$S13keypaths_objc1CC6storedSivpWvd"

// CHECK-LABEL: define swiftcc void @objc_only_property()
sil @objc_only_property : $@convention(thin) () -> () {
entry:
  // CHECK: call %swift.refcounted* @swift_getKeyPath({{.*}} [[KEYPATH_A]]
  %a = keypath $KeyPath<C, NSString>, (objc "x"; root $C; gettable_property $NSString, id #C.x!getter.1.foreign, getter @x_get : $@convention(thin) (@in_guaranteed C) -> @out NSString)
  unreachable
}

sil hidden @$S13keypaths_objc1CC1xSo8NSStringCvgTo : $@convention(objc_method) (@guaranteed C) -> NSString {
entry(%0 : $C):
  unreachable
}

sil hidden @$S13keypaths_objc1CCACycfcTo : $@convention(objc_method) (@objc_metatype C.Type) -> @owned C {
entry(%0 : $@objc_metatype C.Type):
  unreachable
}

sil @objc_stored_property : $@convention(thin) () -> () {
entry:
  // CHECK: call %swift.refcounted* @swift_getKeyPath({{.*}} [[KEYPATH_B]]
  %b = keypath $KeyPath<C, Int>, (objc "stored"; root $C; stored_property #C.stored : $Int)
  unreachable
}
