File tree 2 files changed +14
-0
lines changed
2 files changed +14
-0
lines changed Original file line number Diff line number Diff line change @@ -1094,6 +1094,8 @@ void LifetimeChecker::handleEscapeUse(const DIMemoryUse &Use) {
1094
1094
DiagMessage = diag::variable_closure_use_uninit;
1095
1095
else
1096
1096
DiagMessage = diag::variable_function_use_uninit;
1097
+ } else if (isa<UncheckedTakeEnumDataAddrInst>(Inst)) {
1098
+ DiagMessage = diag::variable_used_before_initialized;
1097
1099
} else {
1098
1100
DiagMessage = diag::variable_closure_use_uninit;
1099
1101
}
Original file line number Diff line number Diff line change @@ -78,6 +78,12 @@ func test2() {
78
78
takes_closure { // ok.
79
79
markUsed ( b3)
80
80
}
81
+
82
+ var b4 : Int ?
83
+ takes_closure { // ok.
84
+ markUsed ( b4!)
85
+ }
86
+ b4 = 7
81
87
82
88
// Structs
83
89
var s1 : SomeStruct
@@ -1184,3 +1190,9 @@ func test22436880() {
1184
1190
x = 1
1185
1191
bug22436880 ( & x) // expected-error {{immutable value 'x' may not be passed inout}}
1186
1192
}
1193
+
1194
+ // sr-184
1195
+ let x : String ? // expected-note 2 {{constant defined here}}
1196
+ print ( x? . characters. count) // expected-error {{constant 'x' used before being initialized}}
1197
+ print ( x!) // expected-error {{constant 'x' used before being initialized}}
1198
+
You can’t perform that action at this time.
0 commit comments