DI: More tests for self-consumed analysis
diff --git a/test/SILOptimizer/definite_init_failable_initializers_diagnostics.swift b/test/SILOptimizer/definite_init_failable_initializers_diagnostics.swift
index 5270f34..eac70a5 100644
--- a/test/SILOptimizer/definite_init_failable_initializers_diagnostics.swift
+++ b/test/SILOptimizer/definite_init_failable_initializers_diagnostics.swift
@@ -51,12 +51,61 @@
} catch {}
} // expected-error {{'self' used inside 'catch' block reachable from super.init call}}
+ init(invalidEscapeDesignated2: ()) throws {
+ x = 10
+ y = 10
+ do {
+ try super.init()
+ } catch {
+ try super.init() // expected-error {{'self' used inside 'catch' block reachable from super.init call}}
+ }
+ } // expected-error {{'self' used inside 'catch' block reachable from super.init call}}
+
+ init(invalidEscapeDesignated3: ()) {
+ x = 10
+ y = 10
+ do {
+ try super.init()
+ } catch {
+ print(self.x) // expected-error {{'self' used inside 'catch' block reachable from super.init call}}
+ self.y = 20 // expected-error {{'self' used inside 'catch' block reachable from super.init call}}
+ }
+ } // expected-error {{'self' used inside 'catch' block reachable from super.init call}}
+
+ init(invalidEscapeDesignated4: ()) throws {
+ x = 10
+ y = 10
+ do {
+ try super.init()
+ } catch let e {
+ print(self.x) // expected-error {{'self' used inside 'catch' block reachable from super.init call}}
+ throw e
+ }
+ }
+
convenience init(invalidEscapeConvenience: ()) {
do {
try self.init()
} catch {}
} // expected-error {{'self' used inside 'catch' block reachable from self.init call}}
+ convenience init(invalidEscapeConvenience2: ()) throws {
+ do {
+ try self.init()
+ } catch {
+ try self.init() // expected-error {{'self' used inside 'catch' block reachable from self.init call}}
+ }
+ } // expected-error {{'self' used inside 'catch' block reachable from self.init call}}
+
+ convenience init(invalidEscapeConvenience3: ()) throws {
+ do {
+ try self.init()
+ } catch let e {
+ print(self) // expected-error {{'self' used inside 'catch' block reachable from self.init call}}
+ throw e
+ }
+ }
+
init(noEscapeDesignated: ()) throws {
x = 10
y = 10