swc_ecma_lexer/parser/
typescript.rs1#[cfg(test)]
2mod tests {
3 use swc_ecma_ast::*;
4
5 use crate::{
6 common::parser::Parser as ParserTrait,
7 token::{BinOpToken, Token, TokenAndSpan},
8 Capturing, Lexer, Parser, Syntax,
9 };
10
11 #[test]
12 fn issue_726() {
13 crate::with_test_sess(
14 "type Test = (
15 string | number);",
16 |handler, input| {
17 let lexer = Lexer::new(
18 Syntax::Typescript(Default::default()),
19 EsVersion::Es2019,
20 input,
21 None,
22 );
23 let lexer = Capturing::new(lexer);
24
25 let mut parser = Parser::new_from(lexer);
26 parser
27 .parse_typescript_module()
28 .map_err(|e| e.into_diagnostic(handler).emit())?;
29 let tokens: Vec<TokenAndSpan> = parser.input_mut().iter.tokens().take();
30 let tokens = tokens.into_iter().map(|t| t.token).collect::<Vec<_>>();
31 assert_eq!(tokens.len(), 9, "Tokens: {tokens:#?}");
32 Ok(())
33 },
34 )
35 .unwrap();
36 }
37
38 #[test]
39 fn issue_751() {
40 crate::with_test_sess("t ? -(v >>> 1) : v >>> 1", |handler, input| {
41 let lexer = Lexer::new(
42 Syntax::Typescript(Default::default()),
43 EsVersion::Es2019,
44 input,
45 None,
46 );
47 let lexer = Capturing::new(lexer);
48
49 let mut parser = Parser::new_from(lexer);
50 parser
51 .parse_typescript_module()
52 .map_err(|e| e.into_diagnostic(handler).emit())?;
53 let tokens: Vec<TokenAndSpan> = parser.input_mut().iter.tokens().take();
54 let token = &tokens[10];
55 assert_eq!(
56 token.token,
57 Token::BinOp(BinOpToken::ZeroFillRShift),
58 "Token: {:#?}",
59 token.token
60 );
61 Ok(())
62 })
63 .unwrap();
64 }
65}