I have a wonky work-around. The file that is aot compiled depends on the 
file with the defrecord reference. I eliminated the direct dependency and 
exported a function that does an alter-root-var. So the provider injects 
the required value into the dependent.

On Wednesday, July 16, 2014 9:33:52 PM UTC-7, Brian Craft wrote:
>
> That does, in fact, fix the compile issue. Thanks!
>
> The cast error, however, persists. It's something to do with reloading the 
> namespace with the defrecord. Once it happens, it takes a "lein clean" to 
> clear. After that it works w/o error until the namespace is reloaded. It's 
> something to do with referencing the defrecord from another namespace, or 
> aot compiling. So far I haven't found a solution. It appears that an aot 
> compiled file can't reference a function with a type hint for a defrecord 
> if the namespace with that defrecord is then dynamically reloaded. Or 
> something. It all looks exceedingly complex at this point.
>
>
> On Wednesday, July 16, 2014 8:36:35 PM UTC-7, Andy Fingerhut wrote:
>>
>> Try fully qualifying the class name in the return type hint.
>>
>> Might be the same symptom as in this ticket: 
>> http://dev.clojure.org/jira/browse/CLJ-1232
>>
>> Andy
>>
>>
>> On Wed, Jul 16, 2014 at 7:18 PM, Brian Craft <craft...@gmail.com> wrote:
>>
>>> Apparently this is due to a class loader problem.
>>>
>>> I moved it into a different file to try to avoid the problem. However 
>>> I'm now finding that nothing referencing foo will compile, throwing this 
>>> error:
>>>
>>> CompilerException java.lang.IllegalArgumentException: Unable to resolve 
>>> classname: PStatement
>>>
>>> No idea what to do with this. Is it not possible to type hint methods 
>>> returning records?
>>>
>>> On Wednesday, July 16, 2014 4:21:22 PM UTC-7, Brian Craft wrote:
>>>>
>>>> Trying to eliminate a reflection warning, I put a type hint on a 
>>>> function, like
>>>>
>>>> (defn foo ^PStatement [] ...)
>>>>
>>>> which compiles without the reflection warnings, but at run time I get
>>>>
>>>> ClassCastException java.lang.ClassCastException: cavm.h2.PStatement 
>>>> cannot be cast to cavm.h2.PStatement
>>>>
>>>> What does this mean? PStatement is a defrecord type.
>>>>
>>>  -- 
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clo...@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+u...@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+u...@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