comparison 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
comparison
equal deleted inserted replaced
38282:630c62804383 38283:4b0f39e7406e
751 for i, nm in enumerate(newmappings): 751 for i, nm in enumerate(newmappings):
752 lm = context.overlaymap(origmapping, nm) 752 lm = context.overlaymap(origmapping, nm)
753 lm['index'] = i 753 lm['index'] = i
754 yield lm 754 yield lm
755 755
756 def _applymap(context, mapping, d, targ): 756 def _applymap(context, mapping, d, darg, targ):
757 for lm in _iteroverlaymaps(context, mapping, d.itermaps(context)): 757 try:
758 diter = d.itermaps(context)
759 except error.ParseError as err:
760 sym = findsymbolicname(darg)
761 if not sym:
762 raise
763 hint = _("keyword '%s' does not support map operation") % sym
764 raise error.ParseError(bytes(err), hint=hint)
765 for lm in _iteroverlaymaps(context, mapping, diter):
758 yield evalrawexp(context, lm, targ) 766 yield evalrawexp(context, lm, targ)
759 767
760 def runmap(context, mapping, data): 768 def runmap(context, mapping, data):
761 darg, targ = data 769 darg, targ = data
762 d = evalwrapped(context, mapping, darg) 770 d = evalwrapped(context, mapping, darg)
763 return mappedgenerator(_applymap, args=(mapping, d, targ)) 771 return mappedgenerator(_applymap, args=(mapping, d, darg, targ))
764 772
765 def runmember(context, mapping, data): 773 def runmember(context, mapping, data):
766 darg, memb = data 774 darg, memb = data
767 d = evalwrapped(context, mapping, darg) 775 d = evalwrapped(context, mapping, darg)
768 if util.safehasattr(d, 'tomap'): 776 if util.safehasattr(d, 'tomap'):