swc/ecmascript/transforms/tests/es2015_duplicated_keys.rs
2019-12-24 22:53:48 +09:00

317 lines
3.6 KiB
Rust

#![feature(box_syntax)]
#![feature(test)]
#![feature(box_patterns)]
#![feature(specialization)]
use swc_ecma_parser::Syntax;
use swc_ecma_transforms::compat::es2015::duplicate_keys;
#[macro_use]
mod common;
fn syntax() -> Syntax {
Default::default()
}
test!(
syntax(),
|_| duplicate_keys(),
issue_203,
r#"
const obj = {};
obj.prop = {
alpha: {
charlie: true
},
beta: {
charlie: true,
delta: true
}
};
"#,
r#"
const obj = {};
obj.prop = {
alpha: {
charlie: true
},
beta: {
charlie: true,
delta: true
}
};
"#
);
test!(
ignore,
syntax(),
|_| duplicate_keys(),
combination_dupes,
r#"var x = { a: 5, a: 6 };"#,
r#"var x = _defineProperty({
a: 5
}, "a", 6);"#
);
test!(
syntax(),
|_| duplicate_keys(),
combination_no_dupes,
r#"var x = { a: 5, b: 6 };"#,
r#"var x = { a: 5, b: 6 };"#
);
test!(
syntax(),
|_| duplicate_keys(),
dup_keys_both_quoted,
r#"var x = { "a\n b": 5, "a\n b": 6 };"#,
r#"var x = {
"a\n b": 5,
["a\n b"]: 6
};"#
);
test!(
syntax(),
|_| duplicate_keys(),
dup_keys_dupes,
r#"var x = { a: 5, a: 6 };"#,
r#"var x = {
a: 5,
["a"]: 6
};"#
);
test!(
syntax(),
|_| duplicate_keys(),
dup_keys_getter,
r#"var x = { a: 5, get a() {return 6;} };"#,
r#"var x = {
a: 5,
get ["a"]() {
return 6;
}
};"#
);
test!(
syntax(),
|_| duplicate_keys(),
dup_keys_getter_and_setter,
r#"var x = {
get a() {},
set a(x) {},
get a() {},
set a(x) {},
a: 3,
b: 4,
get b() {},
set b(x) {},
get c() {},
c: 5,
set c(x) {},
set d(x) {},
d: 6,
get d() {}
};"#,
r#"var x = {
get a() {},
set a(x) {},
get ["a"]() {},
set ["a"](x) {},
["a"]: 3,
b: 4,
get ["b"]() {},
set ["b"](x) {},
get c() {},
["c"]: 5,
set ["c"](x) {},
set d(x) {},
["d"]: 6,
get ["d"]() {}
};"#
);
test!(
syntax(),
|_| duplicate_keys(),
dup_keys_one_quoted,
r#"var x = { a: 5, "a": 6 };"#,
r#"var x = {
a: 5,
["a"]: 6
};"#
);
// duplicate_keys_getter
test!(
syntax(),
|_| duplicate_keys(),
duplicate_keys_getter,
r#"
var x = { a: 5, get a() {return 6;} };
"#,
r#"
var x = {
a: 5,
get ["a"]() {
return 6;
}
};
"#
);
// duplicate_keys_dupes
test!(
syntax(),
|_| duplicate_keys(),
duplicate_keys_dupes,
r#"
var x = { a: 5, a: 6 };
"#,
r#"
var x = {
a: 5,
["a"]: 6
};
"#
);
// duplicate_keys_both_quoted
test!(
syntax(),
|_| duplicate_keys(),
duplicate_keys_both_quoted,
r#"
var x = { "a\n b": 5, "a\n b": 6 };
"#,
r#"
var x = {
"a\n b": 5,
["a\n b"]: 6
};
"#
);
// duplicate_keys_no_dupes
test!(
syntax(),
|_| duplicate_keys(),
duplicate_keys_no_dupes,
r#"
var x = { a: 5, b: 6 };
"#,
r#"
var x = {
a: 5,
b: 6
};
"#
);
// duplicate_keys_getters_and_setters
test!(
syntax(),
|_| duplicate_keys(),
duplicate_keys_getters_and_setters,
r#"
var x = {
get a() {},
set a(x) {},
get a() {},
set a(x) {},
a: 3,
b: 4,
get b() {},
set b(x) {},
get c() {},
c: 5,
set c(x) {},
set d(x) {},
d: 6,
get d() {}
};
"#,
r#"
var x = {
get a() {},
set a(x) {},
get ["a"]() {},
set ["a"](x) {},
["a"]: 3,
b: 4,
get ["b"]() {},
set ["b"](x) {},
get c() {},
["c"]: 5,
set ["c"](x) {},
set d(x) {},
["d"]: 6,
get ["d"]() {}
};
"#
);
// duplicate_keys_one_quoted
test!(
syntax(),
|_| duplicate_keys(),
duplicate_keys_one_quoted,
r#"
var x = { a: 5, "a": 6 };
"#,
r#"
var x = {
a: 5,
["a"]: 6
};
"#
);