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:
Noam Postavsky 2013-08-14 00:40:20 -04:00
parent 119a30f2ba
commit 29abf59bad

View file

@ -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)