Welcome! Please see the About page for a little more info on how this works.

0 votes
in ClojureScript by
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)

1 Answer

0 votes
by
Reference: https://clojure.atlassian.net/browse/CLJS-2343 (reported by mfikes)
...