Skip to content

Commit

Permalink
Fix swc-project#726, really
Browse files Browse the repository at this point in the history
  • Loading branch information
kdy1 committed Mar 25, 2020
1 parent c733b17 commit b67e708
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 15 deletions.
2 changes: 1 addition & 1 deletion ecmascript/parser/src/parser/input.rs
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ impl<I: Tokens> Tokens for Capturing<I> {
fn revert(&mut self) {
self.inner.revert();
let len = self.last_clone_idx;
self.captured.borrow_mut().drain(len..);
self.captured.borrow_mut().truncate(len);
}

fn set_expr_allowed(&mut self, allow: bool) {
Expand Down
28 changes: 14 additions & 14 deletions ecmascript/parser/src/parser/typescript.rs
Original file line number Diff line number Diff line change
Expand Up @@ -473,18 +473,15 @@ impl<'a, I: Tokens> Parser<'a, I> {
match res {
Ok(Some(res)) if res => {
*self = cloned;
self.input.revert();
self.emit_err = true;
Ok(res)
}
Err(mut err) => {
self.input.revert();
err.cancel();
Ok(false)
}
_ => {
self.input.revert();
Ok(false)
}
_ => Ok(false),
}
}

Expand All @@ -502,15 +499,12 @@ impl<'a, I: Tokens> Parser<'a, I> {
match res {
Ok(Some(res)) => {
*self = cloned;
self.input.revert();
self.emit_err = true;
Some(res)
}
Ok(None) => {
self.input.revert();
None
}
Ok(None) => None,
Err(mut err) => {
self.input.revert();
err.cancel();
None
}
Expand Down Expand Up @@ -1022,7 +1016,9 @@ impl<'a, I: Tokens> Parser<'a, I> {

let mut cloned = self.clone();
cloned.emit_err = false;
op(&mut cloned)
let res = op(&mut cloned);
cloned.input.revert();
res
}

/// `tsIsUnambiguouslyStartOfFunctionType`
Expand Down Expand Up @@ -2328,7 +2324,10 @@ fn make_decl_declare(mut decl: Decl) -> Decl {

#[cfg(test)]
mod tests {
use crate::{lexer::Lexer, test_parser, Capturing, JscTarget, Parser, Syntax, TsConfig};
use crate::{
lexer::Lexer, test_parser, token::TokenAndSpan, Capturing, JscTarget, Parser, Syntax,
TsConfig,
};
use swc_common::DUMMY_SP;
use swc_ecma_ast::*;
use testing::assert_eq_ignore_span;
Expand Down Expand Up @@ -2422,8 +2421,9 @@ mod tests {
let mut parser = Parser::new_from(sess, lexer);
parser.parse_typescript_module().map_err(|mut e| {
e.emit();
});
let tokens = parser.input().take();
})?;
let tokens: Vec<TokenAndSpan> = parser.input().take();
let tokens = tokens.into_iter().map(|t| t.token).collect::<Vec<_>>();
assert_eq!(tokens.len(), 9, "Tokens: {:#?}", tokens);
Ok(())
},
Expand Down

0 comments on commit b67e708

Please sign in to comment.