Mercurial > public > mercurial-scm > hg-stable
diff mercurial/templateutil.py @ 38283:4b0f39e7406e
templater: show slightly better hint on map operation error
It was super hard to find where the templater went wrong if a keyword was
evaluated to '' or None.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Fri, 08 Jun 2018 20:57:54 +0900 |
parents | 630c62804383 |
children | 354fad8697fd |
line wrap: on
line diff
--- a/mercurial/templateutil.py Wed Mar 21 12:28:12 2018 +0900 +++ b/mercurial/templateutil.py Fri Jun 08 20:57:54 2018 +0900 @@ -753,14 +753,22 @@ lm['index'] = i yield lm -def _applymap(context, mapping, d, targ): - for lm in _iteroverlaymaps(context, mapping, d.itermaps(context)): +def _applymap(context, mapping, d, darg, targ): + try: + diter = d.itermaps(context) + except error.ParseError as err: + sym = findsymbolicname(darg) + if not sym: + raise + hint = _("keyword '%s' does not support map operation") % sym + raise error.ParseError(bytes(err), hint=hint) + for lm in _iteroverlaymaps(context, mapping, diter): yield evalrawexp(context, lm, targ) def runmap(context, mapping, data): darg, targ = data d = evalwrapped(context, mapping, darg) - return mappedgenerator(_applymap, args=(mapping, d, targ)) + return mappedgenerator(_applymap, args=(mapping, d, darg, targ)) def runmember(context, mapping, data): darg, memb = data