Skip to content

Missed exhaustiveness checking for class unions #99

@charliermarsh

Description

@charliermarsh

print(obj_type) here is marked as "used when possibly not defined".

class Foo:
    pass

class Bar:
    pass

class Baz:
    pass

FooBarBaz = Foo | Bar | Baz


def func(obj: FooBarBaz):
    match obj:
        case Foo():
            obj_type = "Foo"
        case Bar():
            obj_type = "Bar"
        case Baz():
            obj_type = "Baz"
    
    print(obj_type)

See: https://types.ruff.rs/74979412-252c-4f0a-a271-1c4fb1e6bc82

Metadata

Metadata

Assignees

No one assigned

    Labels

    narrowingrelated to flow-sensitive type narrowing

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions