Files
swift-mirror/test/decl/func/debugger_function.swift
John McCall eaac7bbc5a Treat debugger functions as top-level code for the purposes
of throw-without-try error checking.

Also look through one level (but only one level) of do/catch.

rdar://21949031

Swift SVN r30728
2015-07-28 22:22:43 +00:00

56 lines
885 B
Swift

// RUN: %target-parse-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'}}
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 {
}
}