Mercurial > hg
changeset 32914:577759ef2ed2
revset: add support of keyword arguments to ancestors() and descendants()
Prepares for adding depth parameter.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 18 Jun 2017 12:06:22 +0900 |
parents | 3292c0df64f7 |
children | 0afc4206d02b |
files | mercurial/revset.py tests/test-revset.t |
diffstat | 2 files changed, 15 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/revset.py Sun Jun 18 11:57:28 2017 +0900 +++ b/mercurial/revset.py Sun Jun 18 12:06:22 2017 +0900 @@ -250,7 +250,11 @@ """Changesets that are ancestors of changesets in set, including the given changesets themselves. """ - return _ancestors(repo, subset, x) + args = getargsdict(x, 'ancestors', 'set') + if 'set' not in args: + # i18n: "ancestors" is a keyword + raise error.ParseError(_('ancestors takes at least 1 argument')) + return _ancestors(repo, subset, args['set']) @predicate('_firstancestors', safe=True) def _firstancestors(repo, subset, x): @@ -596,7 +600,11 @@ """Changesets which are descendants of changesets in set, including the given changesets themselves. """ - return _descendants(repo, subset, x) + args = getargsdict(x, 'descendants', 'set') + if 'set' not in args: + # i18n: "descendants" is a keyword + raise error.ParseError(_('descendants takes at least 1 argument')) + return _descendants(repo, subset, args['set']) @predicate('_firstdescendants', safe=True) def _firstdescendants(repo, subset, x):
--- a/tests/test-revset.t Sun Jun 18 11:57:28 2017 +0900 +++ b/tests/test-revset.t Sun Jun 18 12:06:22 2017 +0900 @@ -2996,8 +2996,7 @@ ('symbol', '1')) any) define) - hg: parse error: can't use a list in this context - (see hg help "revsets.x or y") + hg: parse error: ancestors takes at most 1 positional arguments [255] $ hg debugrevspec -p optimized 'ancestors(6, 1) - ancestors(4)' * optimized: @@ -3013,8 +3012,7 @@ ('symbol', '4') any) define) - hg: parse error: can't use a list in this context - (see hg help "revsets.x or y") + hg: parse error: ancestors takes at most 1 positional arguments [255] optimization disabled if keyword arguments passed (because we're too lazy @@ -3036,8 +3034,9 @@ ('symbol', '4')) any) define) - hg: parse error: can't use a key-value pair in this context - [255] + 3 + 5 + 6 invalid function call should not be optimized to only()