diff --git a/mercurial/error.py b/mercurial/error.py --- a/mercurial/error.py +++ b/mercurial/error.py @@ -297,9 +297,12 @@ def __init__(self, function, symbols): from .i18n import _ - ParseError.__init__(self, _(b"unknown identifier: %s") % function) - self.function = function - self.symbols = symbols + similar = getsimilar(symbols, function) + hint = similarity_hint(similar) + + ParseError.__init__( + self, _(b"unknown identifier: %s") % function, hint=hint + ) class RepoError(Hint, Exception): diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -150,13 +150,7 @@ ) else: write(_(b"hg: parse error: %s\n") % inst.message) - if isinstance(inst, error.UnknownIdentifier): - # make sure to check fileset first, as revset can invoke fileset - similar = error.getsimilar(inst.symbols, inst.function) - hint = error.similarity_hint(similar) - if hint: - write(b"(%s)\n" % hint) - elif inst.hint: + if inst.hint: write(_(b"(%s)\n") % inst.hint)