mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
When calling a throwing function without 'try', let's suggest multiple possibilities of note + fix-it for user to choose from. Resolves: rdar://problem/33040113
59 lines
1.1 KiB
Swift
59 lines
1.1 KiB
Swift
// RUN: %target-typecheck-verify-swift -enable-throw-without-try -debugger-support
|
|
|
|
func foo() throws -> Int { return 0 }
|
|
|
|
@LLDBDebuggerFunction
|
|
func test0() throws -> Int {
|
|
var x: Int = 0
|
|
x = foo()
|
|
x = try foo()
|
|
return x
|
|
}
|
|
|
|
@LLDBDebuggerFunction
|
|
func test1() -> Int {
|
|
do {
|
|
var x: Int = 0
|
|
x = foo()
|
|
x = try foo()
|
|
return x
|
|
} catch {
|
|
return 0
|
|
}
|
|
}
|
|
|
|
@LLDBDebuggerFunction
|
|
func test2() -> Int {
|
|
do {
|
|
do {
|
|
var x: Int = 0
|
|
x = foo() // expected-error {{call can throw but is not marked with 'try'}}
|
|
// expected-note@-1 {{did you mean to use 'try'?}} {{11-11=try }}
|
|
// expected-note@-2 {{did you mean to handle error as optional value?}} {{11-11=try? }}
|
|
// expected-note@-3 {{did you mean to disable error propagation?}} {{11-11=try! }}
|
|
x = try foo()
|
|
return x
|
|
} catch {
|
|
return 0
|
|
}
|
|
} catch {
|
|
return 0
|
|
}
|
|
}
|
|
|
|
@LLDBDebuggerFunction
|
|
func test3() {
|
|
do {
|
|
} catch {
|
|
}
|
|
}
|
|
|
|
@LLDBDebuggerFunction
|
|
func test4() {
|
|
do {
|
|
do {}
|
|
catch {} // expected-warning {{'catch' block is unreachable because no errors are thrown in 'do' block}}
|
|
} catch {
|
|
}
|
|
}
|