Skip to content
Branch: master
Commits on Mar 1, 2019
Commits on Jan 29, 2019
Commits on Jan 25, 2019
Commits on Jan 9, 2019
  1. CLJS-3034: Truthy-induced inference

    mfikes authored and swannodette committed Jan 9, 2019
Commits on Jan 1, 2019
  1. CLJS-3027: sorted-map can no longer be returned by a macro unless it …

    mfikes authored and swannodette committed Dec 27, 2018
    …has keyword keys
Commits on Dec 24, 2018
Commits on Dec 14, 2018
Commits on Dec 12, 2018
Commits on Dec 7, 2018
Commits on Dec 4, 2018
Commits on Dec 2, 2018
Commits on Nov 30, 2018
  1. CLJS-2929: Port datafy

    mfikes committed Oct 8, 2018
Commits on Nov 28, 2018
  1. CLJS-2693: Have Range implement IChunkedSeq

    mfikes committed Jul 1, 2018
    This set of changes mirrors those in Clojure surrounding LongRange and
    LongChunk. In particular, range is modified to follow the 3-arg
    The previous next implementation is preserved. (The Clojure
    implemenation forces a chunk for each next call, which, in
    ClojureScript, slows down algorithms like doall which walk the seq.)
    RangeChunk does not implement IReduce because, unlike in Clojure,
    ClojureScript doesn't have an internal-reduce which reduces chunked-seq
    chunks. (Additionally, reduce for ranges is handled directly by Range.)
Commits on Nov 25, 2018
  1. CLJS-2909: clojure.walk/postwalk does not preserve MapEntry type objects

    mfikes committed Sep 14, 2018
    And ports clojure.walk tests from Clojure.
Commits on Nov 24, 2018
Commits on Nov 23, 2018
  1. CLJS-2865: Optimize string expression concatenation

    mfikes authored and swannodette committed Aug 19, 2018
    Borrow a bit of the logic used for boolean expressions to check if
    arguments to the str macro are of string or clj-nil type, and to also
    cause the str macro to indicate that its return type is string.
  2. CLJS-2866: Predicate-induced type inference

    mfikes authored and swannodette committed Aug 19, 2018
    Look for if tests that look like the simple application of a predicate
    to a local, and in that case, map certain predicates to the tags that
    satisfying that predicate implies. For example a (string? x) test
    implies that x has the tag string in the then branch of an if.
    Likewise check for the use of satisfies? and instance? and induce
    tags accordingly based on the type argument.
    For core predicates that delegate to satisfies? or instance?,
    we have hard-coded entries in the table that essentially cause things
    to behave as if the predicate were inlined. For example, (counted? x)
    behaves just like (satisfies? ICounted x).
    We only induce tags if no tag previously exists (or a tag exists but
    it is the special any tag.) This ensures that we don't override type
    hints, or generally revise existing logic. (We really only induce a tag
    as a last resort.)
    Arrange the code so that we can add more complicated induced tags in
    the future (perhaps allowing for logical connectives in the test, for
Commits on Nov 21, 2018
Commits on Nov 1, 2018
Commits on Oct 30, 2018
Commits on Oct 28, 2018
Commits on Oct 27, 2018
  1. CLJS-2864: Optimize str macro for single arity case

    mfikes committed Aug 19, 2018
    For the single arity case, emit code that doesn't involve constructing
    a JavaScript array and a call to join, but instead directly calls the
    runtime single-arity str implementation.
You can’t perform that action at this time.