@@ -1240,40 +1240,40 @@ impl EarleyParser {
1240
1240
let allowed = Allowed :: Some ( possible_scans. clone ( ) ) ;
1241
1241
let next_token = match input. next ( allowed) {
1242
1242
Ok ( r) => r,
1243
- Err ( Error {
1244
- kind : box ErrorKind :: LexingError { .. } ,
1245
- } ) => {
1246
- let error = if let Some ( token) = input. next ( Allowed :: All ) ? {
1247
- let span = token. span ( ) . clone ( ) ;
1248
- let name = {
1249
- let id = token. id ( ) ;
1250
- let name = token. name ( ) . to_string ( ) ;
1251
- if let Some ( description) =
1252
- input. lexer ( ) . grammar ( ) . description_of ( id)
1253
- {
1254
- description. to_string ( )
1255
- } else {
1256
- name
1243
+ Err ( error) => {
1244
+ if let ErrorKind :: LexingError { .. } = * error. kind {
1245
+ let error = if let Some ( token) = input. next ( Allowed :: All ) ? {
1246
+ let span = token. span ( ) . clone ( ) ;
1247
+ let name = {
1248
+ let id = token. id ( ) ;
1249
+ let name = token. name ( ) . to_string ( ) ;
1250
+ if let Some ( description) =
1251
+ input. lexer ( ) . grammar ( ) . description_of ( id)
1252
+ {
1253
+ description. to_string ( )
1254
+ } else {
1255
+ name
1256
+ }
1257
+ } ;
1258
+ ErrorKind :: SyntaxError {
1259
+ name,
1260
+ alternatives : possible_first_nonterminals
1261
+ . drain ( )
1262
+ . map ( |x| x. to_string ( ) )
1263
+ . chain ( possible_first_terminals. drain ( ) )
1264
+ . collect ( ) ,
1265
+ span : Fragile :: new ( span) ,
1266
+ }
1267
+ } else {
1268
+ ErrorKind :: SyntaxErrorValidPrefix {
1269
+ span : input. last_span ( ) . into ( ) ,
1257
1270
}
1258
1271
} ;
1259
- ErrorKind :: SyntaxError {
1260
- name,
1261
- alternatives : possible_first_nonterminals
1262
- . drain ( )
1263
- . map ( |x| x. to_string ( ) )
1264
- . chain ( possible_first_terminals. drain ( ) )
1265
- . collect ( ) ,
1266
- span : Fragile :: new ( span) ,
1267
- }
1272
+ return error. err ( ) ;
1268
1273
} else {
1269
- ErrorKind :: SyntaxErrorValidPrefix {
1270
- span : input. last_span ( ) . into ( ) ,
1271
- }
1272
- } ;
1273
- return error. err ( ) ;
1274
+ return Err ( error) ;
1275
+ }
1274
1276
}
1275
- // Reallocation is necessary, because the type differs
1276
- Err ( error) => return Err ( error) ,
1277
1277
} ;
1278
1278
possible_first_nonterminals. clear ( ) ;
1279
1279
possible_first_terminals. clear ( ) ;
0 commit comments