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.