[ANN] Automatic specs + core.typed release

86 views
Skip to first unread message

Ambrose Bonnaire-Sergeant

unread,
Aug 31, 2016, 5:17:09 AM8/31/16
to clojure, core.typed
Hi,

The latest core.typed release has support for generating
clojure.spec specs from unit tests.

[org.clojure/core.typed "0.3.25"]

...
; for very recent releases
:repositories {"sonatype-oss-public" "https://oss.sonatype.org/content/groups/public/"}

Here's an example of the kind of specs it can generate
from even minimal tests.

There is a demo repository if you want to test this feature out.

We now use a modified version of Compiler.java as an
analyzer, so there are nice noticeable speedups for
compilation.

Feedback welcome!


Thanks,
Ambrose

Jeroen van Dijk

unread,
Aug 31, 2016, 7:31:56 AM8/31/16
to clojure-c...@googlegroups.com
Great work! Thank you!

Jeroen

Eelke van Foeken

unread,
Aug 31, 2016, 8:33:33 AM8/31/16
to core.typed, clo...@googlegroups.com
Hi,

Great feature! I am trying the demo project. I am following the steps from the first example, but when I get to (t/runtime-infer) I get the following error:
AssertionError Assert failed: No namespace form found
ns-form  clojure.core.typed.runtime-infer/ns-end-line (runtime_infer.clj:2566)

Am I overlooking something?

Best regards, 
Eelke van Foeken


Op woensdag 31 augustus 2016 11:17:09 UTC+2 schreef Ambrose Bonnaire-Sergeant:

Ambrose Bonnaire-Sergeant

unread,
Aug 31, 2016, 8:57:17 AM8/31/16
to core.typed, clojure
Hi Eelke,

I can't reproduce, did you just clone the project and run the steps?

Can you post your REPL session?

Thanks,
Ambrose

Eelke van Foeken

unread,
Aug 31, 2016, 9:09:26 AM8/31/16
to core.typed, clojure
Hi,

Yes I did exactly that. clone the repo. lein repl and then int the repl:

$ lein repl
Initializing core.typed ...
WARNING: boolean? already refers to: #'clojure.core/boolean? in namespace: clojure.tools.analyzer.utils, being replaced by: #'clojure.tools.analyzer.utils/boolean?
WARNING: boolean? already refers to: #'clojure.core/boolean? in namespace: clojure.tools.analyzer, being replaced by: #'clojure.tools.analyzer.utils/boolean?
Building core.typed base environments ...
Finished building base environments
"Elapsed time: 14919.589655 msecs"
core.typed initialized.
nREPL server started on port 57873 on host 127.0.0.1 - nrepl://127.0.0.1:57873
REPL-y 0.3.7, nREPL 0.2.12
Clojure 1.9.0-alpha11
Java HotSpot(TM) 64-Bit Server VM 1.8.0_102-b14
    Docs: (doc function-name-here)
          (find-doc "part-of-name-here")
  Source: (source function-name-here)
 Javadoc: (javadoc java-object-or-class-here)
    Exit: Control+D or (exit) or (quit)
 Results: Stored in vars *1, *2, *3, an exception in *e

user=> (require 'runtime-infer-demo.core-test)
nil
user=> (in-ns 'runtime-infer-demo.core-test)
#object[clojure.lang.Namespace 0x139b884e "runtime-infer-demo.core-test"]
runtime-infer-demo.core-test=> (run-tests)

Testing runtime-infer-demo.core-test

Ran 1 tests containing 2 assertions.
0 failures, 0 errors.
{:test 1, :pass 2, :fail 0, :error 0, :type :summary}
runtime-infer-demo.core-test=>  (in-ns 'runtime-infer-demo.core)
#object[clojure.lang.Namespace 0x5aee3dae "runtime-infer-demo.core"]
runtime-infer-demo.core=> (t/runtime-infer)

AssertionError Assert failed: No namespace form found
ns-form  clojure.core.typed.runtime-infer/ns-end-line (runtime_infer.clj:2566)
runtime-infer-demo.core=>

Thanks for helping out,
Eelke

Op wo 31 aug. 2016 om 14:57 schreef Ambrose Bonnaire-Sergeant <abonnair...@gmail.com>:

Eelke van Foeken

unread,
Aug 31, 2016, 9:13:54 AM8/31/16
to core.typed, clo...@googlegroups.com
AssertionError Assert failed: No namespace form found
ns-form  clojure.core.typed.runtime-infer/ns-end-line (runtime_infer.clj:2566)
runtime-infer-demo.core=>

Thanks for helping out,
Eelke

Op woensdag 31 augustus 2016 14:57:17 UTC+2 schreef Ambrose Bonnaire-Sergeant:

Ambrose Bonnaire-Sergeant

unread,
Aug 31, 2016, 10:09:17 AM8/31/16
to core.typed, clojure
I'm out of ideas.

Can you send your `lein version` and `lein deps :tree`
from the repo directory?

Thanks,
Ambrose

Eelke van Foeken

unread,
Aug 31, 2016, 10:16:29 AM8/31/16
to core.typed, clojure
Hey,

Apologies if I am wasting your time, I am just a beginner in Clojure, so I might be overlooking some basic things.

Hereby

$lein version
Leiningen 2.6.1 on Java 1.8.0_102 Java HotSpot(TM) 64-Bit Server VM
$ lein deps :tree
Possibly confusing dependencies found:
[cider/cider-nrepl "0.8.1"] -> [org.clojure/java.classpath "0.2.0" :exclusions [org.clojure/clojure]]
 overrides
[org.clojure/core.typed "0.3.25"] -> [org.clojure/tools.namespace "0.3.0-alpha3"] -> [org.clojure/java.classpath "0.2.3"]

Consider using these exclusions:
[org.clojure/core.typed "0.3.25" :exclusions [org.clojure/java.classpath]]

[cider/cider-nrepl "0.8.1"] -> [org.clojure/tools.namespace "0.2.5" :exclusions [org.clojure/clojure]]
 overrides
[org.clojure/core.typed "0.3.25"] -> [org.clojure/tools.namespace "0.3.0-alpha3"]

Consider using these exclusions:
[org.clojure/core.typed "0.3.25" :exclusions [org.clojure/tools.namespace]]

 [cider/cider-nrepl "0.8.1"]
   [cljs-tooling "0.1.3" :exclusions [[org.clojure/clojure]]]
   [compliment "0.2.0" :exclusions [[org.clojure/clojure]]]
   [org.clojure/java.classpath "0.2.0" :exclusions [[org.clojure/clojure]]]
   [org.clojure/tools.namespace "0.2.5" :exclusions [[org.clojure/clojure]]]
   [org.clojure/tools.trace "0.7.8" :exclusions [[org.clojure/clojure]]]
   [org.tcrawley/dynapath "0.2.3" :exclusions [[org.clojure/clojure]]]
 [clojure-complete "0.2.4" :exclusions [[org.clojure/clojure]]]
 [org.clojure/clojure "1.9.0-alpha11"]
 [org.clojure/core.typed "0.3.25"]
   [org.clojure/core.cache "0.6.4"]
     [org.clojure/data.priority-map "0.0.4"]
   [org.clojure/core.contracts "0.0.6" :exclusions [[org.clojure/clojure]]]
     [org.clojure/core.unify "0.5.7"]
   [org.clojure/core.typed.rt "0.3.25"]
   [org.clojure/math.combinatorics "0.1.3" :exclusions [[org.clojure/clojure]]]
   [org.clojure/tools.analyzer.jvm "0.6.8"]
     [org.clojure/core.memoize "0.5.7"]
     [org.clojure/tools.analyzer "0.6.7"]
     [org.ow2.asm/asm-all "4.2"]
   [org.clojure/tools.reader "1.0.0-beta3"]
 [org.clojure/test.check "0.9.0"]
 [org.clojure/tools.nrepl "0.2.12" :exclusions [[org.clojure/clojure]]]


Op wo 31 aug. 2016 om 16:09 schreef Ambrose Bonnaire-Sergeant <abonnair...@gmail.com>:

Ambrose Bonnaire-Sergeant

unread,
Aug 31, 2016, 10:22:57 AM8/31/16
to core.typed, clojure
Try using cidre-nrepl "0.13.0". It might be in your ~/.lein/profiles.clj file.

Thanks,
Ambrose

Eelke van Foeken

unread,
Aug 31, 2016, 10:33:55 AM8/31/16
to core.typed, clo...@googlegroups.com
That was it!

Thank you.

Op woensdag 31 augustus 2016 16:22:57 UTC+2 schreef Ambrose Bonnaire-Sergeant:

Ambrose Bonnaire-Sergeant

unread,
Aug 31, 2016, 10:34:45 AM8/31/16
to core.typed, clojure
Glad to help!

Ambrose

Ambrose Bonnaire-Sergeant

unread,
Aug 31, 2016, 8:46:25 PM8/31/16
to core.typed
I just release core.typed 0.3.26, which includes AOT files and should
load much quicker.

Thanks,
Ambrose
Reply all
Reply to author
Forward
0 new messages