dirstate: Appease pytype
authorSimon Sapin <simon.sapin@octobus.net>
Tue, 28 Sep 2021 13:43:14 +0200
changeset 48052 d07d38ef6362
parent 48051 98c0408324e6
child 48053 6256c7525222
dirstate: Appease pytype 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 `assert`s only move that exception earlier, and informs pytype that we expect `None` to never happen in this code path. Differential Revision: https://phab.mercurial-scm.org/D11500
mercurial/dirstatemap.py
--- a/mercurial/dirstatemap.py	Thu Sep 23 18:29:40 2021 +0200
+++ b/mercurial/dirstatemap.py	Tue Sep 28 13:43:14 2021 +0200
@@ -575,6 +575,8 @@
             elif possibly_dirty:
                 item = DirstateItem.new_possibly_dirty()
             else:
+                assert size is not None
+                assert mtime is not None
                 size = size & rangemask
                 mtime = mtime & rangemask
                 item = DirstateItem.new_normal(mode, size, mtime)