Skip to content

neil dep add crashes if there's metadata on the :deps map #239

@teodorlu

Description

@teodorlu

Reproduction

$ cat deps.edn 
{:deps ^{:teodor/nonsense :YES} {hiccup/hiccup {:mvn/version "1.0.5"}}}

clj appears to be fine with metadata on the deps map:

$ clj -e '{:ok true}'
WARNING: Implicit use of clojure.main with options is deprecated, use -M
{:ok true}

Expected

http-kit dep is added.

Actual

neil dep add crashes:

$ neil dep add http-kit
----- Error --------------------------------------------------------------------
Type:     java.lang.ClassCastException
Message:  clojure.lang.Symbol cannot be cast to java.lang.Number
Location: borkdude/rewrite_edn/impl.cljc:154:13

----- Context ------------------------------------------------------------------
150:                           (iterate z/right)
151:                           (take-while identity)
152:                           (remove #(or (node/whitespace-or-comment? %)
153:                                        (= :uneval (node/tag %)))))]
154:         (if (>= k (count coll))
                 ^--- clojure.lang.Symbol cannot be cast to java.lang.Number
155:           (node/coerce default)
156:           (node/coerce (first (nth coll k))))))))
157: 
158: (defn get-in [zloc ks not-found]
159:   (reduce (fn [zloc k]

----- Stack trace --------------------------------------------------------------
clojure.core/>=                  - <built-in>
borkdude.rewrite-edn.impl/get    - borkdude/rewrite_edn/impl.cljc:154:13
borkdude.rewrite-edn.impl/get    - borkdude/rewrite_edn/impl.cljc:119:1
borkdude.rewrite-edn.impl        - borkdude/rewrite_edn/impl.cljc:162:23
clojure.core/reduce              - <built-in>
... (run with --debug to see elided elements)
babashka.neil                    - /opt/homebrew/bin/neil:1294:27
babashka.neil/-main              - /opt/homebrew/bin/neil:1742:3
babashka.neil/-main              - /opt/homebrew/bin/neil:1741:1
babashka.neil                    - /opt/homebrew/bin/neil:1804:3
babashka.neil                    - /opt/homebrew/bin/neil:1803:1

Does the namespaced map matter?

I still get a crash without a namespaced map in the metadata:

$ cat deps.edn 
{:deps ^{:teodor-nonsense :YES} {hiccup/hiccup {:mvn/version "1.0.5"}}}
$ neil dep add http-kit
----- Error --------------------------------------------------------------------
Type:     java.lang.ClassCastException
Message:  clojure.lang.Symbol cannot be cast to java.lang.Number
Location: borkdude/rewrite_edn/impl.cljc:154:13

----- Context ------------------------------------------------------------------
150:                           (iterate z/right)
151:                           (take-while identity)
152:                           (remove #(or (node/whitespace-or-comment? %)
153:                                        (= :uneval (node/tag %)))))]
154:         (if (>= k (count coll))
                 ^--- clojure.lang.Symbol cannot be cast to java.lang.Number
155:           (node/coerce default)
156:           (node/coerce (first (nth coll k))))))))
157: 
158: (defn get-in [zloc ks not-found]
159:   (reduce (fn [zloc k]

----- Stack trace --------------------------------------------------------------
clojure.core/>=                  - <built-in>
borkdude.rewrite-edn.impl/get    - borkdude/rewrite_edn/impl.cljc:154:13
borkdude.rewrite-edn.impl/get    - borkdude/rewrite_edn/impl.cljc:119:1
borkdude.rewrite-edn.impl        - borkdude/rewrite_edn/impl.cljc:162:23
clojure.core/reduce              - <built-in>
... (run with --debug to see elided elements)
babashka.neil                    - /opt/homebrew/bin/neil:1294:27
babashka.neil/-main              - /opt/homebrew/bin/neil:1742:3
babashka.neil/-main              - /opt/homebrew/bin/neil:1741:1
babashka.neil                    - /opt/homebrew/bin/neil:1804:3
babashka.neil                    - /opt/homebrew/bin/neil:1803:1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions