| // RUN: %target-swift-frontend -Xllvm -sil-full-demangle -emit-silgen %s |
| |
| class BaseClass<T> { |
| func inAndOut(_ t: T) -> T { return t } |
| var property: T |
| |
| init(_ t: T) { |
| self.property = t |
| } |
| } |
| |
| class DerivedClass : BaseClass<(Int, Int)> { |
| override func inAndOut(_ t: (Int, Int)) -> (Int, Int) { |
| let fn = super.inAndOut |
| return fn(t) |
| } |
| |
| override var property: (Int, Int) { |
| get { |
| return super.property |
| } |
| set { |
| super.property = newValue |
| } |
| } |
| |
| override init(_ t: (Int, Int)) { |
| super.init(t) |
| } |
| } |
| |
| let d = DerivedClass((1, 2)) |
| _ = d.inAndOut((1, 2)) |
| |
| let value = d.property |
| d.property = value |
| |
| d.property.0 += 1 |