@@ -116,9 +116,10 @@ impl<R> Tokenizer<R> for RegexLiteral {
116116
117117 let mut flags: [ u8 ; 8 ] = [ 0 ; 8 ] ;
118118 let flags_start = cursor. pos ( ) ;
119- cursor. take_while_ascii_pred ( & mut flags, & char:: is_alphabetic) ?;
119+ let flags_slice = cursor. take_while_ascii_pred ( & mut flags, & char:: is_alphabetic) ?;
120120
121- let flags_string = match RegExpFlags :: from_bytes ( flags) {
121+ // TODO: Change this to if err() then convert flags_slice to str
122+ let flags_string = match RegExpFlags :: from_bytes ( flags_slice) {
122123 Err ( message) => return Err ( Error :: Syntax ( message. into ( ) , flags_start) ) ,
123124 Ok ( regex_flags) => regex_flags. to_string ( ) ,
124125 } ;
@@ -193,7 +194,7 @@ bitflags! {
193194}
194195
195196impl RegExpFlags {
196- fn from_bytes ( bytes : [ u8 ; 8 ] ) -> Result < Self , String > {
197+ fn from_bytes ( bytes : & [ u8 ] ) -> Result < Self , String > {
197198 let mut flags = Self :: default ( ) ;
198199 for c in bytes {
199200 let new_flag = match c {
@@ -206,13 +207,18 @@ impl RegExpFlags {
206207 b'd' => Self :: HAS_INDICES ,
207208 b'v' => Self :: UNICODE_SETS ,
208209 0x00 => continue ,
209- _ => return Err ( format ! ( "invalid regular expression flag {}" , char :: from( c) ) ) ,
210+ _ => {
211+ return Err ( format ! (
212+ "invalid regular expression flag {}" ,
213+ char :: from( c. to_owned( ) )
214+ ) )
215+ }
210216 } ;
211217
212218 if flags. contains ( new_flag) {
213219 return Err ( format ! (
214220 "repeated regular expression flag {}" ,
215- char :: from( c)
221+ char :: from( c. to_owned ( ) )
216222 ) ) ;
217223 }
218224 flags. insert ( new_flag) ;
0 commit comments