Avoid ICE when suggestion span is at Eof
This commit is contained in:
parent
03f19f7ff1
commit
eeb1bd18dc
3 changed files with 71 additions and 1 deletions
|
@ -229,7 +229,8 @@ impl CodeSuggestion {
|
|||
}
|
||||
}
|
||||
if let Some(cur_line) = fm.get_line(cur_lo.line - 1) {
|
||||
buf.push_str(&cur_line[..cur_lo.col.to_usize()]);
|
||||
let end = std::cmp::min(cur_line.len(), cur_lo.col.to_usize());
|
||||
buf.push_str(&cur_line[..end]);
|
||||
}
|
||||
}
|
||||
buf.push_str(&part.snippet);
|
||||
|
|
8
src/test/ui/parser/issue-62973.rs
Normal file
8
src/test/ui/parser/issue-62973.rs
Normal file
|
@ -0,0 +1,8 @@
|
|||
// ignore-tidy-end-whitespace
|
||||
// error-pattern: aborting due to 6 previous errors
|
||||
|
||||
fn main() {}
|
||||
|
||||
fn p() { match s { v, E { [) {) }
|
||||
|
||||
|
61
src/test/ui/parser/issue-62973.stderr
Normal file
61
src/test/ui/parser/issue-62973.stderr
Normal file
|
@ -0,0 +1,61 @@
|
|||
error: this file contains an un-closed delimiter
|
||||
--> $DIR/issue-62973.rs:8:2
|
||||
|
|
||||
LL | fn p() { match s { v, E { [) {) }
|
||||
| - - un-closed delimiter
|
||||
| |
|
||||
| un-closed delimiter
|
||||
LL |
|
||||
LL |
|
||||
| ^
|
||||
|
||||
error: expected one of `,` or `}`, found `{`
|
||||
--> $DIR/issue-62973.rs:6:25
|
||||
|
|
||||
LL | fn p() { match s { v, E { [) {) }
|
||||
| - ^ expected one of `,` or `}` here
|
||||
| |
|
||||
| while parsing this struct
|
||||
|
||||
error: struct literals are not allowed here
|
||||
--> $DIR/issue-62973.rs:6:16
|
||||
|
|
||||
LL | fn p() { match s { v, E { [) {) }
|
||||
| ________________^
|
||||
LL | |
|
||||
LL | |
|
||||
| |_^
|
||||
help: surround the struct literal with parentheses
|
||||
|
|
||||
LL | fn p() { match (s { v, E { [) {) }
|
||||
LL |
|
||||
LL | )
|
||||
|
|
||||
|
||||
error: expected one of `.`, `?`, `{`, or an operator, found `}`
|
||||
--> $DIR/issue-62973.rs:8:1
|
||||
|
|
||||
LL | fn p() { match s { v, E { [) {) }
|
||||
| ----- while parsing this match expression
|
||||
LL |
|
||||
LL |
|
||||
| ^ expected one of `.`, `?`, `{`, or an operator here
|
||||
|
||||
error: incorrect close delimiter: `)`
|
||||
--> $DIR/issue-62973.rs:6:28
|
||||
|
|
||||
LL | fn p() { match s { v, E { [) {) }
|
||||
| -^ incorrect close delimiter
|
||||
| |
|
||||
| un-closed delimiter
|
||||
|
||||
error: incorrect close delimiter: `)`
|
||||
--> $DIR/issue-62973.rs:6:31
|
||||
|
|
||||
LL | fn p() { match s { v, E { [) {) }
|
||||
| -^ incorrect close delimiter
|
||||
| |
|
||||
| un-closed delimiter
|
||||
|
||||
error: aborting due to 6 previous errors
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue