From 7bf8ce571ffd38f3f24c51744febccb3ab5ada45 Mon Sep 17 00:00:00 2001 From: Eshel Yaron Date: Wed, 11 Jun 2025 20:58:22 +0200 Subject: [PATCH] scope.el: Handle oclosure-lambda --- lisp/emacs-lisp/scope.el | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lisp/emacs-lisp/scope.el b/lisp/emacs-lisp/scope.el index fb9f2557597..5595f2dc48c 100644 --- a/lisp/emacs-lisp/scope.el +++ b/lisp/emacs-lisp/scope.el @@ -1868,6 +1868,28 @@ a (possibly empty) list of safe macros.") (scope-define-macro-analyzer lambda (l args &rest body) (scope-lambda l args body)) +(defun scope-oclosure-lambda-1 (local0 local bindings args body) + (if bindings + (let* ((binding (ensure-list (car bindings))) + (sym (car binding)) + (bare (scope-sym-bare sym)) + (len (length (symbol-name bare))) + (beg (scope-sym-pos sym))) + (when beg (scope-report 'variable beg len beg)) + (scope-1 local0 (cadr binding)) + (scope-oclosure-lambda-1 + local0 (if bare (scope-local-new bare beg local) local) + (cdr bindings) args body)) + (scope-lambda local args body))) + +(defun scope-oclosure-lambda (local spec args body) + (let ((type (car-safe spec))) + (scope-report-s type 'oclosure)) + (scope-oclosure-lambda-1 local local (cdr-safe spec) args body)) + +(scope-define-macro-analyzer oclosure-lambda (l &optional spec args &rest body) + (scope-oclosure-lambda l spec args body)) + (scope-define-macro-analyzer cl-loop (l &rest clauses) (scope-loop l clauses)) -- 2.39.5