A hint to a casual reader just trying stuff out: $ lein new hello $ cd hello # added {:user {:plugins [[lein-typed "0.4.2"]]}} to ~/.lein/profiles.clj # added [org.clojure/core.typed "0.4.2"] to project.clj $ lein typed infer-type hello.core CompilerException java.lang.RuntimeException: No such namespace: t, compiling:(hello/core.clj:5:1) clojure.lang.Compiler.analyze (Compiler.java:6688) clojure.lang.Compiler.analyze (Compiler.java:6625) clojure.lang.Compiler$InvokeExpr.parse (Compiler.java:3766) clojure.lang.Compiler.analyzeSeq (Compiler.java:6870) clojure.lang.Compiler.analyze (Compiler.java:6669) clojure.lang.Compiler.analyze (Compiler.java:6625) clojure.lang.Compiler$BodyExpr$Parser.parse (Compiler.java:6001) clojure.lang.Compiler$FnMethod.parse (Compiler.java:5380) clojure.lang.Compiler$FnExpr.parse (Compiler.java:3972) clojure.lang.Compiler.analyzeSeq (Compiler.java:6866) clojure.lang.Compiler.analyze (Compiler.java:6669) clojure.lang.Compiler.eval (Compiler.java:6924) Caused by: RuntimeException No such namespace: t clojure.lang.Util.runtimeException (Util.java:221) clojure.lang.Compiler.resolveIn (Compiler.java:7134) clojure.lang.Compiler.resolve (Compiler.java:7108) clojure.lang.Compiler.analyzeSymbol (Compiler.java:7069) clojure.lang.Compiler.analyze (Compiler.java:6648) clojure.lang.Compiler.analyze (Compiler.java:6625)
You need to: 1. Remove the [org.clojure/clojure "1.8.0"] from project.clj 2. Undo the changes in src/hello/core.clj And then it will work: $ lein typed infer-type hello.core Initializing core.typed ... Building core.typed base environments ... Finished building base environments "Elapsed time: 2829.892198 msecs" core.typed initialized. Refreshing runtime inference Instrumenting def init hello.core/foo in hello.core Testing hello.core-test FAIL in (a-test) (core_test.clj:7) FIXME, I fail. expected: (= 0 1) actual: (not (= 0 1)) Ran 1 tests containing 1 assertions. 1 failures, 0 errors. Inferring types for hello.core ... Aliasing clojure.core.typed as t in hello.core generate-tenv: 1 infer-results finished squash-horizonally Start follow-all end follow-all start remove unreachable aliases end remove unreachable aliases done populating Output annotations to #object[java.net.URL 0x738a39cc file:/tmp/hello/src/hello/core.clj] Finished inference, output written to hello.core 2017-10-13 23:46 GMT+02:00 Ambrose Bonnaire-Sergeant <ilikecan...@gmail.com>: > This is pretty much the extent of my macro heuristics: binding forms are > often the first argument, and it's usually a vector. Also, [& body] > arguments > are common. > > > On Friday, October 13, 2017 at 5:44:07 PM UTC-4, Ambrose Bonnaire-Sergeant > wrote: >> >> Potentially. Actually, it currently instruments and gathers data about >> macros, but doesn't >> output them because I haven't thought of very good heuristics to guess >> specs for common >> macros (in particular heterogeneous/repeating lists and vectors are >> troublesome, I haven't >> tried outputting any spec regex ops). >> >> Thanks, >> Ambrose >> >> On Friday, October 13, 2017 at 3:54:22 PM UTC-4, Colin Fleming wrote: >>> >>> This looks great! Can this be used to infer macro specs based on examples >>> of usage? >>> >>> On 14 October 2017 at 04:30, Ambrose Bonnaire-Sergeant >>> <abonnair...@gmail.com> wrote: >>>> >>>> Hi, >>>> >>>> Happy to announce a new set of tools to automatically >>>> generate types and specs for your projects. >>>> >>>> Dependency information: >>>> 1. core.typed >>>> [org.clojure/core.typed "0.4.2"] >>>> 2. lein-typed >>>> [lein-typed "0.4.2"] >>>> 3. boot-typedclojure >>>> [org.typedclojure/boot-typedclojure "0.1.0"] >>>> >>>> Tutorial: >>>> Here's how to try it out (for Lein projects using clojure.test): >>>> >>>> 1. Add {:user {:plugins [[lein-typed "0.4.2"]]}} to your >>>> ~/.lein/profiles.clj >>>> 2. Add a runtime dependency to [org.clojure/core.typed "0.4.2"] in your >>>> chosen Lein project.clj >>>> 3. To infer specs: Run lein typed infer-spec <insert-ns> >>>> 4. To infer types: Run lein typed infer-type <insert-ns> >>>> >>>> WARNING: This tool rewrites your files. Only try with backed up code. >>>> >>>> Some examples: >>>> clj-time: >>>> - Spec setup + spec results >>>> - Types setup + types results >>>> >>>> cheshire >>>> - Spec setup + spec results >>>> - Types setup + types results >>>> >>>> (Note: use the latest core.typed versions to reproduce on your machines) >>>> >>>> Hints: >>>> This tool instruments your namespace and runs your test suite. This >>>> can be expensive. Try these options: >>>> >>>> Choose lein test selectors (here: [:integration :generative] >>>> selectors) >>>> lein typed infer-spec <insert-ns> :test-selectors "[:integration >>>> :generative]" >>>> >>>> Timeout individual tests (1000ms timeout) >>>> lein typed infer-spec <insert-ns> :test-timeout-ms 1000 >>>> >>>> If annotation generation hangs, try these options: >>>> >>>> Disable recursive type inference >>>> lein typed infer-spec <insert-ns> :infer-opts "{:no-squash-vertically >>>> true}" >>>> >>>> If you see "No such namespace: s", try deleting existing automatically >>>> generated specs/types before regenerating them. (git checkout works well >>>> here) >>>> >>>> >>>> >>>> Reply with your generated specs & types! >>>> >>>> Thanks, >>>> Ambrose >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To post to this group, send email to clo...@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+u...@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+u...@googlegroups.com. >>>> For more options, visit https://groups.google.com/d/optout. >>> >>> > -- > 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. -- 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.