-
Notifications
You must be signed in to change notification settings - Fork 110
Open
Description
Another variant of the print-method conflict fixed by #237 just started popping up, e.g. in this build failure:
ERROR in (promesa-print-method-test) (MultiFn.java:179)
Uncaught exception, not in assertion.
expected: nil
actual: java.lang.IllegalArgumentException: Multiple methods in multimethod 'print-method' match dispatch value: class manifold.deferred.LeakAwareDeferred -> interface clojure.lang.IDeref and interface java.util.concurrent.CompletionStage, and neither is preferred
Note that we're now faced with a conflict between implementations of two external interfaces. Apparently, our own IDeferred implementation is completely ignored when this happens (it's non-deterministic). I suspect it's the same underlying issue as this one. According to this issue, we would have to prefer-method for "every type X every multimethod". However, I don't think it's prudent for a library to declare multimethod preferences for external interfaces like this. Perhaps we should instead implement print-method for all concrete deferred types?
Metadata
Metadata
Assignees
Labels
No labels