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,