Skip to content

Commit a0af5a7

Browse files
authored
fix: fix detection of object destructuring dependencies
1 parent 38a3a23 commit a0af5a7

File tree

2 files changed

+91
-0
lines changed

2 files changed

+91
-0
lines changed

rules/sort-objects.ts

+6
Original file line numberDiff line numberDiff line change
@@ -367,13 +367,19 @@ export default createEslintRule<Options, MESSAGE_ID>({
367367
})
368368
}
369369

370+
let dependencyName: string = name
371+
if (isDestructuredObject && property.value.type === 'Identifier') {
372+
dependencyName = property.value.name
373+
}
374+
370375
let sortingNode: SortingNodeWithDependencies = {
371376
isEslintDisabled: isNodeEslintDisabled(
372377
property,
373378
eslintDisabledLines,
374379
),
375380
size: rangeToDiff(property, sourceCode),
376381
group: getGroup(),
382+
dependencyName,
377383
node: property,
378384
dependencies,
379385
name,

test/rules/sort-objects.test.ts

+85
Original file line numberDiff line numberDiff line change
@@ -1165,6 +1165,91 @@ describe(ruleName, () => {
11651165
},
11661166
)
11671167

1168+
ruleTester.run(
1169+
`${ruleName}(${type}): detects dependencies in object destructuring`,
1170+
rule,
1171+
{
1172+
invalid: [
1173+
{
1174+
errors: [
1175+
{
1176+
data: {
1177+
nodeDependentOnRight: 'a',
1178+
right: 'b',
1179+
left: 'a',
1180+
},
1181+
messageId: 'unexpectedObjectsDependencyOrder',
1182+
},
1183+
],
1184+
output: dedent`
1185+
let {
1186+
b: bRenamed,
1187+
a = bRenamed,
1188+
} = obj;
1189+
`,
1190+
code: dedent`
1191+
let {
1192+
a = bRenamed,
1193+
b: bRenamed,
1194+
} = obj;
1195+
`,
1196+
options: [options],
1197+
},
1198+
{
1199+
errors: [
1200+
{
1201+
data: {
1202+
nodeDependentOnRight: 'a',
1203+
right: 'b',
1204+
left: 'a',
1205+
},
1206+
messageId: 'unexpectedObjectsDependencyOrder',
1207+
},
1208+
],
1209+
output: dedent`
1210+
let [{
1211+
b: bRenamed,
1212+
a = bRenamed,
1213+
}] = [obj];
1214+
`,
1215+
code: dedent`
1216+
let [{
1217+
a = bRenamed,
1218+
b: bRenamed,
1219+
}] = [obj];
1220+
`,
1221+
options: [options],
1222+
},
1223+
{
1224+
errors: [
1225+
{
1226+
data: {
1227+
nodeDependentOnRight: 'a',
1228+
right: 'b',
1229+
left: 'a',
1230+
},
1231+
messageId: 'unexpectedObjectsDependencyOrder',
1232+
},
1233+
],
1234+
output: dedent`
1235+
let {
1236+
[b]: bRenamed,
1237+
a = bRenamed,
1238+
} = obj;
1239+
`,
1240+
code: dedent`
1241+
let {
1242+
a = bRenamed,
1243+
[b]: bRenamed,
1244+
} = obj;
1245+
`,
1246+
options: [options],
1247+
},
1248+
],
1249+
valid: [],
1250+
},
1251+
)
1252+
11681253
ruleTester.run(
11691254
`${ruleName}(${type}): detects circular dependencies`,
11701255
rule,

0 commit comments

Comments
 (0)