and fully automated maven release script to clojars. I'm in heaven. README even bumps versions https://github.com/typedclojure/typedclojure/commits/master
I'm looking forward to copy that flow π
thanks for the pointers!
regarding clj-kondo, i had also added datalog "type checking" to it, which was fairly straightforward: https://lambdaforge.io/2019/11/08/clj-kondo-datalog-support.html
there has been done a lot of work to plug it into all kinds of clojure tooling, which would be very valuable to have for core.typed as well, i think. one problem i had with core.typed was to get it to run in this linting mode, i tried a few times with eastwood.
i planned to collect some type system related information with @borkdude here, but have not yet found the time: https://github.com/borkdude/clj-kondo/wiki
@ambrosebs what is your opinion on linear types? rust seems to get a lot of attention at the moment and i see the value of automatically tracking external resources (not necessarily GC collected memory) with the type system
recent addition to clj-kondo: return type inference:
$ clj-kondo --lint - <<< '(defn foo [] :foo) (inc (foo))'
<stdin>:1:25: error: Expected: number, received: keyword.
linting took 9ms, errors: 1, warnings: 0
@borkdude nice! what's the idea behind determining the return type? do you do it in advance or wait until you know the type of args?
@ambrosebs clj-kondo will try to figure out the return type of a function while it's going through the AST. if that function is then used and the expected argument type does not match with what the function returns, clj-kondo will emit a warning
Are you planning to flow these types at all, or is that out of scope just now? e.g.
$ clj-kondo --lint - <<< '(defn foo [] :foo) (let [a (foo)] (inc a))'
linting took 10ms, errors: 0, warnings: 0
This is great btw; I had no idea kondo was doing this stuff yet⦠just upgraded!
That is supposed to work, but I'm not sure why it doesn't in this case. I'll make an issue for it.
@rickmoynihan Fixed it. Are you running linux or mac?
It was a minor glitch.
Anyway here is the mac binary: https://8777-176829714-gh.circle-artifacts.com/0/release/clj-kondo-2020.02.16-SNAPSHOT-macos-amd64.zip And here's the linux binary: https://8776-176829714-gh.circle-artifacts.com/0/release/clj-kondo-2020.02.16-SNAPSHOT-linux-amd64.zip
mac
wow that was quick
can I brew upgrade?
hmm looks like I canβt
Itβs not released yet.
ahh no worries π
Released.
Upgraded:
$ clj-kondo --lint - <<< '(defn foo [] :foo) (let [a (foo)] (inc a))'
<stdin>:1:40: error: Expected: number, received: keyword.
linting took 47ms, errors: 1, warnings: 0
:thumbsup:typedclojure 1.0.7 is out, just some more coordinate changes https://github.com/typedclojure/typedclojure/blob/master/UPGRADING.md#from-typedclojure-103-to-typedclojure-107
1.0.4-1.0.6 don't exist