func print()

in Sources/SIL/SILPrinter.swift [54:289]


    func print(_ op: Operator) {
        switch op {
        case let .allocStack(type, attributes):
            print("alloc_stack ")
            print(type)
            print(whenEmpty: false, ", ", attributes, ", ", "") { print($0) }
        case let .apply(nothrow, value, substitutions, arguments, type):
            print("apply ")
            print(when: nothrow, "[nothrow] ")
            print(value)
            print(whenEmpty: false, "<", substitutions, ", ", ">") { naked($0) }
            print("(", arguments, ", ", ")") { print($0) }
            print(" : ")
            print(type)
        case let .beginAccess(access, enforcement, noNestedConflict, builtin, operand):
            print("begin_access ")
            print("[")
            print(access)
            print("] ")
            print("[")
            print(enforcement)
            print("] ")
            print(when: noNestedConflict, "[noNestedConflict] ")
            print(when: builtin, "[builtin] ")
            print(operand)
        case let .beginApply(nothrow, value, substitutions, arguments, type):
            print("begin_apply ")
            print(when: nothrow, "[nothrow] ")
            print(value)
            print(whenEmpty: false, "<", substitutions, ", ", ">") { naked($0) }
            print("(", arguments, ", ", ")") { print($0) }
            print(" : ")
            print(type)
        case let .beginBorrow(operand):
            print("begin_borrow ")
            print(operand)
        case let .builtin(name, operands, type):
            print("builtin ")
            literal(name)
            print("(", operands, ", ", ")") { print($0) }
            print(" : ")
            print(type)
        case let .condFail(operand, message):
            print("cond_fail ")
            print(operand)
            print(", ")
            literal(message)
        case let .convertEscapeToNoescape(notGuaranteed, escaped, operand, type):
            print("convert_escape_to_noescape ")
            print(when: notGuaranteed, "[not_guaranteed] ")
            print(when: escaped, "[escaped] ")
            print(operand)
            print(" to ")
            print(type)
        case let .convertFunction(operand, withoutActuallyEscaping, type):
            print("convert_function ")
            print(operand)
            print(" to ")
            print(when: withoutActuallyEscaping, "[without_actually_escaping] ")
            print(type)
        case let .copyAddr(take, value, initialization, operand):
            print("copy_addr ")
            print(when: take, "[take] ")
            print(value)
            print(" to ")
            print(when: initialization, "[initialization] ")
            print(operand)
        case let .copyValue(operand):
            print("copy_value ")
            print(operand)
        case let .deallocStack(operand):
            print("dealloc_stack ")
            print(operand)
        case let .debugValue(operand, attributes):
            print("debug_value ")
            print(operand)
            print(whenEmpty: false, ", ", attributes, ", ", "") { print($0) }
        case let .debugValueAddr(operand, attributes):
            print("debug_value_addr ")
            print(operand)
            print(whenEmpty: false, ", ", attributes, ", ", "") { print($0) }
        case let .destroyValue(operand):
            print("destroy_value ")
            print(operand)
        case let .destructureTuple(operand):
            print("destructure_tuple ")
            print(operand)
        case let .endAccess(abort, operand):
            print("end_access ")
            print(when: abort, "[abort] ")
            print(operand)
        case let .endApply(value):
            print("end_apply ")
            print(value)
        case let .endBorrow(value):
            print("end_borrow ")
            print(value)
        case let .enum(type, declRef, maybeOperand):
            print("enum ")
            print(type)
            print(", ")
            print(declRef)
            if let operand = maybeOperand {
              print(", ")
              print(operand)
            }
        case let .floatLiteral(type, value):
            print("float_literal ")
            print(type)
            print(", 0x")
            print(value)
        case let .functionRef(name, type):
            print("function_ref ")
            print("@")
            print(name)
            print(" : ")
            print(type)
        case let .globalAddr(name, type):
            print("global_addr ")
            print("@")
            print(name)
            print(" : ")
            print(type)
        case let .indexAddr(addr, index):
            print("index_addr ")
            print(addr)
            print(", ")
            print(index)
        case let .integerLiteral(type, value):
            print("integer_literal ")
            print(type)
            print(", ")
            literal(value)
        case let .load(maybeOwnership, operand):
            print("load ")
            if let ownership = maybeOwnership {
                print(ownership)
                print(" ")
            }
            print(operand)
        case let .markDependence(operand, on):
            print("mark_dependence ")
            print(operand)
            print(" on ")
            print(on)
        case let .metatype(type):
            print("metatype ")
            print(type)
        case let .partialApply(calleeGuaranteed, onStack, value, substitutions, arguments, type):
            print("partial_apply ")
            print(when: calleeGuaranteed, "[callee_guaranteed] ")
            print(when: onStack, "[on_stack] ")
            print(value)
            print(whenEmpty: false, "<", substitutions, ", ", ">") { naked($0) }
            print("(", arguments, ", ", ")") { print($0) }
            print(" : ")
            print(type)
        case let .pointerToAddress(operand, strict, type):
            print("pointer_to_address ")
            print(operand)
            print(" to ")
            print(when: strict, "[strict] ")
            print(type)
        case let .releaseValue(operand):
            print("release_value ")
            print(operand)
        case let .retainValue(operand):
            print("retain_value ")
            print(operand)
        case let .selectEnum(operand, cases, type):
            print("select_enum ")
            print(operand)
            print(whenEmpty: false, "", cases, "", "") { print($0) }
            print(" : ")
            print(type)
        case let .store(value, maybeOwnership, operand):
            print("store ")
            print(value)
            print(" to ")
            if let ownership = maybeOwnership {
                print(ownership)
                print(" ")
            }
            print(operand)
        case let .stringLiteral(encoding, value):
            print("string_literal ")
            print(encoding)
            print(" ")
            literal(value)
        case let .strongRelease(operand):
            print("strong_release ")
            print(operand)
        case let .strongRetain(operand):
            print("strong_retain ")
            print(operand)
        case let .struct(type, operands):
            print("struct ")
            print(type)
            print(" (", operands, ", ", ")") { print($0) }
        case let .structElementAddr(operand, declRef):
            print("struct_element_addr ")
            print(operand)
            print(", ")
            print(declRef)
        case let .structExtract(operand, declRef):
            print("struct_extract ")
            print(operand)
            print(", ")
            print(declRef)
        case let .thinToThickFunction(operand, type):
            print("thin_to_thick_function ")
            print(operand)
            print(" to ")
            print(type)
        case let .tuple(elements):
            print("tuple ")
            print(elements)
        case let .tupleExtract(operand, declRef):
            print("tuple_extract ")
            print(operand)
            print(", ")
            literal(declRef)
        case let .unknown(name):
            print(name)
            print(" <?>")
        case let .witnessMethod(archeType, declRef, declType, type):
            print("witness_method ")
            print(archeType)
            print(", ")
            print(declRef)
            print(" : ")
            naked(declType)
            print(" : ")
            print(type)
        }
    }