forked from swiftlang/swift
- Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoptional_try.swift
54 lines (40 loc) · 1.32 KB
/
optional_try.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// RUN: %target-run-simple-swift -sil-verify-all | %FileCheck %s
// REQUIRES: executable_test
enumBad:Error{
case err
case custom(String)
}
func erase<T>(_ val:T)->Any{
return val asAny
}
classKlass{}
typealiasMaybeString=Result<String,Error>
typealiasMaybeKlass=Result<Klass,Error>
typealiasMaybeInt=Result<Int,Error>
typealiasMaybeNumbers=Result<[Int],Error>
////////
// NOTE: Do _not_ heed the warnings about implicit coercions to Any.
// That's an important part of this test's coverage!
////////
// -- throwing --
// CHECK: nil
print(try?MaybeString.failure(Bad.err).get())
// CHECK: nil
print(try?MaybeKlass.failure(Bad.custom("doggo")).get())
// CHECK: nil
print(try?MaybeInt.failure(Bad.err).get())
// CHECK: nil
print(try?MaybeNumbers.failure(Bad.err).get())
// CHECK: nil
print(erase(try?MaybeNumbers.failure(Bad.err).get()))
// -- normal --
// CHECK: Optional("catto")
print(try?MaybeString.success("catto").get())
// CHECK: Optional(main.Klass)
print(try?MaybeKlass.success(Klass()).get())
// CHECK: Optional(3)
print(try?MaybeInt.success(3).get())
// CHECK: Optional([4, 8, 15, 16, 23, 42])
print(try?MaybeNumbers.success([4,8,15,16,23,42]).get())
// CHECK: Optional([0, 1, 1, 2, 3])
print(erase(try?MaybeNumbers.success([0,1,1,2,3]).get()))