2.2.1 (#4885) · jashkenas/coffeescript@a73f66b

@@ -2947,7 +2947,11 @@ <h3 id="range">Range</h3>

29472947

idx = del o, <span class="hljs-string">'index'</span>

29482948

idxName = del o, <span class="hljs-string">'name'</span>

29492949

namedIndex = idxName <span class="hljs-keyword">and</span> idxName <span class="hljs-keyword">isnt</span> idx

2950-

varPart = <span class="hljs-string">"<span class="hljs-subst">#{idx}</span> = <span class="hljs-subst">#{@fromC}</span>"</span>

2950+

varPart =

2951+

<span class="hljs-keyword">if</span> known <span class="hljs-keyword">and</span> <span class="hljs-keyword">not</span> namedIndex

2952+

<span class="hljs-string">"var <span class="hljs-subst">#{idx}</span> = <span class="hljs-subst">#{@fromC}</span>"</span>

2953+

<span class="hljs-keyword">else</span>

2954+

<span class="hljs-string">"<span class="hljs-subst">#{idx}</span> = <span class="hljs-subst">#{@fromC}</span>"</span>

29512955

varPart += <span class="hljs-string">", <span class="hljs-subst">#{@toC}</span>"</span> <span class="hljs-keyword">if</span> @toC <span class="hljs-keyword">isnt</span> @toVar

29522956

varPart += <span class="hljs-string">", <span class="hljs-subst">#{@step}</span>"</span> <span class="hljs-keyword">if</span> @step <span class="hljs-keyword">isnt</span> @stepVar

29532957

[lt, gt] = [<span class="hljs-string">"<span class="hljs-subst">#{idx}</span> &lt;<span class="hljs-subst">#{@equals}</span>"</span>, <span class="hljs-string">"<span class="hljs-subst">#{idx}</span> &gt;<span class="hljs-subst">#{@equals}</span>"</span>]</pre></div></div>

@@ -4955,8 +4959,8 @@ <h3 id="assign">Assign</h3>

4955495949564960

<div class="content"><div class='highlight'><pre> objects[splatsAndExpans.sort()[<span class="hljs-number">1</span>]].error <span class="hljs-string">"multiple splats/expansions are disallowed in an assignment"</span>

495749614958-

isSplat = splats.length

4959-

isExpans = expans.length

4962+

isSplat = splats?.length &gt; <span class="hljs-number">0</span>

4963+

isExpans = expans?.length &gt; <span class="hljs-number">0</span>

49604964

isObject = @variable.isObject()

49614965

isArray = @variable.isArray()

49624966

@@ -5101,7 +5105,7 @@ <h3 id="assign">Assign</h3>

5101510551025106

</div>

510351075104-

<div class="content"><div class='highlight'><pre><span class="hljs-function"> <span class="hljs-title">loopObjects</span> = <span class="hljs-params">(objs, vvarTxt)</span> =&gt;</span>

5108+

<div class="content"><div class='highlight'><pre><span class="hljs-function"> <span class="hljs-title">loopObjects</span> = <span class="hljs-params">(objs, vvar, vvarTxt)</span> =&gt;</span>

51055109

objSpreads = hasObjSpreads objs

51065110

<span class="hljs-keyword">for</span> obj, i <span class="hljs-keyword">in</span> objs</pre></div></div>

51075111

@@ -5182,16 +5186,16 @@ <h3 id="assign">Assign</h3>

5182518651835187

</div>

518451885185-

<div class="content"><div class='highlight'><pre><span class="hljs-function"> <span class="hljs-title">assignObjects</span> = <span class="hljs-params">(objs, vvarTxt)</span> =&gt;</span>

5189+

<div class="content"><div class='highlight'><pre><span class="hljs-function"> <span class="hljs-title">assignObjects</span> = <span class="hljs-params">(objs, vvar, vvarTxt)</span> =&gt;</span>

51865190

vvar = <span class="hljs-keyword">new</span> Value <span class="hljs-keyword">new</span> Arr(objs, <span class="hljs-literal">yes</span>)

51875191

vval = <span class="hljs-keyword">if</span> vvarTxt <span class="hljs-keyword">instanceof</span> Value <span class="hljs-keyword">then</span> vvarTxt <span class="hljs-keyword">else</span> <span class="hljs-keyword">new</span> Value <span class="hljs-keyword">new</span> Literal(vvarTxt)

51885192

assigns.push <span class="hljs-keyword">new</span> Assign(vvar, vval, <span class="hljs-literal">null</span>, param: @param, subpattern: <span class="hljs-literal">yes</span>).compileToFragments o, LEVEL_LIST

51895193

<span class="hljs-function">

5190-

<span class="hljs-title">processObjects</span> = <span class="hljs-params">(objs, vvarTxt)</span> -&gt;</span>

5194+

<span class="hljs-title">processObjects</span> = <span class="hljs-params">(objs, vvar, vvarTxt)</span> -&gt;</span>

51915195

<span class="hljs-keyword">if</span> complexObjects objs

5192-

loopObjects objs, vvarTxt

5196+

loopObjects objs, vvar, vvarTxt

51935197

<span class="hljs-keyword">else</span>

5194-

assignObjects objs, vvarTxt</pre></div></div>

5198+

assignObjects objs, vvar, vvarTxt</pre></div></div>

5195519951965200

</li>

51975201

@@ -5220,7 +5224,7 @@ <h3 id="assign">Assign</h3>

52205224

expIdx = splatsAndExpans[<span class="hljs-number">0</span>]

52215225

leftObjs = objects.slice <span class="hljs-number">0</span>, expIdx + (<span class="hljs-keyword">if</span> isSplat <span class="hljs-keyword">then</span> <span class="hljs-number">1</span> <span class="hljs-keyword">else</span> <span class="hljs-number">0</span>)

52225226

rightObjs = objects.slice expIdx + <span class="hljs-number">1</span>

5223-

processObjects leftObjs, vvarText <span class="hljs-keyword">if</span> leftObjs.length <span class="hljs-keyword">isnt</span> <span class="hljs-number">0</span>

5227+

processObjects leftObjs, vvar, vvarText <span class="hljs-keyword">if</span> leftObjs.length <span class="hljs-keyword">isnt</span> <span class="hljs-number">0</span>

52245228

<span class="hljs-keyword">if</span> rightObjs.length <span class="hljs-keyword">isnt</span> <span class="hljs-number">0</span></pre></div></div>

5225522952265230

</li>

@@ -5243,7 +5247,7 @@ <h3 id="assign">Assign</h3>

52435247

restVar = refExp

52445248

refExp = o.scope.freeVariable <span class="hljs-string">'ref'</span>

52455249

assigns.push [@makeCode(refExp + <span class="hljs-string">' = '</span>), restVar.compileToFragments(o, LEVEL_LIST)...]

5246-

processObjects rightObjs, refExp

5250+

processObjects rightObjs, vvar, refExp

52475251

<span class="hljs-keyword">else</span></pre></div></div>

5248525252495253

</li>

@@ -5259,7 +5263,7 @@ <h3 id="assign">Assign</h3>

5259526352605264

</div>

526152655262-

<div class="content"><div class='highlight'><pre> processObjects objects, vvarText

5266+

<div class="content"><div class='highlight'><pre> processObjects objects, vvar, vvarText

52635267

assigns.push vvar <span class="hljs-keyword">unless</span> top <span class="hljs-keyword">or</span> @subpattern

52645268

fragments = @joinFragmentArrays assigns, <span class="hljs-string">', '</span>

52655269

<span class="hljs-keyword">if</span> o.level &lt; LEVEL_LIST <span class="hljs-keyword">then</span> fragments <span class="hljs-keyword">else</span> @wrapInParentheses fragments</pre></div></div>