This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2018-11-23
Channels
- # beginners (81)
- # boot (1)
- # cider (1)
- # cljs-dev (15)
- # cljsrn (1)
- # clojure (27)
- # clojure-europe (9)
- # clojure-hamburg (2)
- # clojure-italy (6)
- # clojure-nl (6)
- # clojure-spec (10)
- # clojure-uk (33)
- # clojurescript (9)
- # clojurex (5)
- # cursive (14)
- # datomic (21)
- # devcards (2)
- # duct (72)
- # figwheel (1)
- # fulcro (6)
- # kaocha (3)
- # leiningen (5)
- # nrepl (10)
- # off-topic (65)
- # parinfer (12)
- # re-frame (68)
- # reagent (1)
- # reitit (14)
- # shadow-cljs (65)
- # spacemacs (6)
- # sql (4)
- # tools-deps (2)
- # yada (1)
pushed the predicate based inference stuff, narrowed a bit from Mike's original commit
with a couple of other enhancements this could probably lead to removing many of the manual perf oriented type hints in the standard lib
This is getting cool. With master + CLJS-2869 + CLJS-2865, I now get
cljs.user=> (inferred-type (pr-str 1))
string
@dnolen Yes, CLJS-2865 is independent.
And CLJS-2869 is about inferring the correct types when short-circuit is statically known to happen, which may be less important. There may be subtle corner cases where CLJS-2869 helps narrow inference down to the correct type. But I don't have a good handle on how often that happens.
An example where CLJS-2869 helps with cljs.core/dominates
: Without CLJS-2869, you get #{boolean clj-nil}
, but with it, it correctly infers as boolean
.