Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/hir-expand/src/name.rs8
-rw-r--r--crates/ide-completion/src/completions/lifetime.rs4
2 files changed, 10 insertions, 2 deletions
diff --git a/crates/hir-expand/src/name.rs b/crates/hir-expand/src/name.rs
index 37290edae4..217d991d11 100644
--- a/crates/hir-expand/src/name.rs
+++ b/crates/hir-expand/src/name.rs
@@ -207,6 +207,14 @@ struct Display<'a> {
impl fmt::Display for Display<'_> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let mut symbol = self.name.symbol.as_str();
+
+ if symbol == "'static" {
+ // FIXME: '`static` can also be a label, and there it does need escaping.
+ // But knowing where it is will require adding a parameter to `display()`,
+ // and that is an infectious change.
+ return f.write_str(symbol);
+ }
+
if let Some(s) = symbol.strip_prefix('\'') {
f.write_str("'")?;
symbol = s;
diff --git a/crates/ide-completion/src/completions/lifetime.rs b/crates/ide-completion/src/completions/lifetime.rs
index b02f079b72..8902cd09ce 100644
--- a/crates/ide-completion/src/completions/lifetime.rs
+++ b/crates/ide-completion/src/completions/lifetime.rs
@@ -116,13 +116,13 @@ fn foo<'lifetime>(foo: &'a$0) {}
check(
r#"
struct Foo;
-impl<'impl> Foo {
+impl<'r#impl> Foo {
fn foo<'func>(&'a$0 self) {}
}
"#,
expect![[r#"
lt 'func
- lt 'impl
+ lt 'r#impl
lt 'static
"#]],
);