[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/tuareg 24c1a1a 7/7: * tuareg-tests.el (tuareg--lets): New
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/tuareg 24c1a1a 7/7: * tuareg-tests.el (tuareg--lets): New macro |
Date: |
Sat, 5 Jun 2021 12:57:17 -0400 (EDT) |
branch: elpa/tuareg
commit 24c1a1adbe51d93f681e72442fa73f885eb33776
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>
* tuareg-tests.el (tuareg--lets): New macro
(tuareg-beginning-of-defun, tuareg-chained-defun): Use it.
---
tuareg-tests.el | 55 ++++++++++++++++++++++++++++++++++++-------------------
1 file changed, 36 insertions(+), 19 deletions(-)
diff --git a/tuareg-tests.el b/tuareg-tests.el
index dbda2cf..7cf298f 100644
--- a/tuareg-tests.el
+++ b/tuareg-tests.el
@@ -50,6 +50,23 @@
(indent-region (point-min) (point-max))
(should (equal (funcall text) orig))))))
+(defmacro tuareg--lets (&rest forms)
+ "Execute FORMS in sequence, binding new vars as they occur.
+Every expression in FORMS can be any normal ELisp expression,
+with the added form (let VAR VAL) which will bind VAR to the value of VAL.
+Returns the value of the last FORM."
+ (declare (indent 0) (debug (&rest [&or ("let" symbolp form) form])))
+ (let ((exps '())
+ (bindings '()))
+ (dolist (form forms)
+ (pcase form
+ (`(let ,(and (pred symbolp) var) ,val)
+ (push (list var (macroexp-progn (nreverse (cons val exps))))
+ bindings)
+ (setq exps '()))
+ (_ (push form exps))))
+ `(let* ,(nreverse bindings) . ,(nreverse exps))))
+
(ert-deftest tuareg-beginning-of-defun ()
;; Check that `beginning-of-defun' works as expected: move backwards
;; to the beginning of the current top-level definition (defun), or
@@ -57,20 +74,20 @@
;; found, nil if none.
(with-temp-buffer
(tuareg-mode)
- (let (p1 p2 p3 p4)
+ (tuareg--lets
(insert "(* first line *)\n\n")
- (setq p1 (point))
+ (let p1 (point))
(insert "type ty =\n"
" | Goo\n"
" | Baa of int\n\n")
- (setq p2 (point))
+ (let p2 (point))
(insert "let a = ho hum\n"
";;\n\n")
- (setq p3 (point))
+ (let p3 (point))
(insert "let g u =\n"
" while mo ma do\n"
" we wo;\n")
- (setq p4 (point))
+ (let p4 (point))
(insert " ze zo\n"
" done\n")
@@ -128,45 +145,45 @@
;; Check motion by defuns that are chained by "and".
(with-temp-buffer
(tuareg-mode)
- (let (p0 p1 p2a p2b p3a p3b p4 p5a p5b p6 p7 p8a p8b)
+ (tuareg--lets
(insert "(* *)\n\n")
- (setq p0 (point))
+ (let p0 (point))
(insert "type t1 =\n"
" A\n")
- (setq p1 (point))
+ (let p1 (point))
(insert "and t2 =\n"
" B\n")
- (setq p2a (point))
+ (let p2a (point))
(insert "\n")
- (setq p2b (point))
+ (let p2b (point))
(insert "and t3 =\n"
" C\n")
- (setq p3a (point))
+ (let p3a (point))
(insert "\n")
- (setq p3b (point))
+ (let p3b (point))
(insert "let f1 x =\n"
" aa\n")
- (setq p4 (point))
+ (let p4 (point))
(insert "and f2 x =\n"
" bb\n")
- (setq p5a (point))
+ (let p5a (point))
(insert "\n")
- (setq p5b (point))
+ (let p5b (point))
(insert "and f3 x =\n"
" let ff1 y =\n"
" cc\n"
" and ff2 y = (\n")
- (setq p6 (point))
+ (let p6 (point))
(insert " qq ww) + dd\n"
" and ff3 y =\n"
" for i = 1 to 10 do\n"
" ee;\n")
- (setq p7 (point))
+ (let p7 (point))
(insert " ff;\n"
" done\n")
- (setq p8a (point))
+ (let p8a (point))
(insert "\n")
- (setq p8b (point))
+ (let p8b (point))
(insert "exception E\n")
;; Walk backwards from the end.
- [nongnu] elpa/tuareg updated (37a6730 -> 24c1a1a), ELPA Syncer, 2021/06/05
- [nongnu] elpa/tuareg 75c1ffc 1/7: Make beginning-of-defun (C-M-a) repeatable, ELPA Syncer, 2021/06/05
- [nongnu] elpa/tuareg b0a2547 2/7: Let declarative `and` begin a defun, ELPA Syncer, 2021/06/05
- [nongnu] elpa/tuareg 0a501f7 5/7: Update list of Emacs versions for CI, ELPA Syncer, 2021/06/05
- [nongnu] elpa/tuareg cd86e73 4/7: Remove key binding for obsolete tuareg-narrow-to-phrase (bug#243), ELPA Syncer, 2021/06/05
- [nongnu] elpa/tuareg a0954c3 6/7: * tuareg-tests.el (tuareg-chained-defun): Fix warnings, ELPA Syncer, 2021/06/05
- [nongnu] elpa/tuareg 24c1a1a 7/7: * tuareg-tests.el (tuareg--lets): New macro,
ELPA Syncer <=
- [nongnu] elpa/tuareg fa87a10 3/7: Put indentation tests in ERT, ELPA Syncer, 2021/06/05