# HG changeset patch # User Yuya Nishihara # Date 2018-04-21 08:43:16 # Node ID ad06a4264daf92e58c15f7ebe31f47045c22cf1b # Parent c2456a7726c1c9661147f20f15178d8cec0a6751 templater: add try-except stub to runmember() New wrapped interface will raise ParseError if the underlying object doesn't support dict-like lookup operation. diff --git a/mercurial/templateutil.py b/mercurial/templateutil.py --- a/mercurial/templateutil.py +++ b/mercurial/templateutil.py @@ -666,14 +666,16 @@ def runmember(context, mapping, data): if util.safehasattr(d, 'tomap'): lm = context.overlaymap(mapping, d.tomap()) return runsymbol(context, lm, memb) - if util.safehasattr(d, 'get'): - return getdictitem(d, memb) - - sym = findsymbolicname(darg) - if sym: - raise error.ParseError(_("keyword '%s' has no member") % sym) - else: - raise error.ParseError(_("%r has no member") % pycompat.bytestr(d)) + try: + if util.safehasattr(d, 'get'): + return getdictitem(d, memb) + raise error.ParseError + except error.ParseError: + sym = findsymbolicname(darg) + if sym: + raise error.ParseError(_("keyword '%s' has no member") % sym) + else: + raise error.ParseError(_("%r has no member") % pycompat.bytestr(d)) def runnegate(context, mapping, data): data = evalinteger(context, mapping, data,