Skip to content

Commit 05e6fb6

Browse files
committed
Auto merge of rust-lang#17963 - avrong:avrong/error-lifetimes, r=Veykril
Always show error lifetime arguments as `'_` Fixes rust-lang#17947 Changed error lifetime argument presentation in non-test environment to `'_` and now showing them even if all of args are error lifetimes. This also influenced some of the other tests like `extract_function.rs`, `predicate.rs` and `type_pos.rs`. Not sure whether I need to refrain from adding lifetimes args there. Happy to fix if needed
2 parents 239dc5d + 9d4fdc0 commit 05e6fb6

File tree

5 files changed

+17
-33
lines changed

5 files changed

+17
-33
lines changed

src/tools/rust-analyzer/crates/hir-ty/src/display.rs

+9-25
Original file line numberDiff line numberDiff line change
@@ -1438,17 +1438,7 @@ fn hir_fmt_generics(
14381438

14391439
let parameters_to_write = generic_args_sans_defaults(f, generic_def, parameters);
14401440

1441-
// FIXME: Remote this
1442-
// most of our lifetimes will be errors as we lack elision and inference
1443-
// so don't render them for now
1444-
let only_err_lifetimes = !cfg!(test)
1445-
&& parameters_to_write.iter().all(|arg| {
1446-
matches!(
1447-
arg.data(Interner),
1448-
chalk_ir::GenericArgData::Lifetime(it) if *it.data(Interner) == LifetimeData::Error
1449-
)
1450-
});
1451-
if !parameters_to_write.is_empty() && !only_err_lifetimes {
1441+
if !parameters_to_write.is_empty() {
14521442
write!(f, "<")?;
14531443
hir_fmt_generic_arguments(f, parameters_to_write, self_)?;
14541444
write!(f, ">")?;
@@ -1523,18 +1513,6 @@ fn hir_fmt_generic_arguments(
15231513
None => (parameters, &[][..]),
15241514
};
15251515
for generic_arg in lifetimes.iter().chain(ty_or_const) {
1526-
// FIXME: Remove this
1527-
// most of our lifetimes will be errors as we lack elision and inference
1528-
// so don't render them for now
1529-
if !cfg!(test)
1530-
&& matches!(
1531-
generic_arg.lifetime(Interner),
1532-
Some(l) if ***l.interned() == LifetimeData::Error
1533-
)
1534-
{
1535-
continue;
1536-
}
1537-
15381516
if !mem::take(&mut first) {
15391517
write!(f, ", ")?;
15401518
}
@@ -1872,7 +1850,13 @@ impl HirDisplay for LifetimeData {
18721850
LifetimeData::BoundVar(idx) => idx.hir_fmt(f),
18731851
LifetimeData::InferenceVar(_) => write!(f, "_"),
18741852
LifetimeData::Static => write!(f, "'static"),
1875-
LifetimeData::Error => write!(f, "'?"),
1853+
LifetimeData::Error => {
1854+
if cfg!(test) {
1855+
write!(f, "'?")
1856+
} else {
1857+
write!(f, "'_")
1858+
}
1859+
}
18761860
LifetimeData::Erased => write!(f, "'<erased>"),
18771861
LifetimeData::Phantom(void, _) => match *void {},
18781862
}
@@ -1887,7 +1871,7 @@ impl HirDisplay for DomainGoal {
18871871
wc.hir_fmt(f)?;
18881872
write!(f, ")")?;
18891873
}
1890-
_ => write!(f, "?")?,
1874+
_ => write!(f, "_")?,
18911875
}
18921876
Ok(())
18931877
}

src/tools/rust-analyzer/crates/ide-assists/src/handlers/extract_function.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5650,7 +5650,7 @@ fn func<T: Debug>(i: Struct<'_, T>) {
56505650
fun_name(i);
56515651
}
56525652
5653-
fn $0fun_name(i: Struct<T>) {
5653+
fn $0fun_name(i: Struct<'_, T>) {
56545654
foo(i);
56555655
}
56565656
"#,

src/tools/rust-analyzer/crates/ide-completion/src/tests/predicate.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ struct Foo<'lt, T, const C: usize> where $0 {}
1919
en Enum Enum
2020
ma makro!(…) macro_rules! makro
2121
md module
22-
st Foo<…> Foo<{unknown}, _>
22+
st Foo<…> Foo<'_, {unknown}, _>
2323
st Record Record
2424
st Tuple Tuple
2525
st Unit Unit
@@ -92,7 +92,7 @@ struct Foo<'lt, T, const C: usize> where for<'a> $0 {}
9292
en Enum Enum
9393
ma makro!(…) macro_rules! makro
9494
md module
95-
st Foo<…> Foo<{unknown}, _>
95+
st Foo<…> Foo<'_, {unknown}, _>
9696
st Record Record
9797
st Tuple Tuple
9898
st Unit Unit

src/tools/rust-analyzer/crates/ide-completion/src/tests/type_pos.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ struct Foo<'lt, T, const C: usize> {
2020
en Enum Enum
2121
ma makro!(…) macro_rules! makro
2222
md module
23-
sp Self Foo<{unknown}, _>
24-
st Foo<…> Foo<{unknown}, _>
23+
sp Self Foo<'_, {unknown}, _>
24+
st Foo<…> Foo<'_, {unknown}, _>
2525
st Record Record
2626
st Tuple Tuple
2727
st Unit Unit
@@ -45,8 +45,8 @@ struct Foo<'lt, T, const C: usize>(f$0);
4545
en Enum Enum
4646
ma makro!(…) macro_rules! makro
4747
md module
48-
sp Self Foo<{unknown}, _>
49-
st Foo<…> Foo<{unknown}, _>
48+
sp Self Foo<'_, {unknown}, _>
49+
st Foo<…> Foo<'_, {unknown}, _>
5050
st Record Record
5151
st Tuple Tuple
5252
st Unit Unit

src/tools/rust-analyzer/crates/ide/src/inlay_hints/bind_pat.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ fn f<'a>() {
342342
let x = S::<'static>;
343343
//^ S<'static>
344344
let y = S::<'_>;
345-
//^ S
345+
//^ S<'_>
346346
let z = S::<'a>;
347347
//^ S<'a>
348348

0 commit comments

Comments
 (0)