devel-warn: issue a warning for old style revsets
authorPierre-Yves David <pierre-yves.david@fb.com>
Fri, 19 Jun 2015 11:17:11 -0700
changeset 25630 c88082baf693
parent 25629 52e5f68d8363
child 25631 2748bf78a5bf
devel-warn: issue a warning for old style revsets We have move to smartset class more than a year ago, we now have the tool to aggressively nudge developer into upgrading their extensions.
mercurial/revset.py
tests/test-devel-warnings.t
--- a/mercurial/revset.py	Fri Jun 19 11:19:45 2015 -0700
+++ b/mercurial/revset.py	Fri Jun 19 11:17:11 2015 -0700
@@ -321,6 +321,13 @@
     s = methods[x[0]](repo, subset, *x[1:])
     if util.safehasattr(s, 'isascending'):
         return s
+    if (repo.ui.configbool('devel', 'all-warnings')
+            or repo.ui.configbool('devel', 'old-revset')):
+        # else case should not happen, because all non-func are internal,
+        # ignoring for now.
+        if x[0] == 'func' and x[1][0] == 'symbol' and x[1][1] in symbols:
+            repo.ui.develwarn('revset "%s" use list instead of smartset, '
+                              '(upgrade your code)' % x[1][1])
     return baseset(s)
 
 def _getrevsource(repo, r):
--- a/tests/test-devel-warnings.t	Fri Jun 19 11:19:45 2015 -0700
+++ b/tests/test-devel-warnings.t	Fri Jun 19 11:17:11 2015 -0700
@@ -3,7 +3,7 @@
   > """A small extension that acquire locks in the wrong order
   > """
   > 
-  > from mercurial import cmdutil, repair
+  > from mercurial import cmdutil, repair, revset
   > 
   > cmdtable = {}
   > command = cmdutil.command(cmdtable)
@@ -47,6 +47,11 @@
   >         repair.strip(repo.ui, repo, [repo['.'].node()])
   >     finally:
   >         lo.release()
+  > 
+  > def oldstylerevset(repo, subset, x):
+  >     return list(subset)
+  > 
+  > revset.symbols['oldstyle'] = oldstylerevset
   > EOF
 
   $ cat << EOF >> $HGRCPATH
@@ -106,4 +111,8 @@
   (contact your extension maintainer)
   [255]
 
+  $ hg log -r "oldstyle()" -T '{rev}\n'
+  devel-warn: revset "oldstyle" use list instead of smartset, (upgrade your code) at: */mercurial/revset.py:* (mfunc) (glob)
+  0
+
   $ cd ..