Skip to content

Latest commit

 

History

History
76 lines (51 loc) · 2.47 KB

File metadata and controls

76 lines (51 loc) · 2.47 KB

{% do-not-edit-xml-comment %}

typed.cljs.analyzer

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

Releases and Dependency Information

Latest stable release is 1.0.9.

deps.edn JAR dependency information:

  {◊typedclojure-group-id◊}/typed.cljs.analyzer {:mvn/version "1.0.9"}

deps.edn Git dependency information:

  • Note: use clj -Sresolve to resolve the :tag to a :sha
  {◊typedclojure-group-id◊}/typed.cljs.analyzer
  {:git/url "{◊typedclojure-git-https-url◊}"
   :deps/root "typed/cljs.analyzer"
   :tag "1.0.9"}

Leiningen dependency information:

[{◊typedclojure-group-id◊}/typed.cljs.analyzer "1.0.9"]

Maven dependency information:

<dependency>
  <groupId>{◊typedclojure-group-id◊}</groupId>
  <artifactId>typed.cljs.analyzer</artifactId>
  <version>1.0.9</version>
</dependency>

Documentation

API Reference

Differences from tools.analyzer

typed.cljs.analyzer 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 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 in JVM implementation 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.js

Copyright © Nicola Mometto, Rich Hickey & contributors.

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