mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
* Diagnose missing expr in non-void single-expr func. [52025782]
After SE-0255, compiling
```
func foo() -> Int {
return
}
```
would result in a diagnostic without source location:
```
<unknown>:0: error: cannot convert return expression of type '()' to
```
Now, it results in
```
filename.swift:8:5: error: non-void function should return a value
return
^
```
as it did prior to SE-0255.
To achieve that, during type checking for statements, when the
StmtChecker visits return statements, check whether we are within a
non-void-returning, single-expression function and that that single
expression is an implicit empty tuple. (An empty implicit tuple is
added as the result of a resultless return statement that appears as the
only element in a single-expression function.)
To facilitate that, `hasSingleExpressionBody` and
`getSingleExpressionBody` was added to `AnyFunctionRef` and added
`getSingleExpressionBody` to `AbstractClosureExpr` (which already had
`hasSingleExpressionBody`).
rdar://problem/52025782
8.7 KiB
8.7 KiB