]> git.lizzy.rs Git - rust.git/commitdiff
fix issue 69130
authorDavid Renshaw <dwrenshaw@gmail.com>
Sun, 12 Apr 2020 15:36:37 +0000 (11:36 -0400)
committerDavid Renshaw <dwrenshaw@gmail.com>
Sun, 12 Apr 2020 15:36:37 +0000 (11:36 -0400)
src/librustc_errors/lib.rs
src/test/ui/consts/miri_unleashed/mutable_const2.stderr
src/test/ui/issues/issue-69130.rs [new file with mode: 0644]
src/test/ui/issues/issue-69130.stderr [new file with mode: 0644]

index 55eb9fd566d8721e7c9e164f45288f48b4e9eac4..151241fdb0b5f6cd5d85b3d44df0bcebd2e1ba8a 100644 (file)
@@ -231,7 +231,10 @@ fn push_trailing(
                             }
                         }
                         if let Some(cur_line) = sf.get_line(cur_lo.line - 1) {
-                            let end = std::cmp::min(cur_line.len(), cur_lo.col.to_usize());
+                            let end = match cur_line.char_indices().nth(cur_lo.col.to_usize()) {
+                                Some((i, _)) => i,
+                                None => cur_line.len(),
+                            };
                             buf.push_str(&cur_line[..end]);
                         }
                     }
index 1699223f74f4317bd97a46a328db3dfb77d81ec1..39027dd2b4103907f97e2cf03d3597b4f318516e 100644 (file)
@@ -12,7 +12,7 @@ error: internal compiler error: mutable allocation in constant
 LL | const MUTABLE_BEHIND_RAW: *mut i32 = &UnsafeCell::new(42) as *const _ as *mut _;
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', src/librustc_errors/lib.rs:363:17
+thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', src/librustc_errors/lib.rs:366:17
 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
 
 error: internal compiler error: unexpected panic
diff --git a/src/test/ui/issues/issue-69130.rs b/src/test/ui/issues/issue-69130.rs
new file mode 100644 (file)
index 0000000..9552e8e
--- /dev/null
@@ -0,0 +1,7 @@
+// Issue 69130: character indexing bug in rustc_errors::CodeSuggestion::splice_lines().
+
+enum F {
+M (§& u8)}
+//~^ ERROR unknown start of token
+//~| missing lifetime specifier
+fn main() {}
diff --git a/src/test/ui/issues/issue-69130.stderr b/src/test/ui/issues/issue-69130.stderr
new file mode 100644 (file)
index 0000000..a4700a5
--- /dev/null
@@ -0,0 +1,21 @@
+error: unknown start of token: \u{a7}
+  --> $DIR/issue-69130.rs:4:4
+   |
+LL | M (§& u8)}
+   |    ^
+
+error[E0106]: missing lifetime specifier
+  --> $DIR/issue-69130.rs:4:5
+   |
+LL | M (§& u8)}
+   |     ^ expected named lifetime parameter
+   |
+help: consider introducing a named lifetime parameter
+   |
+LL | enum F<'a> {
+LL | M (§&'a  u8)}
+   |
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0106`.