diff --git a/lib/rules/jsx-first-prop-new-line.js b/lib/rules/jsx-first-prop-new-line.js index 24d063b9bf..dddc0cd993 100644 --- a/lib/rules/jsx-first-prop-new-line.js +++ b/lib/rules/jsx-first-prop-new-line.js @@ -45,7 +45,7 @@ module.exports = { node: decl, message: 'Property should be placed on a new line', fix: function(fixer) { - return fixer.replaceTextRange([node.name.end, decl.range[0]], '\n'); + return fixer.replaceTextRange([node.name.range[1], decl.range[0]], '\n'); } }); } @@ -58,7 +58,7 @@ module.exports = { node: firstNode, message: 'Property should be placed on the same line as the component declaration', fix: function(fixer) { - return fixer.replaceTextRange([node.name.end, firstNode.range[0]], ' '); + return fixer.replaceTextRange([node.name.range[1], firstNode.range[0]], ' '); } }); return; diff --git a/package.json b/package.json index fc29be26d1..5a0c783aef 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,9 @@ "coveralls": "^3.0.1", "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0", "istanbul": "^0.4.5", - "mocha": "^5.2.0" + "mocha": "^5.2.0", + "typescript": "^3.1.3", + "typescript-eslint-parser": "^20.0.0" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0" diff --git a/tests/lib/rules/jsx-first-prop-new-line.js b/tests/lib/rules/jsx-first-prop-new-line.js index 6a1f8b2b0b..6a3531e517 100644 --- a/tests/lib/rules/jsx-first-prop-new-line.js +++ b/tests/lib/rules/jsx-first-prop-new-line.js @@ -129,6 +129,17 @@ ruleTester.run('jsx-first-prop-new-line', rule, { options: ['multiline-multiprop'], parser: 'babel-eslint' }, + { + code: [ + '' + ].join('\n'), + options: ['multiline-multiprop'], + parser: 'typescript-eslint-parser' + }, { code: '', options: ['always'], @@ -167,6 +178,16 @@ ruleTester.run('jsx-first-prop-new-line', rule, { errors: [{message: 'Property should be placed on a new line'}], parser: 'babel-eslint' }, + { + code: '', + output: [ + '' + ].join('\n'), + options: ['always'], + errors: [{message: 'Property should be placed on a new line'}], + parser: 'typescript-eslint-parser' + }, { code: [ '' + ].join('\n'), + output: [ + '' + ].join('\n'), + options: ['always'], + errors: [{message: 'Property should be placed on a new line'}], + parser: 'typescript-eslint-parser' + }, { code: [ '' + ].join('\n'), + output: [ + '' + ].join('\n'), + options: ['never'], + errors: [{message: 'Property should be placed on the same line as the component declaration'}], + parser: 'typescript-eslint-parser' + }, { code: [ '' + ].join('\n'), + output: [ + '' + ].join('\n'), + options: ['multiline'], + errors: [{message: 'Property should be placed on a new line'}], + parser: 'typescript-eslint-parser' + }, { code: [ '' + ].join('\n'), + output: [ + '' + ].join('\n'), + options: ['multiline-multiprop'], + errors: [{message: 'Property should be placed on a new line'}], + parser: 'typescript-eslint-parser' } ] });