@@ -26,6 +26,41 @@ enum ParseError: Error, Hashable {
2626 case emptyProperty
2727}
2828
29+ extension ParseError : CustomStringConvertible {
30+ var description : String {
31+ switch self {
32+ case let . numberOverflow( s) :
33+ return " number overflow: \( s) "
34+ case let . expectedNumDigits( s, i) :
35+ return " expected \( i) digits in ' \( s) ' "
36+ case let . expectedNumber( s, kind: kind) :
37+ let radix : String
38+ if kind == . decimal {
39+ radix = " "
40+ } else {
41+ radix = " of radix \( kind. radix) "
42+ }
43+ return " expected a numbers in ' \( s) ' \( radix) "
44+ case let . expected( s) :
45+ return " expected ' \( s) ' "
46+ case . unexpectedEndOfInput:
47+ return " unexpected end of input "
48+ case let . misc( s) :
49+ return s
50+ case let . expectedASCII( c) :
51+ return " expected ASCII for ' \( c) ' "
52+ case . expectedCustomCharacterClassMembers:
53+ return " expected custom character class members "
54+ case . invalidCharacterClassRangeOperand:
55+ return " invalid character class range "
56+ case let . invalidPOSIXSetName( n) :
57+ return " invalid character set name: ' \( n) ' "
58+ case . emptyProperty:
59+ return " empty property "
60+ }
61+ }
62+ }
63+
2964// TODO: Fixits, notes, etc.
3065
3166// TODO: Diagnostics engine, recorder, logger, or similar.
0 commit comments