Skip to content

Commit 05cd26b

Browse files
author
Yuki Okushi
authored
Rollup merge of #104345 - fmease:fix-up-a-fluent-message, r=compiler-errors
Fix up a Fluent message Fix up a Fluent message which contained arrows `->` after [selectors](https://projectfluent.org/fluent/guide/selectors.html). The original author probably thought that they were required as part of the selector syntax but in reality they were interpreted as literal text and actually showed up in the emitted diagnostic. This wasn't caught during the diagnostic migration since the branch constructing the diagnostic in question (`rustc_infer::errors::LifetimeMismatchLabels::Normal`) was not exercised by the UI test suite. I've added two more test cases to do so (one testing `LifetimeMismatchLabels::Normal` where `hir_equal == true` and one where `hir_equal == false`). Diff visualizing the `->` bug (`master` vs `fix-up-a-fluent-message`): ```diff error[E0623]: lifetime mismatch --> src/test/ui/implied-bounds/hrlt-implied-trait-bounds-guard.rs:39:30 | 39 | fn badboi3<'in_, 'out, T>(a: Foo<'in_, 'out, (&'in_ T, &'out T)>, sadness: &'in_ T) { | ^^^^^^^^^^^^^^^^^-------^^-------^^ | | | | | these two types are declared with different lifetimes... - | ...but data-> from `a` flows-> into `a` here + | ...but data from `a` flows into `a` here ```
2 parents 0d2e94a + 23dadb5 commit 05cd26b

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

compiler/rustc_error_messages/locales/en-US/infer.ftl

+2-2
Original file line numberDiff line numberDiff line change
@@ -126,10 +126,10 @@ infer_data_lifetime_flow = ...but data with one lifetime flows into the other he
126126
infer_declared_multiple = this type is declared with multiple lifetimes...
127127
infer_types_declared_different = these two types are declared with different lifetimes...
128128
infer_data_flows = ...but data{$label_var1_exists ->
129-
[true] -> {" "}from `{$label_var1}`
129+
[true] {" "}from `{$label_var1}`
130130
*[false] -> {""}
131131
} flows{$label_var2_exists ->
132-
[true] -> {" "}into `{$label_var2}`
132+
[true] {" "}into `{$label_var2}`
133133
*[false] -> {""}
134134
} here
135135

src/test/ui/implied-bounds/hrlt-implied-trait-bounds-guard.rs

+10
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@ fn badboi<'in_, 'out, T>(x: Foo<'in_, 'out, T>, sadness: &'in_ T) -> &'out T {
3131
sadness.cast()
3232
}
3333

34+
fn badboi2<'in_, 'out, T>(x: Foo<'in_, 'out, T>, sadness: &'in_ T) {
35+
//~^ ERROR lifetime mismatch
36+
let _: &'out T = sadness.cast();
37+
}
38+
39+
fn badboi3<'in_, 'out, T>(a: Foo<'in_, 'out, (&'in_ T, &'out T)>, sadness: &'in_ T) {
40+
//~^ ERROR lifetime mismatch
41+
let _: &'out T = sadness.cast();
42+
}
43+
3444
fn bad<'short, T>(value: &'short T) -> &'static T {
3545
let x: for<'in_, 'out> fn(Foo<'in_, 'out, T>, &'in_ T) -> &'out T = badboi;
3646
let x: for<'out> fn(Foo<'short, 'out, T>, &'short T) -> &'out T = x;

src/test/ui/implied-bounds/hrlt-implied-trait-bounds-guard.stderr

+19-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,24 @@ LL | fn badboi<'in_, 'out, T>(x: Foo<'in_, 'out, T>, sadness: &'in_ T) -> &'out
77
| this parameter and the return type are declared with different lifetimes...
88
| ...but data from `x` is returned here
99

10-
error: aborting due to previous error
10+
error[E0623]: lifetime mismatch
11+
--> $DIR/hrlt-implied-trait-bounds-guard.rs:34:30
12+
|
13+
LL | fn badboi2<'in_, 'out, T>(x: Foo<'in_, 'out, T>, sadness: &'in_ T) {
14+
| ^^^^^^^^^^^^^^^^^^
15+
| |
16+
| this type is declared with multiple lifetimes...
17+
| ...but data with one lifetime flows into the other here
18+
19+
error[E0623]: lifetime mismatch
20+
--> $DIR/hrlt-implied-trait-bounds-guard.rs:39:30
21+
|
22+
LL | fn badboi3<'in_, 'out, T>(a: Foo<'in_, 'out, (&'in_ T, &'out T)>, sadness: &'in_ T) {
23+
| ^^^^^^^^^^^^^^^^^-------^^-------^^
24+
| | |
25+
| | these two types are declared with different lifetimes...
26+
| ...but data from `a` flows into `a` here
27+
28+
error: aborting due to 3 previous errors
1129

1230
For more information about this error, try `rustc --explain E0623`.

0 commit comments

Comments
 (0)