title: Protocol extending Encodable (or Codable) does not conform to it
body: <p>I have 2 protocols, <code>Filters</code> and <code>Parameters</code>, both of which extend <code>Encodable</code></p>
  <pre><code>protocol Filters: Encodable {
      var page: Int { get }
  }
  
  protocol Parameters: Encodable {
      var type: String { get }
      var filters: Filters { get }
  }
  </code></pre>
  <p>I create structs conforming to these protocols, thusly…</p>
  <pre><code>struct BankAccountFilters: Filters {
      var page: Int
      var isWithdrawal: Bool
  }
  
  struct BankAccountParamters: Parameters {
      let type: String = &quot;Bank&quot;
      var filters: Filters
  }
  
  let baf = BankAccountFilters(page: 1, isWithdrawal: true)
  let bap = BankAccountParamters(filters: baf)
  </code></pre>
  <p>Which fails because…</p>
  <blockquote>
  <p>error: type 'BankAccountParamters' does not conform to protocol 'Encodable'</p>
  <p>note: cannot automatically synthesize 'Encodable' because 'Filters' does not conform to 'Encodable'</p>
  </blockquote>
  <p><code>Filters</code> clearly <em>does</em> conform to <code>Encodable</code> (at least it seems that way to me). Is there a way around this?</p>