Skip to content

Instantly share code, notes, and snippets.

@srv7
Last active August 13, 2020 13:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save srv7/0e5c88c115030c11fdd37b2fa3433323 to your computer and use it in GitHub Desktop.
Save srv7/0e5c88c115030c11fdd37b2fa3433323 to your computer and use it in GitHub Desktop.
sil_stage canonical
import Builtin
import Swift
import SwiftShims
import Foundation
struct City : Hashable {
@_hasStorage let name: String { get }
@_hasStorage let id: Int { get }
init(name: String, id: Int)
var hashValue: Int { get }
func hash(into hasher: inout Hasher)
@_implements(Equatable, ==(_:_:)) static func __derived_struct_equals(_ a: City, _ b: City) -> Bool
}
@_hasStorage @_hasInitialValue var selected: [AnyHashable] { get set }
@_hasStorage @_hasInitialValue let city: City { get }
@_hasStorage @_hasInitialValue let isCity: City? { get }
// selected
sil_global hidden @$s15AnyHashableTest8selectedSays0aB0VGvp : $Array<AnyHashable>
// city
sil_global hidden [let] @$s15AnyHashableTest4cityAA4CityVvp : $City
// isCity
sil_global hidden [let] @$s15AnyHashableTest6isCityAA0E0VSgvp : $Optional<City>
// main
sil @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 {
bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>):
alloc_global @$s15AnyHashableTest8selectedSays0aB0VGvp // id: %2
%3 = global_addr @$s15AnyHashableTest8selectedSays0aB0VGvp : $*Array<AnyHashable> // users: %10, %42, %32
%4 = integer_literal $Builtin.Word, 0 // user: %6
// function_ref _allocateUninitializedArray<A>(_:)
%5 = function_ref @$ss27_allocateUninitializedArrayySayxG_BptBwlF : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer) // user: %6
%6 = apply %5<AnyHashable>(%4) : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer) // users: %8, %7
%7 = tuple_extract %6 : $(Array<AnyHashable>, Builtin.RawPointer), 0 // user: %10
%8 = tuple_extract %6 : $(Array<AnyHashable>, Builtin.RawPointer), 1 // user: %9
%9 = pointer_to_address %8 : $Builtin.RawPointer to [strict] $*AnyHashable
store %7 to %3 : $*Array<AnyHashable> // id: %10
alloc_global @$s15AnyHashableTest4cityAA4CityVvp // id: %11
%12 = global_addr @$s15AnyHashableTest4cityAA4CityVvp : $*City // users: %26, %24
%13 = metatype $@thin City.Type // user: %23
%14 = string_literal utf8 "南京" // user: %19
%15 = integer_literal $Builtin.Word, 6 // user: %19
%16 = integer_literal $Builtin.Int1, 0 // user: %19
%17 = metatype $@thin String.Type // user: %19
// function_ref String.init(_builtinStringLiteral:utf8CodeUnitCount:isASCII:)
%18 = function_ref @$sSS21_builtinStringLiteral17utf8CodeUnitCount7isASCIISSBp_BwBi1_tcfC : $@convention(method) (Builtin.RawPointer, Builtin.Word, Builtin.Int1, @thin String.Type) -> @owned String // user: %19
%19 = apply %18(%14, %15, %16, %17) : $@convention(method) (Builtin.RawPointer, Builtin.Word, Builtin.Int1, @thin String.Type) -> @owned String // user: %23
%20 = integer_literal $Builtin.Int64, 11 // user: %21
%21 = struct $Int (%20 : $Builtin.Int64) // user: %23
// function_ref City.init(name:id:)
%22 = function_ref @$s15AnyHashableTest4CityV4name2idACSS_SitcfC : $@convention(method) (@owned String, Int, @thin City.Type) -> @owned City // user: %23
%23 = apply %22(%19, %21, %13) : $@convention(method) (@owned String, Int, @thin City.Type) -> @owned City // user: %24
store %23 to %12 : $*City // id: %24
%25 = alloc_stack $City // users: %28, %38, %37, %31
%26 = load %12 : $*City // users: %28, %27
retain_value %26 : $City // id: %27
store %26 to %25 : $*City // id: %28
// function_ref _convertToAnyHashable<A>(_:)
%29 = function_ref @$ss21_convertToAnyHashableys0cD0VxSHRzlF : $@convention(thin) <τ_0_0 where τ_0_0 : Hashable> (@in_guaranteed τ_0_0) -> @out AnyHashable // user: %31
%30 = alloc_stack $AnyHashable // users: %36, %34, %31
%31 = apply %29<City>(%30, %25) : $@convention(thin) <τ_0_0 where τ_0_0 : Hashable> (@in_guaranteed τ_0_0) -> @out AnyHashable
%32 = begin_access [modify] [dynamic] %3 : $*Array<AnyHashable> // users: %35, %34
// function_ref Array.append(_:)
%33 = function_ref @$sSa6appendyyxnF : $@convention(method) <τ_0_0> (@in τ_0_0, @inout Array<τ_0_0>) -> () // user: %34
%34 = apply %33<AnyHashable>(%30, %32) : $@convention(method) <τ_0_0> (@in τ_0_0, @inout Array<τ_0_0>) -> ()
end_access %32 : $*Array<AnyHashable> // id: %35
dealloc_stack %30 : $*AnyHashable // id: %36
destroy_addr %25 : $*City // id: %37
dealloc_stack %25 : $*City // id: %38
alloc_global @$s15AnyHashableTest6isCityAA0E0VSgvp // id: %39
%40 = global_addr @$s15AnyHashableTest6isCityAA0E0VSgvp : $*Optional<City> // users: %59, %66, %64, %62
%41 = alloc_stack $Optional<AnyHashable> // users: %69, %61, %58, %57, %55, %52
%42 = begin_access [read] [dynamic] %3 : $*Array<AnyHashable> // users: %43, %45
%43 = load %42 : $*Array<AnyHashable> // users: %54, %47, %44
retain_value %43 : $Array<AnyHashable> // id: %44
end_access %42 : $*Array<AnyHashable> // id: %45
%46 = alloc_stack $Array<AnyHashable> // users: %48, %47, %68, %56
store %43 to %46 : $*Array<AnyHashable> // id: %47
%48 = load %46 : $*Array<AnyHashable> // user: %50
%49 = alloc_stack $Array<AnyHashable> // users: %50, %53, %52
store %48 to %49 : $*Array<AnyHashable> // id: %50
// function_ref Collection.first.getter
%51 = function_ref @$sSlsE5first7ElementQzSgvg : $@convention(method) <τ_0_0 where τ_0_0 : Collection> (@in_guaranteed τ_0_0) -> @out Optional<τ_0_0.Element> // user: %52
%52 = apply %51<[AnyHashable]>(%41, %49) : $@convention(method) <τ_0_0 where τ_0_0 : Collection> (@in_guaranteed τ_0_0) -> @out Optional<τ_0_0.Element>
dealloc_stack %49 : $*Array<AnyHashable> // id: %53
release_value %43 : $Array<AnyHashable> // id: %54
switch_enum_addr %41 : $*Optional<AnyHashable>, case #Optional.some!enumelt.1: bb2, case #Optional.none!enumelt: bb1 // id: %55
bb1: // Preds: bb0
dealloc_stack %46 : $*Array<AnyHashable> // id: %56
destroy_addr %41 : $*Optional<AnyHashable> // id: %57
dealloc_stack %41 : $*Optional<AnyHashable> // id: %58
inject_enum_addr %40 : $*Optional<City>, #Optional.none!enumelt // id: %59
br bb6 // id: %60
bb2: // Preds: bb0
%61 = unchecked_take_enum_data_addr %41 : $*Optional<AnyHashable>, #Optional.some!enumelt.1 // user: %63
%62 = init_enum_data_addr %40 : $*Optional<City>, #Optional.some!enumelt.1 // user: %63
checked_cast_addr_br take_always AnyHashable in %61 : $*AnyHashable to City in %62 : $*City, bb3, bb4 // id: %63
bb3: // Preds: bb2
inject_enum_addr %40 : $*Optional<City>, #Optional.some!enumelt.1 // id: %64
br bb5 // id: %65
bb4: // Preds: bb2
inject_enum_addr %40 : $*Optional<City>, #Optional.none!enumelt // id: %66
br bb5 // id: %67
bb5: // Preds: bb4 bb3
dealloc_stack %46 : $*Array<AnyHashable> // id: %68
dealloc_stack %41 : $*Optional<AnyHashable> // id: %69
br bb6 // id: %70
bb6: // Preds: bb1 bb5
%71 = integer_literal $Builtin.Int32, 0 // user: %72
%72 = struct $Int32 (%71 : $Builtin.Int32) // user: %73
return %72 : $Int32 // id: %73
} // end sil function 'main'
// City.name.getter
sil hidden [transparent] @$s15AnyHashableTest4CityV4nameSSvg : $@convention(method) (@guaranteed City) -> @owned String {
// %0 // users: %2, %1
bb0(%0 : $City):
debug_value %0 : $City, let, name "self", argno 1 // id: %1
%2 = struct_extract %0 : $City, #City.name // users: %4, %3
retain_value %2 : $String // id: %3
return %2 : $String // id: %4
} // end sil function '$s15AnyHashableTest4CityV4nameSSvg'
// City.id.getter
sil hidden [transparent] @$s15AnyHashableTest4CityV2idSivg : $@convention(method) (@guaranteed City) -> Int {
// %0 // users: %2, %1
bb0(%0 : $City):
debug_value %0 : $City, let, name "self", argno 1 // id: %1
%2 = struct_extract %0 : $City, #City.id // user: %3
return %2 : $Int // id: %3
} // end sil function '$s15AnyHashableTest4CityV2idSivg'
// City.init(name:id:)
sil hidden @$s15AnyHashableTest4CityV4name2idACSS_SitcfC : $@convention(method) (@owned String, Int, @thin City.Type) -> @owned City {
// %0 // user: %3
// %1 // user: %3
bb0(%0 : $String, %1 : $Int, %2 : $@thin City.Type):
%3 = struct $City (%0 : $String, %1 : $Int) // user: %4
return %3 : $City // id: %4
} // end sil function '$s15AnyHashableTest4CityV4name2idACSS_SitcfC'
// City.hashValue.getter
sil hidden @$s15AnyHashableTest4CityV9hashValueSivg : $@convention(method) (@guaranteed City) -> Int {
// %0 // users: %3, %1
bb0(%0 : $City):
debug_value %0 : $City, let, name "self", argno 1 // id: %1
%2 = alloc_stack $City // users: %3, %6, %5
store %0 to %2 : $*City // id: %3
// function_ref _hashValue<A>(for:)
%4 = function_ref @$ss10_hashValue3forSix_tSHRzlF : $@convention(thin) <τ_0_0 where τ_0_0 : Hashable> (@in_guaranteed τ_0_0) -> Int // user: %5
%5 = apply %4<City>(%2) : $@convention(thin) <τ_0_0 where τ_0_0 : Hashable> (@in_guaranteed τ_0_0) -> Int // user: %7
dealloc_stack %2 : $*City // id: %6
return %5 : $Int // id: %7
} // end sil function '$s15AnyHashableTest4CityV9hashValueSivg'
// _hashValue<A>(for:)
sil [serialized] [always_inline] @$ss10_hashValue3forSix_tSHRzlF : $@convention(thin) <τ_0_0 where τ_0_0 : Hashable> (@in_guaranteed τ_0_0) -> Int
// City.hash(into:)
sil hidden @$s15AnyHashableTest4CityV4hash4intoys6HasherVz_tF : $@convention(method) (@inout Hasher, @guaranteed City) -> () {
// %0 // users: %17, %8, %2
// %1 // users: %14, %4, %3
bb0(%0 : $*Hasher, %1 : $City):
debug_value_addr %0 : $*Hasher, var, name "hasher", argno 1 // id: %2
debug_value %1 : $City, let, name "self", argno 2 // id: %3
%4 = struct_extract %1 : $City, #City.name // users: %7, %5
retain_value %4 : $String // id: %5
%6 = alloc_stack $String // users: %7, %13, %12, %10
store %4 to %6 : $*String // id: %7
%8 = begin_access [modify] [static] %0 : $*Hasher // users: %11, %10
// function_ref Hasher.combine<A>(_:)
%9 = function_ref @$ss6HasherV7combineyyxSHRzlF : $@convention(method) <τ_0_0 where τ_0_0 : Hashable> (@in_guaranteed τ_0_0, @inout Hasher) -> () // user: %10
%10 = apply %9<String>(%6, %8) : $@convention(method) <τ_0_0 where τ_0_0 : Hashable> (@in_guaranteed τ_0_0, @inout Hasher) -> ()
end_access %8 : $*Hasher // id: %11
destroy_addr %6 : $*String // id: %12
dealloc_stack %6 : $*String // id: %13
%14 = struct_extract %1 : $City, #City.id // user: %16
%15 = alloc_stack $Int // users: %16, %21, %19
store %14 to %15 : $*Int // id: %16
%17 = begin_access [modify] [static] %0 : $*Hasher // users: %20, %19
// function_ref Hasher.combine<A>(_:)
%18 = function_ref @$ss6HasherV7combineyyxSHRzlF : $@convention(method) <τ_0_0 where τ_0_0 : Hashable> (@in_guaranteed τ_0_0, @inout Hasher) -> () // user: %19
%19 = apply %18<Int>(%15, %17) : $@convention(method) <τ_0_0 where τ_0_0 : Hashable> (@in_guaranteed τ_0_0, @inout Hasher) -> ()
end_access %17 : $*Hasher // id: %20
dealloc_stack %15 : $*Int // id: %21
%22 = tuple () // user: %23
return %22 : $() // id: %23
} // end sil function '$s15AnyHashableTest4CityV4hash4intoys6HasherVz_tF'
// Hasher.combine<A>(_:)
sil [serialized] [always_inline] @$ss6HasherV7combineyyxSHRzlF : $@convention(method) <τ_0_0 where τ_0_0 : Hashable> (@in_guaranteed τ_0_0, @inout Hasher) -> ()
// static City.__derived_struct_equals(_:_:)
sil hidden @$s15AnyHashableTest4CityV23__derived_struct_equalsySbAC_ACtFZ : $@convention(method) (@guaranteed City, @guaranteed City, @thin City.Type) -> Bool {
// %0 // users: %17, %7, %3
// %1 // users: %18, %9, %4
// %2 // user: %5
bb0(%0 : $City, %1 : $City, %2 : $@thin City.Type):
debug_value %0 : $City, let, name "a", argno 1 // id: %3
debug_value %1 : $City, let, name "b", argno 2 // id: %4
debug_value %2 : $@thin City.Type, let, name "self", argno 3 // id: %5
%6 = metatype $@thin String.Type // user: %12
%7 = struct_extract %0 : $City, #City.name // users: %14, %12, %8
retain_value %7 : $String // id: %8
%9 = struct_extract %1 : $City, #City.name // users: %13, %12, %10
retain_value %9 : $String // id: %10
// function_ref static String.== infix(_:_:)
%11 = function_ref @$sSS2eeoiySbSS_SStFZ : $@convention(method) (@guaranteed String, @guaranteed String, @thin String.Type) -> Bool // user: %12
%12 = apply %11(%7, %9, %6) : $@convention(method) (@guaranteed String, @guaranteed String, @thin String.Type) -> Bool // user: %15
release_value %9 : $String // id: %13
release_value %7 : $String // id: %14
%15 = struct_extract %12 : $Bool, #Bool._value // user: %16
cond_br %15, bb1, bb4 // id: %16
bb1: // Preds: bb0
%17 = struct_extract %0 : $City, #City.id // user: %19
%18 = struct_extract %1 : $City, #City.id // user: %20
%19 = struct_extract %17 : $Int, #Int._value // user: %21
%20 = struct_extract %18 : $Int, #Int._value // user: %21
%21 = builtin "cmp_eq_Int64"(%19 : $Builtin.Int64, %20 : $Builtin.Int64) : $Builtin.Int1 // user: %22
cond_br %21, bb2, bb3 // id: %22
bb2: // Preds: bb1
%23 = integer_literal $Builtin.Int1, -1 // user: %24
%24 = struct $Bool (%23 : $Builtin.Int1) // user: %25
br bb5(%24 : $Bool) // id: %25
bb3: // Preds: bb1
%26 = integer_literal $Builtin.Int1, 0 // user: %27
%27 = struct $Bool (%26 : $Builtin.Int1) // user: %28
br bb5(%27 : $Bool) // id: %28
bb4: // Preds: bb0
%29 = integer_literal $Builtin.Int1, 0 // user: %30
%30 = struct $Bool (%29 : $Builtin.Int1) // user: %31
br bb5(%30 : $Bool) // id: %31
// %32 // user: %33
bb5(%32 : $Bool): // Preds: bb2 bb3 bb4
return %32 : $Bool // id: %33
} // end sil function '$s15AnyHashableTest4CityV23__derived_struct_equalsySbAC_ACtFZ'
// Bool.init(_builtinBooleanLiteral:)
sil public_external [transparent] [serialized] @$sSb22_builtinBooleanLiteralSbBi1__tcfC : $@convention(method) (Builtin.Int1, @thin Bool.Type) -> Bool {
// %0 // user: %2
bb0(%0 : $Builtin.Int1, %1 : $@thin Bool.Type):
%2 = struct $Bool (%0 : $Builtin.Int1) // user: %3
return %2 : $Bool // id: %3
} // end sil function '$sSb22_builtinBooleanLiteralSbBi1__tcfC'
// static String.== infix(_:_:)
sil [serialized] [always_inline] [readonly] [_semantics "string.equals"] @$sSS2eeoiySbSS_SStFZ : $@convention(method) (@guaranteed String, @guaranteed String, @thin String.Type) -> Bool
// static Int.== infix(_:_:)
sil public_external [transparent] [serialized] @$sSi2eeoiySbSi_SitFZ : $@convention(method) (Int, Int, @thin Int.Type) -> Bool {
// %0 // user: %3
// %1 // user: %4
bb0(%0 : $Int, %1 : $Int, %2 : $@thin Int.Type):
%3 = struct_extract %0 : $Int, #Int._value // user: %5
%4 = struct_extract %1 : $Int, #Int._value // user: %5
%5 = builtin "cmp_eq_Int64"(%3 : $Builtin.Int64, %4 : $Builtin.Int64) : $Builtin.Int1 // user: %6
%6 = struct $Bool (%5 : $Builtin.Int1) // user: %7
return %6 : $Bool // id: %7
} // end sil function '$sSi2eeoiySbSi_SitFZ'
// protocol witness for Hashable.hashValue.getter in conformance City
sil private [transparent] [thunk] @$s15AnyHashableTest4CityVSHAASH9hashValueSivgTW : $@convention(witness_method: Hashable) (@in_guaranteed City) -> Int {
// %0 // user: %1
bb0(%0 : $*City):
%1 = load %0 : $*City // user: %3
// function_ref City.hashValue.getter
%2 = function_ref @$s15AnyHashableTest4CityV9hashValueSivg : $@convention(method) (@guaranteed City) -> Int // user: %3
%3 = apply %2(%1) : $@convention(method) (@guaranteed City) -> Int // user: %4
return %3 : $Int // id: %4
} // end sil function '$s15AnyHashableTest4CityVSHAASH9hashValueSivgTW'
// protocol witness for Hashable.hash(into:) in conformance City
sil private [transparent] [thunk] @$s15AnyHashableTest4CityVSHAASH4hash4intoys6HasherVz_tFTW : $@convention(witness_method: Hashable) (@inout Hasher, @in_guaranteed City) -> () {
// %0 // user: %4
// %1 // user: %2
bb0(%0 : $*Hasher, %1 : $*City):
%2 = load %1 : $*City // user: %4
// function_ref City.hash(into:)
%3 = function_ref @$s15AnyHashableTest4CityV4hash4intoys6HasherVz_tF : $@convention(method) (@inout Hasher, @guaranteed City) -> () // user: %4
%4 = apply %3(%0, %2) : $@convention(method) (@inout Hasher, @guaranteed City) -> ()
%5 = tuple () // user: %6
return %5 : $() // id: %6
} // end sil function '$s15AnyHashableTest4CityVSHAASH4hash4intoys6HasherVz_tFTW'
// protocol witness for Hashable._rawHashValue(seed:) in conformance City
sil private [transparent] [thunk] [always_inline] @$s15AnyHashableTest4CityVSHAASH13_rawHashValue4seedS2i_tFTW : $@convention(witness_method: Hashable) (Int, @in_guaranteed City) -> Int {
// %0 // user: %3
// %1 // user: %3
bb0(%0 : $Int, %1 : $*City):
// function_ref Hashable._rawHashValue(seed:)
%2 = function_ref @$sSHsE13_rawHashValue4seedS2i_tF : $@convention(method) <τ_0_0 where τ_0_0 : Hashable> (Int, @in_guaranteed τ_0_0) -> Int // user: %3
%3 = apply %2<City>(%0, %1) : $@convention(method) <τ_0_0 where τ_0_0 : Hashable> (Int, @in_guaranteed τ_0_0) -> Int // user: %4
return %3 : $Int // id: %4
} // end sil function '$s15AnyHashableTest4CityVSHAASH13_rawHashValue4seedS2i_tFTW'
// Hashable._rawHashValue(seed:)
sil [serialized] [always_inline] @$sSHsE13_rawHashValue4seedS2i_tF : $@convention(method) <τ_0_0 where τ_0_0 : Hashable> (Int, @in_guaranteed τ_0_0) -> Int
// protocol witness for static Equatable.== infix(_:_:) in conformance City
sil private [transparent] [thunk] @$s15AnyHashableTest4CityVSQAASQ2eeoiySbx_xtFZTW : $@convention(witness_method: Equatable) (@in_guaranteed City, @in_guaranteed City, @thick City.Type) -> Bool {
// %0 // user: %3
// %1 // user: %4
bb0(%0 : $*City, %1 : $*City, %2 : $@thick City.Type):
%3 = load %0 : $*City // user: %7
%4 = load %1 : $*City // user: %7
%5 = metatype $@thin City.Type // user: %7
// function_ref static City.__derived_struct_equals(_:_:)
%6 = function_ref @$s15AnyHashableTest4CityV23__derived_struct_equalsySbAC_ACtFZ : $@convention(method) (@guaranteed City, @guaranteed City, @thin City.Type) -> Bool // user: %7
%7 = apply %6(%3, %4, %5) : $@convention(method) (@guaranteed City, @guaranteed City, @thin City.Type) -> Bool // user: %8
return %7 : $Bool // id: %8
} // end sil function '$s15AnyHashableTest4CityVSQAASQ2eeoiySbx_xtFZTW'
// _allocateUninitializedArray<A>(_:)
sil [serialized] [always_inline] [_semantics "array.uninitialized_intrinsic"] @$ss27_allocateUninitializedArrayySayxG_BptBwlF : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer)
// String.init(_builtinStringLiteral:utf8CodeUnitCount:isASCII:)
sil [serialized] [always_inline] [readonly] [_semantics "string.makeUTF8"] @$sSS21_builtinStringLiteral17utf8CodeUnitCount7isASCIISSBp_BwBi1_tcfC : $@convention(method) (Builtin.RawPointer, Builtin.Word, Builtin.Int1, @thin String.Type) -> @owned String
// Int.init(_builtinIntegerLiteral:)
sil public_external [transparent] [serialized] @$sSi22_builtinIntegerLiteralSiBI_tcfC : $@convention(method) (Builtin.IntLiteral, @thin Int.Type) -> Int {
// %0 // user: %2
bb0(%0 : $Builtin.IntLiteral, %1 : $@thin Int.Type):
%2 = builtin "s_to_s_checked_trunc_IntLiteral_Int64"(%0 : $Builtin.IntLiteral) : $(Builtin.Int64, Builtin.Int1) // user: %3
%3 = tuple_extract %2 : $(Builtin.Int64, Builtin.Int1), 0 // user: %4
%4 = struct $Int (%3 : $Builtin.Int64) // user: %5
return %4 : $Int // id: %5
} // end sil function '$sSi22_builtinIntegerLiteralSiBI_tcfC'
// _convertToAnyHashable<A>(_:)
sil [serialized] @$ss21_convertToAnyHashableys0cD0VxSHRzlF : $@convention(thin) <τ_0_0 where τ_0_0 : Hashable> (@in_guaranteed τ_0_0) -> @out AnyHashable
// Array.append(_:)
sil [serialized] [_semantics "array.append_element"] @$sSa6appendyyxnF : $@convention(method) <τ_0_0> (@in τ_0_0, @inout Array<τ_0_0>) -> ()
// Collection.first.getter
sil [serialized] @$sSlsE5first7ElementQzSgvg : $@convention(method) <τ_0_0 where τ_0_0 : Collection> (@in_guaranteed τ_0_0) -> @out Optional<τ_0_0.Element>
sil_witness_table hidden City: Hashable module AnyHashableTest {
base_protocol Equatable: City: Equatable module AnyHashableTest
method #Hashable.hashValue!getter.1: <Self where Self : Hashable> (Self) -> () -> Int : @$s15AnyHashableTest4CityVSHAASH9hashValueSivgTW // protocol witness for Hashable.hashValue.getter in conformance City
method #Hashable.hash!1: <Self where Self : Hashable> (Self) -> (inout Hasher) -> () : @$s15AnyHashableTest4CityVSHAASH4hash4intoys6HasherVz_tFTW // protocol witness for Hashable.hash(into:) in conformance City
method #Hashable._rawHashValue!1: <Self where Self : Hashable> (Self) -> (Int) -> Int : @$s15AnyHashableTest4CityVSHAASH13_rawHashValue4seedS2i_tFTW // protocol witness for Hashable._rawHashValue(seed:) in conformance City
}
sil_witness_table hidden City: Equatable module AnyHashableTest {
method #Equatable."=="!1: <Self where Self : Equatable> (Self.Type) -> (Self, Self) -> Bool : @$s15AnyHashableTest4CityVSQAASQ2eeoiySbx_xtFZTW // protocol witness for static Equatable.== infix(_:_:) in conformance City
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment