This is an archive of the discontinued Mercurial Phabricator instance.

dirstate: Appease pytype
ClosedPublic

Authored by SimonSapin on Sep 28 2021, 7:43 AM.

Details

Summary

test-check-pytype.t was failing since 98c0408324e6:

File "/home/simon/projects/hg/mercurial/dirstatemap.py", line 572, in
addfile: unsupported operand type(s) for &: 'size: None' and
'rangemask: int' [unsupported-operands]
    No attribute '__and__' on 'size: None' or '__rand__' on 'rangemask: int'
File "/home/simon/projects/hg/mercurial/dirstatemap.py", line 573, in
addfile: unsupported operand type(s) for &: 'mtime: None' and
'rangemask: int' [unsupported-operands]
    No attribute '__and__' on 'mtime: None' or '__rand__' on 'rangemask: int'

None is the default value of the size and mtime parameters of the
addfile method. However, the relevant lines are only used in a code path
where those defaults are never used. These size and mtime are passed
to DirstateItem.new_normal which (in the C implementation) calls
dirstate_item_new_normal which uses:

PyArg_ParseTuple(args, "iii", &mode, &size, &mtime)

So None values would cause an exception to be raised anyway.
The new asserts only move that exception earlier, and informs pytype
that we expect None to never happen in this code path.

Diff Detail

Repository
rHG Mercurial
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

SimonSapin created this revision.Sep 28 2021, 7:43 AM
Alphare accepted this revision.Sep 28 2021, 8:02 AM
Alphare added a subscriber: Alphare.

Thanks for the quick fix

This revision is now accepted and ready to land.Sep 28 2021, 8:02 AM
This revision was automatically updated to reflect the committed changes.