[PATCH 2 of 2] templater: make label() just fail if ui object isn't available

Yuya Nishihara yuya at tcha.org
Fri Mar 11 08:52:18 EST 2016


On Wed, 9 Mar 2016 18:18:02 +0000, Pierre-Yves David wrote:
> On 03/09/2016 03:34 PM, Yuya Nishihara wrote:
> > # HG changeset patch
> > # User Yuya Nishihara <yuya at tcha.org>
> > # Date 1457535566 -32400
> > #      Wed Mar 09 23:59:26 2016 +0900
> > # Node ID ed81b4ff8cf1af457072eaff8ae055943562b624
> > # Parent  62d64dedd1098442819b8f16ae7a7848e45d3a59
> > 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):
> 
> Should we introduce a devel warning for one version to let buggy 
> template gracefully recover in the wild?

Er, we wouldn't want a warning in the middle of template output because it would
be hard to read. Also, if label() can access to ui.develwarn(), it can call
ui.label().

The best thing it can do here is to raise Abort, which I want to implement
later.


More information about the Mercurial-devel mailing list