That is what I figured/suspected but wasn't sure. Thanks for filing those
pull requests so quickly!

Alan


On Fri, Aug 19, 2016 at 10:32 PM, Alex Miller <a...@puredanger.com> wrote:

> system also depends on the latest released version of monger, which has an
> invalid defn in it (:or [ ] instead of :or { }) in monger.core. afaict,
> this problem has been fixed in master of monger, but no new version is
> available yet.
>
>
> On Saturday, August 20, 2016 at 12:15:08 AM UTC-5, Alex Miller wrote:
>>
>> Those are bugs in system. When you see "(system.repl (require
>> [com.stuartsierra.component :as component] ..." those are the arguments to
>> the ns form, so the "system.repl" is the namespace name. You cut out the
>> stack trace, but I'd expect the top frame to be in that ns.
>>
>> PRs filed at https://github.com/danielsz/system/pull/93 and
>> https://github.com/danielsz/system/pull/94 (found two problems)
>>
>> All Clojure code is compiled. Some is compiled early (during AOT) but
>> most is compiled late (during load). At the point where you loaded these
>> namespaces, they were compiled to be invoked and you triggered the errors.
>>
>> Alex
>>
>> On Saturday, August 20, 2016 at 12:01:55 AM UTC-5, Alan Moore wrote:
>>>
>>> All,
>>>
>>> Is anyone else experiencing problems using danielz/system and/or
>>> stuartsierra/component? I'm getting the following:
>>>
>>> Caused by: java.lang.IllegalArgumentException: Call to clojure.core/ns
>>> did not conform to spec:
>>> In: [1] val: ((require [com.stuartsierra.component :as component]
>>> [clojure.tools.namespace.track :as track] [system.reload :as reload]
>>> [clojure.stacktrace :as st] [io.aviso.ansi :refer [bold-red bold-yellow]]))
>>> fails at: [:args] predicate: (cat :docstring (? string?) :attr-map (? map?)
>>> :clauses :clojure.core.specs/ns-clauses),  Extra input
>>> :clojure.spec/args  (system.repl (require [com.stuartsierra.component
>>> :as component] [clojure.tools.namespace.track :as track] [system.reload :as
>>> reload] [clojure.stacktrace :as st] [io.aviso.ansi :refer [bold-red
>>> bold-yellow]]))
>>>
>>> I noticed Alex's PR for aviso but I'm not using it explicitly - it must
>>> be coming in transiently but I don't think that is the problem:
>>>
>>> I can see the use of (require ...) in the implicated ns-form, here:
>>>
>>> (system.repl (require [com.stuartsierra.component :as component] ...
>>>
>>> but I searched my project for any "(require" and didn't find any.
>>>
>>> There must be some macro or namespace magic happening in either of those
>>> two libraries. I've been searching them for any use of (require ...) vs
>>> (:require ...) and only found a couple in danielz/system, here:
>>>
>>> src/system/reload.clj
>>> src/system/repl.clj
>>>
>>> but I'm not exactly sure how those would cause my error. The second one
>>> looks like it is related.
>>>
>>> Alex - does a previously compiled library, like system, pulled from
>>> clojars uses "(require" be subject to the spec conformance? How much of the
>>> ns-form is resolved at compile time and how much happens at runtime?
>>>
>>> Clearly I've not done my deep-dive homework on that form (yet) and how
>>> it works... I know those two libraries do a bit of namespace manipulation
>>> to deal with reloading repls and whatnot so it very well could be something
>>> they are doing that is beyond my current understanding and pay grade.
>>>
>>> Alan
>>>
>>>
>>> On Friday, August 19, 2016 at 11:35:31 AM UTC-7, Alex Miller wrote:
>>>>
>>>> One thing to note is that the new specs for clojure.core means that
>>>> there is a reasonable amount of (broken) code in the wild that now does not
>>>> compile.
>>>>
>>>> I have filed PRs in a number of commonly used projects and while those
>>>> were all merged, most have not yet been released into new versions yet. Any
>>>> project that uses any of those projects via dependencies will also have
>>>> issues. So, expect to see some breakage if using the latest alpha. In
>>>> particular, ClojureScript itself had a bad ns declaration through version
>>>> 1.9.93 so anything not on a fresh CLJS will likely see that.
>>>>
>>>> The three most common things I saw were:
>>>>
>>>> 1. (ns ... (require ...) (import ...) )  instead of (ns ... (:require
>>>> ...) (:import ...) )
>>>>
>>>> 2. (fn a.b [] ...) - fully-qualified symbol names in fn (these are
>>>> pretty much always the result of a sloppy macro that expands to fn)
>>>>
>>>> 3. (let [{ ... :or {:a 1}} {}] ... ) - :or keys that are not simple
>>>> symbols. There were some accidental cases where this did something for
>>>> fully-qualified keyword keys in the past, but those were not intended and
>>>> are no longer accepted as of Clojure 1.9.0-alpha8. All of the cases I found
>>>> were actually typos though where the keyword was used instead of the 
>>>> symbol.
>>>>
>>>>
>>>>
>>>>
>>>> On Friday, August 19, 2016 at 1:15:06 PM UTC-5, Alex Miller wrote:
>>>>>
>>>>> Clojure 1.9.0-alpha11 is now available.
>>>>>
>>>>> Try it via
>>>>>
>>>>> - Download: https://repo1.maven.org/maven2/org/clojure/clojure/1.9.0-
>>>>> alpha11
>>>>> - Leiningen: [org.clojure/clojure "1.9.0-alpha11"]
>>>>>
>>>>> 1.9.0-alpha11 includes the following changes since 1.9.0-alpha10:
>>>>>
>>>>> Clojure now has specs for the following clojure.core macros: let,
>>>>> if-let, when-let, defn, defn-, fn, and ns. Because macro specs are checked
>>>>> during macroexpansion invalid syntax in these macros will now fail at
>>>>> compile time whereas some errors were caught at runtime and some were not
>>>>> caught at all.
>>>>>
>>>>> - CLJ-1914 - Fixed race condition in concurrent range realization
>>>>> - CLJ-1870 - Fixed reloading a defmulti removes metadata on the var
>>>>> - CLJ-1744 - Clear unused locals, which can prevent memory leaks in
>>>>> some cases
>>>>> - CLJ-1423 - Allow vars to be invoked with infinite arglists (also,
>>>>> faster)
>>>>> - CLJ-1993 - Added *print-namespace-maps* dynamic var that controls
>>>>> whether to use namespace map syntax for maps with keys from the same
>>>>> namespace. The default is false, but standard REPL bindings set this to
>>>>> true.
>>>>> - CLJ-1985 - Fixed with-gen of conformer losing unform fn
>>>>> - Fixed clojure.spec.test/check to skip spec'ed macros
>>>>> - Fixed regression from 1.9.0-alpha8 where type hints within
>>>>> destructuring were lost
>>>>> - Fixed clojure.spec/merge docstring to note merge doesn't flow
>>>>> conformed values
>>>>> - Fixed regex ops to use gen overrides if they are used
>>>>>
>>>> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "Clojure" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/
> topic/clojure/_slHTn-Ej1Y/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>



-- 
-- 
*"Whatever you can do, or dream you can do, begin it. Boldness has genius,
power, and magic in it. Begin it now."* - *Goethe*

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to