[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#28557: 26.0.60; Bugs using (:documentation FORM) in closures
From: |
Gemini Lasswell |
Subject: |
bug#28557: 26.0.60; Bugs using (:documentation FORM) in closures |
Date: |
Fri, 22 Sep 2017 10:30:11 -0700 |
Since Emacs 25, docstrings can be constructed using
(:documentation FORM) in closures, when lexical-binding is on. This
isn't documented except in NEWS. Bug #24773 is about Edebug specs
which have not been updated to recognize :documentation. I'd like to
fix it, so I started trying to figure out which macros accept
:documentation forms so I would know which Edebug specs to update, and
that effort turned into a collection of tests for the feature, see
attached:
cconv-tests.el
Description: Text document
While doing this I found these bugs:
1. A lambda wrapped by cl-function with a :documentation form will
not get a docstring and the :documentation form will be left in the
body of the closure.
2. In code run interactively, a :documentation form in cl-defmacro or
defmacro will work correctly. However if you byte-compile that code,
the byte-compiler stops with the following error message:
Symbol’s function definition is void: internal-make-closure
3. A :documentation form in cl-defgeneric only works if its argument
is a string literal. In cl-defmethod, it works whether the argument is
a string literal or an expression.
4. A :documentation form works in cl-iter-defun and iter-defun, but
not in iter-lambda.
Stefan, here's a list of macros in which it appears to me that
(:documentation FORM) is supposed to work. Is this correct? Am I
missing any?
lambda
pcase-lambda
defun
defmacro
cl-defun
cl-defmacro
iter-defun
cl-iter-defun
iter-lambda
function
cl-function
cl-defgeneric
cl-defmethod
defsubst
cl-defsubst
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- bug#28557: 26.0.60; Bugs using (:documentation FORM) in closures,
Gemini Lasswell <=