// RUN: %target-swift-frontend %s -emit-ir // https://github.com/apple/swift/issues/43869 class Expression { typealias Arg = A typealias Ret = R subscript(x: Arg) -> Ret! { return nil } } class Op : Expression { typealias OpType = (Arg) -> Ret let op: OpType init(op: @escaping OpType) { self.op = op super.init() } } class BinaryOp : Op<((A1, A2)), R> { override init(op: @escaping OpType) { super.init(op: op) } override subscript(x: Arg) -> Ret! { return op(x) } } let add = BinaryOp { return $0.0 + $0.1 } print(add[(1,1)])