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

Pierre-Yves David pierre-yves.david at ens-lyon.org
Fri Mar 11 09:25:29 EST 2016



On 03/11/2016 01:52 PM, Yuya Nishihara wrote:
> 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.

Okay, pushed to the clowncopter.

-- 
Pierre-Yves David


More information about the Mercurial-devel mailing list