Skip to content

Commit

Permalink
Merge a7e75bc into ae983e2
Browse files Browse the repository at this point in the history
  • Loading branch information
fisker committed Mar 3, 2020
2 parents ae983e2 + a7e75bc commit 315e7f8
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 5 deletions.
9 changes: 7 additions & 2 deletions rules/prefer-spread.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ const selector = [
].join('');

const create = context => {
const getSource = node => context.getSourceCode().getText(node);
const sourceCode = context.getSourceCode();
const getSource = node => sourceCode.getText(node);

return {
[selector](node) {
Expand All @@ -23,7 +24,11 @@ const create = context => {
message: 'Prefer the spread operator over `Array.from()`.',
fix: fixer => {
const [arrayLikeArgument, mapFn, thisArgument] = node.arguments.map(getSource);
let replacement = `[...${arrayLikeArgument}]`;
const tokenBefore = sourceCode.getTokenBefore(node);
const needsSemicolon = tokenBefore &&
tokenBefore.type === 'Punctuator' &&
(tokenBefore.value === ']' || tokenBefore.value === ')');
let replacement = `${needsSemicolon ? ';' : ''}[...${arrayLikeArgument}]`;

if (mapFn) {
const mapArguments = [mapFn, thisArgument].filter(Boolean);
Expand Down
4 changes: 1 addition & 3 deletions test/integration/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,7 @@ const projects = [
'https://github.com/sindresorhus/capture-website',
'https://github.com/sindresorhus/file-type',
'https://github.com/sindresorhus/slugify',
// TODO: add this project when #254 got fixed
// https://github.com/gatsbyjs/gatsby/blob/e720d8efe58eba0f6fae9f26ec8879128967d0b5/packages/gatsby/src/bootstrap/page-hot-reloader.js#L30
// 'https://github.com/gatsbyjs/gatsby',
'https://github.com/gatsbyjs/gatsby',
{
repository: 'https://github.com/puppeteer/puppeteer',
path: 'lib'
Expand Down
32 changes: 32 additions & 0 deletions test/prefer-spread.js
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,38 @@ ruleTester.run('prefer-spread', rule, {
}
],
output: '[...document.querySelectorAll("*")].map(() => {});'
},
// #254
{
code: `
const foo = []
Array.from(arrayLike).forEach(doSomething)
`,
errors: [
{
message: 'Prefer the spread operator over `Array.from()`.'
}
],
output: `
const foo = []
;[...arrayLike].forEach(doSomething)
`
},
// https://github.com/gatsbyjs/gatsby/blob/e720d8efe58eba0f6fae9f26ec8879128967d0b5/packages/gatsby/src/bootstrap/page-hot-reloader.js#L30
{
code: `
foo()
Array.from(arrayLike).forEach(doSomething)
`,
errors: [
{
message: 'Prefer the spread operator over `Array.from()`.'
}
],
output: `
foo()
;[...arrayLike].forEach(doSomething)
`
}
]
});

0 comments on commit 315e7f8

Please sign in to comment.