@@ -232,7 +232,7 @@ where
232
232
let mut saw_b = false ;
233
233
let mut saw_r = false ;
234
234
let mut saw_u = false ;
235
- let saw_f = false ;
235
+ let mut saw_f = false ;
236
236
loop {
237
237
// Detect r"", f"", b"" and u""
238
238
// TODO: handle f-strings
@@ -242,10 +242,12 @@ where
242
242
&& ( self . chr0 == Some ( 'u' ) || self . chr0 == Some ( 'U' ) )
243
243
{
244
244
saw_u = true ;
245
- } else if !( saw_r || saw_u || saw_f)
246
- && ( self . chr0 == Some ( 'r' ) || self . chr0 == Some ( 'R' ) )
247
- {
245
+ } else if !( saw_r || saw_u) && ( self . chr0 == Some ( 'r' ) || self . chr0 == Some ( 'R' ) ) {
248
246
saw_r = true ;
247
+ } else if !( saw_b || saw_u || saw_f)
248
+ && ( self . chr0 == Some ( 'f' ) || self . chr0 == Some ( 'F' ) )
249
+ {
250
+ saw_f = true ;
249
251
} else {
250
252
break ;
251
253
}
@@ -313,7 +315,7 @@ where
313
315
314
316
fn lex_string (
315
317
& mut self ,
316
- _is_bytes : bool ,
318
+ is_bytes : bool ,
317
319
is_raw : bool ,
318
320
_is_unicode : bool ,
319
321
_is_fstring : bool ,
@@ -400,13 +402,17 @@ where
400
402
}
401
403
let end_pos = self . get_pos ( ) ;
402
404
403
- return Ok ( (
404
- start_pos,
405
+ let tok = if is_bytes {
406
+ Tok :: Bytes {
407
+ value : string_content. as_bytes ( ) . to_vec ( ) ,
408
+ }
409
+ } else {
405
410
Tok :: String {
406
411
value : string_content,
407
- } ,
408
- end_pos,
409
- ) ) ;
412
+ }
413
+ } ;
414
+
415
+ return Ok ( ( start_pos, tok, end_pos) ) ;
410
416
}
411
417
412
418
fn is_char ( & self ) -> bool {
@@ -921,10 +927,10 @@ mod tests {
921
927
tokens,
922
928
vec![
923
929
Tok :: String {
924
- value: "\\ \\ " . to_string( )
930
+ value: "\\ \\ " . to_string( ) ,
925
931
} ,
926
932
Tok :: String {
927
- value: "\\ " . to_string( )
933
+ value: "\\ " . to_string( ) ,
928
934
}
929
935
]
930
936
) ;
0 commit comments