Skip to content

False positive error when accessing property method that returns never using --strict #46254

Description

Bug Report

I get a compile error when calling a property method that returns never using --strict, when I expect to get no compile error. I am unable to reproduce the error with toplevel functions.

🔎 Search Terms

  • never strict label:bug
  • never property
  • false positive never label:bug

🕗 Version & Regression Information

  • I am able to reproduce this behavior with versions 4.1.3 (my application), 4.4.3 (the minimized reproduction above) and 4.5.0-beta (playground link)
  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about never

⏯ Playground Link

Playground link https://www.typescriptlang.org/play?ts=4.5.0-beta#code/EQVwzgpgBGAuBOBLAxrYBuAUAMxAO1UQHs8oAjIogWwAoBKALijwgDcJ4oBvTKKWABbwiAd2YQxAUXjD4NAOQVq8upgC+mTMhJwoAeRCwOUALzdefcpVqNx7Tj0tP+Q0eKkyicxdZUW+GhpaADYAhmBgUABCoQ7+UAAOIGTBKFbUAGL4hCT0THggVGTGjs58SjbxGk5JKWkVAArCCRywAJ55zIXFcWV8BkbwAHQV9FXqmEA

💻 Code

Minimized reproduction

❯ cat boom.ts
function boom(): never {
  throw new Error('boom')
}

const Outer = {
    boom(): never {
        throw new Error('boom')
    }
}

class Bar {
    public boomFunction(): number {
        boom()
    }
    public boomProperty(): number {
        Outer.boom()
    }
}

🙁 Actual behavior

❯ npx -p typescript@4.4.3 tsc --strict boom.ts
boom.ts:18:28 - error TS2366: Function lacks ending return statement and return type does not include 'undefined'.

18     public boomProperty(): number {
                              ~~~~~~


Found 1 error.

🙂 Expected behavior

I expected there to be 0 errors because there is no error for boomFunction(), only boomProperty().

Workarounds

  • add return Outer.boom().
  • remove the --strict flag.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions