@@ -291,11 +291,7 @@ impl<'a> Converter<'a> {
291
291
let text = & self . res . text [ self . offset + 1 ..] [ ..len - 1 ] ;
292
292
let i = text. rfind ( '"' ) . unwrap ( ) ;
293
293
let text = & text[ ..i] ;
294
- rustc_lexer:: unescape:: unescape_literal ( text, Mode :: Str , & mut |_, res| {
295
- if let Err ( e) = res {
296
- err = error_to_diagnostic_message ( e, Mode :: Str ) ;
297
- }
298
- } ) ;
294
+ err = unescape_string_error_message ( text, Mode :: Str ) ;
299
295
}
300
296
STRING
301
297
}
@@ -306,11 +302,7 @@ impl<'a> Converter<'a> {
306
302
let text = & self . res . text [ self . offset + 2 ..] [ ..len - 2 ] ;
307
303
let i = text. rfind ( '"' ) . unwrap ( ) ;
308
304
let text = & text[ ..i] ;
309
- rustc_lexer:: unescape:: unescape_literal ( text, Mode :: ByteStr , & mut |_, res| {
310
- if let Err ( e) = res {
311
- err = error_to_diagnostic_message ( e, Mode :: ByteStr ) ;
312
- }
313
- } )
305
+ err = unescape_string_error_message ( text, Mode :: ByteStr ) ;
314
306
}
315
307
BYTE_STRING
316
308
}
@@ -321,11 +313,7 @@ impl<'a> Converter<'a> {
321
313
let text = & self . res . text [ self . offset + 2 ..] [ ..len - 2 ] ;
322
314
let i = text. rfind ( '"' ) . unwrap ( ) ;
323
315
let text = & text[ ..i] ;
324
- rustc_lexer:: unescape:: unescape_c_string ( text, Mode :: CStr , & mut |_, res| {
325
- if let Err ( e) = res {
326
- err = error_to_diagnostic_message ( e, Mode :: CStr ) ;
327
- }
328
- } )
316
+ err = unescape_string_error_message ( text, Mode :: CStr ) ;
329
317
}
330
318
C_STRING
331
319
}
@@ -391,12 +379,26 @@ fn error_to_diagnostic_message(error: EscapeError, mode: Mode) -> &'static str {
391
379
}
392
380
}
393
381
394
- fn fill_unescape_string_error ( text : & str , mode : Mode , mut error_message : & str ) {
395
-
396
- rustc_lexer:: unescape:: unescape_c_string ( text, mode, & mut |_, res| {
397
- if let Err ( e) = res {
398
- error_message = error_to_diagnostic_message ( e, mode) ;
382
+ fn unescape_string_error_message ( text : & str , mode : Mode ) -> & ' static str {
383
+ let mut error_message = "" ;
384
+ match mode {
385
+ Mode :: CStr => {
386
+ rustc_lexer:: unescape:: unescape_c_string ( text, mode, & mut |_, res| {
387
+ if let Err ( e) = res {
388
+ error_message = error_to_diagnostic_message ( e, mode) ;
389
+ }
390
+ } ) ;
391
+ }
392
+ Mode :: ByteStr | Mode :: Str => {
393
+ rustc_lexer:: unescape:: unescape_literal ( text, mode, & mut |_, res| {
394
+ if let Err ( e) = res {
395
+ error_message = error_to_diagnostic_message ( e, mode) ;
396
+ }
397
+ } ) ;
399
398
}
400
- } ) ;
399
+ _ => {
400
+ // Other Modes are not supported yet or do not apply
401
+ }
402
+ }
403
+ error_message
401
404
}
402
-
0 commit comments