diff -r 7e9a15fa6c8f -r 5751631246de mercurial/dispatch.py --- a/mercurial/dispatch.py Tue Nov 18 15:35:34 2008 -0600 +++ b/mercurial/dispatch.py Tue Nov 18 16:02:14 2008 -0600 @@ -7,7 +7,7 @@ from i18n import _ from repo import RepoError -import os, sys, atexit, signal, pdb, traceback, socket, errno, shlex, time +import os, sys, atexit, signal, pdb, socket, errno, shlex, time import util, commands, hg, lock, fancyopts, revlog, version, extensions, hook import cmdutil import ui as _ui @@ -356,9 +356,9 @@ raise RepoError(_("There is no Mercurial repository here" " (.hg not found)")) raise - d = lambda: func(ui, repo, *args, **cmdoptions) - else: - d = lambda: func(ui, *args, **cmdoptions) + args.insert(0, repo) + + d = lambda: util.checksignature(func)(ui, *args, **cmdoptions) # run pre-hook, and abort if it fails ret = hook.hook(lui, repo, "pre-%s" % cmd, False, args=" ".join(fullargs)) @@ -374,11 +374,7 @@ def checkargs(): try: return cmdfunc() - except TypeError: - # was this an argument error? - tb = traceback.extract_tb(sys.exc_info()[2]) - if len(tb) != 2: # no - raise + except util.SignatureError: raise ParseError(cmd, _("invalid arguments")) if options['profile']: