// RUN: rm -rf %t && mkdir %t
// RUN: %build-irgen-test-overlays
// RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | FileCheck %s

// REQUIRES: CPU=x86_64
// REQUIRES: objc_interop

// CHECK: @"\01L_selector_data(initWithRed:green:blue:)"
// CHECK: @"\01L_selector_data(colorWithRed:green:blue:)"
// CHECK: @"\01L_selector_data(otherColorForRed:green:blue:)"

sil_stage raw

import Builtin
import Swift
import gizmo 

class SwiftGizmo : Gizmo {
  init(red: Float, green: Float, blue: Float) { }
  func color(red red: Float, green: Float, blue: Float)
  func otherColorFor(red red: Float, green: Float, blue: Float)
}
sil_vtable SwiftGizmo {}

sil @_TToFC18objc_implicit_with10SwiftGizmocfT3redSf5greenSf4blueSf_S0_ : $@convention(objc_method) (Float, Float, Float, @owned SwiftGizmo) -> @owned SwiftGizmo {
bb0(%0 : $Float, %1 : $Float, %2 : $Float, %3 : $SwiftGizmo):
  return %3 : $SwiftGizmo
}

sil @_TToFC18objc_implicit_with10SwiftGizmocfT7bellsOnSi_GSQS0__ : $@convention(objc_method) (Int, @owned SwiftGizmo) -> @owned SwiftGizmo! {
bb0(%0 : $Int, %1 : $SwiftGizmo):
  unreachable
}

sil @_TToFC18objc_implicit_with10SwiftGizmocfT_S0_ : $@convention(objc_method) (@owned SwiftGizmo) -> @owned SwiftGizmo {
bb0(%0 : $SwiftGizmo):
  return %0 : $SwiftGizmo
}

sil @_TToFC18objc_implicit_with10SwiftGizmo5colorfT3redSf5greenSf4blueSf_T_ : $@convention(objc_method) (Float, Float, Float, @owned SwiftGizmo) -> @owned SwiftGizmo {
bb0(%0 : $Float, %1 : $Float, %2 : $Float, %3 : $SwiftGizmo):
  return %3 : $SwiftGizmo
}

sil @_TToFC18objc_implicit_with10SwiftGizmo13otherColorForfT3redSf5greenSf4blueSf_T_ : $@convention(objc_method) (Float, Float, Float, @owned SwiftGizmo) -> @owned SwiftGizmo {
bb0(%0 : $Float, %1 : $Float, %2 : $Float, %3 : $SwiftGizmo):
  return %3 : $SwiftGizmo
}
