From a389548f5081c7632387de84b39e9952780ab585 Mon Sep 17 00:00:00 2001 From: Shobhit Chittora Date: Sun, 17 Dec 2017 16:11:34 +0530 Subject: [PATCH 1/5] tools: auto fix custom eslint rule for lowercase-name-for-primitive.js 1. Fixer for lowercase-name-for-primitive.js 2. Modified the node passed to fix it. Refs : #16636 --- .../lowercase-name-for-primitive.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/tools/eslint-rules/lowercase-name-for-primitive.js b/tools/eslint-rules/lowercase-name-for-primitive.js index cb603b62c0c6ff..990f014aa9f25d 100644 --- a/tools/eslint-rules/lowercase-name-for-primitive.js +++ b/tools/eslint-rules/lowercase-name-for-primitive.js @@ -22,11 +22,11 @@ module.exports = function(context) { switch (names.type) { case 'Literal': - checkName(node, names.value); + checkName(names, names.value); break; case 'ArrayExpression': - names.elements.forEach((name) => { - checkName(node, name.value); + names.elements.forEach((name, index) => { + checkName(names.elements[index], name.value); }); break; } @@ -36,8 +36,18 @@ module.exports = function(context) { const lowercaseName = name.toLowerCase(); if (primitives.includes(lowercaseName) && !primitives.includes(name)) { const msg = `primitive should use lowercase: ${name}`; - context.report(node, msg); + context.report({ + node, + message: msg, + fix: (fixer) => { + return fixer.replaceText( + node, + `'${lowercaseName}'` + ); + } + }); } + } return { From b2d1f5b1f3cb163b9be14b962772a01cb2fd153f Mon Sep 17 00:00:00 2001 From: Shobhit Chittora Date: Mon, 18 Dec 2017 10:38:30 +0530 Subject: [PATCH 2/5] tools: auto fix custom eslint rule for lowercase-name-for-primitive.js 1. Extends test cases with output scenarios. Refs : #16636 --- .../test-eslint-lowercase-name-for-primitive.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/test/parallel/test-eslint-lowercase-name-for-primitive.js b/test/parallel/test-eslint-lowercase-name-for-primitive.js index f4a2ac7c3b8307..b47fc14e83bdb8 100644 --- a/test/parallel/test-eslint-lowercase-name-for-primitive.js +++ b/test/parallel/test-eslint-lowercase-name-for-primitive.js @@ -23,11 +23,13 @@ new RuleTester().run('lowercase-name-for-primitive', rule, { invalid: [ { code: 'new errors.TypeError("ERR_INVALID_ARG_TYPE", "a", "Number")', - errors: [{ message: 'primitive should use lowercase: Number' }] + errors: [{ message: 'primitive should use lowercase: Number' }], + output: 'new errors.TypeError("ERR_INVALID_ARG_TYPE", "a", "number")' }, { code: 'new errors.TypeError("ERR_INVALID_ARG_TYPE", "a", "STRING")', - errors: [{ message: 'primitive should use lowercase: STRING' }] + errors: [{ message: 'primitive should use lowercase: STRING' }], + output: 'new errors.TypeError("ERR_INVALID_ARG_TYPE", "a", "string")' }, { code: 'new errors.TypeError("ERR_INVALID_ARG_TYPE", "a",' + @@ -35,7 +37,9 @@ new RuleTester().run('lowercase-name-for-primitive', rule, { errors: [ { message: 'primitive should use lowercase: String' }, { message: 'primitive should use lowercase: Number' } - ] + ], + output: 'new errors.TypeError("ERR_INVALID_ARG_TYPE", "a",' + + '["string", "number"])' } ] }); From 42009c2c90d6c58f010078b78d19e26d4ee15be5 Mon Sep 17 00:00:00 2001 From: Shobhit Chittora Date: Tue, 19 Dec 2017 12:59:43 +0530 Subject: [PATCH 3/5] tools: auto fix custom eslint rule for lowercase-name-for-primitive.js 1. Changes as per review comments. Refs : #16636 --- tools/eslint-rules/lowercase-name-for-primitive.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tools/eslint-rules/lowercase-name-for-primitive.js b/tools/eslint-rules/lowercase-name-for-primitive.js index 990f014aa9f25d..d3a5243c37895f 100644 --- a/tools/eslint-rules/lowercase-name-for-primitive.js +++ b/tools/eslint-rules/lowercase-name-for-primitive.js @@ -22,19 +22,20 @@ module.exports = function(context) { switch (names.type) { case 'Literal': - checkName(names, names.value); + checkName(names); break; case 'ArrayExpression': - names.elements.forEach((name, index) => { - checkName(names.elements[index], name.value); + names.elements.forEach((name) => { + checkName(name); }); break; } } - function checkName(node, name) { + function checkName(node) { + const name = node.value; const lowercaseName = name.toLowerCase(); - if (primitives.includes(lowercaseName) && !primitives.includes(name)) { + if (name !== lowercaseName && primitives.includes(lowercaseName)) { const msg = `primitive should use lowercase: ${name}`; context.report({ node, From 1799ec3cb74f6337b22c28bb68ef5367cacb0443 Mon Sep 17 00:00:00 2001 From: Shobhit Chittora Date: Mon, 25 Dec 2017 17:29:16 +0530 Subject: [PATCH 4/5] tools: auto fix custom eslint rule for lowercase-name-for-primitive.js 1. Fixed test with proper quotes. Refs : #16636 --- ...est-eslint-lowercase-name-for-primitive.js | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/test/parallel/test-eslint-lowercase-name-for-primitive.js b/test/parallel/test-eslint-lowercase-name-for-primitive.js index b47fc14e83bdb8..56b2cc861cb7bd 100644 --- a/test/parallel/test-eslint-lowercase-name-for-primitive.js +++ b/test/parallel/test-eslint-lowercase-name-for-primitive.js @@ -22,24 +22,28 @@ new RuleTester().run('lowercase-name-for-primitive', rule, { ], invalid: [ { - code: 'new errors.TypeError("ERR_INVALID_ARG_TYPE", "a", "Number")', + code: `new errors.TypeError('ERR_INVALID_ARG_TYPE', 'a', + 'Number')`, errors: [{ message: 'primitive should use lowercase: Number' }], - output: 'new errors.TypeError("ERR_INVALID_ARG_TYPE", "a", "number")' + output: `new errors.TypeError('ERR_INVALID_ARG_TYPE', 'a', + 'number')` }, { - code: 'new errors.TypeError("ERR_INVALID_ARG_TYPE", "a", "STRING")', + code: `new errors.TypeError('ERR_INVALID_ARG_TYPE', 'a', + 'STRING')`, errors: [{ message: 'primitive should use lowercase: STRING' }], - output: 'new errors.TypeError("ERR_INVALID_ARG_TYPE", "a", "string")' + output: `new errors.TypeError('ERR_INVALID_ARG_TYPE', 'a', + 'string')` }, { - code: 'new errors.TypeError("ERR_INVALID_ARG_TYPE", "a",' + - '["String", "Number"])', + code: `new errors.TypeError('ERR_INVALID_ARG_TYPE', 'a', + ['String', 'Number'])`, errors: [ { message: 'primitive should use lowercase: String' }, { message: 'primitive should use lowercase: Number' } ], - output: 'new errors.TypeError("ERR_INVALID_ARG_TYPE", "a",' + - '["string", "number"])' + output: `new errors.TypeError('ERR_INVALID_ARG_TYPE', 'a', + ['string', 'number'])` } ] }); From a23ca8860a96e2f8870e618b9405c85498191d97 Mon Sep 17 00:00:00 2001 From: Shobhit Chittora Date: Tue, 26 Dec 2017 09:46:11 +0530 Subject: [PATCH 5/5] tools: auto fix custom eslint rule for lowercase-name-for-primitive.js 1. Removes template string 2. Uses escaped quote. Refs : #16636 --- ...est-eslint-lowercase-name-for-primitive.js | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/test/parallel/test-eslint-lowercase-name-for-primitive.js b/test/parallel/test-eslint-lowercase-name-for-primitive.js index 56b2cc861cb7bd..3eb0d838346865 100644 --- a/test/parallel/test-eslint-lowercase-name-for-primitive.js +++ b/test/parallel/test-eslint-lowercase-name-for-primitive.js @@ -22,28 +22,28 @@ new RuleTester().run('lowercase-name-for-primitive', rule, { ], invalid: [ { - code: `new errors.TypeError('ERR_INVALID_ARG_TYPE', 'a', - 'Number')`, + code: 'new errors.TypeError(\'ERR_INVALID_ARG_TYPE\', \'a\', ' + + '\'Number\')', errors: [{ message: 'primitive should use lowercase: Number' }], - output: `new errors.TypeError('ERR_INVALID_ARG_TYPE', 'a', - 'number')` + output: 'new errors.TypeError(\'ERR_INVALID_ARG_TYPE\', \'a\', ' + + '\'number\')' }, { - code: `new errors.TypeError('ERR_INVALID_ARG_TYPE', 'a', - 'STRING')`, + code: 'new errors.TypeError(\'ERR_INVALID_ARG_TYPE\', \'a\', ' + + '\'STRING\')', errors: [{ message: 'primitive should use lowercase: STRING' }], - output: `new errors.TypeError('ERR_INVALID_ARG_TYPE', 'a', - 'string')` + output: 'new errors.TypeError(\'ERR_INVALID_ARG_TYPE\', \'a\', ' + + '\'string\')' }, { - code: `new errors.TypeError('ERR_INVALID_ARG_TYPE', 'a', - ['String', 'Number'])`, + code: 'new errors.TypeError(\'ERR_INVALID_ARG_TYPE\', \'a\', ' + + '[\'String\', \'Number\']) ', errors: [ { message: 'primitive should use lowercase: String' }, { message: 'primitive should use lowercase: Number' } ], - output: `new errors.TypeError('ERR_INVALID_ARG_TYPE', 'a', - ['string', 'number'])` + output: 'new errors.TypeError(\'ERR_INVALID_ARG_TYPE\', \'a\', ' + + '[\'string\', \'number\']) ' } ] });