// RUN: %target-sil-nm -assume-parsing-unqualified-ownership-sil %s | %FileCheck -check-prefix=SIL-NM -check-prefix=CHECK %s
// RUN: %target-sil-nm -demangle -assume-parsing-unqualified-ownership-sil %s | %FileCheck -check-prefix=DEMANGLE %s
// RUN: rm -rfv %t
// RUN: mkdir %t
// RUN: %target-sil-opt -module-name main -assume-parsing-unqualified-ownership-sil -emit-sib -o %t/out.sib %s
// RUN: %target-sil-nm -module-name main -assume-parsing-unqualified-ownership-sil %t/out.sib | %FileCheck %s
// RUN: %target-sil-nm -module-name main -demangle -assume-parsing-unqualified-ownership-sil %t/out.sib | %FileCheck -check-prefix=DEMANGLE %s

import Builtin

public class C {
  deinit
  init()
}

struct ConformingGenericStruct<T> : ResilientProtocol {
  func defaultA()
}

public protocol ResilientProtocol {
  func defaultA()
}

// CHECK: F c_deinit
sil [serialized] @c_deinit : $@convention(method) (@owned C) -> () {
bb0(%0 : $C):
  %1 = tuple()
  return %1 : $()
}

// CHECK: F defaultA
sil [serialized] @defaultA : $@convention(witness_method: ResilientProtocol) <Self where Self : ResilientProtocol> (@in_guaranteed Self) -> () {
bb0(%0 : $*Self):
  %result = tuple ()
  return %result : $()
}

// CHECK: F f1
sil [serialized] @f1 : $@convention(thin) () -> () {
bb0:
  %0 = tuple()
  return %0 : $()
}

// CHECK: F globalinit
sil [serialized] @globalinit : $@convention(thin) () -> () {
bb0:
  %0 = tuple()
  return %0 : $()
}

// CHECK: G global_var
sil_global [serialized] @global_var : $Builtin.Int32

// CHECK: W _T04main23ConformingGenericStructVyxGAA17ResilientProtocolAAWP
// DEMANGLE: W protocol witness table for main.ConformingGenericStruct<A> : main.ResilientProtocol in main
sil_witness_table [serialized] <T> ConformingGenericStruct<T> : ResilientProtocol module protocol_resilience {
  method #ResilientProtocol.defaultA!1: @defaultA
}

// vtables cannot be serialized from SIL.
// SIL-NM: V C
sil_vtable [serialized] C {
  #C.deinit!deallocator: c_deinit
}


