diff --git a/src/patterns.rs b/src/patterns.rs index 601506b4954d..c1b3de56cfbb 100644 --- a/src/patterns.rs +++ b/src/patterns.rs @@ -210,8 +210,19 @@ fn rewrite_tuple_pat(pats: &[ptr::P], 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() diff --git a/tests/source/pattern.rs b/tests/source/pattern.rs index a6c25225db2e..468ff579710b 100644 --- a/tests/source/pattern.rs +++ b/tests/source/pattern.rs @@ -38,3 +38,8 @@ impl<'a,'b> ResolveGeneratedContentFragmentMutator<'a,'b> { ) ) => {}}} } + +fn issue_1319() { + if let (Event { .. }, .. ) = ev_state {} +} + diff --git a/tests/target/pattern.rs b/tests/target/pattern.rs index b809253aa855..36d24170cee3 100644 --- a/tests/target/pattern.rs +++ b/tests/target/pattern.rs @@ -41,3 +41,7 @@ impl<'a, 'b> ResolveGeneratedContentFragmentMutator<'a, 'b> { } } } + +fn issue_1319() { + if let (Event { .. }, ..) = ev_state {} +}