<!-- 
RSS generated by JIRA (4.4#649-r158309) at Sat May 25 14:56:24 CDT 2013

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
For example:
http://dev.clojure.org/jira/si/jira.issueviews:issue-xml/CLJ-979/CLJ-979.xml?field=key&field=summary
-->
<rss version="0.92" >
<channel>
    <title>Clojure JIRA</title>
    <link>http://dev.clojure.org/jira</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>4.4</version>
        <build-number>649</build-number>
        <build-date>25-07-2011</build-date>
    </build-info>

<item>
            <title>[CLJ-979] map-&gt;R returns different class when invoked from AOT ccode</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-979</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;(defrecord Dontwork &lt;span class=&quot;error&quot;&gt;&amp;#91;a&amp;#93;&lt;/span&gt;)&lt;/p&gt;

&lt;p&gt;(= (type (Dontwork. nil))&lt;br/&gt;
   (type (map-&amp;gt;Dontwork {:a 1})))&lt;/p&gt;

&lt;p&gt;Will return true if the namespace is not AOT compiled and false if it is.&lt;/p&gt;

&lt;p&gt;I have created a small example project with AOT and non-AOT namespaces to demonstrate&lt;br/&gt;
&lt;a href=&quot;https://github.com/ejackson/aotquestion&quot;&gt;https://github.com/ejackson/aotquestion&lt;/a&gt;&lt;/p&gt;

</description>
                <environment>Mac OS X 10.5, lein 1.7 and lein 2.0</environment>
            <key id="15400">CLJ-979</key>
            <summary>map-&gt;R returns different class when invoked from AOT ccode</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="ejackson">Edmund Jackson</reporter>
                        <labels>
                    </labels>
                <created>Thu, 3 May 2012 03:01:37 -0500</created>
                <updated>Sun, 13 May 2012 22:35:35 -0500</updated>
                                    <version>Release 1.3</version>
                <version>Release 1.4</version>
                                                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="28483" author="scottlowe" created="Sat, 12 May 2012 21:05:37 -0500"  >&lt;p&gt;I can&apos;t reproduce this under Clojure 1.3 or 1.4, and Leiningen 1.7.1 on either Java 1.7.0-jdk7u4-b21 OpenJDK 64-Bit or Java 1.6.0_31 Java HotSpot 64-Bit. OS is Mac OS X 10.7.&lt;/p&gt;

&lt;p&gt;Edmund, how are you running this AOT code? I wrapped your code in a main function and built an uberjar from it.&lt;/p&gt;</comment>
                    <comment id="28485" author="ejackson" created="Sun, 13 May 2012 02:20:57 -0500"  >&lt;p&gt;Hi Scott,&lt;/p&gt;

&lt;p&gt;Interesting.  &lt;/p&gt;

&lt;p&gt;I have two use cases&lt;br/&gt;
1. AOT compile and call from repl.&lt;br/&gt;
My steps: git clone, lein compile, lein repl, (use &apos;aots.death), (in-ns &apos;aots.death), (= (class (Dontwork. nil)) (class (map-&amp;gt;Dontwork {:a 1}))) =&amp;gt; false&lt;/p&gt;

&lt;p&gt;2. My original use case, which I&apos;ve minimised here, is an AOT ns, producing a genclass that is called instantiated from other Java (no main).  This produces the same error. I will produce an example of this and post it too.&lt;/p&gt;</comment>
                    <comment id="28486" author="ejackson" created="Sun, 13 May 2012 04:23:46 -0500"  >&lt;p&gt;Hi Scott,&lt;/p&gt;

&lt;p&gt;Here is an example of it failing in the interop case: &lt;a href=&quot;https://github.com/ejackson/aotquestion2&quot;&gt;https://github.com/ejackson/aotquestion2&lt;/a&gt;&lt;br/&gt;
The steps I&apos;m following to compile this all up are&lt;/p&gt;

&lt;p&gt;git clone git@github.com:ejackson/aotquestion2.git&lt;br/&gt;
cd aotquestion2/cljside/&lt;br/&gt;
lein uberjar&lt;br/&gt;
lein install&lt;br/&gt;
cd ../javaside/&lt;br/&gt;
mvn package&lt;br/&gt;
java -jar ./target/aotquestion-1.0-SNAPSHOT.jar&lt;/p&gt;

&lt;p&gt;and it dies with this:&lt;/p&gt;

&lt;p&gt;Exception in thread &quot;main&quot; java.lang.ClassCastException: cljside.core.Dontwork cannot be cast to cljside.core.Dontwork&lt;br/&gt;
	at cljside.MyClass.makeDontwork(Unknown Source)&lt;br/&gt;
	at aotquestion.App.main(App.java:8)&lt;/p&gt;

&lt;p&gt;The error message is really confusing (to me, anyway), but I think its the same root problem as for the REPL case.&lt;/p&gt;

&lt;p&gt;What do you see when you run the above ?&lt;/p&gt;</comment>
                    <comment id="28487" author="scottlowe" created="Sun, 13 May 2012 08:41:21 -0500"  >&lt;p&gt;Ah, yes, looks like my initial attempt to reproduce was too simplistic. I used your second git repo, and can now confirm that it&apos;s failing for me with the same error.&lt;/p&gt;</comment>
                    <comment id="28497" author="scottlowe" created="Sun, 13 May 2012 22:35:35 -0500"  >&lt;p&gt;I looked into this a little further and the AOT generated code looks correct, in the sense that both code paths appear to be returning the same type.&lt;/p&gt;

&lt;p&gt;However, I wonder if this is really a ClassLoader issue, whereby two definitions of the same class are being loaded at different times, because that would cause the x.y.Class cannot be cast to x.y.Class exception that we&apos;re seeing here.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>
</channel>
</rss>