diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -116,6 +116,8 @@ def _sortedb(xs):
 # operator methods
 
 def stringset(repo, subset, x, order):
+    if not x:
+        raise error.ParseError(_("empty string is not a valid revision"))
     x = scmutil.intrev(repo[x])
     if (x in subset
         or x == node.nullrev and isinstance(subset, fullreposet)):
diff --git a/tests/test-revset2.t b/tests/test-revset2.t
--- a/tests/test-revset2.t
+++ b/tests/test-revset2.t
@@ -581,7 +581,8 @@ test empty string
   hg: parse error: empty query
   [255]
   $ log 'parents("")'
-  8
+  hg: parse error: empty string is not a valid revision
+  [255]
 
 we can use patterns when searching for tags