in Sources/SIL/SILPrinter.swift [552:593]
func naked(_ type: Type) {
switch type {
case let .addressType(type):
print("*")
naked(type)
case let .attributedType(attrs, type):
print("", attrs, " ", " ") { print($0) }
naked(type)
case .coroutineTokenType:
print("!CoroutineTokenType!")
case let .functionType(params, result):
print("(", params, ", ", ")") { naked($0) }
print(" -> ")
naked(result)
case let .genericType(params, reqs, type):
print("<", params, ", ", "") { print($0) }
print(whenEmpty: false, " where ", reqs, ", ", "") { print($0) }
print(">")
// This is a weird corner case of -emit-sil, so we have to go the extra mile.
if case .genericType = type {
naked(type)
} else {
print(" ")
naked(type)
}
case let .namedType(name):
print(name)
case let .selectType(type, name):
naked(type)
print(".")
print(name)
case .selfType:
print("Self")
case let .specializedType(type, args):
naked(type)
print("<", args, ", ", ">") { naked($0) }
case let .tupleType(params):
print("(", params, ", ", ")") { naked($0) }
case .withOwnership(_, _):
fatalError("Types with ownership should be printed before naked type print!")
}
}