File tree Expand file tree Collapse file tree 5 files changed +18
-12
lines changed Expand file tree Collapse file tree 5 files changed +18
-12
lines changed Original file line number Diff line number Diff line change 1653
1653
(let [compiler @env/*compiler*]
1654
1654
(binding [*cljs-dep-set* (vary-meta (conj *cljs-dep-set* lib) update-in [:dep-path ] conj lib)]
1655
1655
(assert (every? #(not (contains? *cljs-dep-set* %)) deps)
1656
- (str " Circular dependency detected " (-> *cljs-dep-set* meta :dep-path )))
1656
+ (str " Circular dependency detected, "
1657
+ (apply str (interpose " -> " (conj (-> *cljs-dep-set* meta :dep-path ) lib)))))
1657
1658
(doseq [dep deps]
1658
1659
(when-not (or (not-empty (get-in compiler [::namespaces dep :defs ]))
1659
1660
(contains? (:js-dependency-index compiler) (name dep))
Original file line number Diff line number Diff line change @@ -142,14 +142,19 @@ case."
142
142
{} deps))
143
143
144
144
(defn dependency-order-visit
145
- [state ns-name]
146
- (let [file (get state ns-name)]
147
- (if (or (:visited file) (nil? file))
148
- state
149
- (let [state (assoc-in state [ns-name :visited ] true )
150
- deps (:requires file)
151
- state (reduce dependency-order-visit state deps)]
152
- (assoc state :order (conj (:order state) file))))))
145
+ ([state ns-name]
146
+ (dependency-order-visit state ns-name []))
147
+ ([state ns-name seen]
148
+ (assert (not (some #{ns-name} seen))
149
+ (str " Circular dependency detected, "
150
+ (apply str (interpose " -> " (conj seen ns-name)))))
151
+ (let [file (get state ns-name)]
152
+ (if (or (:visited file) (nil? file))
153
+ state
154
+ (let [state (assoc-in state [ns-name :visited ] true )
155
+ deps (:requires file)
156
+ state (reduce #(dependency-order-visit %1 %2 (conj seen ns-name)) state deps)]
157
+ (assoc state :order (conj (:order state) file)))))))
153
158
154
159
(defn- pack-string [s]
155
160
(if (string? s)
@@ -167,8 +172,8 @@ case."
167
172
[coll]
168
173
(let [state (build-index (map pack-string coll))]
169
174
(map unpack-string
170
- (distinct
171
- (:order (reduce dependency-order-visit (assoc state :order []) (keys state)))))))
175
+ (distinct
176
+ (:order (reduce dependency-order-visit (assoc state :order []) (keys state)))))))
172
177
173
178
174
179
; ; Dependencies
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change 150
150
(let [out-file (io/file " out/main.js" )]
151
151
(.delete out-file)
152
152
(try
153
- (build (inputs " src/test/cljs " )
153
+ (build (inputs " src/test/cljs_build " )
154
154
{:main 'circular-deps.a
155
155
:optimizations :none
156
156
:verbose true
You can’t perform that action at this time.
0 commit comments