Correction on prev_token, the index should decremented

This commit is contained in:
Jovansonlee Cesar 2018-09-21 02:34:44 +08:00
parent 3fe6fa4041
commit 7d27abdfb4

View file

@ -266,7 +266,8 @@ impl Parser {
/// Get the previous token and decrement the token index
pub fn prev_token(&mut self) -> Option<Token> {
if self.index > 0 {
Some(self.tokens[self.index - 1].clone())
self.index = self.index - 1;
Some(self.tokens[self.index].clone())
} else {
None
}
@ -622,6 +623,19 @@ mod tests {
use super::super::dialect::GenericSqlDialect;
use super::*;
#[test]
fn test_prev_index(){
let sql: &str = "SELECT version()";
let mut tokenizer = Tokenizer::new(&GenericSqlDialect{}, &sql);
let tokens = tokenizer.tokenize().expect("error tokenizing");
let mut parser = Parser::new(tokens);
assert_eq!(parser.prev_token(), None);
assert_eq!(parser.next_token(), Some(Token::Keyword("SELECT".into())));
assert_eq!(parser.next_token(), Some(Token::Identifier("version".into())));
assert_eq!(parser.prev_token(), Some(Token::Identifier("version".into())));
assert_eq!(parser.prev_token(), Some(Token::Keyword("SELECT".into())));
}
#[test]
fn parse_delete_statement() {
let sql: &str = "DELETE FROM 'table'";