diff -r 43e091847c4d -r 2e80a691e575 mercurial/match.py --- a/mercurial/match.py Thu May 25 09:52:49 2017 -0700 +++ b/mercurial/match.py Thu May 25 09:52:56 2017 -0700 @@ -462,12 +462,6 @@ if matcher.prefix(): self._always = any(f == path for f in matcher._files) - # Some information is lost in the superclass's constructor, so we - # can not accurately create the matching function for the subdirectory - # from the inputs. Instead, we override matchfn() and visitdir() to - # call the original matcher with the subdirectory path prepended. - self.matchfn = lambda fn: matcher.matchfn(self._path + "/" + fn) - def bad(self, f, msg): self._matcher.bad(self._path + "/" + f, msg) @@ -480,6 +474,13 @@ def uipath(self, f): return self._matcher.uipath(self._path + "/" + f) + def matchfn(self, f): + # Some information is lost in the superclass's constructor, so we + # can not accurately create the matching function for the subdirectory + # from the inputs. Instead, we override matchfn() and visitdir() to + # call the original matcher with the subdirectory path prepended. + return self._matcher.matchfn(self._path + "/" + f) + def visitdir(self, dir): if dir == '.': dir = self._path