Be smarter about finding the span for .. in patterns

Fixes #1319
This commit is contained in:
Nick Cameron 2017-03-09 15:49:58 +13:00
parent d107ca12b8
commit e3aad6ee83
3 changed files with 22 additions and 2 deletions

View file

@ -210,8 +210,19 @@ fn rewrite_tuple_pat(pats: &[ptr::P<ast::Pat>],
let mut pat_vec: Vec<_> = pats.into_iter().map(|x| TuplePatField::Pat(x)).collect();
if let Some(pos) = dotdot_pos {
let snippet = context.snippet(span);
let lo = span.lo + BytePos(snippet.find_uncommented("..").unwrap() as u32);
let prev = if pos == 0 {
span.lo
} else {
pats[pos - 1].span().hi
};
let next = if pos + 1 >= pats.len() {
span.hi
} else {
pats[pos + 1].span().lo
};
let dot_span = codemap::mk_sp(prev, next);
let snippet = context.snippet(dot_span);
let lo = dot_span.lo + BytePos(snippet.find_uncommented("..").unwrap() as u32);
let span = Span {
lo: lo,
// 2 == "..".len()

View file

@ -38,3 +38,8 @@ impl<'a,'b> ResolveGeneratedContentFragmentMutator<'a,'b> {
)
) => {}}}
}
fn issue_1319() {
if let (Event { .. }, .. ) = ev_state {}
}

View file

@ -41,3 +41,7 @@ impl<'a, 'b> ResolveGeneratedContentFragmentMutator<'a, 'b> {
}
}
}
fn issue_1319() {
if let (Event { .. }, ..) = ev_state {}
}