From f0147072a2bce09fb94e0cbed5bb10b4f06dfcf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kochma=C5=84ski?= Date: Thu, 6 Jun 2024 08:10:41 +0200 Subject: [PATCH] loop: barf on nonconformant loop detection The specification says that the simple loop is determined when all forms are compound. Fixes #748. --- src/lsp/loop.lsp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/lsp/loop.lsp b/src/lsp/loop.lsp index 1bdee923e..c06d645ad 100644 --- a/src/lsp/loop.lsp +++ b/src/lsp/loop.lsp @@ -1932,8 +1932,11 @@ Note that this is not a valid ANSI code.")) (defun loop-standard-expansion (keywords-and-forms environment universe) (declare (si::c-local)) - (if (and keywords-and-forms (symbolp (car keywords-and-forms))) - (loop-translate keywords-and-forms environment universe) + (if (some #'atom keywords-and-forms) + (if (symbolp (car keywords-and-forms)) + (loop-translate keywords-and-forms environment universe) + (error "LOOP: The first form ~S is not an extended loop keyword." + (car keywords-and-forms))) (let ((tag (gensym))) `(block nil (tagbody ,tag (progn ,@keywords-and-forms) (go ,tag))))))