title: How can I remove the warning "Cannot match several associated values at once"
body: <p>I have a helper method in my unit tests:</p>
  
  <pre class="lang-swift prettyprint-override"><code>  func expect(_ sut: CompanyStore, toRetrieve expectedResult: RetrieveCacheResult, when action: @escaping (() -&gt; Void), file: StaticString = #file, line: UInt = #line) {
      let exp = expectation(description: "await completion")
  
      sut.retrieve { retrievedResult in
        switch (expectedResult, retrievedResult) {
        case (.empty, .empty), (.failure, .failure):
          break
        case let (.found(retrieved), .found(expected)):
          XCTAssertEqual(retrieved.item, expected.item, file: file, line: line)
          XCTAssertEqual(retrieved.timestamp, expected.timestamp, file: file, line: line)
  
        default:
          XCTFail("Expected to retrieve \(expectedResult), got \(retrievedResult) instead", file: file, line: line)
        }
  
        exp.fulfill()
      }
      action()
      wait(for: [exp], timeout: 1.0)
    }
  </code></pre>
  
  <p>It allows me to create tests such as:</p>
  
  <pre class="lang-swift prettyprint-override"><code>  func test_retrieve_delivers_empty_on_empty_cache() {
      let sut = makeSUT()
      expect(sut, toRetrieve: .empty, when: {
        // some action to perform
      })
    }
  </code></pre>
  
  <p>Since upgrading to Swift 5.1 I am getting the following warning:</p>
  
  <blockquote>
    <p>Cannot match several associated values at once, implicitly tupling the
    associated values and trying to match that instead</p>
  </blockquote>
  
  <p>On the following line</p>
  
  <pre><code> case let (.found(retrieved), .found(expected)):
  </code></pre>
  
  <p>These values are a tuple <code>(item: LocalCompany, timestamp: Date)</code></p>
  
  <p>I haven't been able to work out how to clear this warning.</p>
  
  <p>Edit:</p>
  
  <p><code>.found</code> is an enum:</p>
  
  <pre class="lang-swift prettyprint-override"><code>public enum RetrieveCacheResult {
    case empty
    case found(item: LocalCompany, timestamp: Date)
    case failure(Error)
  }
  </code></pre>