aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Wiegley2017-12-06 06:01:49 +0000
committerJohn Wiegley2017-12-06 06:02:28 +0000
commit2cd3ebd5d5940b10e6eb17b27af155c4368f6dbd (patch)
tree2937c9115128e4cfe8e641d3fa563442774c7189
parentb2b91af2e5479a7959630cb1869241f8615a940a (diff)
downloademacs-2cd3ebd5d5940b10e6eb17b27af155c4368f6dbd.tar.gz
emacs-2cd3ebd5d5940b10e6eb17b27af155c4368f6dbd.zip
Allow the expansion of :after (:or foo bar) to be byte-compiled
-rw-r--r--lisp/use-package/use-package-core.el13
-rw-r--r--test/lisp/use-package/use-package-tests.el124
2 files changed, 61 insertions, 76 deletions
diff --git a/lisp/use-package/use-package-core.el b/lisp/use-package/use-package-core.el
index cacd74b256f..7ed5b7482e1 100644
--- a/lisp/use-package/use-package-core.el
+++ b/lisp/use-package/use-package-core.el
@@ -643,14 +643,11 @@ no more than once."
643 (let ((loaded (cl-gensym "use-package--loaded")) 643 (let ((loaded (cl-gensym "use-package--loaded"))
644 (result (cl-gensym "use-package--result")) 644 (result (cl-gensym "use-package--result"))
645 (next (cl-gensym "use-package--next"))) 645 (next (cl-gensym "use-package--next")))
646 `((defconst ,loaded nil) 646 `((lexical-let (,loaded ,result)
647 (defconst ,result nil) 647 ,@(funcall f `((if ,loaded
648 (defconst ,next #'(lambda () 648 ,result
649 (if ,loaded 649 (setq ,loaded t)
650 ,result 650 (setq ,result ,arg))))))))
651 (setq ,loaded t)
652 (setq ,result ,arg))))
653 ,@(funcall f `((funcall ,next))))))
654 651
655(defsubst use-package-normalize-value (label arg) 652(defsubst use-package-normalize-value (label arg)
656 "Normalize the Lisp value given by ARG. 653 "Normalize the Lisp value given by ARG.
diff --git a/test/lisp/use-package/use-package-tests.el b/test/lisp/use-package/use-package-tests.el
index 4ce0cbc6eb4..73c269abf14 100644
--- a/test/lisp/use-package/use-package-tests.el
+++ b/test/lisp/use-package/use-package-tests.el
@@ -1176,119 +1176,107 @@
1176(ert-deftest use-package-test/:after-5 () 1176(ert-deftest use-package-test/:after-5 ()
1177 (match-expansion 1177 (match-expansion
1178 (use-package foo :after (:any bar quux)) 1178 (use-package foo :after (:any bar quux))
1179 `(progn 1179 `(lexical-let (,_ ,_)
1180 (defconst ,_ nil)
1181 (defconst ,_ nil)
1182 (defconst ,_
1183 #'(lambda nil
1184 (if ,_ ,_
1185 (setq ,_ t)
1186 (setq ,_
1187 (require 'foo nil nil)))))
1188 (eval-after-load 'bar 1180 (eval-after-load 'bar
1189 '(funcall ,_)) 1181 '(if ,_ ,_
1182 (setq ,_ t)
1183 (setq ,_ (require 'foo nil nil))))
1190 (eval-after-load 'quux 1184 (eval-after-load 'quux
1191 '(funcall ,_))))) 1185 '(if ,_ ,_
1186 (setq ,_ t)
1187 (setq ,_ (require 'foo nil nil)))))))
1192 1188
1193(ert-deftest use-package-test/:after-6 () 1189(ert-deftest use-package-test/:after-6 ()
1194 (match-expansion 1190 (match-expansion
1195 (use-package foo :after (:all (:any bar quux) bow)) 1191 (use-package foo :after (:all (:any bar quux) bow))
1196 `(progn 1192 `(lexical-let (,_ ,_)
1197 (defconst ,_ nil)
1198 (defconst ,_ nil)
1199 (defconst ,_
1200 #'(lambda nil
1201 (if ,_ ,_
1202 (setq ,_ t)
1203 (setq ,_
1204 (require 'foo nil nil)))))
1205 (eval-after-load 'bow 1193 (eval-after-load 'bow
1206 '(progn 1194 '(progn
1207 (eval-after-load 'bar 1195 (eval-after-load 'bar
1208 '(funcall ,_)) 1196 '(if ,_ ,_
1197 (setq ,_ t)
1198 (setq ,_ (require 'foo nil nil))))
1209 (eval-after-load 'quux 1199 (eval-after-load 'quux
1210 '(funcall ,_))))))) 1200 '(if ,_ ,_
1201 (setq ,_ t)
1202 (setq ,_ (require 'foo nil nil)))))))
1203 ))
1211 1204
1212(ert-deftest use-package-test/:after-7 () 1205(ert-deftest use-package-test/:after-7 ()
1213 (match-expansion 1206 (match-expansion
1214 (use-package foo :after (:any (:all bar quux) bow)) 1207 (use-package foo :after (:any (:all bar quux) bow))
1215 `(progn 1208 `(lexical-let (,_ ,_)
1216 (defconst ,_ nil)
1217 (defconst ,_ nil)
1218 (defconst ,_
1219 #'(lambda nil
1220 (if ,_ ,_
1221 (setq ,_ t)
1222 (setq ,_
1223 (require 'foo nil nil)))))
1224 (eval-after-load 'quux 1209 (eval-after-load 'quux
1225 '(eval-after-load 'bar 1210 '(eval-after-load 'bar
1226 '(funcall ,_))) 1211 '(if ,_ ,_
1212 (setq ,_ t)
1213 (setq ,_ (require 'foo nil nil)))))
1227 (eval-after-load 'bow 1214 (eval-after-load 'bow
1228 '(funcall ,_))))) 1215 '(if ,_ ,_
1216 (setq ,_ t)
1217 (setq ,_ (require 'foo nil nil)))))
1218 ))
1229 1219
1230(ert-deftest use-package-test/:after-8 () 1220(ert-deftest use-package-test/:after-8 ()
1231 (match-expansion 1221 (match-expansion
1232 (use-package foo :after (:all (:any bar quux) (:any bow baz))) 1222 (use-package foo :after (:all (:any bar quux) (:any bow baz)))
1233 `(progn 1223 `(lexical-let (,_ ,_)
1234 (defconst ,_ nil)
1235 (defconst ,_ nil)
1236 (defconst ,_
1237 #'(lambda nil
1238 (if ,_ ,_
1239 (setq ,_ t)
1240 (setq ,_
1241 (require 'foo nil nil)))))
1242 (eval-after-load 'bow 1224 (eval-after-load 'bow
1243 '(progn 1225 '(progn
1244 (eval-after-load 'bar 1226 (eval-after-load 'bar
1245 '(funcall ,_)) 1227 '(if ,_ ,_
1228 (setq ,_ t)
1229 (setq ,_ (require 'foo nil nil))))
1246 (eval-after-load 'quux 1230 (eval-after-load 'quux
1247 '(funcall ,_)))) 1231 '(if ,_ ,_
1232 (setq ,_ t)
1233 (setq ,_ (require 'foo nil nil))))))
1248 (eval-after-load 'baz 1234 (eval-after-load 'baz
1249 '(progn 1235 '(progn
1250 (eval-after-load 'bar 1236 (eval-after-load 'bar
1251 '(funcall ,_)) 1237 '(if ,_ ,_
1238 (setq ,_ t)
1239 (setq ,_ (require 'foo nil nil))))
1252 (eval-after-load 'quux 1240 (eval-after-load 'quux
1253 '(funcall ,_))))))) 1241 '(if ,_ ,_
1242 (setq ,_ t)
1243 (setq ,_ (require 'foo nil nil)))))))
1244 ))
1254 1245
1255(ert-deftest use-package-test/:after-9 () 1246(ert-deftest use-package-test/:after-9 ()
1256 (match-expansion 1247 (match-expansion
1257 (use-package foo :after (:any (:all bar quux) (:all bow baz))) 1248 (use-package foo :after (:any (:all bar quux) (:all bow baz)))
1258 `(progn 1249 `(lexical-let (,_ ,_)
1259 (defconst ,_ nil)
1260 (defconst ,_ nil)
1261 (defconst ,_
1262 #'(lambda nil
1263 (if ,_ ,_
1264 (setq ,_ t)
1265 (setq ,_
1266 (require 'foo nil nil)))))
1267 (eval-after-load 'quux 1250 (eval-after-load 'quux
1268 '(eval-after-load 'bar 1251 '(eval-after-load 'bar
1269 '(funcall ,_))) 1252 '(if ,_ ,_
1253 (setq ,_ t)
1254 (setq ,_ (require 'foo nil nil)))))
1270 (eval-after-load 'baz 1255 (eval-after-load 'baz
1271 '(eval-after-load 'bow 1256 '(eval-after-load 'bow
1272 '(funcall ,_)))))) 1257 '(if ,_ ,_
1258 (setq ,_ t)
1259 (setq ,_ (require 'foo nil nil))))))
1260 ))
1273 1261
1274(ert-deftest use-package-test/:after-10 () 1262(ert-deftest use-package-test/:after-10 ()
1275 (match-expansion 1263 (match-expansion
1276 (use-package foo :after (:any (:all bar quux) (:any bow baz))) 1264 (use-package foo :after (:any (:all bar quux) (:any bow baz)))
1277 `(progn 1265 `(lexical-let (,_ ,_)
1278 (defconst ,_ nil)
1279 (defconst ,_ nil)
1280 (defconst ,_
1281 #'(lambda nil (if ,_ ,_
1282 (setq ,_ t)
1283 (setq ,_
1284 (require 'foo nil nil)))))
1285 (eval-after-load 'quux 1266 (eval-after-load 'quux
1286 '(eval-after-load 'bar 1267 '(eval-after-load 'bar
1287 '(funcall ,_))) 1268 '(if ,_ ,_
1269 (setq ,_ t)
1270 (setq ,_ (require 'foo nil nil)))))
1288 (eval-after-load 'bow 1271 (eval-after-load 'bow
1289 '(funcall ,_)) 1272 '(if ,_ ,_
1273 (setq ,_ t)
1274 (setq ,_ (require 'foo nil nil))))
1290 (eval-after-load 'baz 1275 (eval-after-load 'baz
1291 '(funcall ,_))))) 1276 '(if ,_ ,_
1277 (setq ,_ t)
1278 (setq ,_ (require 'foo nil nil)))))
1279 ))
1292 1280
1293(ert-deftest use-package-test/:demand-1 () 1281(ert-deftest use-package-test/:demand-1 ()
1294 (match-expansion 1282 (match-expansion