<!--
RSS generated by JIRA (4.4#649-r158309) at Wed May 22 06:13:31 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/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=project+%3D+MATCH+AND+resolution+%3D+Unresolved+ORDER+BY+component+ASC%2C+priority+DESC&tempMax=1000&field=key&field=summary
-->
<!-- If you wish to do custom client-side styling of RSS, uncomment this:
<?xml-stylesheet href="http://dev.clojure.org/jira/styles/jiraxml2html.xsl" type="text/xsl"?>
-->
<rss version="0.92">
    <channel>
        <title>Clojure JIRA</title>
        <link>http://dev.clojure.org/jira/secure/IssueNavigator.jspa?reset=true&amp;jqlQuery=project+%3D+MATCH+AND+resolution+%3D+Unresolved+ORDER+BY+component+ASC%2C+priority+DESC</link>
        <description>An XML representation of a search request</description>
                <language>en-us</language>
                        <issue start="0" end="25" total="25"/>
                <build-info>
            <version>4.4</version>
            <build-number>649</build-number>
            <build-date>25-07-2011</build-date>
        </build-info>
<item>
            <title>[MATCH-36] throw on unsuccessful match</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-36</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;I was on the fence about this. But after looking at the literature as well as the behavior of condp, I&apos;ve decided that throwing on unsuccessful match is the way to go. This is particularly important since we put no constraints on the types allowed - we cannot determine exhaustiveness.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14904">MATCH-36</key>
            <summary>throw on unsuccessful match</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="2" iconUrl="http://dev.clojure.org/jira/images/icons/priority_critical.gif">Critical</priority>
                    <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Thu, 27 Oct 2011 23:52:02 -0500</created>
                <updated>Wed, 30 Nov 2011 20:46:39 -0600</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                                <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>

<item>
            <title>[MATCH-31] vector patterns should work on seq</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-31</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;This means abandoning subvec and using nth + offsets.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14683">MATCH-31</key>
            <summary>vector patterns should work on seq</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="2" iconUrl="http://dev.clojure.org/jira/images/icons/priority_critical.gif">Critical</priority>
                    <status id="3" iconUrl="http://dev.clojure.org/jira/images/icons/status_inprogress.gif">In Progress</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Mon, 10 Oct 2011 22:35:40 -0500</created>
                <updated>Wed, 30 Nov 2011 20:46:21 -0600</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                                <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>

<item>
            <title>[MATCH-47] vector patterns dispatch on count after dispatching on type</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-47</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;The current behavior just creates complications.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15087">MATCH-47</key>
            <summary>vector patterns dispatch on count after dispatching on type</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="2" iconUrl="http://dev.clojure.org/jira/images/icons/priority_critical.gif">Critical</priority>
                    <status id="3" iconUrl="http://dev.clojure.org/jira/images/icons/status_inprogress.gif">In Progress</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Fri, 23 Dec 2011 21:41:42 -0600</created>
                <updated>Fri, 23 Dec 2011 22:22:41 -0600</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                <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>

<item>
            <title>[MATCH-35] Bug in seq pattern matching</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-35</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(let [l &apos;(1 2 3)]
    (match [l]
      [([a &amp;amp; [b &amp;amp; [c d]]] :seq)] :a0
      :&lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt; :a1))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Matches when it shouldn&apos;t.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14903">MATCH-35</key>
            <summary>Bug in seq pattern matching</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="2" iconUrl="http://dev.clojure.org/jira/images/icons/priority_critical.gif">Critical</priority>
                    <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Thu, 27 Oct 2011 23:22:08 -0500</created>
                <updated>Wed, 11 Jan 2012 10:26:35 -0600</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27531" author="glchapman" created="Wed, 11 Jan 2012 10:24:59 -0600"  >&lt;p&gt;Another example of (I think) the same issue:&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (let &lt;span class=&quot;error&quot;&gt;&amp;#91;x ()&amp;#93;&lt;/span&gt; (match &lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; [(&lt;span class=&quot;error&quot;&gt;&amp;#91;h &amp;amp; t&amp;#93;&lt;/span&gt; :seq)] &lt;span class=&quot;error&quot;&gt;&amp;#91;h t&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;_&amp;#93;&lt;/span&gt; :a1))&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;nil ()&amp;#93;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Perhaps SeqPattern&apos;s IPatternCompile should call seq in order to filter empty seqs? (e.g.:&lt;/p&gt;

&lt;p&gt;  (to-source* &lt;span class=&quot;error&quot;&gt;&amp;#91;this ocr&amp;#93;&lt;/span&gt;&lt;br/&gt;
    `(and (or (seq? ~ocr) (sequential? ~ocr)) (seq ~ocr)))&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>

<item>
            <title>[MATCH-4] Optimized pattern matching on deftype/record, POJOs</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-4</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(match [x]
  [({:a 0 :b 1} :type Foo)] :a0
  ...)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;:a and :b would be converted to field access, i.e. (.a x)&lt;/p&gt;

&lt;p&gt;As with primitive array matching, we should do an instance check followed by hinted field access.&lt;/p&gt;

&lt;p&gt;We should consider adopting the deftype/record syntax.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14603">MATCH-4</key>
            <summary>Optimized pattern matching on deftype/record, POJOs</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</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="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Sun, 4 Sep 2011 09:56:54 -0500</created>
                <updated>Thu, 27 Oct 2011 23:42:15 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27171" author="dnolen" created="Thu, 27 Oct 2011 16:41:00 -0500"  >&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(match [x]
  [^Foo {.-bar 5 .-baz 7}] :a0
  [^Foo {.-bar _ .-woz 8}] :a1
  :&lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt; :a2)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Given the recent ClojureScript property access discussions this seems like an acceptable syntax for high-performance property access.&lt;/p&gt;

&lt;p&gt;Maybe:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(match [^Foo x]
  [{.-bar 5 .-baz 7}] :a0
  [{.-bar _ .-woz 8}] :a1
  :&lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt; :a2)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;But probably not since then we should probably throw if someone tries to declare a different type in the row.&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>

<item>
            <title>[MATCH-2] Matching Diagnostics</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-2</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;Communicate to the user precisely what failed to match. Conversation here: &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/675456fba1712214&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/675456fba1712214&lt;/a&gt;. We adopt the behavior of condp since that is closer to what match does and will do (predicate dispatch)&lt;/p&gt;</description>
                <environment></environment>
            <key id="14601">MATCH-2</key>
            <summary>Matching Diagnostics</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</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="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Sun, 4 Sep 2011 09:54:33 -0500</created>
                <updated>Thu, 27 Oct 2011 23:50:44 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="26762" author="dnolen" created="Mon, 5 Sep 2011 10:40:09 -0500"  >&lt;p&gt;Continuing the conversation from GitHub - concerning your changes, we should probably show what &lt;b&gt;current&lt;/b&gt; occurrence failed to match as well as the breadcrumb.&lt;/p&gt;</comment>
                    <comment id="26873" author="dnolen" created="Mon, 26 Sep 2011 07:10:04 -0500"  >&lt;p&gt;Matching diagnostics will be complicated by &lt;a href=&quot;http://dev.clojure.org/jira/browse/MATCH-1&quot; title=&quot;Investigate non-overlapping pattern optimization via pre-allocated exception for backtracking &quot;&gt;&lt;del&gt;MATCH-1&lt;/del&gt;&lt;/a&gt;. Clojure doesn&apos;t yet support simple data conveying exceptions. Will probably have to use a combination of proxy and definterface.&lt;/p&gt;</comment>
                    <comment id="26879" author="ambrosebs" created="Fri, 30 Sep 2011 04:39:01 -0500"  >&lt;p&gt;I haven&apos;t yet kept up with your backtracking changes, and I just noticed this conversation, so I&apos;ll have to have another look at diagnostics with backtracking.&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>

<item>
            <title>[MATCH-40] Allow or&apos;ing of guard functions</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-40</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;In order to simplify composition of guard predicates which are alternatives, allow for passing a sequence of predicates whose values when called will be or&apos;d together.&lt;/p&gt;

&lt;p&gt;The :when keyword currently allows passing of a vector of predicates that are and&apos;d together.&lt;/p&gt;

&lt;p&gt;Either case (`and` or `or`) can be achieved externally to match via composition, and an alternative might be to force explicit composition outside of core.match.&lt;/p&gt;

&lt;p&gt;At the least, the documentation should mention that multiple predicates will be and&apos;d together.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15024">MATCH-40</key>
            <summary>Allow or&apos;ing of guard functions</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</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="dnolen">David Nolen</assignee>
                                <reporter username="hugoduncan">Hugo Duncan</reporter>
                        <labels>
                    </labels>
                <created>Mon, 21 Nov 2011 11:11:42 -0600</created>
                <updated>Mon, 21 Nov 2011 11:11:42 -0600</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                <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>

<item>
            <title>[MATCH-39] Allow matching of map expressions to restrict the set of keys present in the value to a subset of a specified set of keys</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-39</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;It is useful, to be able to constrain a match on a map value to limit the set of keys present in the value, without enforcing that the keys are all present in the value.&lt;/p&gt;

&lt;p&gt;The current :only option, enforces a strict matching of keys.&lt;/p&gt;

&lt;p&gt;{{(let [x {:a 1} (match &lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; [({:a _ :b _} :only &lt;span class=&quot;error&quot;&gt;&amp;#91;:a :b&amp;#93;&lt;/span&gt;)])}} =&amp;gt; doesn&apos;t match&lt;/p&gt;

&lt;p&gt;This came up trying to write a precondition on the argument of a function, which allowed optional keys, but wanted to restrict the overall set of keys.&lt;/p&gt;
</description>
                <environment></environment>
            <key id="15023">MATCH-39</key>
            <summary>Allow matching of map expressions to restrict the set of keys present in the value to a subset of a specified set of keys</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</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="dnolen">David Nolen</assignee>
                                <reporter username="hugoduncan">Hugo Duncan</reporter>
                        <labels>
                    </labels>
                <created>Mon, 21 Nov 2011 11:03:28 -0600</created>
                <updated>Mon, 21 Nov 2011 12:34:22 -0600</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27333" author="dnolen" created="Mon, 21 Nov 2011 12:22:37 -0600"  >&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(match x
  ({:c 1} :has [:a :b]) :a0
  ...)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(match x
  ({:c 1} :contains [:a :b]) :a0
  ...)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Seems reasonable.&lt;/p&gt;</comment>
                    <comment id="27334" author="dnolen" created="Mon, 21 Nov 2011 12:34:22 -0600"  >&lt;p&gt;Ah misunderstood. You want something like :allowed.&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>

<item>
            <title>[MATCH-55] Matching a sequence with just a rest pattern fails to compile</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-55</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;In 0.2.0-alpha9,&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(match [ [1 2] ] [([&amp;amp; _] :seq)] &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;fails to compile with &lt;tt&gt;No method in multimethod &apos;to-source&apos; for dispatch value: class clojure.core.match.RestPattern&lt;/tt&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="15287">MATCH-55</key>
            <summary>Matching a sequence with just a rest pattern fails to compile</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="dnolen">David Nolen</assignee>
                                <reporter username="hugoduncan">Hugo Duncan</reporter>
                        <labels>
                    </labels>
                <created>Wed, 21 Mar 2012 15:37:19 -0500</created>
                <updated>Wed, 21 Mar 2012 15:37:19 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                <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>

<item>
            <title>[MATCH-56] IndexOutOfBoundsException when matching empty vector</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-56</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;Using the latest core.match:&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (let [x []] (match &lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; [&lt;span class=&quot;error&quot;&gt;&amp;#91;h &amp;amp; t&amp;#93;&lt;/span&gt;] &lt;span class=&quot;error&quot;&gt;&amp;#91;h t&amp;#93;&lt;/span&gt; :else :nomatch))&lt;br/&gt;
IndexOutOfBoundsException   clojure.lang.RT.subvec (RT.java:1451)&lt;/p&gt;

&lt;p&gt;Not sure if this is the best fix, but I resolved this specific case by slightly changing subvec-inline (see attached diff).&lt;/p&gt;</description>
                <environment>Clojure 1.3</environment>
            <key id="15298">MATCH-56</key>
            <summary>IndexOutOfBoundsException when matching empty vector</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="dnolen">David Nolen</assignee>
                                <reporter username="glchapman">Greg Chapman</reporter>
                        <labels>
                    </labels>
                <created>Tue, 27 Mar 2012 10:22:43 -0500</created>
                <updated>Tue, 27 Mar 2012 10:28:38 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="28024" author="dnolen" created="Tue, 27 Mar 2012 10:28:38 -0500"  >&lt;p&gt;Thanks for the report. The patch is not going to work - we should be checking that the vector has at least one item.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11016" name="match.clj.diff" size="412" author="glchapman" created="Tue, 27 Mar 2012 10:22:43 -0500" />
                </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>

<item>
            <title>[MATCH-58] we should test the presence of key with find, not get</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-58</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;If a user really doesn&apos;t care about the existence of a key they won&apos;t match on it. The current behavior is very confusing.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15319">MATCH-58</key>
            <summary>we should test the presence of key with find, not get</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="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Sat, 7 Apr 2012 19:34:26 -0500</created>
                <updated>Sat, 7 Apr 2012 19:34:26 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                <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>

<item>
            <title>[MATCH-61] Exception thrown when matching using :seq when there is a seq call in the tail of the occurrences</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-61</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;&amp;lt;iframe style=&quot;width: 648px; height: 400px; border: 0px;&quot; src=&quot;http://refheap.com/paste/3294/framed&quot; &amp;gt;&lt;/p&gt;

&lt;p&gt;I also tested with three occurrences. When there is a seq call in the second occurrence onward a RuntimeException is thrown. &lt;/p&gt;</description>
                <environment>with Clojure 1.3</environment>
            <key id="15550">MATCH-61</key>
            <summary>Exception thrown when matching using :seq when there is a seq call in the tail of the occurrences</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="dnolen">David Nolen</assignee>
                                <reporter username="etosch">Emma Tosch</reporter>
                        <labels>
                        <label>bug</label>
                        <label>seq</label>
                    </labels>
                <created>Fri, 22 Jun 2012 16:11:35 -0500</created>
                <updated>Fri, 22 Jun 2012 17:33:34 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="28890" author="etosch" created="Fri, 22 Jun 2012 17:33:34 -0500"  >&lt;p&gt;&lt;a href=&quot;https://gist.github.com/626088b01817ac638fae&quot;&gt;https://gist.github.com/626088b01817ac638fae&lt;/a&gt;&lt;br/&gt;
Two expressions, macro-expanded. The only difference between the expressions is that the second occurrence in the second expression is seq&apos;ed. The second let is the one throwing the exception; it&apos;s the one with the binding&lt;/p&gt;

&lt;p&gt;(clojure.core/let [q_tail_&lt;em&gt;3472 q_tail&lt;/em&gt;_3472&lt;br/&gt;
                   q_head_&lt;em&gt;3471 q_head&lt;/em&gt;_3471&lt;br/&gt;
                   ocr-3470 (seq y)&lt;br/&gt;
                   z z]&lt;br/&gt;
...)&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>

<item>
            <title>[MATCH-49] Duplicate wildcard detection in pattern row doesn&apos;t account for locals</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-49</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description></description>
                <environment></environment>
            <key id="15112">MATCH-49</key>
            <summary>Duplicate wildcard detection in pattern row doesn&apos;t account for locals</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="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Thu, 12 Jan 2012 08:36:14 -0600</created>
                <updated>Thu, 12 Jan 2012 08:36:14 -0600</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                <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>

<item>
            <title>[MATCH-64] Improve match compile times</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-64</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description></description>
                <environment></environment>
            <key id="15630">MATCH-64</key>
            <summary>Improve match compile times</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</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="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Wed, 15 Aug 2012 13:04:32 -0500</created>
                <updated>Wed, 15 Aug 2012 13:04:32 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                <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>

<item>
            <title>[MATCH-65] cata matching</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-65</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;Dan Friedman&apos;s pattern matcher has a nice feature called cata-matching - allowing recursive matching from the match itself. Useful when writing compilers.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15851">MATCH-65</key>
            <summary>cata matching</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="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Fri, 23 Nov 2012 16:54:30 -0600</created>
                <updated>Fri, 23 Nov 2012 16:54:30 -0600</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                <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>

<item>
            <title>[MATCH-63] IllegalArgumentException when AOT compiling namespace using clojure.core.match since alpha10</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-63</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;Getting this when AOT compiling a trivial project (attached) using alpha10: (works fine with alpha9)&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Caused by: java.lang.IllegalArgumentException: No method in multimethod &apos;to-source&apos; &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; dispatch value: class clojure.core.match.WildcardPattern
	at clojure.lang.MultiFn.getFn(MultiFn.java:121)
	at clojure.lang.MultiFn.invoke(MultiFn.java:167)
	at clojure.core.match$dag_clause_to_clj.invoke(match.clj:424)
	at clojure.lang.AFn.applyToHelper(AFn.java:167)
	at clojure.lang.AFn.applyTo(AFn.java:151)
	at clojure.core$apply.invoke(core.clj:602)
	at clojure.lang.AFn.applyToHelper(AFn.java:167)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.core$apply.invoke(core.clj:604)
	at clojure.core$partial$fn__3796.doInvoke(core.clj:2343)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.core$map$fn__3811.invoke(core.clj:2430)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:60)
	at clojure.lang.RT.seq(RT.java:466)
	at clojure.core$seq.invoke(core.clj:133)
	at clojure.core$apply.invoke(core.clj:600)
	at clojure.core$mapcat.doInvoke(core.clj:2459)
	at clojure.lang.RestFn.invoke(RestFn.java:423)
	at clojure.core.match.SwitchNode.n_to_clj(match.clj:446)
	at clojure.core.match.BindNode.n_to_clj(match.clj:411)
	at clojure.core.match$executable_form.invoke(match.clj:1713)
	at clojure.core.match$clj_form.invoke(match.clj:1721)
	at clojure.core.match$match.doInvoke(match.clj:1750)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment>core.match 0.2.0-alpha10 and 0.2.0-alpha11-SNAPSHOT (git 7ad66cc)&lt;br/&gt;
clojure 1.3.0 and 1.4.0&lt;br/&gt;
</environment>
            <key id="15616">MATCH-63</key>
            <summary>IllegalArgumentException when AOT compiling namespace using clojure.core.match since alpha10</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="dnolen">David Nolen</assignee>
                                <reporter username="pmoriarty">Paudi Moriarty</reporter>
                        <labels>
                    </labels>
                <created>Wed, 8 Aug 2012 08:41:56 -0500</created>
                <updated>Tue, 26 Feb 2013 13:55:26 -0600</updated>
                                                                            <due></due>
                    <votes>3</votes>
                        <watches>4</watches>
                        <comments>
                    <comment id="29987" author="frederikdb" created="Tue, 20 Nov 2012 16:18:04 -0600"  >&lt;p&gt;I can confirm the same issue on alpha11.&lt;/p&gt;</comment>
                    <comment id="30024" author="dnolen" created="Fri, 23 Nov 2012 16:52:26 -0600"  >&lt;p&gt;I believe I may have found the cause and have fixed master - if someone can confirm I&apos;ll happily cut another release.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://github.com/clojure/core.match/commit/cbcc6e5fa070a7025e72f5eab4e83eaec100332b&quot;&gt;http://github.com/clojure/core.match/commit/cbcc6e5fa070a7025e72f5eab4e83eaec100332b&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="30438" author="pmoriarty" created="Tue, 15 Jan 2013 09:42:58 -0600"  >&lt;p&gt;Thanks David, &lt;/p&gt;

&lt;p&gt;That change has &lt;b&gt;not&lt;/b&gt; fixed the issue for me.&lt;/p&gt;</comment>
                    <comment id="30439" author="pmoriarty" created="Tue, 15 Jan 2013 09:56:23 -0600"  >&lt;p&gt;So the pattern parameter being passed to dag-clause-to-clj:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn dag-clause-to-clj [occurrence pattern action]
  (let [test (&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (instance? clojure.core.match.IPatternCompile pattern)
               (to-source* pattern occurrence)
               (to-source pattern occurrence))]
...&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;is a WildcardPattern which doesn&apos;t implement IPatternCompile and doesn&apos;t have a to-source method. So it seems it shouldn&apos;t be passed at all. Indeed, in normal usage it isn&apos;t.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;;; ## Wildcard Pattern
;; 
;; A wildcard pattern accepts any value.
;;
;; In practice, the DAG compilation eliminates any wildcard patterns.

(defprotocol IWildcardPattern
  (sym [&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;]))

(deftype WildcardPattern [sym _meta]
  IWildcardPattern
  (sym [_] sym)
  clojure.lang.IObj
  (meta [_] _meta)
  (withMeta [_ &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt;-meta]
    (WildcardPattern. sym &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt;-meta))
  &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;
  (toString [_]
    (str sym)))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="30440" author="dnolen" created="Tue, 15 Jan 2013 11:17:41 -0600"  >&lt;p&gt;Can you include an example pattern which works under normal circumstances but fails under AOT? This must meant that WildcardPatterns are making it through under AOT and getting to the multimethod case but not under incremental compilation at the REPL.&lt;/p&gt;</comment>
                    <comment id="30441" author="pmoriarty" created="Wed, 16 Jan 2013 09:34:59 -0600"  >&lt;p&gt;This seems to do it:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(match {}
  {:a :x :b b} :dummy
  :&lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt; :dummy)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="30663" author="tolsen" created="Tue, 26 Feb 2013 13:55:26 -0600"  >&lt;p&gt;I&apos;ve seen this problem as well.  If I try to compile a second time, however, without running &lt;tt&gt;lein clean&lt;/tt&gt;, the compilation succeeds.  Maybe it&apos;s a bootstrapping problem?&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11414" name="matchtest.zip" size="1043" author="pmoriarty" created="Wed, 8 Aug 2012 08:42:28 -0500" />
                </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>

<item>
            <title>[MATCH-69] AOT-compiling match expression produces stack overflow</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-69</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;The offending match expression is pretty gnarly, will try to simplify and post it here later.  For now, a (partial) stack trace, eliding the repeating bits:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Caused by: java.lang.StackOverflowError
	at clojure.core$map$fn__4207.invoke(core.clj:2479)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:60)
	at clojure.lang.ChunkedCons.chunkedNext(ChunkedCons.java:59)
	at clojure.lang.ChunkedCons.next(ChunkedCons.java:43)
	at clojure.lang.PersistentVector.create(PersistentVector.java:51)
	at clojure.lang.LazilyPersistentVector.create(LazilyPersistentVector.java:31)
	at clojure.core$vec.invoke(core.clj:354)
	at clojure.core.match.PatternMatrix.column(match.clj:713)
	at clojure.core.match$useful_p_QMARK_.invoke(match.clj:811)
	at clojure.core.match.PatternMatrix$iter__1458__1464$fn__1465$iter__1460__1466$fn__1467$fn__1468.invoke(match.clj:765)
	at clojure.core.match.PatternMatrix$iter__1458__1464$fn__1465$iter__1460__1466$fn__1467.invoke(match.clj:763)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:60)
	at clojure.lang.RT.seq(RT.java:484)
	at clojure.core$seq.invoke(core.clj:133)
	at clojure.core.match.PatternMatrix$iter__1458__1464$fn__1465.invoke(match.clj:764)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:67)
	at clojure.lang.RT.seq(RT.java:484)
	at clojure.core$seq.invoke(core.clj:133)
	at clojure.core$partition$fn__4309.invoke(core.clj:2834)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:60)
	at clojure.lang.RT.seq(RT.java:484)
	at clojure.core$seq.invoke(core.clj:133)
	at clojure.core$map$fn__4207.invoke(core.clj:2479)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:60)
	at clojure.lang.Cons.next(Cons.java:39)
	at clojure.lang.PersistentVector.create(PersistentVector.java:51)
	at clojure.lang.LazilyPersistentVector.create(LazilyPersistentVector.java:31)
	at clojure.core$vec.invoke(core.clj:354)
	at clojure.core.match.PatternMatrix.useful_matrix(match.clj:763)
	at clojure.core.match.PatternMatrix.necessary_column(match.clj:755)
	at clojure.core.match.PatternMatrix$choose_column__1441.invoke(match.clj:720)
	at clojure.core.match.PatternMatrix.compile(match.clj:738)
	at clojure.core.match$first_column_chosen_case$switch_clauses__1406$fn__1407.invoke(match.clj:643)
	at clojure.core$map$fn__4211.invoke(core.clj:2492)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:60)
	at clojure.lang.RT.seq(RT.java:484)
	at clojure.core$seq.invoke(core.clj:133)
	at clojure.core.protocols$seq_reduce.invoke(protocols.clj:30)
	at clojure.core.protocols$fn__6026.invoke(protocols.clj:54)
	at clojure.core.protocols$fn__5979$G__5974__5992.invoke(protocols.clj:13)
	at clojure.core$reduce.invoke(core.clj:6177)
	at clojure.core$into.invoke(core.clj:6229)
	at clojure.core.match$first_column_chosen_case$switch_clauses__1406.invoke(match.clj:646)
	at clojure.core.match$first_column_chosen_case.invoke(match.clj:676)
	at clojure.core.match.PatternMatrix.compile(match.clj:740)
	at clojure.core.match$first_column_chosen_case$switch_clauses__1406$fn__1407.invoke(match.clj:643)
	at clojure.core$map$fn__4211.invoke(core.clj:2492)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:60)
	at clojure.lang.RT.seq(RT.java:484)
	at clojure.core$seq.invoke(core.clj:133)
	at clojure.core.protocols$seq_reduce.invoke(protocols.clj:30)
	at clojure.core.protocols$fn__6026.invoke(protocols.clj:54)
	at clojure.core.protocols$fn__5979$G__5974__5992.invoke(protocols.clj:13)
	at clojure.core$reduce.invoke(core.clj:6177)
	at clojure.core$into.invoke(core.clj:6229)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="16157">MATCH-69</key>
            <summary>AOT-compiling match expression produces stack overflow</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="dnolen">David Nolen</assignee>
                                <reporter username="cemerick">Chas Emerick</reporter>
                        <labels>
                    </labels>
                <created>Wed, 24 Apr 2013 16:04:23 -0500</created>
                <updated>Wed, 24 Apr 2013 16:04:23 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                <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>

<item>
            <title>[MATCH-54] Cannot AOT with certain match expression.</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-54</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;If you try to AOT this code, you get an exception.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn -main [&amp;amp; args]
  (println args)
  (let [x nil] 
    (match x
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;=&quot;&lt;/span&gt; _ _] &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;
      [[:invoke _] _] &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Stack Trace:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Compiling foo.core
Exception in thread &lt;span class=&quot;code-quote&quot;&gt;&quot;main&quot;&lt;/span&gt; java.lang.IndexOutOfBoundsException, compiling:(foo/core.clj:8)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.analyzeSeq(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6416)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.analyze(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6216)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.analyze(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6177)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;$BodyExpr$Parser.parse(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:5572)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;$LetExpr$Parser.parse(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:5873)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.analyzeSeq(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6409)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.analyze(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6216)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.analyzeSeq(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6397)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.analyze(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6216)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.analyze(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6177)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;$BodyExpr$Parser.parse(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:5572)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;$FnMethod.parse(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:5008)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;$FnExpr.parse(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:3629)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.analyzeSeq(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6407)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.analyze(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6216)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.analyzeSeq(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6397)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.analyze(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6216)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.access$100(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:37)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;$DefExpr$Parser.parse(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:492)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.analyzeSeq(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6409)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.analyze(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6216)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.analyze(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6177)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.compile1(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6980)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.compile(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:7046)
	at clojure.lang.RT.compile(RT.java:385)
	at clojure.lang.RT.load(RT.java:425)
	at clojure.lang.RT.load(RT.java:398)
	at clojure.core$load$fn__4610.invoke(core.clj:5386)
	at clojure.core$load.doInvoke(core.clj:5385)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.core$load_one.invoke(core.clj:5200)
	at clojure.core$compile$fn__4615.invoke(core.clj:5397)
	at clojure.core$compile.invoke(core.clj:5396)
	at user$eval27.invoke(NO_SOURCE_FILE:1)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.eval(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6465)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.eval(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6455)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.eval(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6431)
	at clojure.core$eval.invoke(core.clj:2795)
	at clojure.main$eval_opt.invoke(main.clj:296)
	at clojure.main$initialize.invoke(main.clj:315)
	at clojure.main$null_opt.invoke(main.clj:348)
	at clojure.main$main.doInvoke(main.clj:426)
	at clojure.lang.RestFn.invoke(RestFn.java:421)
	at clojure.lang.Var.invoke(Var.java:405)
	at clojure.lang.AFn.applyToHelper(AFn.java:163)
	at clojure.lang.Var.applyTo(Var.java:518)
	at clojure.main.main(main.java:37)
Caused by: java.lang.IndexOutOfBoundsException
	at clojure.lang.PersistentVector.arrayFor(PersistentVector.java:106)
	at clojure.lang.PersistentVector.nth(PersistentVector.java:110)
	at clojure.lang.RT.nth(RT.java:741)
	at clojure.core.match.PatternRow.invoke(match.clj:327)
	at clojure.core.match.PatternMatrix.pattern_at(match.clj:713)
	at clojure.core.match$useful_p_QMARK_.invoke(match.clj:778)
	at clojure.core.match.PatternMatrix$iter__832__838$fn__839$iter__834__840$fn__841$fn__842.invoke(match.clj:735)
	at clojure.core.match.PatternMatrix$iter__832__838$fn__839$iter__834__840$fn__841.invoke(match.clj:733)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:60)
	at clojure.lang.RT.seq(RT.java:466)
	at clojure.core$seq.invoke(core.clj:133)
	at clojure.core.match.PatternMatrix$iter__832__838$fn__839.invoke(match.clj:734)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:67)
	at clojure.lang.RT.seq(RT.java:466)
	at clojure.core$seq.invoke(core.clj:133)
	at clojure.core$partition$fn__3913.invoke(core.clj:2777)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:60)
	at clojure.lang.RT.seq(RT.java:466)
	at clojure.core$seq.invoke(core.clj:133)
	at clojure.core$map$fn__3811.invoke(core.clj:2424)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:60)
	at clojure.lang.Cons.next(Cons.java:39)
	at clojure.lang.PersistentVector.create(PersistentVector.java:50)
	at clojure.lang.LazilyPersistentVector.create(LazilyPersistentVector.java:31)
	at clojure.core$vec.invoke(core.clj:345)
	at clojure.core.match.PatternMatrix.useful_matrix(match.clj:733)
	at clojure.core.match.PatternMatrix.necessary_column(match.clj:725)
	at clojure.core.match.PatternMatrix$choose_column__815.invoke(match.clj:690)
	at clojure.core.match.PatternMatrix.compile(match.clj:708)
	at clojure.core.match$first_column_chosen_case$switch_clauses__780$fn__781.invoke(match.clj:613)
	at clojure.core$map$fn__3815.invoke(core.clj:2437)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:60)
	at clojure.lang.RT.seq(RT.java:466)
	at clojure.core$seq.invoke(core.clj:133)
	at clojure.core$reduce.invoke(core.clj:5994)
	at clojure.core$into.invoke(core.clj:6004)
	at clojure.core.match$first_column_chosen_case$switch_clauses__780.invoke(match.clj:616)
	at clojure.core.match$first_column_chosen_case.invoke(match.clj:646)
	at clojure.core.match.PatternMatrix.compile(match.clj:710)
	at clojure.core.match$first_column_chosen_case$switch_clauses__780$fn__781.invoke(match.clj:613)
	at clojure.core$map$fn__3815.invoke(core.clj:2437)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:60)
	at clojure.lang.RT.seq(RT.java:466)
	at clojure.core$seq.invoke(core.clj:133)
	at clojure.core$reduce.invoke(core.clj:5994)
	at clojure.core$into.invoke(core.clj:6004)
	at clojure.core.match$first_column_chosen_case$switch_clauses__780.invoke(match.clj:616)
	at clojure.core.match$first_column_chosen_case.invoke(match.clj:646)
	at clojure.core.match.PatternMatrix.compile(match.clj:710)
	at clojure.core.match$clj_form.invoke(match.clj:1616)
	at clojure.core.match$match.doInvoke(match.clj:1645)
	at clojure.lang.RestFn.invoke(RestFn.java:573)
	at clojure.lang.Var.invoke(Var.java:426)
	at clojure.lang.AFn.applyToHelper(AFn.java:193)
	at clojure.lang.Var.applyTo(Var.java:518)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.macroexpand1(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6320)
	at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.analyzeSeq(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6395)
	... 46 more&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="15261">MATCH-54</key>
            <summary>Cannot AOT with certain match expression.</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="dnolen">David Nolen</assignee>
                                <reporter username="jasonjckn">Jason Jackson</reporter>
                        <labels>
                    </labels>
                <created>Sun, 4 Mar 2012 16:42:23 -0600</created>
                <updated>Sat, 18 May 2013 14:22:38 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                <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>

<item>
            <title>[MATCH-51] Fail to match empty vector </title>
                <link>http://dev.clojure.org/jira/browse/MATCH-51</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(match (vector)
  ([(re :guard string?)] :seq) 4
  [] 6)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This should evaluate to 6 not nil. &lt;/p&gt;

</description>
                <environment></environment>
            <key id="15133">MATCH-51</key>
            <summary>Fail to match empty vector </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="dnolen">David Nolen</assignee>
                                <reporter username="jasonjckn">Jason Jackson</reporter>
                        <labels>
                    </labels>
                <created>Sat, 21 Jan 2012 09:29:51 -0600</created>
                <updated>Sat, 18 May 2013 14:24:24 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27598" author="jasonjckn" created="Sat, 21 Jan 2012 09:30:58 -0600"  >&lt;p&gt;tested on 0.2.0-alpha10-SNAPSHOT&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>

<item>
            <title>[MATCH-53] Match doesn&apos;t work when AOT compiled into a JAR, but manually macroexpanding and JAR&apos;ing works fine.</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-53</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;Code here:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://gist.github.com/35fa11df7d7516abff50&quot;&gt;https://gist.github.com/35fa11df7d7516abff50&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Running lein uberjar on source containing the offending function, geo-&amp;gt;svg, results in a non-working application.&lt;br/&gt;
However, if match is manually macroexpanded in the repl and the results pasted in, then the JAR works just fine.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15247">MATCH-53</key>
            <summary>Match doesn&apos;t work when AOT compiled into a JAR, but manually macroexpanding and JAR&apos;ing works fine.</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="dnolen">David Nolen</assignee>
                                <reporter username="lynaghk">Kevin Lynagh</reporter>
                        <labels>
                    </labels>
                <created>Fri, 24 Feb 2012 14:21:34 -0600</created>
                <updated>Sat, 18 May 2013 14:25:39 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="27847" author="lynaghk" created="Fri, 24 Feb 2012 14:27:53 -0600"  >&lt;p&gt;&quot;non-working&quot; meaning that the match always drops directly the :else clause.&lt;/p&gt;</comment>
                    <comment id="27860" author="lynaghk" created="Fri, 24 Feb 2012 18:09:08 -0600"  >&lt;p&gt;Updated code to minimal example. Problem persists with both Lein 1.7 and cake 0.6.3&lt;/p&gt;</comment>
                    <comment id="27876" author="dnolen" created="Sat, 25 Feb 2012 19:35:55 -0600"  >&lt;p&gt;AOT bugs are a bit tricky to track down. Not sure how soon I&apos;ll be able to really dive into this one.&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>

<item>
            <title>[MATCH-57] Non deterministic match behavior for seqs when AOT</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-57</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;The following source example:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/narkisr/match-issue/blob/master/src/match_issue/core.clj&quot;&gt;https://github.com/narkisr/match-issue/blob/master/src/match_issue/core.clj&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The defrule macro calls a function called lhs that use the match library, &lt;/p&gt;

&lt;p&gt;this function calls it self recursively and print out the rest of body  left to be matched, &lt;/p&gt;

&lt;p&gt;When running lein compile two different results appear (in non deterministic fashion):&lt;/p&gt;

&lt;p&gt;(when $message :&amp;gt; Message (== level 6) :from (entry-point event-stream))&lt;br/&gt;
($message :&amp;gt; Message (== level 6) :from (entry-point event-stream))&lt;br/&gt;
(Message (== level 6) :from (entry-point event-stream))&lt;br/&gt;
((== level 6) :from (entry-point event-stream))&lt;/p&gt;

&lt;p&gt;This is the bug, as (== level 6) should be matched by:&lt;/p&gt;

&lt;p&gt;[([(&lt;span class=&quot;error&quot;&gt;&amp;#91;(o :when operator?) f s&amp;#93;&lt;/span&gt; :seq) :as c &amp;amp; r] :seq)]&lt;/p&gt;

&lt;p&gt;In other cases the output is (the correct one):&lt;/p&gt;

&lt;p&gt;(when $message :&amp;gt; Message (== level 6) :from (entry-point event-stream))&lt;br/&gt;
($message :&amp;gt; Message (== level 6) :from (entry-point event-stream))&lt;br/&gt;
(Message (== level 6) :from (entry-point event-stream))&lt;br/&gt;
((== level 6) :from (entry-point event-stream))&lt;br/&gt;
(:from (entry-point event-stream))&lt;br/&gt;
(entry-point event-stream)&lt;br/&gt;
()&lt;br/&gt;
()&lt;/p&gt;
</description>
                <environment>Clojure 1.3&lt;br/&gt;
&lt;br/&gt;
Leiningen 1.7.1 on Java 1.6.0_26&lt;br/&gt;
&lt;br/&gt;
core.match &amp;quot;0.2.0-alpha9&amp;quot;&lt;br/&gt;
</environment>
            <key id="15317">MATCH-57</key>
            <summary>Non deterministic match behavior for seqs when AOT</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="dnolen">David Nolen</assignee>
                                <reporter username="narkisr">Ronen Narkis</reporter>
                        <labels>
                    </labels>
                <created>Thu, 5 Apr 2012 19:47:42 -0500</created>
                <updated>Sat, 18 May 2013 14:29:42 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="28083" author="dnolen" created="Fri, 6 Apr 2012 11:03:51 -0500"  >&lt;p&gt;All AOT related issues w/o patches are low priority for the foreseeable future. They are simply too time consuming to track down and I don&apos;t have the bandwidth at the moment. I will get to them eventually, but if you want movement on this please submit a patch. I will happily apply it!&lt;/p&gt;</comment>
                    <comment id="28087" author="narkisr" created="Sat, 7 Apr 2012 19:53:58 -0500"  >&lt;p&gt;Hey David, &lt;/p&gt;

&lt;p&gt;After going through the source code and some more in depth look I managed to understand what was going on, first iv stepped through the different stages&lt;/p&gt;


&lt;p&gt;(def m (emit-matrix &lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;#39;body&amp;#93;&lt;/span&gt; &lt;br/&gt;
    &apos;( [(&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;#39;when &amp;amp; r&amp;#93;&lt;/span&gt; :seq)] (lhs r)&lt;br/&gt;
       [(&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;#39;accumulate &amp;amp; r&amp;#93;&lt;/span&gt; :seq)] (&amp;lt;&amp;lt; &quot;accumulate(~(lhs r))&quot;)&lt;br/&gt;
       [(&lt;span class=&quot;error&quot;&gt;&amp;#91;bind &amp;#39;:&amp;gt; &amp;amp; r&amp;#93;&lt;/span&gt; :seq)] (&amp;lt;&amp;lt; &quot;~{bind}:~(lhs r)&quot;); pattern with bind&lt;br/&gt;
       [(&lt;span class=&quot;error&quot;&gt;&amp;#91;(t :when is-type?) &amp;amp; r&amp;#93;&lt;/span&gt; :seq)] (&amp;lt;&amp;lt; &quot;&lt;sub&gt;{t}&lt;/sub&gt;(lhs r)&quot;); pattern &lt;br/&gt;
       [([(&lt;span class=&quot;error&quot;&gt;&amp;#91;(f :when acc-fn?) &amp;amp; args&amp;#93;&lt;/span&gt; :seq) &amp;amp; r] :seq)] (&amp;lt;&amp;lt; &quot;,&lt;sub&gt;{f}&lt;/sub&gt;{args}~(lhs r)&quot; ); accumulate function&lt;br/&gt;
       [(&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;#39;:from dest &amp;amp; r&amp;#93;&lt;/span&gt; :seq)]  (&amp;lt;&amp;lt; &quot;from ~(lhs dest) ~(lhs r)&quot;)&lt;br/&gt;
       [(&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;#39;:over win &amp;amp; r&amp;#93;&lt;/span&gt; :seq)] (&amp;lt;&amp;lt; &quot;over ~(window win) ~(lhs r)&quot;)&lt;br/&gt;
       [([(&lt;span class=&quot;error&quot;&gt;&amp;#91;(o :when operator?) f s&amp;#93;&lt;/span&gt; :seq) :as c &amp;amp; r] :seq)] (&amp;lt;&amp;lt; &quot;(~(reduce str (map pr-str (to-infix c)))) ~(lhs r)&quot;)&lt;br/&gt;
         [(&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;#39;entry-point point &amp;amp; r&amp;#93;&lt;/span&gt; :seq)] (&amp;lt;&amp;lt; &quot;entry-point \&quot;~{point}\&quot;~(lhs r)&quot;)&lt;br/&gt;
         :else &quot;&quot;&lt;br/&gt;
         )))&lt;/p&gt;

&lt;p&gt;(def c (cm/compile m))&lt;/p&gt;

&lt;p&gt;(pprint c)&lt;/p&gt;

&lt;p&gt;(pprint (executable-form c))&lt;/p&gt;

&lt;p&gt;The last pprint failed aot compilation:&lt;/p&gt;

&lt;p&gt;$ lein compile&lt;/p&gt;

&lt;p&gt; ...&lt;br/&gt;
    Caused by: java.lang.ClassCastException: clojure.core.match.WildcardPattern cannot be cast to java.lang.String&lt;/p&gt;

&lt;p&gt;Which was very weird as I could clearly see that:&lt;/p&gt;

&lt;p&gt;(deftype WildcardPattern &lt;span class=&quot;error&quot;&gt;&amp;#91;sym _meta&amp;#93;&lt;/span&gt;&lt;br/&gt;
  IWildcardPattern&lt;br/&gt;
  (sym &lt;span class=&quot;error&quot;&gt;&amp;#91;_&amp;#93;&lt;/span&gt; sym)&lt;br/&gt;
  clojure.lang.IObj&lt;br/&gt;
  (meta &lt;span class=&quot;error&quot;&gt;&amp;#91;_&amp;#93;&lt;/span&gt; _meta)&lt;br/&gt;
  (withMeta &lt;span class=&quot;error&quot;&gt;&amp;#91;_ new-meta&amp;#93;&lt;/span&gt;&lt;br/&gt;
    (WildcardPattern. sym new-meta))&lt;br/&gt;
  Object&lt;br/&gt;
  (toString &lt;span class=&quot;error&quot;&gt;&amp;#91;_&amp;#93;&lt;/span&gt;&lt;br/&gt;
    (str sym)))&lt;/p&gt;

&lt;p&gt;Then iv also tried to enabled trace:&lt;/p&gt;

&lt;p&gt;(set-trace! true)&lt;/p&gt;


&lt;p&gt;Which resulted with:&lt;/p&gt;

&lt;p&gt;$ lein compile&lt;/p&gt;

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

&lt;p&gt;TRACE: DAG: Column 0 : [#&amp;lt;SeqPattern &lt;a href=&quot;#&amp;lt;WildcardPattern t&amp;gt; #&amp;lt;WildcardPattern unit&amp;gt;&quot;&gt;#&amp;lt;LiteralPattern window&amp;gt; #&amp;lt;LiteralPattern :time&amp;gt; #&amp;lt;WildcardPattern t&amp;gt; #&amp;lt;WildcardPattern unit&amp;gt;&lt;/a&gt;&amp;gt;]&lt;br/&gt;
TRA	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6416)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6216)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6177)&lt;br/&gt;
	at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5572)&lt;br/&gt;
	at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5008)&lt;br/&gt;
	at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3629)&lt;br/&gt;
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6407)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6216)&lt;br/&gt;
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6397)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6216)&lt;br/&gt;
	at clojure.lang.Compiler.access$100(Compiler.java:37)&lt;br/&gt;
	at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:492)&lt;br/&gt;
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6409)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6216)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6177)&lt;br/&gt;
	at clojure.lang.Compiler.compile1(Compiler.java:6980)&lt;br/&gt;
	at clojure.lang.Compiler.compile(Compiler.java:7046)&lt;br/&gt;
	at clojure.lang.RT.compile(RTCE: DAG: Add switch-node on occurrence  exp&lt;/p&gt;


&lt;p&gt;The most weird thing was that on second compile it all went well, this raised a flag and my suspicion was that the core.match classes got compiled on the first run:&lt;/p&gt;

&lt;p&gt;$ ls classes/&lt;/p&gt;

&lt;p&gt;match$analyze_actions$analyze_action__1166.class&lt;br/&gt;
match$analyze_actions.class&lt;br/&gt;
match$backtrack_expr.class&lt;br/&gt;
match$bind_node.class&lt;br/&gt;
match$catch_error.class&lt;br/&gt;
match$check_matrix_args$check_pattern__1150.class&lt;br/&gt;
...&lt;/p&gt;

&lt;p&gt;Then iv decided to AOT compile clojure.core match:&lt;/p&gt;

&lt;p&gt;$ git checkout core.match-0.2.0-alpha9&lt;br/&gt;
$ git diff project.clj&lt;br/&gt;
-(defproject match &quot;0.2.0-alpha10-SNAPSHOT&quot;&lt;br/&gt;
+(defproject match &quot;0.2.0-alpha10-aot&quot;&lt;br/&gt;
   :description &quot;Optimized pattern matching and predicate dispatch for Clojure&quot;&lt;br/&gt;
   :source-path &quot;src/main/clojure&quot;&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;:test-path &quot;src/test/clojure&quot;)&lt;br/&gt;
+  :test-path &quot;src/test/clojure&quot;&lt;br/&gt;
+  :aot &lt;span class=&quot;error&quot;&gt;&amp;#91;clojure.core.match&amp;#93;&lt;/span&gt; &lt;br/&gt;
+  )&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;After using the aot jar it all went smooth including passing my non deterministic case (which is deterministic but very confusing to track down), &lt;/p&gt;

&lt;p&gt;In order to reproduce it its important to run:&lt;/p&gt;

&lt;p&gt;$ lein clean &lt;br/&gt;
$ rm -rf lib &lt;/p&gt;

&lt;p&gt;And only then run &lt;/p&gt;

&lt;p&gt;$ lein compile&lt;/p&gt;

&lt;p&gt;Otherwise the classes dir might contain AOT&apos;ed classes and make it seem that even non-aot jar works fine (its enough to run lein compile once to cause the classes to get compiled), &lt;/p&gt;

&lt;p&gt;The fix in my case is simple, just AOT ns. &lt;/p&gt;

&lt;p&gt;Im not sure if this Is a bug in the way Clojure AOT its classes but I think that adding the AOT&apos;ed classes to the default core match distro is a reasonable workaround &lt;/p&gt;

&lt;p&gt;BTW when using master (and not the tag) iv stumbled upon:&lt;/p&gt;

&lt;p&gt;  Exception in thread &quot;main&quot; java.lang.AssertionError: Assert failed: Unknown predicate in &lt;span class=&quot;error&quot;&gt;&amp;#91;is-type?&amp;#93;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Which is a pred defined in my ns.&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>

<item>
            <title>[MATCH-68] Vector match &quot;underflow&quot; =&gt; IndexOutOfBoundsException</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-68</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;This fails with &lt;tt&gt;0.2.0-alpha12&lt;/tt&gt;:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(match [[:x]]
  [[m n &amp;amp; _]] 1)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I expect nil, but an unguarded &lt;tt&gt;subvec&lt;/tt&gt; call throws an &lt;tt&gt;IndexOutOfBoundsException&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;A WIP patch is attached that fixes this (perhaps incorrectly) but which produced regressions (outside of core.match), e.g.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(match [[[:x &lt;span class=&quot;code-quote&quot;&gt;&quot;t&quot;&lt;/span&gt;]]]
 [[[:x &amp;amp; a] &amp;amp; tail]] :a
 [[[:y &amp;amp; p] [:x &amp;amp; a] &amp;amp; tail]] :b)
=&amp;gt; nil&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The patch also &quot;fixes&quot; this (by changing &lt;tt&gt;pattern-compare&lt;/tt&gt; behaviour for rest &lt;tt&gt;VectorPattern&lt;/tt&gt; s, but that leads to a regression in the &lt;tt&gt;vector-pattern-rest-2&lt;/tt&gt; testcase in core.match.&lt;/p&gt;

&lt;p&gt;(Original discussion with further background &lt;a href=&quot;http://groups.google.com/group/clojure-dev/browse_thread/thread/cc2399f966489c6c?hl=en&quot;&gt;here&lt;/a&gt;.)&lt;/p&gt;</description>
                <environment></environment>
            <key id="16154">MATCH-68</key>
            <summary>Vector match &quot;underflow&quot; =&gt; IndexOutOfBoundsException</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="dnolen">David Nolen</assignee>
                                <reporter username="cemerick">Chas Emerick</reporter>
                        <labels>
                    </labels>
                <created>Mon, 22 Apr 2013 12:40:00 -0500</created>
                <updated>Sat, 18 May 2013 15:11:12 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30989" author="glchapman" created="Wed, 24 Apr 2013 17:26:31 -0500"  >&lt;p&gt;FWIW, I&apos;ve been using the patch described &lt;a href=&quot;http://dev.clojure.org/jira/browse/MATCH-56&quot;&gt;here&lt;/a&gt;, and haven&apos;t yet run into any problems, though I also haven&apos;t used core.match that much. Anyway, with the change to subvec-inline, both of the cases here act as expected (producing nil and :a, respectively).&lt;/p&gt;

&lt;p&gt;(I note looking at my patch that I&apos;m doubly-evaluating ocr in the second overload; obviously that should be fixed with a let binding).&lt;/p&gt;</comment>
                    <comment id="31111" author="dnolen" created="Sat, 18 May 2013 15:11:12 -0500"  >&lt;p&gt;The patch looks like it&apos;s going in the right direction. Can you explain why your patch without the pattern-compares case causes the second example to fail?&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11966" name="vector-rest-WIP.diff" size="2850" author="cemerick" created="Mon, 22 Apr 2013 12:40:00 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[MATCH-8] Implement (p|q)ba heuristics</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-8</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;We should implement the rest of Maranget&apos;s suggested heuristics.&lt;/p&gt;

&lt;p&gt;p - needed prefix&lt;br/&gt;
q - constructor prefix&lt;br/&gt;
b - branching factor&lt;br/&gt;
a - constructor arity&lt;/p&gt;</description>
                <environment></environment>
            <key id="14607">MATCH-8</key>
            <summary>Implement (p|q)ba heuristics</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Sun, 4 Sep 2011 10:00:57 -0500</created>
                <updated>Sun, 4 Sep 2011 10:00:57 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                <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>

<item>
            <title>[MATCH-9] use case for dispatching on literals</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-9</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;Would speed up literal matching considerably.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14608">MATCH-9</key>
            <summary>use case for dispatching on literals</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Sun, 4 Sep 2011 10:01:28 -0500</created>
                <updated>Mon, 10 Oct 2011 22:45:51 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                <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>

<item>
            <title>[MATCH-7] Eliminate distinction between leaf-bind-expr and bind-expr</title>
                <link>http://dev.clojure.org/jira/browse/MATCH-7</link>
                <project id="10050" key="MATCH">core.match</project>
                        <description>&lt;p&gt;We should have a better considered binding model that works for all cases instead of treating leaf nodes and regular binding as different cases.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14606">MATCH-7</key>
            <summary>Eliminate distinction between leaf-bind-expr and bind-expr</summary>
                <type id="3" iconUrl="http://dev.clojure.org/jira/images/icons/task.gif">Task</type>
                                <priority id="5" iconUrl="http://dev.clojure.org/jira/images/icons/priority_trivial.gif">Trivial</priority>
                    <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Sun, 4 Sep 2011 10:00:02 -0500</created>
                <updated>Fri, 21 Oct 2011 18:55:52 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                <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>