GNU bug report logs -
#67455
Record source position, etc., in doc strings, and use this in *Help* and backtraces.
Previous Next
Full log
Message #37 received at 67455 <at> debbugs.gnu.org (full text, mbox):
> I've just pushed a large commit to feature/positioned-lambdas, a work
> in progress commit for bug#67455, putting source position information at
> the start of doc strings. master was merged into it just before the
> commit.
I barely started to look at the code, but regarding the following hunk:
diff --git a/lisp/emacs-lisp/backquote.el b/lisp/emacs-lisp/backquote.el
index 6917128d70a..0d4681bc979 100644
--- a/lisp/emacs-lisp/backquote.el
+++ b/lisp/emacs-lisp/backquote.el
@@ -172,6 +172,30 @@ backquote-process
(backquote-delay-process s (1- level))))
((eq (car s) backquote-backquote-symbol)
(backquote-delay-process s (1+ level)))
+ ;; Process a (lambda ...) form specially, since otherwise the
+ ;; lambda symbol would get separated from its introductory (,
+ ;; preventing this processing from being done elsewhere in macro
+ ;; expansion.
+ ((and (eq (car s) 'lambda)
+ (symbol-with-pos-p (car s))
+ (listp (car-safe (cdr s))))
+ (let ((kdr (backquote-process (cdr s) level))
+ (lambda-pos (symbol-with-pos-pos (car s)))
+ )
+ (if (null byte-compile-in-progress)
+ (setcar s 'lambda)) ; Strip the position.
+ (cond
+ ((= (car kdr) 0)
+ (cons (car kdr)
+ (list 'quote
+ (byte-run-posify-lambda-form
+ (cons (car s) (car (cdr (cdr kdr)))) ; Two cdr's to strip 'quote.
+ lambda-pos))))
+ (t
+ (cons 1
+ (list 'byte-run-posify-lambda-form
+ (list 'cons (list 'quote (car s)) (cdr kdr))
+ lambda-pos))))))
(t
(let ((rest s)
item firstlist list lists expression)
- Testing `byte-compile-in-progress` can't be right. Do you to test
whether the result of this backquote will be byte-compiled or do you
really mean to test whether this backquote happens to be executed
during compilation (which could be because the compiler ends up
loading code while executing `eval-when-compile` or `require`)?
- My gut tells me that changing backquote can't be right.
(lambda (f) ..) *can* appear within a backquote without it being an
actual lambda expression.
What alternatives have you considered?
Stefan
This bug report was last modified 1 year and 13 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.