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'
}
]
});