Skip to content

Commit c6d34d7

Browse files
committed
Update code project related stuff
1 parent c72a111 commit c6d34d7

File tree

10 files changed

+115
-86
lines changed

10 files changed

+115
-86
lines changed

.clj-kondo/com.fulcrologic/guardrails/com/fulcrologic/guardrails/clj_kondo_hooks.clj

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,17 @@
33

44
(def =>? #{'=> :ret})
55
(def |? #{'| :st})
6+
(def known-sym? #{'=> '| '<-})
67

7-
(defn >defn
8-
[{:keys [node]}]
9-
(let [args (rest (:children node))
10-
fn-name (first args)
11-
?docstring (when (string? (api/sexpr (second args)))
12-
(second args))
13-
args (if ?docstring
14-
(nnext args)
15-
(next args))
16-
argv (first args)
17-
gspec (second args)
18-
body (nnext args)
19-
new-node (api/list-node
20-
(list*
21-
(api/token-node 'defn)
22-
fn-name
23-
argv
24-
gspec
25-
body))]
8+
(defn args+gspec+body [nodes]
9+
(let [argv (first nodes)
10+
gspec (second nodes)
11+
body (nnext nodes)
12+
gspec' (->> gspec
13+
(:children)
14+
(filterv #(-> % :value known-sym? not))
15+
(api/vector-node))
16+
new-nodes (list* argv gspec' body)]
2617
;; gspec: [arg-specs* (| arg-preds+)? => ret-spec (| fn-preds+)? (<- generator-fn)?]
2718
(if (not= 1 (count (filter =>? (api/sexpr gspec))))
2819
(api/reg-finding! (merge (meta gspec)
@@ -58,4 +49,26 @@
5849
{:message (str "Guardrail spec does not match function signature. "
5950
"Too " (if too-many-specs? "many" "few") " specs.")
6051
:type :clj-kondo.fulcro.>defn/invalid-gspec})))))))
61-
{:node new-node}))
52+
new-nodes))
53+
54+
(defn >defn
55+
[{:keys [node]}]
56+
(let [args (rest (:children node))
57+
fn-name (first args)
58+
?docstring (when (some-> (second args) api/sexpr string?)
59+
(second args))
60+
args (if ?docstring
61+
(nnext args)
62+
(next args))
63+
post-docs (if (every? #(-> % api/sexpr list?) args)
64+
(mapv #(-> % :children args+gspec+body api/list-node) args)
65+
(args+gspec+body args))
66+
post-name (if ?docstring
67+
(list* ?docstring post-docs)
68+
post-docs)
69+
new-node (api/list-node
70+
(list*
71+
(api/token-node 'defn)
72+
fn-name
73+
post-name))]
74+
{:node new-node}))
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
{:hooks {:analyze-call {com.fulcrologic.guardrails.core/>defn com.fulcrologic.guardrails.clj-kondo-hooks/>defn
2-
com.fulcrologic.guardrails.core/>defn- com.fulcrologic.guardrails.clj-kondo-hooks/>defn}}
1+
{:hooks {:analyze-call {com.fulcrologic.guardrails.core/>defn
2+
com.fulcrologic.guardrails.clj-kondo-hooks/>defn,
3+
com.fulcrologic.guardrails.core/>defn-
4+
com.fulcrologic.guardrails.clj-kondo-hooks/>defn}}
35
:linters {:clj-kondo.fulcro.>defn/invalid-gspec {:level :error}}
4-
:lint-as {com.fulcrologic.guardrails.core/>def clojure.core/def
5-
com.fulcrologic.guardrails.core/>defn clojure.core/defn
6-
com.fulcrologic.guardrails.core/>defn- clojure.core/defn-}}
6+
:lint-as {com.fulcrologic.guardrails.core/>def clojure.spec.alpha/def}}

.clj-kondo/config.edn

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
mount.core/defstate clojure.core/def
66
nubank.workspaces.core/defcard clojure.core/def
77
com.fulcrologic.fulcro.algorithms.normalized-state/swap!-> clojure.core/->
8-
failjure.core/attempt-all clojure.core/let}
8+
failjure.core/attempt-all clojure.core/let
9+
failjure.core/when-failed clojure.core/fn}
910
:linters {:misplaced-docstring {:level :error}
1011
:not-empty? {:level :off}
1112
:unresolved-symbol {:exclude

.idea/ClojureProjectResolveSettings.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/clojure-deps.xml

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)