Fix support for subscript default arguments in KeyPath

This commit is contained in:
zoecarver
2019-10-30 17:31:00 -07:00
parent d6117a43b7
commit e87d243d70
4 changed files with 62 additions and 6 deletions

View File

@@ -322,6 +322,25 @@ struct Subscripts<T> {
}
}
struct SubscriptDefaults {
subscript(x: Int = 0) -> Int {
get { fatalError() }
set { fatalError() }
}
subscript(x: Int, y: Int, z: Int = 0) -> Int {
get { fatalError() }
set { fatalError() }
}
subscript(x: Bool, bool y: Bool = false) -> Bool {
get { fatalError() }
set { fatalError() }
}
subscript(bool x: Bool, y: Int, z: Int = 0) -> Int {
get { fatalError() }
set { fatalError() }
}
}
// CHECK-LABEL: sil hidden [ossa] @{{.*}}10subscripts
func subscripts<T: Hashable, U: Hashable>(x: T, y: U, s: String) {
_ = \Subscripts<T>.[]
@@ -352,6 +371,16 @@ func subscripts<T: Hashable, U: Hashable>(x: T, y: U, s: String) {
_ = \Subscripts<T>.[Bass()]
_ = \Subscripts<T>.[Treble()]
_ = \SubscriptDefaults.[]
_ = \SubscriptDefaults.[0]
_ = \SubscriptDefaults.[0, 0]
_ = \SubscriptDefaults.[0, 0, 0]
_ = \SubscriptDefaults.[false]
_ = \SubscriptDefaults.[false, bool: false]
_ = \SubscriptDefaults.[bool: false, 0]
_ = \SubscriptDefaults.[bool: false, 0, 0]
}
// CHECK-LABEL: sil hidden [ossa] @{{.*}}subclass_generics