Cease emitting negative file offsets for user variables

'User variables' were made obsolete in Emacs 24 along with
user-variable-p; the sign of the position in (#$ . POS) hasn't
mattered since.

* lisp/emacs-lisp/bytecomp.el (byte-compile-output-docform):
Don't emit negative position when doc string starts with `*`.
* src/lread.c (get_lazy_string): Explain.
This commit is contained in:
Mattias Engdegård 2022-08-07 10:52:16 +02:00
parent 7778f83b3e
commit 08a74ab05a
2 changed files with 6 additions and 13 deletions

View file

@ -2451,18 +2451,9 @@ list that represents a doc string reference.
(let (position
(print-symbols-bare t)) ; Possibly redundant binding.
;; Insert the doc string, and make it a comment with #@LENGTH.
(and (>= (nth 1 info) 0)
dynamic-docstrings
(progn
(setq position
(byte-compile-output-as-comment
(nth (nth 1 info) form) nil))
;; If the doc string starts with * (a user variable),
;; negate POSITION.
(if (and (stringp (nth (nth 1 info) form))
(> (length (nth (nth 1 info) form)) 0)
(eq (aref (nth (nth 1 info) form) 0) ?*))
(setq position (- position)))))
(when (and (>= (nth 1 info) 0) dynamic-docstrings)
(setq position (byte-compile-output-as-comment
(nth (nth 1 info) form) nil)))
(let ((print-continuous-numbering t)
print-number-table

View file

@ -3486,7 +3486,9 @@ get_lazy_string (Lisp_Object val)
unibyte string. If it is actually a doc string, caller must make
it multibyte. */
/* Position is negative for user variables. */
/* We used to emit negative positions for 'user variables' (whose doc
strings started with an asterisk); take the absolute value for
compatibility. */
EMACS_INT pos = eabs (XFIXNUM (XCDR (val)));
struct saved_string *ss = &saved_strings[0];
struct saved_string *ssend = ss + ARRAYELTS (saved_strings);