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)))