Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

reportReturnType false positive when attribute type is exhaustively narrowed #682

Open
DetachHead opened this issue Sep 20, 2024 · 0 comments
Labels
type checking / linting issues relating to existing diagnostic rules or proposals for new diagnostic rules upstream bug a bug that also exists in pyright but has not been raised upstream

Comments

@DetachHead
Copy link
Owner

Code sample in basedpyright playground

from dataclasses import dataclass
from typing import Literal

@dataclass
class Foo:
    value: Literal[1, 2]

def foo(foo: Foo) -> bool: # error
    if foo.value == 1:
        return True
    elif foo.value == 2:
        raise Exception
    
def bar(foo: Literal[1, 2]) -> bool: # no error
    if foo == 1:
        return True
    elif foo == 2:
        raise Exception
Function with declared return type "bool" must return value on all code paths
  "None" is not assignable to "bool"  (reportReturnType)
@DetachHead DetachHead added type checking / linting issues relating to existing diagnostic rules or proposals for new diagnostic rules upstream bug a bug that also exists in pyright but has not been raised upstream labels Sep 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type checking / linting issues relating to existing diagnostic rules or proposals for new diagnostic rules upstream bug a bug that also exists in pyright but has not been raised upstream
Projects
None yet
Development

No branches or pull requests

1 participant