]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/emacs-lisp/cconv.el: Don't confuse a string for a docstring
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 9 Mar 2021 16:04:03 +0000 (11:04 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 9 Mar 2021 16:04:03 +0000 (11:04 -0500)
(cconv--convert-funcbody): Check there's something after a docstring.

* test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-string-vs-docstring):
New corresponding test.

lisp/emacs-lisp/cconv.el
test/lisp/emacs-lisp/bytecomp-tests.el

index bd0a3e87e640d7b6a3eddb9391d9102ddcc2c170..68e930fa3f576ebd6333cd86c438a2c1fb4ec1ed 100644 (file)
@@ -295,8 +295,9 @@ of converted forms."
     (if wrappers
         (let ((special-forms '()))
           ;; Keep special forms at the beginning of the body.
-          (while (or (stringp (car funcbody)) ;docstring.
-                     (memq (car-safe (car funcbody)) '(interactive declare)))
+          (while (or (and (cdr funcbody) (stringp (car funcbody))) ;docstring.
+                     (memq (car-safe (car funcbody))
+                           '(interactive declare :documentation)))
             (push (pop funcbody) special-forms))
           (let ((body (macroexp-progn funcbody)))
             (dolist (wrapper wrappers) (setq body (funcall wrapper body)))
index 03c267ccd0fefc6d82122ff75fec8b0232d7fbf6..5147cd26883de4bd8b8f19701f509c0cd96a2a02 100644 (file)
@@ -1222,6 +1222,11 @@ compiled correctly."
         (byte-compile 'counter)
         (should (equal (counter) 1))))))
 
+(ert-deftest bytecomp-string-vs-docstring ()
+  ;; Don't confuse a string return value for a docstring.
+  (let ((lexical-binding t))
+    (should (equal (funcall (byte-compile '(lambda (x) "foo")) 'dummy) "foo"))))
+
 ;; Local Variables:
 ;; no-byte-compile: t
 ;; End: