Mercurial > public > mercurial-scm > hg-stable
diff mercurial/templater.py @ 28331:2874db5462d3
templater: fix get() to evaluate arguments eagerly
If a key is constructed from a template expression, it may be a generator.
In that case, a key have to be stringified.
A dictarg should never be a generator, but this patch also changes it to
call evalfuncarg() for consistency.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 14 Feb 2016 00:05:58 +0900 |
parents | 5c11702fe2a3 |
children | e91371633127 |
line wrap: on
line diff
--- a/mercurial/templater.py Wed Mar 02 15:38:54 2016 +0000 +++ b/mercurial/templater.py Sun Feb 14 00:05:58 2016 +0900 @@ -437,12 +437,12 @@ # i18n: "get" is a keyword raise error.ParseError(_("get() expects two arguments")) - dictarg = args[0][0](context, mapping, args[0][1]) + dictarg = evalfuncarg(context, mapping, args[0]) if not util.safehasattr(dictarg, 'get'): # i18n: "get" is a keyword raise error.ParseError(_("get() expects a dict as first argument")) - key = args[1][0](context, mapping, args[1][1]) + key = evalfuncarg(context, mapping, args[1]) return dictarg.get(key) def if_(context, mapping, args):