emitter: current substitution can be multi-line
In `splice_lines`, there is some arithmetic to compute the required alignment such that future substitutions in a suggestion are aligned correctly. However, this assumed that the current substitution's span was only on a single line. In circumstances where this was not true, it could result in a arithmetic overflow when the substitution's end column was less than the substitution's start column. Signed-off-by: David Wood <david.wood@huawei.com>
This commit is contained in:
parent
72d66064e7
commit
d2dc0f3b0f
3 changed files with 34 additions and 1 deletions
|
@ -341,7 +341,7 @@ impl CodeSuggestion {
|
|||
});
|
||||
buf.push_str(&part.snippet);
|
||||
let cur_hi = sm.lookup_char_pos(part.span.hi());
|
||||
if prev_hi.line == cur_lo.line {
|
||||
if prev_hi.line == cur_lo.line && cur_hi.line == cur_lo.line {
|
||||
// Account for the difference between the width of the current code and the
|
||||
// snippet being suggested, so that the *later* suggestions are correctly
|
||||
// aligned on the screen.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue