49 lines
1.4 KiB
Rust
49 lines
1.4 KiB
Rust
use std::env;
|
|
use std::fs;
|
|
use std::io::Read;
|
|
use std::path::Path;
|
|
|
|
use sourcemap::{decode, DecodedMap, RewriteOptions, SourceMap};
|
|
|
|
fn test(sm: &SourceMap) {
|
|
for (src_id, source) in sm.sources().enumerate() {
|
|
let path = Path::new(source);
|
|
if path.is_file() {
|
|
let mut f = fs::File::open(path).unwrap();
|
|
let mut contents = String::new();
|
|
if f.read_to_string(&mut contents).ok().is_none() {
|
|
continue;
|
|
}
|
|
if Some(contents.as_str()) != sm.get_source_contents(src_id as u32) {
|
|
println!(" !!! {source}");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
fn load_from_reader<R: Read>(mut rdr: R) -> SourceMap {
|
|
match decode(&mut rdr).unwrap() {
|
|
DecodedMap::Regular(sm) => sm,
|
|
DecodedMap::Index(idx) => idx
|
|
.flatten_and_rewrite(&RewriteOptions {
|
|
load_local_source_contents: true,
|
|
..Default::default()
|
|
})
|
|
.unwrap(),
|
|
_ => panic!("unexpected sourcemap format"),
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let args: Vec<_> = env::args().collect();
|
|
let mut f = fs::File::open(&args[1]).unwrap();
|
|
let sm = load_from_reader(&mut f);
|
|
println!("before dump");
|
|
test(&sm);
|
|
|
|
println!("after dump");
|
|
let mut json: Vec<u8> = vec![];
|
|
sm.to_writer(&mut json).unwrap();
|
|
let sm = load_from_reader(json.as_slice());
|
|
test(&sm);
|
|
}
|