The problem is that your approach requires creating the proxy class with
the method bodies actually compiled into the body of the proxy class
method, they can't be in fns in a proxy map as they are now. This is ok in
the case where a method body is just the proxy-super call, but most aren't
- they call proxy-super as part of a much larger method. Changing that is a
fundamental change to the way proxies work, and IMO would be better served
by creating a new form (extend-class or something similar) which would
behave in a more similar way to reify but would allow extension. I've
considered writing such a thing myself due to the limitations and
idiosyncrasies of proxy/genclass but I've not investigated whether it's
even possible without hacking the compiler - I suspect it's not.


On 27 December 2013 11:20, Cedric Greevey <cgree...@gmail.com> wrote:

> I'd suggest instead amending the core language to add a special form,
> maybe named .!, that works like . except it sees protected methods (and
> will cause an IllegalAccessError if it calls a protected method from
> outside of a subclass), and amend proxy to use .! for proxy-super (and put
> the proxy-super call in the method body and not in the fn that the rest of
> the proxy body goes into, which will avoid IllegalAccessError but make it
> so that on-the-fly modification of the proxy can't change the proxy-super
> part).
>
>
> On Wed, Dec 25, 2013 at 3:04 PM, Colin Fleming <
> colin.mailingl...@gmail.com> wrote:
>
>> Right, it doesn't fix your original problem of the reflection warning.
>> Thinking about it, there's no way to get rid of that warning since in the
>> end all interop (unless it uses a built in form) must expand to the dot
>> form, which has no way to call a protected method. The only solution I can
>> see would be to derive a Java class from JPanel and just override
>> paintComponent and make it public, then you can proxy that class.
>>
>>
>> On 25 December 2013 23:14, Jim - FooBar(); <jimpil1...@gmail.com> wrote:
>>
>>>  Thanks Colin, I did vote for it but its title implies something
>>> different...something  restoring original binding on exception...
>>>
>>> Jim
>>>
>>>
>>>
>>> On 25/12/13 04:06, Colin Fleming wrote:
>>>
>>> That is indeed the same issue, and it even includes a patch with a test!
>>> I've voted for this one, please consider doing the same if this issue has
>>> caught you. Link: http://dev.clojure.org/jira/browse/CLJ-983
>>>
>>>
>>> On 25 December 2013 13:22, Matching Socks <phill.w...@gmail.com> wrote:
>>>
>>>> (Re Colin's note that a proxy gets damaged if super throws - goodness
>>>> gracious!  Is it the same matter as Clojure Jira issue No.983?  It's marked
>>>> as "minor" and affecting Clojure 1.3, and no one has voted for it.)
>>>>
>>>>
>>>>   --
>>>> --
>>>> 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.
>

-- 
-- 
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.

Reply via email to