Skip to content

Commit a2cda8b

Browse files
authored
expanding errors to support localized error messages, exposing msgs from core library and type of internal error (#111)
1 parent 60b992e commit a2cda8b

1 file changed

Lines changed: 17 additions & 1 deletion

File tree

Sources/Automerge/Errors.swift

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import enum AutomergeUniffi.DecodeSyncStateError
22
import enum AutomergeUniffi.DocError
33
import enum AutomergeUniffi.LoadError
44
import enum AutomergeUniffi.ReceiveSyncError
5+
import Foundation
56

67
typealias FfiDocError = AutomergeUniffi.DocError
78
typealias FfiDecodeSyncStateError = AutomergeUniffi.DecodeSyncStateError
@@ -16,12 +17,27 @@ typealias FfiReceiveSyncError = AutomergeUniffi.ReceiveSyncError
1617
/// An general document error.
1718
///
1819
/// The error is specific to the Rust language binding infrastructure.
19-
public struct DocError: Error {
20+
public struct DocError: LocalizedError {
2021
let inner: FfiDocError
2122

2223
init(_ inner: FfiDocError) {
2324
self.inner = inner
2425
}
26+
27+
public var errorDescription: String? {
28+
inner.errorDescription
29+
}
30+
}
31+
32+
extension FfiDocError: LocalizedError {
33+
public var errorDescription: String? {
34+
switch self {
35+
case let .WrongObjectType(message: msg):
36+
return "WrongObjectType: \(msg)"
37+
case let .Internal(message: msg):
38+
return "AutomergeCore Internal Error: \(msg)"
39+
}
40+
}
2541
}
2642

2743
/// An error that indicates the synchronisation state could not be decoded.

0 commit comments

Comments
 (0)