I've spent a night scratching my head about the behavior of proxy-super in the presence of exceptions as well. I figured it was something like what you found, but by that point I just didn't trust proxy that much anymore and wrote that little bit in Java [1]. If I were a better person I would have hunted it down and filed a JIRA.
Dave [1] https://github.com/daveray/seesaw/blob/develop/jvm/seesaw/ExceptionHandler.java On Sun, Dec 22, 2013 at 10:26 PM, Colin Fleming <colin.mailingl...@gmail.com > wrote: > So, I poked around in the code a little, Dave is indeed right - it appears > to be impossible to remove reflection warnings for proxy-super calling > protected methods. > > (defn proxy-call-with-super [call this meth] > (let [m (proxy-mappings this)] > (update-proxy this (assoc m meth nil)) > (let [ret (call)] > (update-proxy this m) > ret))) > > (defmacro proxy-super > "Use to call a superclass method in the body of a proxy method. > Note, expansion captures 'this" > {:added "1.0"} > [meth & args] > `(proxy-call-with-super (fn [] (. ~'this ~meth ~@args)) ~'this ~(name > meth))) > > The method call for proxy-super just expands into the dot form, and > looking at the Compiler code that does indeed only search public methods. > > There appears to be another problem with proxy-call-with-super: unless I'm > missing something, the second update-proxy should be in a finally block. > Currently if the superclass method throws an exception, the proxy will be > left with the superclass call in its proxy mappings. > > > > On 23 December 2013 16:41, Colin Fleming <colin.mailingl...@gmail.com>wrote: > >> But surely proxy-super should be designed to call protected methods? I'd >> have to check but I suspect I call other protected methods using it. >> >> >> On 23 December 2013 14:13, Dave Ray <dave...@gmail.com> wrote: >> >>> Seesaw has the same problem with paintComponent. IIRC, it's because it's >>> protected. I never found a workaround. >>> >>> Dave >>> >>> >>> On Sunday, December 22, 2013, Colin Fleming wrote: >>> >>>> I actually just wrote a long reply detailing how to type hint 'this', >>>> and then noticed that you've already done that! This exact case >>>> (paintComponent) is the one reflection warning I can't get rid of in the >>>> whole Cursive codebase, I can't figure it out either. >>>> >>>> >>>> On 23 December 2013 01:03, Jim - FooBar(); <jimpil1...@gmail.com>wrote: >>>> >>>>> Hi all, >>>>> >>>>> is there any way to get rid of reflection in simmilar looking? Nothing >>>>> seems to work... >>>>> >>>>> (proxy [JPanel ActionListener KeyListener] [] >>>>> (paintComponent [^java.awt.Graphics g] >>>>> (let [^JPanel this this] >>>>> (proxy-super paintComponent g)) >>>>> >>>>> >>>>> thanks in advance... :) >>>>> >>>>> Jim >>>>> >>>>> -- >>>>> -- >>>>> 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 >>>>> --- You received this message because you are subscribed to the Google >>>>> Groups "Clojure" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to clojure+unsubscr...@googlegroups.com. >>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>> >>>> >>>> -- >>>> -- >>>> 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 >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to clojure+unsubscr...@googlegroups.com. >>>> For more options, visit https://groups.google.com/groups/opt_out. >>>> >>> -- >>> -- >>> 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 >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to clojure+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> >> > -- > -- > 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 > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.