File tree Expand file tree Collapse file tree 2 files changed +26
-5
lines changed
src/tools/rust-analyzer/crates Expand file tree Collapse file tree 2 files changed +26
-5
lines changed Original file line number Diff line number Diff line change @@ -191,7 +191,7 @@ impl Name {
191191 // FIXME: Remove this in favor of `display`, see fixme on `as_str`
192192 #[ doc( hidden) ]
193193 pub fn display_no_db ( & self , edition : Edition ) -> impl fmt:: Display + ' _ {
194- Display { name : self , needs_escaping : is_raw_identifier ( self . symbol . as_str ( ) , edition) }
194+ Display { name : self , edition }
195195 }
196196
197197 pub fn symbol ( & self ) -> & Symbol {
@@ -201,15 +201,20 @@ impl Name {
201201
202202struct Display < ' a > {
203203 name : & ' a Name ,
204- needs_escaping : bool ,
204+ edition : Edition ,
205205}
206206
207207impl fmt:: Display for Display < ' _ > {
208208 fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
209- if self . needs_escaping {
210- write ! ( f, "r#" ) ?;
209+ let mut symbol = self . name . symbol . as_str ( ) ;
210+ if let Some ( s) = symbol. strip_prefix ( '\'' ) {
211+ f. write_str ( "'" ) ?;
212+ symbol = s;
211213 }
212- fmt:: Display :: fmt ( self . name . symbol . as_str ( ) , f)
214+ if is_raw_identifier ( symbol, self . edition ) {
215+ f. write_str ( "r#" ) ?;
216+ }
217+ f. write_str ( symbol)
213218 }
214219}
215220
Original file line number Diff line number Diff line change @@ -2110,3 +2110,19 @@ fn foo() {
21102110 "# ] ] ,
21112111 ) ;
21122112}
2113+
2114+ #[ test]
2115+ fn escaped_label ( ) {
2116+ check (
2117+ r#"
2118+ fn main() {
2119+ 'r#break: {
2120+ break '$0;
2121+ }
2122+ }
2123+ "# ,
2124+ expect ! [ [ r#"
2125+ lb 'r#break
2126+ "# ] ] ,
2127+ ) ;
2128+ }
You can’t perform that action at this time.
0 commit comments