From 2d0a9abb1306e958524f0c1e01670c3e2cbbae85 Mon Sep 17 00:00:00 2001 From: ConnorSkees <39542938+ConnorSkees@users.noreply.github.com> Date: Sat, 16 May 2020 17:28:30 -0400 Subject: [PATCH] parse selectors that grow larger from interpolation --- src/selector/mod.rs | 8 +------- tests/selectors.rs | 8 ++++++++ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/selector/mod.rs b/src/selector/mod.rs index 0b0d2e7..013fd87 100644 --- a/src/selector/mod.rs +++ b/src/selector/mod.rs @@ -285,13 +285,7 @@ impl Selector { let mut sel_toks = Vec::new(); - let mut current_pos = 0; - sel_toks.extend(string.chars().map(|x| { - let len = x.len_utf8() as u64; - let tok = Token::new(span.subspan(current_pos, current_pos + len), x); - current_pos += len; - tok - })); + sel_toks.extend(string.chars().map(|x| Token::new(span, x))); let mut iter = sel_toks.into_iter().peekmore(); diff --git a/tests/selectors.rs b/tests/selectors.rs index 8eacf9f..6ee8354 100644 --- a/tests/selectors.rs +++ b/tests/selectors.rs @@ -512,3 +512,11 @@ test!( "\\61 {\n color: red;\n}\n", "a {\n color: red;\n}\n" ); +/// this checks for a bug in which the selector +/// contents get longer as a result of interpolation, +/// which interferes with span information. +test!( + selector_span_gets_larger, + "$a: aaaaaaaaaaa;\n\n#{$a} {\n color: foo;\n}\n", + "aaaaaaaaaaa {\n color: foo;\n}\n" +);