diff --git a/src/utils/__tests__/__snapshots__/resolveObjectValuesToArray-test.ts.snap b/src/utils/__tests__/__snapshots__/resolveObjectValuesToArray-test.ts.snap index b0005ea6e0b..739978487a8 100644 --- a/src/utils/__tests__/__snapshots__/resolveObjectValuesToArray-test.ts.snap +++ b/src/utils/__tests__/__snapshots__/resolveObjectValuesToArray-test.ts.snap @@ -38,6 +38,13 @@ Array [ ] `; +exports[`resolveObjectValuesToArray resolves Object.values when using methods 1`] = ` +Array [ + "1", + "2", +] +`; + exports[`resolveObjectValuesToArray resolves Object.values when using resolvable spread 1`] = ` Array [ "1", diff --git a/src/utils/__tests__/resolveObjectValuesToArray-test.ts b/src/utils/__tests__/resolveObjectValuesToArray-test.ts index 55996c062b0..07f8f91f1f5 100644 --- a/src/utils/__tests__/resolveObjectValuesToArray-test.ts +++ b/src/utils/__tests__/resolveObjectValuesToArray-test.ts @@ -104,6 +104,16 @@ describe('resolveObjectValuesToArray', () => { expect(resolveObjectValuesToArray(path, noopImporter)).toMatchSnapshot(); }); + it('resolves Object.values when using methods', () => { + const path = expressionLast( + ['var foo = { boo: 1, foo: 2, bar(e) {} };', 'Object.values(foo);'].join( + '\n', + ), + ); + + expect(resolveObjectValuesToArray(path, noopImporter)).toMatchSnapshot(); + }); + it('resolves Object.values but ignores duplicates', () => { const path = expressionLast( [ diff --git a/src/utils/resolveObjectValuesToArray.ts b/src/utils/resolveObjectValuesToArray.ts index 4891228d024..40a7174e77d 100644 --- a/src/utils/resolveObjectValuesToArray.ts +++ b/src/utils/resolveObjectValuesToArray.ts @@ -61,7 +61,9 @@ export function resolveObjectToPropMap( if (error) return; const prop = propPath.value; - if (prop.kind === 'get' || prop.kind === 'set') return; + if (prop.kind === 'get' || prop.kind === 'set' || prop.method === true) { + return; + } if ( t.Property.check(prop) ||