Thanks Bost.
To workaround the need to delete annotations, manually add these requires
to your ns form.
You can choose whatever alias name you want.
(:require [clojure.core.typed :as t]
[clojure.spec.alpha :as s])
Thanks,
Ambrose
On Friday, October 13, 2017 at 6:56:34 PM UTC-4, Bost wrote:
>
> 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 <[email protected]
> <javascript:>>:
> > 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
> >>> <[email protected]> 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 [email protected]
> >>>> Note that posts from new members are moderated - please be patient
> with
> >>>> your first post.
> >>>> To unsubscribe from this group, send email to
> >>>> [email protected]
> >>>> 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 [email protected].
> >>>> 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 [email protected]
> <javascript:>
> > Note that posts from new members are moderated - please be patient with
> your
> > first post.
> > To unsubscribe from this group, send email to
> > [email protected] <javascript:>
> > 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 [email protected] <javascript:>.
> > 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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.