Skip to content

Commit 2f6bda8

Browse files
committed
memoize circular dependency check
1 parent 7a5a65c commit 2f6bda8

1 file changed

Lines changed: 4 additions & 3 deletions

File tree

src/main/clojure/cljs/module_graph.cljc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@
111111
provides))
112112
{} inputs))
113113

114-
(defn validate-inputs*
114+
(defn ^:dynamic validate-inputs*
115115
[indexed path seen]
116116
(let [ns (peek path)
117117
{:keys [requires]} (get indexed ns)]
@@ -130,8 +130,9 @@
130130
(validate-inputs inputs [] #{}))
131131
([inputs path seen]
132132
(let [indexed (index-inputs inputs)]
133-
(doseq [[ns] (seq indexed)]
134-
(validate-inputs* indexed (conj path ns) (conj seen ns))))))
133+
(binding [validate-inputs* (memoize validate-inputs*)]
134+
(doseq [[ns] (seq indexed)]
135+
(validate-inputs* indexed (conj path ns) (conj seen ns)))))))
135136

136137
(defn ^:dynamic deps-for
137138
"Return all dependencies for x in a graph using deps-key."

0 commit comments

Comments
 (0)