-
Notifications
You must be signed in to change notification settings - Fork 10.5k
/
Copy pathdebugger_function.swift
64 lines (57 loc) · 1.29 KB
/
debugger_function.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
55
56
57
58
59
60
61
62
63
64
// RUN: %target-typecheck-verify-swift -enable-throw-without-try -debugger-support
var invalidAccessor : Int {
// expected-error@+1 {{@LLDBDebuggerFunction may only be used on 'func' declarations}} {{3-24=}}
@LLDBDebuggerFunction
get { return 42 }
}
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 {
}
}