|
17 | 17 | //===----------------------------------------------------------------------===//
|
18 | 18 | /// A type that has no values and can't be constructed.
|
19 | 19 | ///
|
20 |
| -/// Use `Never` as the return type of a function that doesn't return normally |
21 |
| -/// --- for example, because it runs forever or terminates the program. |
| 20 | +/// Use `Never` as the return type of a function |
| 21 | +/// that doesn't return normally --- for example, |
| 22 | +/// because it runs forever or terminates the program. |
22 | 23 | ///
|
23 | 24 | /// // An infinite loop never returns.
|
24 | 25 | /// func forever() -> Never {
|
|
33 | 34 | /// }
|
34 | 35 | ///
|
35 | 36 | /// A function that returns `Never` is called a _nonreturning_ function.
|
36 |
| -/// Closures, methods, computed properties, and subscripts can also be |
37 |
| -/// nonreturning. |
38 |
| -/// |
39 |
| -/// There's no way to create an instance of `Never`; this characteristic makes |
40 |
| -/// it an _uninhabited_ type. You can use an uninhabited type like `Never` to |
41 |
| -/// represent states in your program that are impossible to reach during |
42 |
| -/// execution. Swift's type system uses this information --- for example, to |
43 |
| -/// reason about control statements in cases that are known to be unreachable. |
| 37 | +/// Closures, methods, computed properties, and subscripts |
| 38 | +/// can also be nonreturning. |
| 39 | +/// |
| 40 | +/// There's no way to create an instance of `Never`; |
| 41 | +/// this characteristic makes it an _uninhabited_ type. |
| 42 | +/// You can use an uninhabited type like `Never` |
| 43 | +/// to represent states in your program |
| 44 | +/// that are impossible to reach during execution. |
| 45 | +/// Swift's type system uses this information --- |
| 46 | +/// for example, to reason about control statements |
| 47 | +/// in cases that are known to be unreachable. |
44 | 48 | ///
|
45 | 49 | /// let favoriteNumber: Result<Int, Never> = .success(42)
|
46 | 50 | /// switch favoriteNumber {
|
47 | 51 | /// case .success(let value):
|
48 | 52 | /// print("My favorite number is", value)
|
49 | 53 | /// }
|
50 | 54 | ///
|
51 |
| -/// In the code above, `favoriteNumber` has a failure type of `Never`, |
52 |
| -/// indicating that it always succeeds. The switch statement is therefore |
53 |
| -/// exhaustive, even though it doesn't contain a `.failure` case, because that |
54 |
| -/// case could never be reached. |
| 55 | +/// In the code above, |
| 56 | +/// `favoriteNumber` has a failure type of `Never`, |
| 57 | +/// indicating that it always succeeds. |
| 58 | +/// The switch statement is therefore exhaustive, |
| 59 | +/// even though it doesn't contain a `.failure` case, |
| 60 | +/// because that case could never be reached. |
55 | 61 | @frozen
|
56 | 62 | public enum Never {}
|
57 | 63 |
|
|
0 commit comments