From 9e97a11ecd80be5c63c980bfe8d8e57400221cec Mon Sep 17 00:00:00 2001 From: zz <2418184580@qq.com> Date: Sat, 21 May 2022 07:08:54 +0800 Subject: [PATCH] fix(eslint-plugin): [member-delimiter-style] autofixer result is not as expected with option `delimiter: 'none'` (#5023) --- .../src/rules/member-delimiter-style.ts | 6 +-- .../rules/member-delimiter-style.test.ts | 38 +++++++++++++++++++ 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/packages/eslint-plugin/src/rules/member-delimiter-style.ts b/packages/eslint-plugin/src/rules/member-delimiter-style.ts index e35b6459de8..79b04db1cb8 100644 --- a/packages/eslint-plugin/src/rules/member-delimiter-style.ts +++ b/packages/eslint-plugin/src/rules/member-delimiter-style.ts @@ -68,8 +68,8 @@ const definition = { additionalProperties: false, }; -const isLastTokenEndOfLine = (token: string, line: string): boolean => { - const positionInLine = line.indexOf(token); +const isLastTokenEndOfLine = (token: LastTokenType, line: string): boolean => { + const positionInLine = token.loc.start.column; return positionInLine === line.length - 1; }; @@ -85,7 +85,7 @@ const makeFixFunction = ({ // if removing is the action but last token is not the end of the line if ( optsNone && - !isLastTokenEndOfLine(lastToken.value, lastTokenLine) && + !isLastTokenEndOfLine(lastToken, lastTokenLine) && !isSingleLine ) { return null; diff --git a/packages/eslint-plugin/tests/rules/member-delimiter-style.test.ts b/packages/eslint-plugin/tests/rules/member-delimiter-style.test.ts index fa75383df8e..1350fafec43 100644 --- a/packages/eslint-plugin/tests/rules/member-delimiter-style.test.ts +++ b/packages/eslint-plugin/tests/rules/member-delimiter-style.test.ts @@ -3548,5 +3548,43 @@ type Foo = {a: { }, ], }, + { + code: ` +type Foo = { + a: { + b: true; + }; c: false; +} + `, + output: ` +type Foo = { + a: { + b: true + }; c: false +} + `, + options: [ + { + multiline: { delimiter: 'none' }, + }, + ], + errors: [ + { + messageId: 'unexpectedSemi', + line: 4, + column: 13, + }, + { + messageId: 'unexpectedSemi', + line: 5, + column: 5, + }, + { + messageId: 'unexpectedSemi', + line: 5, + column: 15, + }, + ], + }, ], });