Skip to content

Commit

Permalink
fix(eslint-plugin): [no-base-to-string] support boolean in unions (#1979
Browse files Browse the repository at this point in the history
)
  • Loading branch information
auhsoja committed May 11, 2020
1 parent 56d9870 commit 6987ecc
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 2 deletions.
21 changes: 19 additions & 2 deletions packages/eslint-plugin/src/rules/no-base-to-string.ts
Expand Up @@ -123,10 +123,27 @@ export default util.createRule<Options, MessageIds>({
return Usefulness.Never;
}

let allSubtypesUseful = true;
let someSubtypeUseful = false;

for (const subType of type.types) {
if (collectToStringCertainty(subType) !== Usefulness.Never) {
return Usefulness.Sometimes;
const subtypeUsefulness = collectToStringCertainty(subType);

if (subtypeUsefulness !== Usefulness.Always && allSubtypesUseful) {
allSubtypesUseful = false;
}

if (subtypeUsefulness !== Usefulness.Never && !someSubtypeUseful) {
someSubtypeUseful = true;
}
}

if (allSubtypesUseful && someSubtypeUseful) {
return Usefulness.Always;
}

if (someSubtypeUseful) {
return Usefulness.Sometimes;
}

return Usefulness.Never;
Expand Down
8 changes: 8 additions & 0 deletions packages/eslint-plugin/tests/rules/no-base-to-string.test.ts
Expand Up @@ -78,6 +78,14 @@ const literalWithToString = {
toString: () => 'Hello, world!',
};
'' + literalToString;
`,
`
const printer = (inVar: string | number | boolean) => {
inVar.toString();
};
printer('');
printer(1);
printer(true);
`,
'let _ = {} * {};',
'let _ = {} / {};',
Expand Down

0 comments on commit 6987ecc

Please sign in to comment.