I am seeing the same behavior when I remove the lein-virgil plugin.

On Tue, Jul 31, 2018 at 11:38 AM, Mark Engelberg <mark.engelb...@gmail.com>
wrote:

> That's surprising, but good to know. Thanks.
>
> On Tue, Jul 31, 2018 at 9:56 AM, Renzo Borgatti <rebor...@gmail.com>
> wrote:
>
>> Hey Mark, it's lein-virgil interfering. As of why, better opening an
>> issue there.
>>
>> Renzo
>>
>> > On 30 Jul 2018, at 11:50, Mark Engelberg <mark.engelb...@gmail.com>
>> wrote:
>> >
>> > OK, I just pushed the repo (work in progress) to github.
>> https://github.com/Engelberg/mister-rogers
>> > At the bottom of mister-rogers.wrappers I tacked on the three lines
>> we've been discussing.
>> > https://github.com/Engelberg/mister-rogers/blob/523fc29f8827
>> 193fa9ea6ae2e82649e2933e6ae3/src/clj/mister_rogers/wrappers.clj#L80
>> >
>> >
>> > Here's a REPL interaction:
>> >
>> > C:\devel\Clojure\mister-rogers>lein repl
>> >
>> > recompiling all files in ["C:\\devel\\Clojure\\mister-r
>> ogers\\src\\java"]
>> > :reloading (mister-rogers.core mister-rogers.protocols
>> mister-rogers.problem mister-rogers.wrappers mister-rogers.core-test)
>> >
>> > recompiling all files in ["C:\\devel\\Clojure\\mister-r
>> ogers\\src\\java"]
>> > :reloading (mister-rogers.core mister-rogers.protocols
>> mister-rogers.problem mister-rogers.wrappers mister-rogers.core-test)
>> > nREPL server started on port 49492 on host 127.0.0.1 - nrepl://
>> 127.0.0.1:49492
>> > REPL-y 0.3.7, nREPL 0.2.12
>> > Clojure 1.9.0
>> > Java HotSpot(TM) 64-Bit Server VM 1.8.0_66-b18
>> >     Docs: (doc function-name-here)
>> >           (find-doc "part-of-name-here")
>> >   Source: (source function-name-here)
>> >  Javadoc: (javadoc java-object-or-class-here)
>> >     Exit: Control+D or (exit) or (quit)
>> >  Results: Stored in vars *1, *2, *3, an exception in *e
>> >
>> > user=> (in-ns 'mister-rogers.wrappers)
>> > #namespace[mister-rogers.wrappers]
>> > mister-rogers.wrappers=> (get-test p)
>> >
>> > ClassCastException mister_rogers.wrappers.proxy$j
>> ava.lang.Object$Interface$7e434bc9 cannot be cast to
>> mister_rogers.wrappers.Interface  mister-rogers.wrappers/get-test
>> (wrappers.clj:82)
>> >
>> >
>> > Thanks for looking at this.
>> >
>> >
>> > On Mon, Jul 30, 2018 at 3:43 AM, Nicola Mometto <brobro...@gmail.com>
>> wrote:
>> > Can you paste an entire repl session, starting from how you launch it
>> (e.g. lein repl vs clj -- ideally not from a project) reproducing this?
>> >  I'm interested in taking a look but I simply cannot repro :/
>> >
>> >> On 30 Jul 2018, at 11:40, Mark Engelberg <mark.engelb...@gmail.com>
>> wrote:
>> >>
>> >> Yes, it is in a fresh environment.
>> >>
>> >> I find that the problematic example does work in the user namespace,
>> but it doesn't work in my segmented namespace (ns mister-rogers.wrappers,
>> to be really specific).
>> >>
>> >> On Mon, Jul 30, 2018 at 3:34 AM, Nicola Mometto <brobro...@gmail.com>
>> wrote:
>> >> No, I just tested this on 1.9.0 and 1.8.0 and I get no reflection, as
>> I'd expect.
>> >>
>> >> Are you testing this in a fresh environment?
>> >>
>> >>
>> >>> On 30 Jul 2018, at 11:31, Mark Engelberg <mark.engelb...@gmail.com>
>> wrote:
>> >>>
>> >>> I'm using 1.9.0.  Is this a behavior that recently changed?
>> >>>
>> >>> On Mon, Jul 30, 2018 at 3:28 AM, Nicola Mometto <brobro...@gmail.com>
>> wrote:
>> >>> Which version of clojure? This works fine in 1.10
>> >>>
>> >>> Clojure 1.10.0-master-SNAPSHOT
>> >>> user=> (set! *warn-on-reflection* true)
>> >>> true
>> >>> user=> (definterface Interface (test []))
>> >>> user.Interface
>> >>> user=> (def p (proxy [Object Interface] [] (test [] 1)))
>> >>> #'user/p
>> >>> user=> (defn get-test [o] (.test ^Interface o))
>> >>> #'user/get-test
>> >>> user=> (get-test p)
>> >>> 1
>> >>>
>> >>>
>> >>>> On 30 Jul 2018, at 11:26, Mark Engelberg <mark.engelb...@gmail.com>
>> wrote:
>> >>>>
>> >>>> Those fishy things were errors I made when simplifying and
>> transcribing the proxy to post, but I have it correct in my own code.
>> >>>>
>> >>>> Here's a more precise, tested minimal example:
>> >>>>
>> >>>> (definterface Interface (test []))
>> >>>> (def p (proxy [Object Interface] [] (test [] 1)))
>> >>>> (defn get-test [o] (.test ^Interface o))
>> >>>>
>> >>>> => (get-test p)
>> >>>> This throws an error that it can't cast the proxy to Interface.
>> >>>>
>> >>>> If you remove the ^Interface type hint, then get-test will work but
>> will trigger reflection.
>> >>>>
>> >>>> Thanks for looking at this. It seems like it should work, but it
>> doesn't.
>> >>>>
>> >>>>
>> >>>> On Mon, Jul 30, 2018 at 3:06 AM, Nicola Mometto <brobro...@gmail.com>
>> wrote:
>> >>>> That's exactly what you should do and it does work, e.g.:
>> >>>>
>> >>>> user=> (set! *warn-on-reflection* true)
>> >>>> true
>> >>>> user=> (.meta ^clojure.lang.IMeta (proxy [clojure.lang.IMeta] []
>> (meta [] {:a 1})))
>> >>>> {:a 1}
>> >>>>
>> >>>> In your small example you have two errors that might be fishy: a
>> missing arg vector to pass to the super ctor and an extra `this` parameter
>> in the method impl (proxy, unlike reify, is anaphoric and binds `this` for
>> you)
>> >>>>
>> >>>>
>> >>>>> On 30 Jul 2018, at 10:56, Mark Engelberg <mark.engelb...@gmail.com>
>> wrote:
>> >>>>>
>> >>>>> Let's say I have a proxy object:
>> >>>>>
>> >>>>> (def p (proxy [MyClass MyInterface] (interfaceMethod [this] ...)))
>> >>>>>
>> >>>>> Now, I want to call (.interfaceMethod p).  How do I do this without
>> reflection?
>> >>>>> I would have thought that (.interfaceMethod ^MyInterface p) would
>> work, but this results in an error message that this proxy object cannot be
>> cast to MyInterface.
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> --
>> >>>>> 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/d/optout.
>> >>>>
>> >>>>
>> >>>> --
>> >>>> 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/d/optout.
>> >>>>
>> >>>>
>> >>>> --
>> >>>> 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/d/optout.
>> >>>
>> >>>
>> >>> --
>> >>> 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/d/optout.
>> >>>
>> >>>
>> >>> --
>> >>> 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/d/optout.
>> >>
>> >>
>> >> --
>> >> 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/d/optout.
>> >>
>> >>
>> >> --
>> >> 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/d/optout.
>> >
>> >
>> > --
>> > 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/d/optout.
>> >
>> >
>> > --
>> > 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/d/optout.
>>
>> --
>> 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/d/optout.
>>
>
>

-- 
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/d/optout.

Reply via email to