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...")))