summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog3
-rw-r--r--lisp/emacs-lisp/elint.el12
2 files changed, 7 insertions, 8 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 1648aa3bea7..320da46f186 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,8 @@
2012-07-17 Stefan Monnier <monnier@iro.umontreal.ca>
+ * emacs-lisp/elint.el (elint-find-args-in-code):
+ Use help-function-arglist, so as to handle lexical byte-code.
+
* progmodes/sh-script.el (sh-syntax-propertize-function): Fix last
change (bug#11826).
diff --git a/lisp/emacs-lisp/elint.el b/lisp/emacs-lisp/elint.el
index 55915813877..2ff0ace9f4c 100644
--- a/lisp/emacs-lisp/elint.el
+++ b/lisp/emacs-lisp/elint.el
@@ -46,6 +46,8 @@
;;; Code:
+(require 'help-fns)
+
(defgroup elint nil
"Linting for Emacs Lisp."
:prefix "elint-"
@@ -713,14 +715,8 @@ Returns `unknown' if we couldn't find arguments."
(defun elint-find-args-in-code (code)
"Extract the arguments from CODE.
CODE can be a lambda expression, a macro, or byte-compiled code."
- (cond
- ((byte-code-function-p code)
- (aref code 0))
- ((and (listp code) (eq (car code) 'lambda))
- (car (cdr code)))
- ((and (listp code) (eq (car code) 'macro))
- (elint-find-args-in-code (cdr code)))
- (t 'unknown)))
+ (let ((args (help-function-arglist code)))
+ (if (listp args) args 'unknown)))
;;;
;;; Functions to check some special forms