| // RUN: %target-swift-frontend -emit-sil -verify %s |
| |
| // rdar://problem/29716016 - Check that we properly enforce DI on `let` |
| // variables and class properties. |
| |
| protocol P { } |
| |
| extension P { |
| mutating func foo() {} |
| var bar: Int { get { return 0 } set {} } |
| } |
| |
| class ImmutableP { |
| let field: P // expected-note* {{}} |
| |
| init(field: P) { |
| self.field = field |
| self.field.foo() // expected-error{{}} |
| self.field.bar = 4 // expected-error{{}} |
| } |
| } |
| |
| func immutableP(field: P) { |
| let x: P // expected-note* {{}} |
| |
| x = field |
| x.foo() // expected-error{{}} |
| x.bar = 4 // expected-error{{}} |
| } |