nakkaya / ferret

Ferret is a free software lisp implementation for real time embedded control systems.

Home Page:https://ferret-lang.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

map defined in required package causes error

esp1 opened this issue · comments

If a map is defined in a required package, ferret will fail with an error. For example, attempting to compile the following with ferret:

; main.clj
(require 'other)

; other.clj
(def m {:a 1})

Will produce this error:

Exception in thread "main" java.lang.IllegalArgumentException: No method in multimethod 'emit' for dispatch value: null
        at clojure.lang.MultiFn.getFn(MultiFn.java:156)
        at clojure.lang.MultiFn.invoke(MultiFn.java:238)
        at ferret.core$emit_ast$fn__1045.invoke(core.clj:480)
        at clojure.lang.PersistentList.reduce(PersistentList.java:117)
        at clojure.core$reduce.invoke(core.clj:6518)
        at ferret.core$emit_ast.invoke(core.clj:479)
        at ferret.core$fn__1066.invoke(core.clj:514)
        at clojure.lang.MultiFn.invoke(MultiFn.java:238)
        at ferret.core$emit_ast$fn__1045.invoke(core.clj:480)
        at clojure.core.protocols$fn__6523.invoke(protocols.clj:167)
        at clojure.core.protocols$fn__6478$G__6473__6487.invoke(protocols.clj:19)
        at clojure.core.protocols$seq_reduce.invoke(protocols.clj:31)
        at clojure.core.protocols$fn__6506.invoke(protocols.clj:101)
        at clojure.core.protocols$fn__6452$G__6447__6465.invoke(protocols.clj:13)
        at clojure.core$reduce.invoke(core.clj:6519)
        at ferret.core$emit_ast.invoke(core.clj:479)
        at ferret.core$emit_source.invoke(core.clj:490)
        at ferret.core$compile__GT_cpp.invoke(core.clj:670)
        at ferret.core$build_solution.invoke(core.clj:724)
        at ferret.core$_main.doInvoke(core.clj:761)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at ferret.core.main(Unknown Source)

Fixed, unit test added.

Best,