summaryrefslogtreecommitdiff
path: root/src/syntax
diff options
context:
space:
mode:
Diffstat (limited to 'src/syntax')
-rw-r--r--src/syntax/span.rs2
-rw-r--r--src/syntax/tokens.rs19
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> {