diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2017-03-10 16:51:16 -0600 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2017-03-10 16:18:25 -0800 |
| commit | da994cdee52e99c4f159b673d616158f44fc723b (patch) | |
| tree | 1e9bc561832f20135c86442514dfeb60d271120f /src/test/ui/span | |
| parent | b92073dd521515a902c6354ad94f0adf4cf5c8a5 (diff) | |
| parent | 8a64cf7fb72ca93608be19e13dd83c23168b17d7 (diff) | |
| download | rust-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.rs | 16 | ||||
| -rw-r--r-- | src/test/ui/span/suggestion-non-ascii.stderr | 11 |
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 + |
