mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
43 lines
1.3 KiB
Swift
43 lines
1.3 KiB
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: %target-build-swift -module-name=test %s -o %t/a.out
|
|
// RUN: %target-run %t/a.out | %FileCheck %s
|
|
// REQUIRES: executable_test
|
|
// REQUIRES: CPU=arm64 || CPU=x86_64
|
|
|
|
// Check that the ASTMangler does not crash when mangling a retroactive conformance
|
|
// and also do a executable test to make sure the code works as expected.
|
|
|
|
extension Result: RandomAccessCollection, BidirectionalCollection, Collection, Sequence where Success: RandomAccessCollection, Success.Index == Int {
|
|
public typealias Element = Result<Success.Element, Failure>
|
|
public typealias Index = Int
|
|
public var startIndex: Int {
|
|
switch self {
|
|
case .success(let array):
|
|
return array.startIndex
|
|
case .failure:
|
|
return 0
|
|
}
|
|
}
|
|
public var endIndex: Int {
|
|
switch self {
|
|
case .success(let array):
|
|
return array.endIndex
|
|
case .failure:
|
|
return 1
|
|
}
|
|
}
|
|
public subscript(position: Int) -> Result<Success.Element, Failure> {
|
|
switch self {
|
|
case .success(let array):
|
|
return .success(array[position])
|
|
case .failure(let error):
|
|
return .failure(error)
|
|
}
|
|
}
|
|
}
|
|
|
|
let coll: [Int] = [4, 8, 15, 16, 23, 42]
|
|
let result: Result<[Int], Error> = .success(coll)
|
|
// CHECK: success(15)
|
|
print(result[2])
|