Unnamed repository; edit this file 'description' to name the repository.
fix HirDisplay inserting anonymous lifetimes and update tests
dfireBird 2024-03-18
parent 0669ae7 · commit 490391f
-rw-r--r--crates/hir-ty/src/display.rs17
-rw-r--r--crates/hir-ty/src/lower.rs6
-rw-r--r--crates/hir-ty/src/tests/display_source_code.rs2
-rw-r--r--crates/hir-ty/src/tests/patterns.rs2
-rw-r--r--crates/hir-ty/src/tests/regression.rs4
-rw-r--r--crates/hir-ty/src/tests/simple.rs6
-rw-r--r--crates/ide-assists/src/handlers/extract_function.rs2
-rw-r--r--crates/ide-assists/src/handlers/generate_delegate_methods.rs2
-rw-r--r--crates/ide-completion/src/tests/predicate.rs4
-rw-r--r--crates/ide-completion/src/tests/type_pos.rs8
10 files changed, 25 insertions, 28 deletions
diff --git a/crates/hir-ty/src/display.rs b/crates/hir-ty/src/display.rs
index 32be0f248b..bc5bd79169 100644
--- a/crates/hir-ty/src/display.rs
+++ b/crates/hir-ty/src/display.rs
@@ -1316,8 +1316,7 @@ fn hir_fmt_generics(
generic_def: Option<hir_def::GenericDefId>,
) -> Result<(), HirDisplayError> {
let db = f.db;
- let lifetime_args_count = generic_def.map_or(0, |g| db.generic_params(g).lifetimes.len());
- if parameters.len(Interner) + lifetime_args_count > 0 {
+ if parameters.len(Interner) > 0 {
let parameters_to_write = if f.display_target.is_source_code() || f.omit_verbose_types() {
match generic_def
.map(|generic_def_id| db.generic_defaults(generic_def_id))
@@ -1343,6 +1342,11 @@ fn hir_fmt_generics(
return true;
}
}
+ if parameter.lifetime(Interner).map(|it| it.data(Interner))
+ == Some(&crate::LifetimeData::Static)
+ {
+ return true;
+ }
let default_parameter = match default_parameters.get(i) {
Some(it) => it,
None => return true,
@@ -1363,16 +1367,9 @@ fn hir_fmt_generics(
} else {
parameters.as_slice(Interner)
};
- if !parameters_to_write.is_empty() || lifetime_args_count != 0 {
+ if !parameters_to_write.is_empty() {
write!(f, "<")?;
let mut first = true;
- for _ in 0..lifetime_args_count {
- if !first {
- write!(f, ", ")?;
- }
- first = false;
- write!(f, "'_")?;
- }
for generic_arg in parameters_to_write {
if !first {
write!(f, ", ")?;
diff --git a/crates/hir-ty/src/lower.rs b/crates/hir-ty/src/lower.rs
index a930708b25..9370a2cee0 100644
--- a/crates/hir-ty/src/lower.rs
+++ b/crates/hir-ty/src/lower.rs
@@ -915,10 +915,10 @@ impl<'a> TyLoweringContext<'a> {
|_, lifetime_ref| self.lower_lifetime(lifetime_ref),
) {
had_explicit_args = true;
- substs.push(dbg!(x));
+ substs.push(x);
} else {
- // Never return a None explictly
- never!("Unexpectd None by generic_arg_to_chalk");
+ // Never return a None explicitly
+ never!("Unexpected None by generic_arg_to_chalk");
}
}
}
diff --git a/crates/hir-ty/src/tests/display_source_code.rs b/crates/hir-ty/src/tests/display_source_code.rs
index e75b037e38..5069267499 100644
--- a/crates/hir-ty/src/tests/display_source_code.rs
+++ b/crates/hir-ty/src/tests/display_source_code.rs
@@ -85,7 +85,7 @@ fn render_dyn_for_ty() {
trait Foo<'a> {}
fn foo(foo: &dyn for<'a> Foo<'a>) {}
- // ^^^ &dyn Foo
+ // ^^^ &dyn Foo<'static>
"#,
);
}
diff --git a/crates/hir-ty/src/tests/patterns.rs b/crates/hir-ty/src/tests/patterns.rs
index 963b4a2aba..80d5a0ae00 100644
--- a/crates/hir-ty/src/tests/patterns.rs
+++ b/crates/hir-ty/src/tests/patterns.rs
@@ -1109,7 +1109,7 @@ fn var_args() {
#[lang = "va_list"]
pub struct VaListImpl<'f>;
fn my_fn(foo: ...) {}
- //^^^ VaListImpl<'_>
+ //^^^ VaListImpl<'static>
"#,
);
}
diff --git a/crates/hir-ty/src/tests/regression.rs b/crates/hir-ty/src/tests/regression.rs
index 9a8ebd07d0..af016db4dc 100644
--- a/crates/hir-ty/src/tests/regression.rs
+++ b/crates/hir-ty/src/tests/regression.rs
@@ -896,13 +896,13 @@ fn flush(&self) {
"#,
expect![[r#"
123..127 'self': &Mutex<T>
- 150..152 '{}': MutexGuard<'_, T>
+ 150..152 '{}': MutexGuard<T, 'static>
234..238 'self': &{unknown}
240..290 '{ ...()); }': ()
250..251 'w': &Mutex<BufWriter>
276..287 '*(w.lock())': BufWriter
278..279 'w': &Mutex<BufWriter>
- 278..286 'w.lock()': MutexGuard<'_, BufWriter>
+ 278..286 'w.lock()': MutexGuard<BufWriter, 'static>
"#]],
);
}
diff --git a/crates/hir-ty/src/tests/simple.rs b/crates/hir-ty/src/tests/simple.rs
index 917e9f4408..f39404593e 100644
--- a/crates/hir-ty/src/tests/simple.rs
+++ b/crates/hir-ty/src/tests/simple.rs
@@ -3092,7 +3092,7 @@ fn main() {
389..394 'boxed': Box<Foo<i32>>
389..406 'boxed....nner()': &i32
416..421 'good1': &i32
- 424..438 'Foo::get_inner': fn get_inner<i32>(&Box<Foo<i32>>) -> &i32
+ 424..438 'Foo::get_inner': fn get_inner<i32, 'static>(&Box<Foo<i32>>) -> &i32
424..446 'Foo::g...boxed)': &i32
439..445 '&boxed': &Box<Foo<i32>>
440..445 'boxed': Box<Foo<i32>>
@@ -3100,7 +3100,7 @@ fn main() {
464..469 'boxed': Box<Foo<i32>>
464..480 'boxed....self()': &Foo<i32>
490..495 'good2': &Foo<i32>
- 498..511 'Foo::get_self': fn get_self<i32>(&Box<Foo<i32>>) -> &Foo<i32>
+ 498..511 'Foo::get_self': fn get_self<i32, 'static>(&Box<Foo<i32>>) -> &Foo<i32>
498..519 'Foo::g...boxed)': &Foo<i32>
512..518 '&boxed': &Box<Foo<i32>>
513..518 'boxed': Box<Foo<i32>>
@@ -3659,7 +3659,7 @@ fn main() {
let are = "are";
let count = 10;
builtin#format_args("hello {count:02} {} friends, we {are:?} {0}{last}", "fancy", last = "!");
- // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type: Arguments<'_>
+ // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type: Arguments<'static>
}
"#,
);
diff --git a/crates/ide-assists/src/handlers/extract_function.rs b/crates/ide-assists/src/handlers/extract_function.rs
index d111005c2e..981eb18b58 100644
--- a/crates/ide-assists/src/handlers/extract_function.rs
+++ b/crates/ide-assists/src/handlers/extract_function.rs
@@ -5617,7 +5617,7 @@ fn func<T: Debug>(i: Struct<'_, T>) {
fun_name(i);
}
-fn $0fun_name(i: Struct<'_, T>) {
+fn $0fun_name(i: Struct<T, 'static>) {
foo(i);
}
"#,
diff --git a/crates/ide-assists/src/handlers/generate_delegate_methods.rs b/crates/ide-assists/src/handlers/generate_delegate_methods.rs
index 38f40b8d58..78d3fa1167 100644
--- a/crates/ide-assists/src/handlers/generate_delegate_methods.rs
+++ b/crates/ide-assists/src/handlers/generate_delegate_methods.rs
@@ -614,7 +614,7 @@ struct Foo<'a, T> {
}
impl<'a, T> Foo<'a, T> {
- $0fn bar(self, mut b: Vec<&'a Bar<'_, T>>) -> &'a Bar<'_, T> {
+ $0fn bar(self, mut b: Vec<&'a Bar<T, 'a>>) -> &'a Bar<T, 'a> {
self.field.bar(b)
}
}
diff --git a/crates/ide-completion/src/tests/predicate.rs b/crates/ide-completion/src/tests/predicate.rs
index 46a3e97d3e..e7f3eeaecb 100644
--- a/crates/ide-completion/src/tests/predicate.rs
+++ b/crates/ide-completion/src/tests/predicate.rs
@@ -19,7 +19,7 @@ struct Foo<'lt, T, const C: usize> where $0 {}
en Enum Enum
ma makro!(…) macro_rules! makro
md module
- st Foo<…> Foo<'_, {unknown}, _>
+ st Foo<…> Foo<{unknown}, _, 'static>
st Record Record
st Tuple Tuple
st Unit Unit
@@ -92,7 +92,7 @@ struct Foo<'lt, T, const C: usize> where for<'a> $0 {}
en Enum Enum
ma makro!(…) macro_rules! makro
md module
- st Foo<…> Foo<'_, {unknown}, _>
+ st Foo<…> Foo<{unknown}, _, 'static>
st Record Record
st Tuple Tuple
st Unit Unit
diff --git a/crates/ide-completion/src/tests/type_pos.rs b/crates/ide-completion/src/tests/type_pos.rs
index db4ac9381c..60ee7bf4e6 100644
--- a/crates/ide-completion/src/tests/type_pos.rs
+++ b/crates/ide-completion/src/tests/type_pos.rs
@@ -20,8 +20,8 @@ struct Foo<'lt, T, const C: usize> {
en Enum Enum
ma makro!(…) macro_rules! makro
md module
- sp Self Foo<'_, {unknown}, _>
- st Foo<…> Foo<'_, {unknown}, _>
+ sp Self Foo<{unknown}, _, 'static>
+ st Foo<…> Foo<{unknown}, _, 'static>
st Record Record
st Tuple Tuple
st Unit Unit
@@ -45,8 +45,8 @@ struct Foo<'lt, T, const C: usize>(f$0);
en Enum Enum
ma makro!(…) macro_rules! makro
md module
- sp Self Foo<'_, {unknown}, _>
- st Foo<…> Foo<'_, {unknown}, _>
+ sp Self Foo<{unknown}, _, 'static>
+ st Foo<…> Foo<{unknown}, _, 'static>
st Record Record
st Tuple Tuple
st Unit Unit