<div dir="ltr"><div><div>Hi Patrick,<br></div>IMO copy should copy deep enough without the need to invoke veryDeepCopy.<br></div>Wouldn&#39;t it be a missing postCopy in RxmLookahead?<br><br>postCopy<br>    super postCopy.<br>    lookahead := lookahead copy<br></div><div class="gmail_extra"><br><div class="gmail_quote">2016-05-19 20:49 GMT+02:00  <span dir="ltr">&lt;<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Patrick Rein uploaded a new version of Regex-Core to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/Regex-Core-pre.51.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/trunk/Regex-Core-pre.51.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Regex-Core-pre.51<br>
Author: pre<br>
Time: 19 May 2016, 8:49:05.994548 pm<br>
UUID: 49e3e29a-cf96-4f42-a8f1-4af75dbb9bca<br>
Ancestors: Regex-Core-ul.50<br>
<br>
Fixes an erroring test of RxMatcher by replacing a copy with a veryDeepCopy to sustain the integrity of the RxmLink tree.<br>
<br>
=============== Diff against Regex-Core-ul.50 ===============<br>
<br>
Item was changed:<br>
  ----- Method: RxMatcher&gt;&gt;makeQuantified:min:max: (in category &#39;private&#39;) -----<br>
  makeQuantified: anRxmLink min: min max: max<br>
        &quot;Perform recursive poor-man&#39;s transformation of the {&lt;min&gt;,&lt;max&gt;} quantifiers.&quot;<br>
        | aMatcher |<br>
<br>
        &quot;&lt;atom&gt;{,&lt;max&gt;}       ==&gt;  (&lt;atom&gt;{1,&lt;max&gt;})?&quot;<br>
        min = 0 ifTrue: [<br>
                ^ self makeOptional: (self makeQuantified: anRxmLink min: 1 max: max) ].<br>
<br>
        &quot;&lt;atom&gt;{&lt;min&gt;,}       ==&gt;  &lt;atom&gt;{&lt;min&gt;-1, &lt;min&gt;-1}&lt;atom&gt;+&quot;<br>
        max ifNil: [<br>
+               ^ (self makeQuantified: anRxmLink min: 1 max: min-1) pointTailTo: (self makePlus: anRxmLink veryDeepCopy) ].<br>
-               ^ (self makeQuantified: anRxmLink min: 1 max: min-1) pointTailTo: (self makePlus: anRxmLink copy) ].<br>
<br>
        &quot;&lt;atom&gt;{&lt;max&gt;,&lt;max&gt;}  ==&gt;  &lt;atom&gt;&lt;atom&gt; ... &lt;atom&gt;&quot;<br>
        min = max<br>
                ifTrue: [<br>
+                       aMatcher := anRxmLink veryDeepCopy.<br>
+                       (min-1) timesRepeat: [ aMatcher pointTailTo: anRxmLink veryDeepCopy ].<br>
-                       aMatcher := anRxmLink copy.<br>
-                       (min-1) timesRepeat: [ aMatcher pointTailTo: anRxmLink copy ].<br>
                        ^ aMatcher ].<br>
<br>
        &quot;&lt;atom&gt;{&lt;min&gt;,&lt;max&gt;}  ==&gt;  &lt;atom&gt;{&lt;min&gt;,&lt;min&gt;}(&lt;atom&gt;{1,&lt;max&gt;-1})?&quot;<br>
+       aMatcher := self makeOptional: anRxmLink veryDeepCopy.<br>
-       aMatcher := self makeOptional: anRxmLink copy.<br>
        (max - min - 1) timesRepeat: [<br>
+                aMatcher := self makeOptional: (anRxmLink veryDeepCopy pointTailTo: aMatcher) ].<br>
-                aMatcher := self makeOptional: (anRxmLink copy pointTailTo: aMatcher) ].<br>
        ^ (self makeQuantified: anRxmLink min: min max: min) pointTailTo: aMatcher!<br>
<br>
<br>
</blockquote></div><br></div>