@@ -663,16 +663,16 @@ impl server::Literal for Rustc<'_, '_> {
663663 self . lit ( token:: Float , Symbol :: intern ( n) , Some ( sym:: f64) )
664664 }
665665 fn string ( & mut self , string : & str ) -> Self :: Literal {
666- let mut escaped = String :: new ( ) ;
667- for ch in string. chars ( ) {
668- escaped. extend ( ch. escape_debug ( ) ) ;
669- }
670- self . lit ( token:: Str , Symbol :: intern ( & escaped) , None )
666+ let quoted = format ! ( "{:?}" , string) ;
667+ assert ! ( quoted. starts_with( '"' ) && quoted. ends_with( '"' ) ) ;
668+ let symbol = & quoted[ 1 ..quoted. len ( ) - 1 ] ;
669+ self . lit ( token:: Str , Symbol :: intern ( symbol) , None )
671670 }
672671 fn character ( & mut self , ch : char ) -> Self :: Literal {
673- let mut escaped = String :: new ( ) ;
674- escaped. extend ( ch. escape_unicode ( ) ) ;
675- self . lit ( token:: Char , Symbol :: intern ( & escaped) , None )
672+ let quoted = format ! ( "{:?}" , ch) ;
673+ assert ! ( quoted. starts_with( '\'' ) && quoted. ends_with( '\'' ) ) ;
674+ let symbol = & quoted[ 1 ..quoted. len ( ) - 1 ] ;
675+ self . lit ( token:: Char , Symbol :: intern ( symbol) , None )
676676 }
677677 fn byte_string ( & mut self , bytes : & [ u8 ] ) -> Self :: Literal {
678678 let string = bytes
0 commit comments