mirror of
https://github.com/masscollaborationlabs/emacs.git
synced 2025-07-04 19:29:37 +00:00
macroexpand not needed
Since lambda thunking replaced quoting in a76d167
.
To see why, observe that cases 3 and 4 disassemble to identical code.
The difference between cases 1 and 2 shows why the macroexpand was
needed originally.
(defmacro test-quote (name-string)
`(eval-after-load "foo"
`(with-elapsed-timer ,(format "Configuring package %s" name-string)
(message "test-quote"))))
(defmacro test-expand-quote (name-string)
`(eval-after-load "foo"
,(macroexpand-all
`(with-elapsed-timer ,(format "Configuring package %s" name-string)
(message "test-expand-quote")))))
(defmacro test-lambda (name-string)
`(eval-after-load "foo"
`(,(lambda ()
(with-elapsed-timer ,(format "Configuring package %s" name-string)
(message "test-lambda"))))))
(defmacro test-expand-lambda (name-string)
`(eval-after-load "foo"
`(,(lambda ()
,(macroexpand-all
`(with-elapsed-timer ,(format "Configuring package %s" name-string)
(message "test-lambda")))))))
(disassemble (lambda () (test-quote "testing...")))
(disassemble (lambda () (test-expand-quote "testing...")))
(disassemble (lambda () (test-lambda "testing...")))
(disassemble (lambda () (test-expand-lambda "testing...")))
This commit is contained in:
parent
119a30f2ba
commit
29abf59bad
1 changed files with 3 additions and 4 deletions
|
@ -653,10 +653,9 @@ For full documentation. please see commentary.
|
|||
`(eval-after-load ,(if (stringp name) name `',name)
|
||||
`(,(lambda ()
|
||||
(if ,requires-test
|
||||
,(macroexpand-all
|
||||
`(with-elapsed-timer
|
||||
,(format "Configuring package %s" name-string)
|
||||
,config-body)))))))
|
||||
(with-elapsed-timer
|
||||
,(format "Configuring package %s" name-string)
|
||||
,config-body))))))
|
||||
t))
|
||||
`(if (and ,(or predicate t)
|
||||
,requires-test)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue