From b31b0ebefef3c9ea378342f624ce18a0eb6d30ae Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Sun, 5 Jul 2020 10:23:46 +0100 Subject: [PATCH] * Rework some test logic for generality * 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 | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/test/src/comp-tests.el b/test/src/comp-tests.el index fd1c513d13a..aefb2f0601a 100644 --- a/test/src/comp-tests.el +++ b/test/src/comp-tests.el @@ -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." -- 2.39.5