mirror of
https://github.com/danbulant/oxc
synced 2026-05-19 12:19:15 +00:00
fix(codegen): shorthand assignment target identifier consider mangled names (#8536)
This commit is contained in:
parent
946ad7690b
commit
855c8395cf
4 changed files with 13 additions and 10 deletions
|
|
@ -744,12 +744,12 @@ impl<'a> ObjectAssignmentTarget<'a> {
|
|||
|
||||
impl AssignmentTargetMaybeDefault<'_> {
|
||||
#[allow(missing_docs)]
|
||||
pub fn name(&self) -> Option<Atom> {
|
||||
pub fn identifier(&self) -> Option<&IdentifierReference<'_>> {
|
||||
match self {
|
||||
AssignmentTargetMaybeDefault::AssignmentTargetIdentifier(id) => Some(id.name.clone()),
|
||||
AssignmentTargetMaybeDefault::AssignmentTargetIdentifier(id) => Some(id),
|
||||
Self::AssignmentTargetWithDefault(target) => {
|
||||
if let AssignmentTarget::AssignmentTargetIdentifier(id) = &target.binding {
|
||||
Some(id.name.clone())
|
||||
Some(id)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2021,8 +2021,12 @@ impl Gen for AssignmentTargetPropertyProperty<'_> {
|
|||
PropertyKey::StaticIdentifier(ident) => Some(&ident.name),
|
||||
_ => None,
|
||||
};
|
||||
let value_name = self.binding.name();
|
||||
key_name.is_some() && value_name.is_some() && key_name == value_name.as_ref()
|
||||
let value_name =
|
||||
self.binding.identifier().map(|id| p.get_identifier_reference_name(id));
|
||||
match (key_name, value_name) {
|
||||
(Some(key_name), Some(value_name)) => key_name == value_name,
|
||||
_ => false,
|
||||
}
|
||||
} else {
|
||||
false
|
||||
};
|
||||
|
|
|
|||
|
|
@ -131,14 +131,13 @@ impl Rule for NoUselessRename {
|
|||
else {
|
||||
continue;
|
||||
};
|
||||
|
||||
let Some(key) = property.name.static_name() else {
|
||||
continue;
|
||||
};
|
||||
let Some(renamed_key) = property.binding.name() else {
|
||||
let Some(renamed_key) = property.binding.identifier().map(|ident| &ident.name)
|
||||
else {
|
||||
continue;
|
||||
};
|
||||
|
||||
if key == renamed_key {
|
||||
ctx.diagnostic(no_useless_rename_diagnostic(property.span));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1369,13 +1369,13 @@ test('unused_destructuring_getter_side_effect_1', () => {
|
|||
run(code, expected);
|
||||
});
|
||||
|
||||
test.skip('unused_destructuring_assign_1', () => {
|
||||
test('unused_destructuring_assign_1', () => {
|
||||
const code = 'function extract(obj){var a;let b;({a:a,b:b}=obj);console.log(b)}extract({a:1,b:2});extract({b:4});';
|
||||
const expected = ['2', '4'];
|
||||
run(code, expected);
|
||||
});
|
||||
|
||||
test.skip('unused_destructuring_assign_2', () => {
|
||||
test('unused_destructuring_assign_2', () => {
|
||||
const code =
|
||||
'function extract(obj){var a;let b;({a:a,b:b}=obj);console.log(b)}extract({a:1,b:2});extract({get a(){var s="side effect";console.log(s);return s},b:4});';
|
||||
const expected = ['2', 'side effect', '4'];
|
||||
|
|
|
|||
Loading…
Reference in a new issue