From d63494fc32c97b4011454e3a78d2f13331d95f69 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Mon, 26 Dec 2016 09:15:53 -0700 Subject: [PATCH] Check that forward progress is always made by lexer states --- src/lexer/mod.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lexer/mod.rs b/src/lexer/mod.rs index f82723c..56173c8 100644 --- a/src/lexer/mod.rs +++ b/src/lexer/mod.rs @@ -191,6 +191,7 @@ impl Iterator for Lexer { None => '\0', }; println!("{:?}! c='{}'", self.state, c); + let previous_forward = self.forward; match self.state { State::Initial => self.state_initial(c, &mut token), State::Identifier => self.state_identifier(c, &mut token), @@ -198,6 +199,7 @@ impl Iterator for Lexer { State::String => self.state_string(c, &mut token), State::Comment => self.state_comment(c, &mut token), } + assert!(token.is_some() || self.forward != previous_forward, "No lexing progress made!"); } self.advance_begin(); match token {