Analyzer for JS Clojure, tuned for consumption by an optional type checker.
Latest stable release is 0.7.2.
deps.edn JAR dependency information:
org.clojure.typed/analyzer.js {:mvn/version "0.7.2"}
deps.edn Git dependency information:
- Note: use
clj -Sresolve
to resolve the:tag
to a:sha
org.clojure.typed/analyzer.js {:git/url "https://github.com/clojure/core.typed"
:deps/root "typed/analyzer.js"
:tag "0.7.2"}
Leiningen dependency information:
[org.clojure.typed/analyzer.js "0.7.2"]
Maven dependency information:
<dependency>
<groupId>org.clojure</groupId>
<artifactId>core.typed.analyzer.js</artifactId>
<version>0.7.2</version>
</dependency>
core.typed.analyzer.js is a heavily modified variant of tools.analyzer. If you're familiar with the latter, here's what this library does differently.
- Adds an
:unanalyzed
AST node that just holds a:form
and:env
. - Forms are analyzed lazily, with
:unanalyzed
nodes being used for immediate children. :unanalyzed
nodes support a:clojure.core.typed.analyzer/config
entry which will be associated onto whatever node it becomes when analyzed.clojure.tools.analyzer.env
is not used.resolve-{sym,ns}
are now dynamic variables that are implemented for each platform.run-passes
only supports a single passuniquify-locals
is a default pass that is compatible with:unanalyzed
nodes- Gilardi scenario can be (carefully) managed (see
clojure.core.typed.analyzer.jvm.gilardi-test
in JVM implementation for a type system example)
Copyright © Ambrose Bonnaire-Sergeant, Rich Hickey & contributors.
Licensed under the EPL (see the file epl-v10.html).
Copyright © Nicola Mometto, Rich Hickey & contributors.
Licensed under the EPL (see the file epl-v10.html).