Skip to content

Commit

Permalink
Rollup merge of rust-lang#58116 - topecongiro:wrong-span-assignment, …
Browse files Browse the repository at this point in the history
…r=petrochenkov

Include the span of attributes of the lhs to the span of the assignment expression

This PR adds the span of attributes of the lhs to the span of the assignment expression. Currently with the following code, `#[attr]` is not included to the span of the assignment (`foo = true`).

```rust
#[attr]
foo = true;
```
The rational behind this change is that as libsyntax user I expect the span of the parent node includes every span of child nodes.

cc rust-lang/rustfmt#3313, rust-lang#15701.
  • Loading branch information
kennytm authored Feb 5, 2019
2 parents 3f731d5 + 9851a29 commit 757c440
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/libsyntax/parse/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3455,6 +3455,14 @@ impl<'a> Parser<'a> {
}),
}?;

// Make sure that the span of the parent node is larger than the span of lhs and rhs,
// including the attributes.
let lhs_span = lhs
.attrs
.iter()
.filter(|a| a.style == AttrStyle::Outer)
.next()
.map_or(lhs_span, |a| a.span);
let span = lhs_span.to(rhs.span);
lhs = match op {
AssocOp::Add | AssocOp::Subtract | AssocOp::Multiply | AssocOp::Divide |
Expand Down

0 comments on commit 757c440

Please sign in to comment.