Skip to content

False positive [not-iterable] when matching multiple objects at once #2168

@randolf-scholz

Description

@randolf-scholz

Describe the Bug

First, it seems #1369 is actually fixed; however, the bug still occurs when matching multiple objects:

def test_single_object(o: object) -> None:
    match o:
        case ("a", 1): pass  # OK
        case ("b", 1): pass  # OK
        case ("c", 1): pass  # OK

def test_multi_match1(o1: object, o2: object) -> None:
    match o1, o2:
        case _, ("a", 1): pass  # ❌️ [not-iterable]
        case _, ("b", 1): pass  # ❌️ [not-iterable]
        case _, ("c", 1): pass  # ❌️ [not-iterable]   

def test_multi_match2(o1: object, o2: object) -> None:
    match o1, o2:
        case ("a", 1), _: pass  # ❌️ [not-iterable]
        case ("b", 1), _: pass  # ❌️ [not-iterable]
        case ("c", 1), _: pass  # ❌️ [not-iterable]   

Sandbox Link

https://pyrefly.org/sandbox/?project=N4IgZglgNgpgziAXKOBDAdgEwEYHsAeAdAA4CeSImMYABAC7x0D6cE6A5rE7tgFYwBjOgApciGj35CAlDQC0APhoA5XOhiIAOuhq6aAW1R0BACwladeqwNRwYNYZpConAGhoBGaeOK24ugGIaAHkAaW0ra1t7RxBsN09vGl84fxogsIjI3Rs7BycBBK8fP0CQ8PRtKloGOGZ9AFcoOggmQ2MTD1EPcUlBOndcACZevn7ZRRU1DSzddtMJD0GR2cjc%2ByZ3WJcQd2Lk0vSaQBlyQHg-mgBtdFw6OQgGACdUbFgAXVWovM38uKKklLSQTOl2ut3uMCeLxg70s2XWNG%2BsUKu0SJVSZWBVxud0ezzeem0VWo9EYbSaLTaRlMQ26oykAwkIwkYxk8iUqnUFis8zMuCWjK52Ro8O2f3cTDRgJO5yxYNxUJhQuF0R%2B8RRXnFkoxMtBOIheOhHz0IoKYoRWqOmN14Mh%2BN02l2IAaLSgcBI5EQICCAFUXfdSDQwA10EIIGo4ISsMSwLgHu0mOgGvpsBDhPhxGw6BMlHUHoLdA8YHQGg8dGAnMokym8zRgPgAL5OB2uEBkQtgKCkQh0XD6KAUIIABVI7c7NDQWDw%2BGFakg7BLRjD6EI2iCAGUYPYTHQ6MQ4IgAPQHtvUTuEWPsA8wdAHzC4ARwA8CWcQedPFpqA%2BB2M0VAAN1QaADRndA5wXD8dFwYgILdbQyDoEw1DkP8IVYNQaAAXhoJwAGZCA8IYm3QEB6xbVBQxQgAxaAYAoCccAId0SKAA

(Only applicable for extension issues) IDE Information

No response

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions