| // RUN: %target-swift-frontend %s -Xllvm -sil-print-debuginfo -emit-sil -g -o - | %FileCheck %s |
| public protocol DelegateA {} |
| public protocol DelegateB {} |
| public protocol WithDelegate |
| { |
| var delegate: DelegateA? { get } |
| func f() throws -> Int |
| } |
| public enum Err: Swift.Error { |
| case s(Int) |
| } |
| public class C {} |
| public class M { |
| let field: C |
| var value : Int |
| // Verify that definite initialization doesn't create a bogus description of |
| // self pointing to the liveness bitvector. |
| |
| // CHECK: sil @$S4main1MC4fromAcA12WithDelegate_p_tKcfc |
| // CHECK: bb0 |
| // CHECK-NEXT: %2 = alloc_stack $Builtin.Int2 |
| // CHECK-NOT: let |
| // CHECK-NOT: name |
| // CHECK: scope |
| public init(from d: WithDelegate) throws { |
| guard let delegate = d.delegate as? DelegateB |
| else { throw Err.s(0) } |
| self.field = C() |
| let i: Int = try d.f() |
| value = i |
| } |
| } |