If you have this code,
(ns foo.core
(:require [cljs.test])
(:require [clojure.string]))
it will trigger the "Only one :require form is allowed per namespace definition" diagnostic.
But this diagnostic is bypassed if you use inline macro spec sugar:
(ns foo.core
(:require [cljs.test :refer-macros [deftest]])
(:require [clojure.string]))
This causes the compiler to derail with this:
clojure.lang.ExceptionInfo: Only :as, :refer and :rename options supported in :require / :require-macros; offending spec: [cljs.test :refer-macros [deftest]] at line 1 <cljs repl> {:file "<cljs repl>", :line 1, :column 1, :root-source-info {:source-type :fragment, :source-form (ns foo.core (:require [cljs.test :refer-macros [deftest]]) (:require [clojure.string]))}, :tag :cljs/analysis-error}
at clojure.core$ex_info.invokeStatic(core.clj:4617)
at cljs.analyzer$error.invokeStatic(analyzer.cljc:693)
at cljs.analyzer$error.invoke(analyzer.cljc:693)
at cljs.analyzer$error.invokeStatic(analyzer.cljc:695)
at cljs.analyzer$basic_validate_ns_spec.invokeStatic(analyzer.cljc:2256)
at cljs.analyzer$parse_require_spec.invokeStatic(analyzer.cljc:2344)
at cljs.analyzer$parse_require_spec.invoke(analyzer.cljc:2343)
at clojure.lang.AFn.applyToHelper(AFn.java:171)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.core$apply.invokeStatic(core.clj:652)
at clojure.core$partial$fn__4765.doInvoke(core.clj:2534)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$map$fn__4785.invoke(core.clj:2644)
at clojure.lang.LazySeq.sval(LazySeq.java:40)
at clojure.lang.LazySeq.seq(LazySeq.java:49)
at clojure.lang.Cons.next(Cons.java:39)
at clojure.lang.RT.boundedLength(RT.java:1749)
at clojure.lang.RestFn.applyTo(RestFn.java:130)
at clojure.core$apply.invokeStatic(core.clj:650)
at cljs.analyzer$fn__2052$fn__2062.invoke(analyzer.cljc:2622)
at clojure.core.protocols$fn__6755.invokeStatic(protocols.clj:167)
at clojure.core.protocols$fn__6755.invoke(protocols.clj:124)
at clojure.core.protocols$fn__6710$G__6705__6719.invoke(protocols.clj:19)
at clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
at clojure.core.protocols$fn__6738.invokeStatic(protocols.clj:75)
at clojure.core.protocols$fn__6738.invoke(protocols.clj:75)
at clojure.core.protocols$fn__6684$G__6679__6697.invoke(protocols.clj:13)
at clojure.core$reduce.invokeStatic(core.clj:6545)
at cljs.analyzer$fn__2052.invokeStatic(analyzer.cljc:2575)
at cljs.analyzer$fn__2052.invoke(analyzer.cljc:2556)
at clojure.lang.MultiFn.invoke(MultiFn.java:251)
at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:3333)
at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:3336)
at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:3361)
at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:3530)
at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:3577)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:3603)
at cljs.repl$evaluate_form$__GT_ast__6169.invoke(repl.cljc:471)
at cljs.repl$evaluate_form.invokeStatic(repl.cljc:472)
at cljs.repl$eval_cljs.invokeStatic(repl.cljc:631)
at cljs.repl$eval_cljs.invoke(repl.cljc:618)
at cljs.repl$repl_STAR_$read_eval_print__6300.invoke(repl.cljc:880)
at cljs.repl$repl_STAR_$fn__6306$fn__6315.invoke(repl.cljc:922)
at cljs.repl$repl_STAR_$fn__6306.invoke(repl.cljc:921)
at cljs.compiler$with_core_cljs.invokeStatic(compiler.cljc:1252)
at cljs.repl$repl_STAR_.invokeStatic(repl.cljc:882)
at cljs.repl$repl.invokeStatic(repl.cljc:1001)
at cljs.repl$repl.doInvoke(repl.cljc:933)
at clojure.lang.RestFn.invoke(RestFn.java:410)
at cljs.repl.node$_main.invokeStatic(node.clj:234)
at cljs.repl.node$_main.invoke(node.clj:233)
at clojure.lang.Var.invoke(Var.java:375)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.Var.applyTo(Var.java:700)
at clojure.core$apply.invokeStatic(core.clj:646)
at clojure.main$main_opt.invokeStatic(main.clj:314)
at clojure.main$main_opt.invoke(main.clj:310)
at clojure.main$main.invokeStatic(main.clj:421)
at clojure.main$main.doInvoke(main.clj:384)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:383)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.Var.applyTo(Var.java:700)
at clojure.main.main(main.java:37)