summary refs log tree commit diff
path: root/src/test/ui/span
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2017-03-10 16:51:16 -0600
committerAlex Crichton <alex@alexcrichton.com>2017-03-10 16:18:25 -0800
commitda994cdee52e99c4f159b673d616158f44fc723b (patch)
tree1e9bc561832f20135c86442514dfeb60d271120f /src/test/ui/span
parentb92073dd521515a902c6354ad94f0adf4cf5c8a5 (diff)
parent8a64cf7fb72ca93608be19e13dd83c23168b17d7 (diff)
downloadrust-da994cdee52e99c4f159b673d616158f44fc723b.tar.gz
rust-da994cdee52e99c4f159b673d616158f44fc723b.zip
Rollup merge of #40092 - sinkuu:fix_suggestion_index, r=pnkfelix
Fix suggestion span error with a line containing multibyte characters

This PR fixes broken suggestions caused by multibyte characters.

e.g. for this code, rustc provides a broken suggestion ([playground](https://is.gd/DWGLu7)):

```rust
fn main() {
    let tup = (1,);
    println!("☃{}", tup[0]);
}
```

```
error: cannot index a value of type `({integer},)`
 --> <anon>:3:21
  |
3 |     println!("☃{}", tup[0]);
  |                     ^^^^^^
  |
help: to access tuple elements, use tuple indexing syntax as shown
  |     println!("☃{}"tup.00]);

error: aborting due to previous error
```

`CodeSuggestion::splice_lines` is misusing `Loc.col` (`CharPos`) as a byte offset when slicing source.
Diffstat (limited to 'src/test/ui/span')
-rw-r--r--src/test/ui/span/suggestion-non-ascii.rs16
-rw-r--r--src/test/ui/span/suggestion-non-ascii.stderr11
2 files changed, 27 insertions, 0 deletions
diff --git a/src/test/ui/span/suggestion-non-ascii.rs b/src/test/ui/span/suggestion-non-ascii.rs
new file mode 100644
index 00000000000..67dbe1dc7b5
--- /dev/null
+++ b/src/test/ui/span/suggestion-non-ascii.rs
@@ -0,0 +1,16 @@
+// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+
+fn main() {
+    let tup = (1,);
+    println!("☃{}", tup[0]);
+}
+
diff --git a/src/test/ui/span/suggestion-non-ascii.stderr b/src/test/ui/span/suggestion-non-ascii.stderr
new file mode 100644
index 00000000000..385c211f393
--- /dev/null
+++ b/src/test/ui/span/suggestion-non-ascii.stderr
@@ -0,0 +1,11 @@
+error: cannot index a value of type `({integer},)`
+  --> $DIR/suggestion-non-ascii.rs:14:21
+   |
+14 |     println!("☃{}", tup[0]);
+   |                     ^^^^^^
+   |
+help: to access tuple elements, use tuple indexing syntax as shown
+   |     println!("☃{}", tup.0);
+
+error: aborting due to previous error
+