Skip to content

Commit 1c19c4b

Browse files
committed
CLJS-3481: support :error, :warning, :off modes with :warnings
- matches `:closure-warnings` - simpler path to fail builds w/o custom error handler
1 parent 92e5e07 commit 1c19c4b

2 files changed

Lines changed: 20 additions & 12 deletions

File tree

src/main/clojure/cljs/analyzer.cljc

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -484,12 +484,17 @@
484484
"ambiguous expression " form)))
485485

486486
(defn default-warning-handler [warning-type env extra]
487-
(when (warning-type *cljs-warnings*)
488-
(when-let [s (error-message warning-type extra)]
489-
#?(:clj (binding [*out* *err*]
490-
(println (message env (str "WARNING: " s))))
491-
:cljs (binding [*print-fn* *print-err-fn*]
492-
(println (message env (str "WARNING: " s))))))))
487+
(let [warn-mode (warning-type *cljs-warnings*)]
488+
(when-not (#{false :off} warn-mode)
489+
(when-let [s (error-message warning-type extra)]
490+
(cond
491+
(#{true :warning} warn-mode)
492+
#?(:clj (binding [*out* *err*]
493+
(println (message env (str "WARNING: " s))))
494+
:cljs (binding [*print-fn* *print-err-fn*]
495+
(println (message env (str "WARNING: " s)))))
496+
(= :error warn-mode)
497+
(throw (ex-info s {})))))))
493498

494499
(def ^:dynamic *cljs-warning-handlers*
495500
[default-warning-handler])

src/main/clojure/cljs/closure.clj

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3048,15 +3048,18 @@
30483048
ana/*load-tests* (not= (:load-tests opts) false)
30493049
ana/*cljs-warnings*
30503050
(let [warnings (opts :warnings true)]
3051-
(merge
3052-
ana/*cljs-warnings*
3053-
(if (or (true? warnings)
3054-
(false? warnings))
3051+
(cond
3052+
(map? warnings)
3053+
(merge ana/*cljs-warnings* warnings)
3054+
3055+
;; backwards compatible
3056+
(or (boolean? warnings)
3057+
(keyword? warnings))
3058+
(merge ana/*cljs-warnings*
30553059
(zipmap
30563060
[:unprovided :undeclared-var
30573061
:undeclared-ns :undeclared-ns-form]
3058-
(repeat warnings))
3059-
warnings)))
3062+
(repeat warnings)))))
30603063
ana/*verbose* (:verbose opts)]
30613064
(when (and ana/*verbose* (not (::watch-triggered-build? opts)))
30623065
(util/debug-prn "Options passed to ClojureScript compiler:" (pr-str opts)))

0 commit comments

Comments
 (0)