Alan <[email protected]> writes:
Hi Alan,
> That error message is coming from some use of (case), usually in your
> code but conceivably from somewhere in Clojure. It tries to do some
> clever bit-fiddling to generate a constant-time-dispatch on the
> hashcodes of its clauses, and if that fails it throws a compiler error
> (arguably it could degrade into to a cond, but it doesn't).
>
> Given that you don't use case at all, and the backtrace suggests the
> case call is in dispatching for the protocol, it sounds to me like a
> bug in the protocol dispatcher.
I would have preferred a bug in my code...
> Caused by: java.lang.IllegalArgumentException: No distinct mapping
> found
> at clojure.core$min_hash.invoke (core.clj:5270)
> clojure.core$expand_method_impl_cache.invoke (core_deftype.clj:
> 403)
> clojure.core$_cache_protocol_fn.invoke (core_deftype.clj:472)
> funql.core$eval293$fn__294$G__284__309.invoke (core.clj:408)
> funql.core$eval324$fn__325$fn__328.invoke (core.clj:432)
> clojure.lang.LazySeq.sval (LazySeq.java:42)
> clojure.lang.LazySeq.seq (LazySeq.java:63)
> clojure.lang.RT.seq (RT.java:450)
> clojure.core$seq.invoke (core.clj:122)
>
> So line 432 calls iseq, and the macroexpansion of your code at line
> 408 calls into some kind of internal protocol-dispatch-cache, which
> tries to do a minhash in order to figure out how to switch through a
> case block, which barfs.
If it helps, I checked out the current clojure git sources and added the
keys argument of `min-hash' to the exception message. keys is a seq of
java.lang.Class objects (~300):
(de.uni_koblenz.jgralab.grabaja.java5schema.impl.std.ReversedIsCalledByMethodImpl
de.uni_koblenz.java.impl.std.arrays.ArraySelectorImpl [..............]
de.uni_koblenz.jgralabtest.schemas.greqltestschema.impl.std.junctions.CrossroadImpl
de.uni_koblenz.java.impl.std.statements.ExpressionStatementImpl)
This seq contains the implementation classes of all my loaded graph's
metamodels. Beside these Impl-classes, those all have a defining
interface, and those line up to a top-level inheritance hierarchy
AttributedElement
/ \
GraphElement Graph
/ \
Vertex Edge
which are the types my protocols dispatch on.
I'm happy to help with any debugging, patch-testing, whatsoever.
Bye,
Tassilo
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en