@@ -26,7 +26,7 @@ internal final class RedisDataParser: ByteParser {
26
26
27
27
if try continueParsing ( partial: & value, from: buffer, at: & offset) {
28
28
guard case . parsed( let value) = value else {
29
- throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " )
29
+ throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " , source : . capture ( ) )
30
30
}
31
31
32
32
return Future ( . completed( consuming: offset, result: value) )
@@ -76,7 +76,7 @@ internal final class RedisDataParser: ByteParser {
76
76
77
77
// Instantiate the integer
78
78
guard let number = Int ( string) else {
79
- throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " )
79
+ throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " , source : . capture ( ) )
80
80
}
81
81
82
82
return number
@@ -91,29 +91,29 @@ internal final class RedisDataParser: ByteParser {
91
91
case . plus:
92
92
// Simple string
93
93
guard let string = simpleString ( from: input, at: & position) else {
94
- throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " )
94
+ throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " , source : . capture ( ) )
95
95
}
96
96
97
97
return . parsed( . basicString( string) )
98
98
case . hyphen:
99
99
// Error
100
100
guard let string = simpleString ( from: input, at: & position) else {
101
- throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " )
101
+ throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " , source : . capture ( ) )
102
102
}
103
103
104
- let error = RedisError ( identifier: " serverSide " , reason: string)
104
+ let error = RedisError ( identifier: " serverSide " , reason: string, source : . capture ( ) )
105
105
return . parsed( . error( error) )
106
106
case . colon:
107
107
// Integer
108
108
guard let number = try integer ( from: input, at: & position) else {
109
- throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " )
109
+ throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " , source : . capture ( ) )
110
110
}
111
111
112
112
return . parsed( . integer( number) )
113
113
case . dollar:
114
114
// Bulk strings start with their length
115
115
guard let size = try integer ( from: input, at: & position) else {
116
- throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " )
116
+ throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " , source : . capture ( ) )
117
117
}
118
118
119
119
// Negative bulk strings are `null`
@@ -126,7 +126,7 @@ internal final class RedisDataParser: ByteParser {
126
126
size > - 1 ,
127
127
size < input. distance ( from: position, to: input. endIndex)
128
128
else {
129
- throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " )
129
+ throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " , source : . capture ( ) )
130
130
}
131
131
132
132
let endPosition = input. index ( position, offsetBy: size)
@@ -139,11 +139,11 @@ internal final class RedisDataParser: ByteParser {
139
139
case . asterisk:
140
140
// Arrays start with their element count
141
141
guard let size = try integer ( from: input, at: & position) else {
142
- throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " )
142
+ throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " , source : . capture ( ) )
143
143
}
144
144
145
145
guard size >= 0 else {
146
- throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " )
146
+ throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " , source : . capture ( ) )
147
147
}
148
148
149
149
var array = [ PartialRedisData] ( repeating: . notYetParsed, count: size)
@@ -165,7 +165,7 @@ internal final class RedisDataParser: ByteParser {
165
165
166
166
let values = try array. map { value -> RedisData in
167
167
guard case . parsed( let value) = value else {
168
- throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " )
168
+ throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " , source : . capture ( ) )
169
169
}
170
170
171
171
return value
@@ -174,7 +174,7 @@ internal final class RedisDataParser: ByteParser {
174
174
// All elements have been parsed, return the complete array
175
175
return . parsed( . array( values) )
176
176
default :
177
- throw RedisError ( identifier: " invalidTypeToken " , reason: " Unexpected error while parsing RedisData. " )
177
+ throw RedisError ( identifier: " invalidTypeToken " , reason: " Unexpected error while parsing RedisData. " , source : . capture ( ) )
178
178
}
179
179
}
180
180
@@ -207,7 +207,7 @@ internal final class RedisDataParser: ByteParser {
207
207
208
208
let values = try values. map { value -> RedisData in
209
209
guard case . parsed( let value) = value else {
210
- throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " )
210
+ throw RedisError ( identifier: " parse " , reason: " Unexpected error while parsing RedisData. " , source : . capture ( ) )
211
211
}
212
212
213
213
return value
0 commit comments