templater: make label() just fail if ui object isn't available
authorYuya Nishihara <yuya@tcha.org>
Wed, 09 Mar 2016 23:59:26 +0900
changeset 28462 dbba18ba26d4
parent 28461 b433233e25d9
child 28463 19b4a2087dfc
templater: make label() just fail if ui object isn't available Silent failure hides bugs and makes it harder to track down the issue. It's worse than raising exception. In future patches, I plan to sort out template functions that require 'ui', 'ctx', 'fctx', etc. so that incompatible functions are excluded and the doc can say in which context these functions are usable. @templatefunc('label', requires=('ui',)) def label(context, mapping, args): ...
mercurial/templater.py
--- a/mercurial/templater.py	Fri Mar 11 21:55:44 2016 +0900
+++ b/mercurial/templater.py	Wed Mar 09 23:59:26 2016 +0900
@@ -547,12 +547,8 @@
         # i18n: "label" is a keyword
         raise error.ParseError(_("label expects two arguments"))
 
+    ui = mapping['ui']
     thing = evalstring(context, mapping, args[1])
-
-    ui = mapping.get('ui', '')
-    if isinstance(ui, str):
-        return thing
-
     # preserve unknown symbol as literal so effects like 'red', 'bold',
     # etc. don't need to be quoted
     label = evalstringliteral(context, mapping, args[0])