Skip to content

Latest commit

 

History

History
70 lines (47 loc) · 2.33 KB

File metadata and controls

70 lines (47 loc) · 2.33 KB

core.typed.analyzer.jvm

Analyzer for JVM Clojure, tuned for consumption by an optional type checker.

Releases and Dependency Information

Latest stable release is 1.0.1.

deps.edn JAR dependency information:

  org.clojure.typed/analyzer.jvm {:mvn/version "1.0.1"}

deps.edn Git dependency information:

  • Note: use clj -Sresolve to resolve the :tag to a :sha
  org.clojure.typed/analyzer.jvm {:git/url "https://github.com/clojure/core.typed"
                                  :deps/root "typed/analyzer.jvm"
                                  :tag "1.0.1"}

Leiningen dependency information:

[org.clojure.typed/analyzer.jvm "1.0.1"]

Maven dependency information:

<dependency>
  <groupId>org.clojure</groupId>
  <artifactId>core.typed.analyzer.jvm</artifactId>
  <version>1.0.1</version>
</dependency>

Differences from tools.analyzer.jvm

core.typed.analyzer.jvm is a heavily modified variant of tools.analyzer.jvm. 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 pass
  • uniquify-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 for a type system example)

License

Copyright © Ambrose Bonnaire-Sergeant, Rich Hickey & contributors.

Licensed under the EPL (see the file epl-v10.html).

tools.analyzer.jvm

Copyright © Nicola Mometto, Rich Hickey & contributors.

Licensed under the EPL (see the file epl-v10.html).