]> git.eshelyaron.com Git - emacs.git/commitdiff
* Rework some test logic for generality
authorAndrea Corallo <akrl@sdf.org>
Sun, 5 Jul 2020 09:23:46 +0000 (10:23 +0100)
committerAndrea Corallo <akrl@sdf.org>
Wed, 8 Jul 2020 16:29:24 +0000 (17:29 +0100)
* test/src/comp-tests.el (comp-tests-make-insn-checker): New
function splitting logic from `comp-tests-tco-checker' to have it
more general.
(comp-tests-tco-checker): Make use of
`comp-tests-make-insn-checker'.

test/src/comp-tests.el

index fd1c513d13ad2b85805acc296b7893a45425c091..aefb2f0601a6fa2f0be1e870f0060f4763b9c995 100644 (file)
@@ -603,19 +603,28 @@ https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-03/msg00914.html."
               'comment)
     (comp-tests-mentioned-p-1 x insn)))
 
-(defun comp-tests-tco-checker (_)
-  "Check that inside `comp-tests-tco-f' we have no recursion."
+(defun comp-tests-make-insn-checker (func-name checker)
+  "Apply CHECKER to each insn in FUNC-NAME.
+CHECKER should always return nil to have a pass."
   (should-not
    (cl-loop
     named checker-loop
-    with func-name = (comp-c-func-name 'comp-tests-tco-f "F" t)
-    with f = (gethash func-name (comp-ctxt-funcs-h comp-ctxt))
+    with func-c-name = (comp-c-func-name func-name "F" t)
+    with f = (gethash func-c-name (comp-ctxt-funcs-h comp-ctxt))
     for bb being each hash-value of (comp-func-blocks f)
     do (cl-loop
         for insn in (comp-block-insns bb)
-        when (or (comp-tests-mentioned-p 'comp-tests-tco-f insn)
-                 (comp-tests-mentioned-p func-name insn))
-        do (cl-return-from checker-loop 'mentioned)))))
+        when (funcall checker insn)
+          do (cl-return-from checker-loop 'mentioned)))))
+
+(defun comp-tests-tco-checker (_)
+  "Check that inside `comp-tests-tco-f' we have no recursion."
+  (comp-tests-make-insn-checker
+   'comp-tests-tco-f
+   (lambda (insn)
+     (or (comp-tests-mentioned-p 'comp-tests-tco-f insn)
+         (comp-tests-mentioned-p (comp-c-func-name 'comp-tests-tco-f "F" t)
+                                 insn)))))
 
 (ert-deftest comp-tests-tco ()
   "Check for tail recursion elimination."