swc/crates/swc_ecma_transforms_compat/tests/es2015_arrow.rs

73 lines
1.6 KiB
Rust

use std::path::PathBuf;
use swc_common::{chain, Mark};
use swc_ecma_transforms_base::resolver;
use swc_ecma_transforms_compat::es2015::arrow;
use swc_ecma_transforms_testing::{compare_stdout, test_fixture};
use swc_ecma_visit::Fold;
fn tr() -> impl Fold {
let unresolved = Mark::new();
let global = Mark::new();
chain!(resolver(unresolved, global, false), arrow(unresolved))
}
compare_stdout!(
::swc_ecma_parser::Syntax::default(),
|_| tr(),
arguments_nested_arrow,
"
function test() {
console.log(arguments[0]);
return () => {
console.log(arguments[0]);
return () => {
console.log(arguments[0])
};
}
}
test()(1)(2);
"
);
compare_stdout!(
::swc_ecma_parser::Syntax::default(),
|_| tr(),
arguments_nested_fn,
"
function test() {
console.log(arguments[0]);
return () => {
console.log(arguments[0]);
return function() {
console.log(arguments[0]);
return () => {
console.log(arguments[0])
};
};
}
}
test()(1)(2)(3);
"
);
#[testing::fixture("tests/arrow/**/input.js")]
fn fixture(input: PathBuf) {
let output = input.with_file_name("output.js");
test_fixture(
Default::default(),
&|_| {
let unresolved_mark = Mark::new();
chain!(
resolver(unresolved_mark, Mark::new(), false),
arrow(unresolved_mark)
)
},
&input,
&output,
Default::default(),
);
}