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 16531653 (let [compiler @env/*compiler*]
16541654 (binding [*cljs-dep-set* (vary-meta (conj *cljs-dep-set* lib) update-in [:dep-path ] conj lib)]
16551655 (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)))))
16571658 (doseq [dep deps]
16581659 (when-not (or (not-empty (get-in compiler [::namespaces dep :defs ]))
16591660 (contains? (:js-dependency-index compiler) (name dep))
Original file line number Diff line number Diff line change @@ -142,14 +142,19 @@ case."
142142 {} deps))
143143
144144(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)))))))
153158
154159(defn- pack-string [s]
155160 (if (string? s)
@@ -167,8 +172,8 @@ case."
167172 [coll]
168173 (let [state (build-index (map pack-string coll))]
169174 (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)))))))
172177
173178
174179; ; Dependencies
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change 150150 (let [out-file (io/file " out/main.js" )]
151151 (.delete out-file)
152152 (try
153- (build (inputs " src/test/cljs " )
153+ (build (inputs " src/test/cljs_build " )
154154 {:main 'circular-deps.a
155155 :optimizations :none
156156 :verbose true
You can’t perform that action at this time.
0 commit comments