branch: externals/dash
commit d3a84021dbe48dba63b52ef7665651e0cf02e915
Author: Basil L. Contovounesios <[email protected]>
Commit: Basil L. Contovounesios <[email protected]>

    No longer mark -cycle as pure
    
    See https://bugs.gnu.org/80456.  This is similar but not identical
    to #405 and https://bugs.gnu.org/64127 in that it involves a
    problematic compile-time constant produced from a pure function:
    
      (--map (-take 5 it) (-split-at 5 (-cycle '(1 2 3))))
      =>
      dev/examples.el: Error: List contains a loop: (3 1 2 3 1 . #2)
    
    * dash.el (-cycle): No longer mark as pure.
    * NEWS.md: Announce change.
---
 NEWS.md | 9 ++++++++-
 dash.el | 2 +-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/NEWS.md b/NEWS.md
index 9375c5cda7..0f5d12d3a5 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -6,6 +6,13 @@ See the end of the file for license conditions.
 
 ## Change log
 
+### From 2.20.0 to ?.?.?
+
+#### Fixes
+
+- The `-cycle` function is no longer marked as `pure`, as it returns a
+  copy of its argument (#405).
+
 ### From 2.19.1 to 2.20.0
 
 #### Deprecations
@@ -42,7 +49,7 @@ See the end of the file for license conditions.
   immutable constant, and thus unsafe to modify destructively.  The
   functions in question are: `-clone`, `-cons*`, `-drop-last`,
   `-interleave`, `-interpose`, `-iota`, `-non-nil`, `-repeat`,
-  `-slice`, `-snoc`, `-split-at`, `-take`, `-take-last`.
+  `-slice`, `-snoc`, `-split-at`, `-take`, `-take-last` (#405).
 
 #### New features
 
diff --git a/dash.el b/dash.el
index ea7fece5a5..41d1e53596 100644
--- a/dash.el
+++ b/dash.el
@@ -1893,7 +1893,7 @@ LISTS, it is generally recommended to use `-unzip-lists' 
instead."
   "Return an infinite circular copy of LIST.
 The returned list cycles through the elements of LIST and repeats
 from the beginning."
-  (declare (pure t) (side-effect-free t))
+  (declare (side-effect-free t))
   ;; Also works with sequences that aren't lists.
   (let ((newlist (append list ())))
     (nconc newlist newlist)))

Reply via email to