| // RUN: %empty-directory(%t) |
| // RUN: %target-build-swift %s -o %t/a.out |
| // RUN: %target-run %t/a.out | %FileCheck %s |
| // REQUIRES: executable_test |
| |
| enum testError: Error { |
| case C1 |
| case C2(Int, String) |
| } |
| |
| public func someFunc(_ str: String) throws -> String { |
| if (str[str.startIndex] == "D") { |
| throw testError.C2(2, str) |
| } |
| return str |
| } |
| |
| let testData: [String] = [ |
| "ABC", |
| "DEF", |
| ] |
| |
| public func testCatchWildcardDispatch(_ name: String...) throws { |
| for dir in testData { |
| do { |
| print(try someFunc(dir)) |
| } catch .C2(let errno, _) as testError where errno == 2 { |
| print(name) |
| } |
| } |
| } |
| |
| // CHECK: ABC |
| // CHECK: ["TEST"] |
| try testCatchWildcardDispatch("TEST") |
| |