Skip to content

Commit b6a86be

Browse files
Fix tools
1 parent 5054e8c commit b6a86be

File tree

6 files changed

+36
-10
lines changed

6 files changed

+36
-10
lines changed

src/librustdoc/html/highlight.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -879,7 +879,9 @@ impl<'src> Classifier<'src> {
879879
| TokenKind::UnknownPrefix
880880
| TokenKind::InvalidPrefix
881881
| TokenKind::InvalidIdent => Class::Ident(self.new_span(before, text)),
882-
TokenKind::Lifetime { .. } => Class::Lifetime,
882+
TokenKind::Lifetime { .. }
883+
| TokenKind::RawLifetime
884+
| TokenKind::UnknownPrefixLifetime => Class::Lifetime,
883885
TokenKind::Eof => panic!("Eof in advance"),
884886
};
885887
// Anything that didn't return above is the simple case where we the

src/tools/rust-analyzer/crates/parser/src/lexed_str.rs

+7
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,13 @@ impl<'a> Converter<'a> {
198198
}
199199
LIFETIME_IDENT
200200
}
201+
rustc_lexer::TokenKind::UnknownPrefixLifetime => {
202+
err = "Unknown lifetime prefix";
203+
LIFETIME_IDENT
204+
}
205+
rustc_lexer::TokenKind::RawLifetime => {
206+
LIFETIME_IDENT
207+
}
201208

202209
rustc_lexer::TokenKind::Semi => T![;],
203210
rustc_lexer::TokenKind::Comma => T![,],

src/tools/rustfmt/src/expr.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,7 @@ fn rewrite_empty_block(
462462
return None;
463463
}
464464

465-
let label_str = rewrite_label(label);
465+
let label_str = rewrite_label(context, label);
466466
if attrs.map_or(false, |a| !inner_attributes(a).is_empty()) {
467467
return None;
468468
}
@@ -527,7 +527,7 @@ fn rewrite_single_line_block(
527527
if let Some(block_expr) = stmt::Stmt::from_simple_block(context, block, attrs) {
528528
let expr_shape = shape.offset_left(last_line_width(prefix))?;
529529
let expr_str = block_expr.rewrite(context, expr_shape)?;
530-
let label_str = rewrite_label(label);
530+
let label_str = rewrite_label(context, label);
531531
let result = format!("{prefix}{label_str}{{ {expr_str} }}");
532532
if result.len() <= shape.width && !result.contains('\n') {
533533
return Some(result);
@@ -562,7 +562,7 @@ pub(crate) fn rewrite_block_with_visitor(
562562
}
563563

564564
let inner_attrs = attrs.map(inner_attributes);
565-
let label_str = rewrite_label(label);
565+
let label_str = rewrite_label(context, label);
566566
visitor.visit_block(block, inner_attrs.as_deref(), has_braces);
567567
let visitor_context = visitor.get_context();
568568
context
@@ -939,7 +939,7 @@ impl<'a> ControlFlow<'a> {
939939
fresh_shape
940940
};
941941

942-
let label_string = rewrite_label(self.label);
942+
let label_string = rewrite_label(context, self.label);
943943
// 1 = space after keyword.
944944
let offset = self.keyword.len() + label_string.len() + 1;
945945

@@ -1168,9 +1168,9 @@ impl<'a> Rewrite for ControlFlow<'a> {
11681168
}
11691169
}
11701170

1171-
fn rewrite_label(opt_label: Option<ast::Label>) -> Cow<'static, str> {
1171+
fn rewrite_label(context: &RewriteContext<'_>, opt_label: Option<ast::Label>) -> Cow<'static, str> {
11721172
match opt_label {
1173-
Some(label) => Cow::from(format!("{}: ", label.ident)),
1173+
Some(label) => Cow::from(format!("{}: ", context.snippet(label.ident.span))),
11741174
None => Cow::from(""),
11751175
}
11761176
}

src/tools/rustfmt/src/macros.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -1074,7 +1074,7 @@ fn force_space_before(tok: &TokenKind) -> bool {
10741074
fn ident_like(tok: &Token) -> bool {
10751075
matches!(
10761076
tok.kind,
1077-
TokenKind::Ident(..) | TokenKind::Literal(..) | TokenKind::Lifetime(_)
1077+
TokenKind::Ident(..) | TokenKind::Literal(..) | TokenKind::Lifetime(..)
10781078
)
10791079
}
10801080

@@ -1099,7 +1099,9 @@ fn next_space(tok: &TokenKind) -> SpaceState {
10991099
| TokenKind::OpenDelim(_)
11001100
| TokenKind::CloseDelim(_) => SpaceState::Never,
11011101

1102-
TokenKind::Literal(..) | TokenKind::Ident(..) | TokenKind::Lifetime(_) => SpaceState::Ident,
1102+
TokenKind::Literal(..) | TokenKind::Ident(..) | TokenKind::Lifetime(..) => {
1103+
SpaceState::Ident
1104+
}
11031105

11041106
_ => SpaceState::Always,
11051107
}

src/tools/rustfmt/src/types.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,7 @@ impl Rewrite for ast::AnonConst {
548548

549549
impl Rewrite for ast::Lifetime {
550550
fn rewrite(&self, context: &RewriteContext<'_>, _: Shape) -> Option<String> {
551-
Some(rewrite_ident(context, self.ident).to_owned())
551+
Some(context.snippet(self.ident.span).to_owned())
552552
}
553553
}
554554

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// rustfmt-edition: 2021
2+
3+
// Simple idempotence test for raw lifetimes.
4+
5+
fn test<'r#gen>() -> &'r#gen () {
6+
// Test raw lifetimes...
7+
}
8+
9+
fn label() {
10+
'r#label: {
11+
// Test raw labels.
12+
}
13+
}
14+
15+
fn main() {}

0 commit comments

Comments
 (0)