diff --git a/src/clj/com/rpl/specter/impl.cljc b/src/clj/com/rpl/specter/impl.cljc index 7a21b78..cc0afe9 100644 --- a/src/clj/com/rpl/specter/impl.cljc +++ b/src/clj/com/rpl/specter/impl.cljc @@ -551,10 +551,12 @@ (let [sorted (sort-by (comp keyfn second) comparator (map-indexed vector structure)) indices (map first sorted) result (next-fn (map second sorted)) - unsorted (sort-by first compare (map vector (concat indices (repeat ##Inf)) result))] - (into (empty structure) - (map second) - unsorted))) + unsorted (sort-by first compare (map vector indices result))] + (if (seq? structure) + (doall (map second unsorted)) + (into (empty structure) + (map second) + unsorted)))) (defn- matching-indices [aseq p] (keep-indexed (fn [i e] (if (p e) i)) aseq)) diff --git a/test/com/rpl/specter/core_test.cljc b/test/com/rpl/specter/core_test.cljc index 4adc0b0..957260c 100644 --- a/test/com/rpl/specter/core_test.cljc +++ b/test/com/rpl/specter/core_test.cljc @@ -1709,7 +1709,8 @@ (is (= (sort initial-list) (select-one s/SORTED initial-list))) (is (= [2 1 3 4] (transform s/SORTED reverse initial-list))) (is (= [3 2 1] (transform s/SORTED butlast initial-list))) - (is (= [3 5 2 1] (setval [s/SORTED s/LAST] 5 initial-list)))) + (is (= [3 5 2 1] (setval [s/SORTED s/LAST] 5 initial-list))) + (is (= (list 1 2 3 4 5) (transform [s/SORTED s/ALL] inc (range 5))))) (testing "the sorted navigator with comparator" (let [reverse-comparator (comp - compare)] (is (= (sort reverse-comparator initial-list)