check-expr checks an entire expression/all inner forms

This commit is contained in:
Paul deGrandis 2012-03-08 13:39:48 -05:00
parent 58bcdea6e8
commit f8f1e4ec03

View file

@ -3,6 +3,7 @@
replacements for patterns of code and remove general code lint"
(:require [clojure.core.logic :as logic]
[clojure.java.io :as io]
[clojure.walk :as walk]
[jonase.kibit.rules :as core-rules])
(:import [clojure.lang LineNumberingPushbackReader]))
@ -50,6 +51,16 @@
(when (sequential? expr)
(some #(unify expr %) rules))))
(declare expr-seq)
;; This walks across all the forms within a seq'd form/expression, checking each inner form
;; We have to restore `:expr` because it gets munged in the tree/expr walk
(defn check-expr
"Given a full expression/form-of-forms/form, a map containing the alternative suggestion info, or `nil`"
[expr]
(if-let [new-expr (walk/walk #(or (-> % check-form :alt) %) check-form expr)]
(assoc new-expr :expr expr)
nil))
;; Building the parsable forms
;; ---------------------------
;;