 (ns latte-compiler.static-analysis
   (:require [clojure.core.match :as match]
             [clojure.algo.monads :as m]
-            [latte-compiler.util :as util]))
+            [latte-compiler.util :as util]
+            ))
 
 (defrecord ClassDef [extends fields funs])
 (defrecord FunDef [name outType inTypes])

  [obj vars]
  (with-meta obj (assoc (meta obj) "_vars" vars))
  )

(defn annotate-expr
  [glob-state vars expr]

                     )
               ]
              res)
      :eadd  (m/domonad util/phase-m
               [[vars1 lexpr] (annotate-expr glob-state vars (second expr))
                [vars2 rexpr] (annotate-expr glob-state vars1 (fourth expr))
                op (m-result (third expr))
                res (annotate-eadd vars2 lexpr rexpr op location)
                ]
               res)
      :eapp (m/domonad util/phase-m
              [ident (m-result (second expr))
               [nvar args] (reduce (fn [buff tmp] (m/domonad util/phase-m [[tmvar tmargs] buff [ntmvar nexpr] (annotate-expr glob-state tmvar tmp)] [ntmvar (conj tmargs nexpr)])) (m-result [vars []]) (rest (rest expr)))
