mirror of
https://github.com/swc-project/swc.git
synced 2024-12-24 22:22:34 +03:00
9a0572b968
**Description:** This is quite convinient.
52 lines
1.3 KiB
Rust
52 lines
1.3 KiB
Rust
extern crate swc_malloc;
|
|
|
|
use std::{collections::hash_map::DefaultHasher, hash::Hash};
|
|
|
|
use criterion::black_box;
|
|
use swc_common::{self, sync::Lrc, SourceMap};
|
|
use swc_ecma_parser::{lexer::Lexer, Parser, StringInput, Syntax, TsConfig};
|
|
|
|
fn main() {
|
|
let mut cnt = 0;
|
|
let mut hasher = DefaultHasher::new();
|
|
|
|
for entry in walkdir::WalkDir::new("tests/typescript") {
|
|
let entry = entry.unwrap();
|
|
if !entry.path().to_string_lossy().ends_with(".ts")
|
|
&& !entry.path().to_string_lossy().ends_with(".tsx")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
let cm: Lrc<SourceMap> = Default::default();
|
|
|
|
let fm = cm.load_file(entry.path()).unwrap();
|
|
|
|
let lexer = Lexer::new(
|
|
Syntax::Typescript(TsConfig {
|
|
no_early_errors: true,
|
|
tsx: entry.path().to_string_lossy().ends_with(".tsx"),
|
|
..Default::default()
|
|
}),
|
|
Default::default(),
|
|
StringInput::from(&*fm),
|
|
None,
|
|
);
|
|
|
|
let mut parser = Parser::new_from(lexer);
|
|
|
|
let module = parser.parse_typescript_module();
|
|
|
|
if let Ok(module) = &module {
|
|
module.hash(&mut hasher);
|
|
}
|
|
|
|
let _ = black_box(module);
|
|
|
|
cnt += 1;
|
|
}
|
|
|
|
eprintln!("Parsed {} files", cnt);
|
|
eprintln!("Hash: {:?}", hasher);
|
|
}
|