Skip to content

Latest commit

 

History

History
274 lines (272 loc) · 5.57 KB

progress.md

File metadata and controls

274 lines (272 loc) · 5.57 KB

MAGIC Progress

The goal of MAGIC is to compile all of Clojure into MSIL bytecode. To do this, it must provide symbolizers and tests for every Clojure AST node. This list will be kept in sync with progress on the library.

NodeExampleImpl.Tests
:static-method (Foo/Bar a b c)
:instance-method (.Bar foo a b c)
:static-field Foo/Baz
:instance-field (.baz foo)   (.-baz foo)
:static-property Foo/Qux
:instance-property (.qux foo)   (.-qux foo)
:dynamic-method (.quz x a b c)
:dynamic-zero-arity (.quz x)
:dynamic-field (.-quz x)
:with-meta ^{:meta "data"} [1 2 3]
:const 7   "7"
:vector [1 2 3]
:map {:foo "bar"}
:set #{1 2 3 4}
:local (let [a 5] a)
:var (str 5)
:do (do a b c)
:if (if true then else)
:new (Type.)   (Type. 1 2)   (ValueType. 1 2)
:initobj (ValueType.)   (new ValueType)
:quote (quote (+ 6 7))
:set! (set! (.foo bar) 5)
:try (try (foo) (catch System.Exception e e))
:catch (try (foo) (catch System.Exception e e))
:throw (throw (System.Exception. "foo"))
:letfn (letfn [(foo [a] a)] (foo 2))
:let (let [a 5] a)
:loop (loop [a 1] (recur (inc a)))
:recur (loop [a 1] (recur (inc a)))
:binding (let [a 5] a)
:fn (fn [x] x)
:fn-method (fn ([x] x))
:def (def a 1)
:invoke (str 1 2)
:the-var (var clojure.core/str)
:reify (reify IInterface (foo [a b] ...))
:deftype (deftype Foo [a b] IInterface (Bar [this x] ...))
:proxy (proxy [Type IInterface] [a b] (Foo [ this x] a ...))
:case (case foo 1 :one 2 :two)
:import (import Type [Namespace Type])
:monitor-enter (monitor-enter lock)
:monitor-exit (monitor-exit lock)