title: Defer statement at the end of deinit produces a warning
body: <p>Since the <strong>Xcode 10.2</strong> <em>(Swift 5)</em> the <code>defer</code> statement at the end of the <code>deinit</code> scope produces:</p>
  
  <blockquote>
    <p>'defer' statement before end of scope always executes immediately; replace with 'do' statement to silence this warning</p>
  </blockquote>
  
  <p>Let's take a look at this example:</p>
  
  <pre><code>var foo: String {
      didSet {
          // smt
      }
  }
  
  deinit {
      defer { &lt;--- Warning
          foo = bar
      }
  }
  </code></pre>
  
  <ul>
  <li>Of course it's possible to get rid of this warning by moving the code from the observer to a method and call it explicitly but…</li>
  </ul>
  
  <p><strong>What's the point of this warning?</strong> - Isn't it reasonable to have the <code>defer</code> statement in the <code>deinit</code>? <em>(e.g. to be able to trigger properties' observers)</em>.</p>