emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/cl-lib fb8701d 04/10: * cl-lib.el (cl-labels): Demote e


From: Stefan Monnier
Subject: [elpa] externals/cl-lib fb8701d 04/10: * cl-lib.el (cl-labels): Demote error to message and improve it.
Date: Tue, 1 Dec 2020 15:28:43 -0500 (EST)

branch: externals/cl-lib
commit fb8701dbac0942936db661e72573ea0eace97149
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    * cl-lib.el (cl-labels): Demote error to message and improve it.
---
 cl-lib.el | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/cl-lib.el b/cl-lib.el
index e4719fc..0720afe 100644
--- a/cl-lib.el
+++ b/cl-lib.el
@@ -1,10 +1,10 @@
 ;;; cl-lib.el --- Properly prefixed CL functions and macros  -*- coding: utf-8 
-*-
 
-;; Copyright (C) 2012  Free Software Foundation, Inc.
+;; Copyright (C) 2012, 2013  Free Software Foundation, Inc.
 
 ;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
 ;; vcomment: Emacs-24.3's version is 1.0 so this has to stay below.
-;; Version: 0.2
+;; Version: 0.3
 
 ;; This program is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
@@ -309,9 +309,14 @@
 
 (unless (fboundp 'cl-labels)
   (defmacro cl-labels (&rest args)
-    (if (and (boundp 'lexical-binding) lexical-binding)
-        `(labels ,@args)
-      (error "`cl-labels' with dynamic scoping is not implemented"))))
+    (unless (and (boundp 'lexical-binding) lexical-binding)
+      ;; We used to signal an error rather than a message, but in many uses of
+      ;; cl-labels, the value of lexical-binding doesn't actually matter.
+      ;; More importantly, the value of `lexical-binding' here is unreliable
+      ;; (it does not necessarily reflect faithfully whether the output of this
+      ;; macro will be interpreted as lexically bound code or not).
+      (message "This `cl-labels' requires `lexical-binding' to be non-nil"))
+    `(labels ,@args)))
 
 (provide 'cl-lib)
 ;;; cl-lib.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]