# HG changeset patch # User Danny Hooper # Date 2019-08-13 21:28:10 # Node ID 64a0cb2d4692ab8b33ee7e3c2001b971377fe597 # Parent d82e9f7e7440e6ef26ae6827bb2057f01dfb9573 fix: pass line ranges as value instead of callback The callback no longer takes any arguments from the inner function, so we might as well call it sooner and pass the value instead. Note the value still needs to be recomputed every iteration to account for the previous iteration's changes to the file content. Differential Revision: https://phab.mercurial-scm.org/D6727 diff --git a/hgext/fix.py b/hgext/fix.py --- a/hgext/fix.py +++ b/hgext/fix.py @@ -563,8 +563,8 @@ def fixfile(ui, repo, opts, fixers, fixc newdata = fixctx[path].data() for fixername, fixer in fixers.iteritems(): if fixer.affects(opts, fixctx, path): - rangesfn = lambda: lineranges(opts, path, basectxs, fixctx, newdata) - command = fixer.command(ui, path, rangesfn) + ranges = lineranges(opts, path, basectxs, fixctx, newdata) + command = fixer.command(ui, path, ranges) if command is None: continue ui.debug('subprocess: %s\n' % (command,)) @@ -758,7 +758,7 @@ class Fixer(object): """Should the stdout of this fixer start with JSON and a null byte?""" return self._metadata - def command(self, ui, path, rangesfn): + def command(self, ui, path, ranges): """A shell command to use to invoke this fixer on the given file/lines May return None if there is no appropriate command to run for the given @@ -768,7 +768,6 @@ class Fixer(object): parts = [expand(ui, self._command, {'rootpath': path, 'basename': os.path.basename(path)})] if self._linerange: - ranges = rangesfn() if self._skipclean and not ranges: # No line ranges to fix, so don't run the fixer. return None