The compiler accepts this erroneous form:
Analysis: defprotocol silently assoc's the last list of signatures found for any particular method name, without checking whether the method name was given earlier.
Approach: Modify defprotocol to check whether each method name has already been encountered earlier, and throw an exception if so. The patch also updates the error message for the case of a protocol function with no args specified.
Behavior with patch clj-1056-2.txt:
Screened by: Stuart Halloway