From 624c4086f1cf515e6c5b033ab53044f8d34d1617 Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Tue, 20 Dec 2022 14:01:54 -0600 Subject: [PATCH] [Shared] Fixes pattern matching non-ALTErrorEnum error codes --- AltTests/AltTests.swift | 31 +++++++++++++++++++++++++++ Shared/Errors/ALTLocalizedError.swift | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/AltTests/AltTests.swift b/AltTests/AltTests.swift index 12d9d2b5..2eaab3ae 100644 --- a/AltTests/AltTests.swift +++ b/AltTests/AltTests.swift @@ -427,6 +427,37 @@ extension AltTests } } + func testPatternMatchingErrorCode() async throws + { + do + { + // ALTLocalizedError + throw OperationError.serverNotFound + } + catch ~OperationError.Code.serverNotFound + { + // Success + } + catch + { + XCTFail("Failed to catch error as OperationError.Code.serverNotFound: \(error)") + } + + do + { + // ALTErrorEnum + throw AuthenticationError(.noTeam) + } + catch ~AuthenticationErrorCode.noTeam + { + // Success + } + catch + { + XCTFail("Failed to catch error as AuthenticationErrorCode.noTeam: \(error)") + } + } + func testWithLocalizedTitle() async throws { let localizedTitle = "AltTest Failed" diff --git a/Shared/Errors/ALTLocalizedError.swift b/Shared/Errors/ALTLocalizedError.swift index 6e01fbc3..1d3aeaef 100644 --- a/Shared/Errors/ALTLocalizedError.swift +++ b/Shared/Errors/ALTLocalizedError.swift @@ -102,7 +102,7 @@ public extension ALTErrorCode { static var errorDomain: String { let typeName = String(reflecting: Self.self) // "\(Self.self)" doesn't include module name, but String(reflecting:) does. - let errorDomain = typeName.replacingOccurrences(of: "ErrorCode", with: "Error") + let errorDomain = typeName.replacingOccurrences(of: "ErrorCode", with: "Error").replacingOccurrences(of: "Error.Code", with: "Error") return errorDomain } }