Skip to content

Commit ebb1a8b

Browse files
authored
Rollup merge of #71064 - dwrensha:issue-69130, r=eddyb
fix issue 69130 Closes #69130.
2 parents c076da0 + 57ed3d3 commit ebb1a8b

File tree

4 files changed

+33
-2
lines changed

4 files changed

+33
-2
lines changed

src/librustc_errors/lib.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,10 @@ impl CodeSuggestion {
231231
}
232232
}
233233
if let Some(cur_line) = sf.get_line(cur_lo.line - 1) {
234-
let end = std::cmp::min(cur_line.len(), cur_lo.col.to_usize());
234+
let end = match cur_line.char_indices().nth(cur_lo.col.to_usize()) {
235+
Some((i, _)) => i,
236+
None => cur_line.len(),
237+
};
235238
buf.push_str(&cur_line[..end]);
236239
}
237240
}

src/test/ui/consts/miri_unleashed/mutable_const2.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ error: internal compiler error: mutable allocation in constant
1212
LL | const MUTABLE_BEHIND_RAW: *mut i32 = &UnsafeCell::new(42) as *const _ as *mut _;
1313
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1414

15-
thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', src/librustc_errors/lib.rs:363:17
15+
thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', src/librustc_errors/lib.rs:366:17
1616
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
1717

1818
error: internal compiler error: unexpected panic

src/test/ui/issues/issue-69130.rs

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Issue 69130: character indexing bug in rustc_errors::CodeSuggestion::splice_lines().
2+
3+
enum F {
4+
M (§& u8)}
5+
//~^ ERROR unknown start of token
6+
//~| missing lifetime specifier
7+
fn main() {}

src/test/ui/issues/issue-69130.stderr

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
error: unknown start of token: \u{a7}
2+
--> $DIR/issue-69130.rs:4:4
3+
|
4+
LL | M (§& u8)}
5+
| ^
6+
7+
error[E0106]: missing lifetime specifier
8+
--> $DIR/issue-69130.rs:4:5
9+
|
10+
LL | M (§& u8)}
11+
| ^ expected named lifetime parameter
12+
|
13+
help: consider introducing a named lifetime parameter
14+
|
15+
LL | enum F<'a> {
16+
LL | M (§&'a u8)}
17+
|
18+
19+
error: aborting due to 2 previous errors
20+
21+
For more information about this error, try `rustc --explain E0106`.

0 commit comments

Comments
 (0)