Do not ICE when synthesizing spans falling inside unicode chars
This commit is contained in:
parent
60960a260f
commit
d824edfc2c
3 changed files with 28 additions and 0 deletions
|
@ -554,8 +554,14 @@ impl SourceMap {
|
|||
}
|
||||
|
||||
if let Some(ref src) = local_begin.sf.src {
|
||||
if !src.is_char_boundary(start_index) || !src.is_char_boundary(end_index) {
|
||||
return Err(SpanSnippetError::IllFormedSpan(sp));
|
||||
}
|
||||
return Ok(extract_source(src, start_index, end_index));
|
||||
} else if let Some(src) = local_begin.sf.external_src.borrow().get_source() {
|
||||
if !src.is_char_boundary(start_index) || !src.is_char_boundary(end_index) {
|
||||
return Err(SpanSnippetError::IllFormedSpan(sp));
|
||||
}
|
||||
return Ok(extract_source(src, start_index, end_index));
|
||||
} else {
|
||||
return Err(SpanSnippetError::SourceNotAvailable {
|
||||
|
|
5
src/test/ui/suggestions/issue-61226.rs
Normal file
5
src/test/ui/suggestions/issue-61226.rs
Normal file
|
@ -0,0 +1,5 @@
|
|||
struct X {}
|
||||
fn f() {
|
||||
vec![X]; //…
|
||||
//~^ ERROR expected value, found struct `X`
|
||||
}
|
17
src/test/ui/suggestions/issue-61226.stderr
Normal file
17
src/test/ui/suggestions/issue-61226.stderr
Normal file
|
@ -0,0 +1,17 @@
|
|||
error[E0423]: expected value, found struct `X`
|
||||
--> $DIR/issue-61226.rs:3:10
|
||||
|
|
||||
LL | vec![X]; //…
|
||||
| ^
|
||||
| |
|
||||
| did you mean `X { /* fields */ }`?
|
||||
| help: a function with a similar name exists: `f`
|
||||
|
||||
error[E0601]: `main` function not found in crate `issue_61226`
|
||||
|
|
||||
= note: consider adding a `main` function to `$DIR/issue-61226.rs`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0423, E0601.
|
||||
For more information about an error, try `rustc --explain E0423`.
|
Loading…
Add table
Add a link
Reference in a new issue