diff options
Diffstat (limited to 'src/syntax')
| -rw-r--r-- | src/syntax/span.rs | 2 | ||||
| -rw-r--r-- | src/syntax/tokens.rs | 19 |
2 files changed, 6 insertions, 15 deletions
diff --git a/src/syntax/span.rs b/src/syntax/span.rs index bbb6a206..9bf7cafb 100644 --- a/src/syntax/span.rs +++ b/src/syntax/span.rs @@ -71,7 +71,7 @@ debug_display!(Span); /// A line-column position in source code. #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)] pub struct Position { - /// The 1-indexed line (inclusive). + /// The 0-indexed line (inclusive). pub line: usize, /// The 0-indexed column (inclusive). pub column: usize, diff --git a/src/syntax/tokens.rs b/src/syntax/tokens.rs index efcd1fc0..2e9dd35b 100644 --- a/src/syntax/tokens.rs +++ b/src/syntax/tokens.rs @@ -102,7 +102,7 @@ impl<'s> Iterator for Tokens<'s> { '*' if second == Some('/') => { self.eat(); StarSlash } // Whitespace. - c if c.is_whitespace() => self.parse_whitespace(c), + c if c.is_whitespace() => self.parse_whitespace(start), // Functions. '[' => { self.set_state(Header); LeftBracket } @@ -196,20 +196,11 @@ impl<'s> Tokens<'s> { }, true, 0, -2)) } - fn parse_whitespace(&mut self, c: char) -> Token<'s> { - let mut newlines = if is_newline_char(c) { 1 } else { 0 }; - let mut last = c; - - self.read_string_until(|n| { - if is_newline_char(n) && !(last == '\r' && n == '\n') { - newlines += 1; - } - - last = n; - !n.is_whitespace() - }, false, 0, 0); + fn parse_whitespace(&mut self, start: Position) -> Token<'s> { + self.read_string_until(|n| !n.is_whitespace(), false, 0, 0); + let end = self.chars.position(); - Whitespace(newlines) + Whitespace(end.line - start.line) } fn parse_string(&mut self) -> Token<'s> { |
