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