Skip to content
This repository was archived by the owner on Oct 3, 2024. It is now read-only.

Commit 9cf80c9

Browse files
Improve suggestion messages for 'prefer-single-boolean-return' (#346)
1 parent ea8c431 commit 9cf80c9

File tree

2 files changed

+20
-29
lines changed

2 files changed

+20
-29
lines changed

src/rules/prefer-single-boolean-return.ts

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,10 @@ const rule: TSESLint.RuleModule<string, string[]> = {
3131
meta: {
3232
messages: {
3333
replaceIfThenElseByReturn: 'Replace this if-then-else flow by a single return statement.',
34-
suggestIfThenElseReplacement: 'Replace with single return statement',
35-
suggestUnsafeIfThenElseReplacement:
36-
'Replace with single return statement (beware of return value usages)',
34+
suggest: 'Replace with single return statement',
35+
suggestCast: 'Replace with single return statement using "!!" cast',
36+
suggestBoolean:
37+
'Replace with single return statement without cast (condition should be boolean!)',
3738
},
3839
schema: [],
3940
type: 'suggestion',
@@ -115,27 +116,17 @@ const rule: TSESLint.RuleModule<string, string[]> = {
115116
const shouldNegate = isReturningFalse(ifStmt.consequent);
116117
const shouldCast = !isBooleanExpression(ifStmt.test);
117118
const testText = context.getSourceCode().getText(ifStmt.test);
118-
let safeCondition: string;
119+
119120
if (shouldNegate) {
120-
safeCondition = `!(${testText})`;
121-
} else if (shouldCast) {
122-
safeCondition = `!!(${testText})`;
121+
return [{ messageId: 'suggest', fix: getFix(`!(${testText})`) }];
122+
} else if (!shouldCast) {
123+
return [{ messageId: 'suggest', fix: getFix(testText) }];
123124
} else {
124-
safeCondition = testText;
125-
}
126-
const suggestions: TSESLint.ReportSuggestionArray<string> = [
127-
{
128-
messageId: 'suggestIfThenElseReplacement',
129-
fix: getFix(safeCondition),
130-
},
131-
];
132-
if (shouldCast && !shouldNegate) {
133-
suggestions.push({
134-
messageId: 'suggestUnsafeIfThenElseReplacement',
135-
fix: getFix(testText),
136-
});
125+
return [
126+
{ messageId: 'suggestCast', fix: getFix(`!!(${testText})`) },
127+
{ messageId: 'suggestBoolean', fix: getFix(testText) },
128+
];
137129
}
138-
return suggestions;
139130
}
140131

141132
function isReturningFalse(stmt: TSESTree.Statement): boolean {

tests/rules/prefer-single-boolean-return.test.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ function foo() {
244244
messageId: 'replaceIfThenElseByReturn',
245245
suggestions: [
246246
{
247-
messageId: 'suggestIfThenElseReplacement',
247+
messageId: 'suggestCast',
248248
output: `
249249
function foo() {
250250
if (bar()) {
@@ -254,7 +254,7 @@ function foo() {
254254
}`,
255255
},
256256
{
257-
messageId: 'suggestUnsafeIfThenElseReplacement',
257+
messageId: 'suggestBoolean',
258258
output: `
259259
function foo() {
260260
if (bar()) {
@@ -283,7 +283,7 @@ function foo() {
283283
messageId: 'replaceIfThenElseByReturn',
284284
suggestions: [
285285
{
286-
messageId: 'suggestIfThenElseReplacement',
286+
messageId: 'suggestCast',
287287
output: `
288288
function foo() {
289289
if (bar()) {
@@ -293,7 +293,7 @@ function foo() {
293293
}`,
294294
},
295295
{
296-
messageId: 'suggestUnsafeIfThenElseReplacement',
296+
messageId: 'suggestBoolean',
297297
output: `
298298
function foo() {
299299
if (bar()) {
@@ -320,7 +320,7 @@ function foo() {
320320
messageId: 'replaceIfThenElseByReturn',
321321
suggestions: [
322322
{
323-
messageId: 'suggestIfThenElseReplacement',
323+
messageId: 'suggest',
324324
output: `
325325
function foo() {
326326
return !bar();
@@ -344,7 +344,7 @@ function foo() {
344344
messageId: 'replaceIfThenElseByReturn',
345345
suggestions: [
346346
{
347-
messageId: 'suggestIfThenElseReplacement',
347+
messageId: 'suggest',
348348
output: `
349349
function foo() {
350350
return bar() > 0;
@@ -368,7 +368,7 @@ function foo() {
368368
messageId: 'replaceIfThenElseByReturn',
369369
suggestions: [
370370
{
371-
messageId: 'suggestIfThenElseReplacement',
371+
messageId: 'suggest',
372372
output: `
373373
function foo() {
374374
return !(baz() > 0);
@@ -392,7 +392,7 @@ function foo() {
392392
messageId: 'replaceIfThenElseByReturn',
393393
suggestions: [
394394
{
395-
messageId: 'suggestIfThenElseReplacement',
395+
messageId: 'suggest',
396396
output: `
397397
function foo() {
398398
return !(baz());

0 commit comments

Comments
 (0)