Skip to content

Commit 3af14f3

Browse files
committed
Remove similar errors about raw underscore lifetime
Signed-off-by: xizheyin <[email protected]>
1 parent ee4395b commit 3af14f3

File tree

3 files changed

+14
-10
lines changed

3 files changed

+14
-10
lines changed

compiler/rustc_resolve/src/late.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2903,9 +2903,21 @@ impl<'a, 'ast, 'ra, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
29032903
}
29042904

29052905
if param.ident.name == kw::UnderscoreLifetime {
2906+
// To avoid emitting two similar errors,
2907+
// we need to check if the span is a raw underscore lifetime, see issue #143152
2908+
let is_raw_underscore_lifetime = self
2909+
.r
2910+
.tcx
2911+
.sess
2912+
.psess
2913+
.raw_identifier_spans
2914+
.iter()
2915+
.any(|span| span == param.span());
2916+
29062917
self.r
29072918
.dcx()
2908-
.emit_err(errors::UnderscoreLifetimeIsReserved { span: param.ident.span });
2919+
.create_err(errors::UnderscoreLifetimeIsReserved { span: param.ident.span })
2920+
.emit_unless(is_raw_underscore_lifetime);
29092921
// Record lifetime res, so lowering knows there is something fishy.
29102922
self.record_lifetime_param(param.id, LifetimeRes::Error);
29112923
continue;

tests/ui/underscore-lifetime/raw-underscore-lifetime.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,5 @@
55

66
fn f<'r#_>(){}
77
//~^ ERROR `_` cannot be a raw lifetime
8-
//~| ERROR `'_` cannot be used here [E0637]
98

109
fn main() {}

tests/ui/underscore-lifetime/raw-underscore-lifetime.stderr

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,5 @@ error: `_` cannot be a raw lifetime
44
LL | fn f<'r#_>(){}
55
| ^^^^
66

7-
error[E0637]: `'_` cannot be used here
8-
--> $DIR/raw-underscore-lifetime.rs:6:6
9-
|
10-
LL | fn f<'r#_>(){}
11-
| ^^^^ `'_` is a reserved lifetime name
12-
13-
error: aborting due to 2 previous errors
7+
error: aborting due to 1 previous error
148

15-
For more information about this error, try `rustc --explain E0637`.

0 commit comments

Comments
 (0)