Skip to content

lein marg fails when a map value symbol contains a double colon #165

Open
@vandr0iy

Description

@vandr0iy

Hi! Me and my team use some sort of a hungarian notation in our project, which goes like this: mk:stuff when it yields a data structure, mkfn:stuff when it yields a function that returns a data structure, etc.

This issue can be reproduced by creating a bunch of symbols with double colons in them, and then use them as values in a hashmap, like this

{:foo mk:foo
 :bar  mk:bar
 :baz   mk:baz}

It doesn't help if I quote them, 'mk:bar, or use only as a symbol and try to var-get it later #'mk:foo.

This is the error message I get:

Exception in thread "main" java.lang.RuntimeException: Problem parsing near line 53 <)> original reported cause is java.lang.RuntimeException: Map literal must contain an even number of forms -- java.lang.RuntimeException: Map literal must contain an even number of forms, compiling:(/tmp/form-init3307654883968985504.clj:1:73)
        at clojure.lang.Compiler.load(Compiler.java:7442)
        at clojure.lang.Compiler.loadFile(Compiler.java:7368)
        at clojure.main$load_script.invokeStatic(main.clj:277)
        at clojure.main$init_opt.invokeStatic(main.clj:279)
        at clojure.main$init_opt.invoke(main.clj:279)
        at clojure.main$initialize.invokeStatic(main.clj:310)
        at clojure.main$null_opt.invokeStatic(main.clj:344)
        at clojure.main$null_opt.invoke(main.clj:341)
        at clojure.main$main.invokeStatic(main.clj:423)
        at clojure.main$main.doInvoke(main.clj:386)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.lang.Var.applyTo(Var.java:700)
        at clojure.main.main(main.java:37)
Caused by: java.lang.RuntimeException: Problem parsing near line 53 <)> original reported cause is java.lang.RuntimeException: Map literal must contain an even number of forms -- java.lang.RuntimeException: Map literal must contain an even number of forms
        at clojure.lang.LispReader.read(LispReader.java:294)
        at clojure.lang.LispReader.read(LispReader.java:198)
        at clojure.lang.LispReader.read(LispReader.java:192)
        at marginalia.parser$parse_STAR_$fn__537$fn__540.invoke(parser.clj:160)
        at marginalia.parser$parse_STAR_$fn__537.invoke(parser.clj:159)

...

        at marginalia.parser$parse.invokeStatic(parser.clj:389)
        at marginalia.parser$parse.invoke(parser.clj:380)
        at marginalia.parser$parse_file.invokeStatic(parser.clj:418)
        at marginalia.parser$parse_file.invoke(parser.clj:415)
        at marginalia.core$path_to_doc.invokeStatic(core.clj:177)
        at marginalia.core$path_to_doc.invoke(core.clj:175)

...

        at marginalia.hiccup$eval79$fn__80.invoke(hiccup.clj:99)
        at clojure.lang.MultiFn.invoke(MultiFn.java:229)
        at clojure.lang.Var.invoke(Var.java:379)
        at marginalia.html$toc_html.invokeStatic(html.clj:198)
        at marginalia.html$toc_html.invoke(html.clj:197)
        at marginalia.html$uberdoc_html.invokeStatic(html.clj:409)
        at marginalia.html$uberdoc_html.invoke(html.clj:401)
        at marginalia.core$uberdoc_BANG_.invokeStatic(core.clj:206)
        at marginalia.core$uberdoc_BANG_.invoke(core.clj:196)
        at marginalia.core$run_marginalia.invokeStatic(core.clj:311)
        at marginalia.core$run_marginalia.doInvoke(core.clj:248)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions