Patch that works for that particular problem: diff --git a/src/jvm/clojure/lang/Reflector.java b/src/jvm/clojure/ lang/Reflector.java index 4a7061f..445961a 100644 --- a/src/jvm/clojure/lang/Reflector.java +++ b/src/jvm/clojure/lang/Reflector.java @@ -80,7 +80,11 @@ static Object invokeMatchingMethod(String methodName, List me { //public method of non-public class, try to find it in hierarchy Method oldm = m; - m = getAsMethodOfPublicBase(m.getDeclaringClass(), m); + if (target != null) + m = getAsMethodOfPublicBase(target.getClass(), m); + else + m = getAsMethodOfPublicBase(m.getDeclaringClass (), m); + if(m == null) throw new IllegalArgumentException("Can't call public me oldm.toString());
On Jan 13, 4:19 pm, jpraher <j...@hapra.at> wrote: > == Description == > The found method's declaringClass is used to call > getAsMethodOfPublicBase - this might lead to problems see below. > > == Steps to Repdoduce == > (let [vm (vm-attach-socket host port) > eventrequestmanager (.eventRequestManager vm) > method-entry-request (.createMethodEntryRequest > eventrequestmanager)] > (.addClassFilter method-entry-request "clojure.lang.*")) > > fails with: > Can't call public method of non-public class: public synchronized void > com.sun.tools.jdi.EventRequestManagerImpl > $ClassVisibleEventRequestImpl.addClassFilter(java.lang.String) > [Thrown class java.lang.IllegalArgumentException]
-- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en