diff options
| author | John Wiegley | 2017-12-06 06:01:49 +0000 |
|---|---|---|
| committer | John Wiegley | 2017-12-06 06:02:28 +0000 |
| commit | 2cd3ebd5d5940b10e6eb17b27af155c4368f6dbd (patch) | |
| tree | 2937c9115128e4cfe8e641d3fa563442774c7189 | |
| parent | b2b91af2e5479a7959630cb1869241f8615a940a (diff) | |
| download | emacs-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.el | 13 | ||||
| -rw-r--r-- | test/lisp/use-package/use-package-tests.el | 124 |
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 |