Skip to content

Bug: [strict-boolean-expressions] remaining unsafe autofixes #10136

Closed
@kirkwaiblinger

Description

@kirkwaiblinger

Before You File a Bug Report Please Confirm You Have Done The Following...

  • I have tried restarting my IDE and the issue persists.
  • I have updated to the latest version of the packages.
  • I have searched for related issues and found none that matched my issue.
  • I have read the FAQ and my problem is not listed.

Playground Link

https://typescript-eslint.io/play/#ts=5.1.6&fileType=.tsx&code=PTAEEMCdPBPUA2BTAdgcwC4AtQGMtK4DWAUAGYCuKuGAlgPYqgDO9AtkgGIoCC0cACloYkbZgC5Q9AEYArQhgDaAXQCUoAN4lQoSEgwVITAFIBlAPIA5AHTMMkWulplYQkWOvJ02UAB9foADkogAOGLB8MLCBqiQAviSJqBRsoJz09JraoABaSJD0ADTZ5ihI8YkgoCgUCAjg0sigyan4hKSU1HSMLOxcKACiNWwCZBkA-JLp9OpaOmZWtvaOaM6uY5n%2BQWTgCMzwLUGxcUA&eslintrc=N4KABGBEBOCuA2BTAzpAXGUEKQAIBcBPABxQGNoBLY-AWhXkoDt8B6ZfKsugIwHs%2BSAIZN6AD2LQUySnyaoMAbUgB3IdCaQANJnDYcQ%2BPD4qAcrAC2PRNHRgAZoeSIte-ZEPGzCeEJ5IAUSZLO0d4ZzcwAF8AXT0okCigA&tsconfig=N4KABGBEDGD2C2AHAlgGwKYCcDyiAuysAdgM6QBcYoEEkJemy0eAcgK6qoDCAFutAGsylBm3TgwAXxCSgA&tokens=false

Repro Code

// array length check
function someFnArray(items: object[]) {
  return JSON.stringify(items.length || 'emptyArray')
}


enum Foo {
  Zero,
  One
}

// nullable enum check
function someFnEnum(foo?: Foo) {
  JSON.stringify(foo || 'falsy enum ')
}

ESLint Config

module.exports = {
  "rules": {
    "@typescript-eslint/strict-boolean-expressions": ["warn", {
      "allowNumber": false,
      "allowNullableEnum": false
    }]
  }
}

tsconfig

{
  "compilerOptions": {
    "strictNullChecks": true
  }
}

Expected Result

I expect no autofix, or a safe autofix

Actual Result

autofixes to

// array length check
function someFnArray(items: object[]) {
  return JSON.stringify((items.length > 0) || 'emptyArray')
}


enum Foo {
  Zero,
  One
}

// nullable enum check
function someFnEnum(foo?: Foo) {
  JSON.stringify((foo != null) || 'falsy enum ')
}

Additional Info

This has come up several times before for other checks, see #7312, #6173, #7743, possibly more.

When working on this issue I think the remaining autofixes should be audited for safety (there aren't many) and quite possibly all converted to suggestions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    accepting prsGo ahead, send a pull request that resolves this issuebugSomething isn't workinglocked due to agePlease open a new issue if you'd like to say more. See https://typescript-eslint.io/contributing.package: eslint-pluginIssues related to @typescript-eslint/eslint-plugin

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions