--- a/hgext/mq.py
+++ b/hgext/mq.py
@@ -1586,7 +1586,7 @@ def series(ui, repo, **opts):
def top(ui, repo, **opts):
"""print the name of the current patch"""
q = repo.mq
- t = len(q.applied)
+ t = q.series_end()
if t:
return q.qseries(repo, start=t-1, length=1, status='A',
summary=opts.get('summary'))
--- a/tests/test-mq-guards
+++ b/tests/test-mq-guards
@@ -76,6 +76,10 @@ hg qpop -a
hg qselect 2
echo % should push b.patch
hg qpush
+hg qpush -a
+# Used to be an issue with holes in the patch sequence
+# So, put one hole on the base and ask for topmost patch.
+hg qtop
hg qpop -a
hg qselect 1 2
--- a/tests/test-mq-guards.out
+++ b/tests/test-mq-guards.out
@@ -46,6 +46,9 @@ Patch queue now empty
% should push b.patch
applying b.patch
Now at: b.patch
+applying c.patch
+Now at: c.patch
+c.patch
Patch queue now empty
number of unguarded, unapplied patches has changed from 2 to 3
% should push a.patch, b.patch