// RUN: %target-sil-opt %s -module-name=witness_tables -enable-library-evolution | %target-sil-opt -module-name=witness_tables -enable-library-evolution | %FileCheck %s
// RUN: %target-sil-opt %s -module-name=witness_tables -enable-library-evolution -O | %FileCheck %s

sil_stage raw

public protocol Proto {}
public struct Wrapper<T>: Proto { }

public protocol ResilientProtocol {
  associatedtype T : Proto = Wrapper<Self>
  func noDefaultA()
  func noDefaultB()
  func defaultC()
  func defaultD()
  func defaultE()
}

// CHECK-LABEL: sil @defaultC : $@convention(witness_method: ResilientProtocol) <Self where Self : ResilientProtocol> (@in_guaranteed Self) -> ()
sil @defaultC : $@convention(witness_method: ResilientProtocol) <Self where Self : ResilientProtocol> (@in_guaranteed Self) -> () {
bb0(%0 : $*Self):
  %result = tuple ()
  return %result : $()
}


// CHECK-LABEL: sil @defaultD : $@convention(witness_method: ResilientProtocol) <Self where Self : ResilientProtocol> (@in_guaranteed Self) -> ()
sil @defaultD : $@convention(witness_method: ResilientProtocol) <Self where Self : ResilientProtocol> (@in_guaranteed Self) -> () {
bb0(%0 : $*Self):
  %result = tuple ()
  return %result : $()
}


// CHECK-LABEL: sil @defaultE
sil public_external @defaultE : $@convention(witness_method: ResilientProtocol) <Self where Self : ResilientProtocol> (@in_guaranteed Self) -> ()


protocol InternalProtocol {
  func defaultF()
}

// CHECK-LABEL: sil hidden @defaultF
sil hidden @defaultF : $@convention(witness_method: InternalProtocol) <Self where Self : InternalProtocol> (@in_guaranteed Self) -> () {
bb0(%0 : $*Self):
  %result = tuple ()
  return %result : $()
}


// CHECK-LABEL: sil_default_witness_table ResilientProtocol {
// CHECK: associated_type_protocol (T: Proto): Wrapper<Self>: specialize <Self> (<T> Wrapper<T>: Proto module witness_tables)
// CHECK: associated_type T: Wrapper<Self>
// CHECK: no_default
// CHECK: no_default
// CHECK: method #ResilientProtocol.defaultC!1: {{.*}} : @defaultC
// CHECK: method #ResilientProtocol.defaultD!1: {{.*}} : @defaultD
// CHECK: method #ResilientProtocol.defaultE!1: {{.*}} : @defaultE
// CHECK: }

sil_default_witness_table ResilientProtocol {
  associated_type_protocol (T: Proto): Wrapper<Self>: specialize <Self> (<T> Wrapper<T>: Proto module witness_tables)
  associated_type T: Wrapper<Self>
  no_default
  no_default
  method #ResilientProtocol.defaultC!1: @defaultC
  method #ResilientProtocol.defaultD!1: @defaultD
  method #ResilientProtocol.defaultE!1: @defaultE
}


// CHECK-LABEL: sil_default_witness_table hidden InternalProtocol {
// CHECK: method #InternalProtocol.defaultF!1: {{.*}} : @defaultF
// CHECK: }

sil_default_witness_table hidden InternalProtocol {
  method #InternalProtocol.defaultF!1: @defaultF
}
