Skip to content

Commit 26a7ba1

Browse files
2.5.1 (#5297)
* Bump version to 2.5.1 * Changelog for 2.5.1 * Update output for 2.5.1
1 parent 9cef39d commit 26a7ba1

File tree

28 files changed

+253
-163
lines changed

28 files changed

+253
-163
lines changed

docs/v2/annotated-source/grammar.html

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -657,21 +657,15 @@ <h2 id="grammatical-rules">Grammatical Rules</h2>
657657
o <span class="hljs-string">'Parenthetical'</span>
658658
o <span class="hljs-string">'Super'</span>
659659
o <span class="hljs-string">'This'</span>
660-
o <span class="hljs-string">'SUPER Arguments'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> SuperCall LOC(<span class="hljs-number">1</span>)(<span class="hljs-keyword">new</span> Super), $<span class="hljs-number">2</span>, <span class="hljs-literal">no</span>, $<span class="hljs-number">1</span>
661-
o <span class="hljs-string">'DYNAMIC_IMPORT Arguments'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> DynamicImportCall LOC(<span class="hljs-number">1</span>)(<span class="hljs-keyword">new</span> DynamicImport), $<span class="hljs-number">2</span>
662-
o <span class="hljs-string">'SimpleObjAssignable Arguments'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> Call (<span class="hljs-keyword">new</span> Value $<span class="hljs-number">1</span>), $<span class="hljs-number">2</span>
663-
o <span class="hljs-string">'ObjSpreadExpr Arguments'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> Call $<span class="hljs-number">1</span>, $<span class="hljs-number">2</span>
660+
o <span class="hljs-string">'SUPER OptFuncExist Arguments'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> SuperCall LOC(<span class="hljs-number">1</span>)(<span class="hljs-keyword">new</span> Super), $<span class="hljs-number">3</span>, $<span class="hljs-number">2.</span>soak, $<span class="hljs-number">1</span>
661+
o <span class="hljs-string">'DYNAMIC_IMPORT Arguments'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> DynamicImportCall LOC(<span class="hljs-number">1</span>)(<span class="hljs-keyword">new</span> DynamicImport), $<span class="hljs-number">2</span>
662+
o <span class="hljs-string">'SimpleObjAssignable OptFuncExist Arguments'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> Call (<span class="hljs-keyword">new</span> Value $<span class="hljs-number">1</span>), $<span class="hljs-number">3</span>, $<span class="hljs-number">2.</span>soak
663+
o <span class="hljs-string">'ObjSpreadExpr OptFuncExist Arguments'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> Call $<span class="hljs-number">1</span>, $<span class="hljs-number">3</span>, $<span class="hljs-number">2.</span>soak
664664
]
665665

666666
ObjSpreadIdentifier: [
667-
o <span class="hljs-string">'SimpleObjAssignable ObjSpreadAccessor'</span>, <span class="hljs-function">-&gt;</span> (<span class="hljs-keyword">new</span> Value $<span class="hljs-number">1</span>).add $<span class="hljs-number">2</span>
668-
o <span class="hljs-string">'ObjSpreadExpr ObjSpreadAccessor'</span>, <span class="hljs-function">-&gt;</span> (<span class="hljs-keyword">new</span> Value $<span class="hljs-number">1</span>).add $<span class="hljs-number">2</span>
669-
]
670-
671-
ObjSpreadAccessor: [
672-
o <span class="hljs-string">'. Property'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> Access $<span class="hljs-number">2</span>
673-
o <span class="hljs-string">'INDEX_START IndexValue INDEX_END'</span>, <span class="hljs-function">-&gt;</span> $<span class="hljs-number">2</span>
674-
o <span class="hljs-string">'INDEX_START INDENT IndexValue OUTDENT INDEX_END'</span>, <span class="hljs-function">-&gt;</span> $<span class="hljs-number">3</span>
667+
o <span class="hljs-string">'SimpleObjAssignable Accessor'</span>, <span class="hljs-function">-&gt;</span> (<span class="hljs-keyword">new</span> Value $<span class="hljs-number">1</span>).add $<span class="hljs-number">2</span>
668+
o <span class="hljs-string">'ObjSpreadExpr Accessor'</span>, <span class="hljs-function">-&gt;</span> (<span class="hljs-keyword">new</span> Value $<span class="hljs-number">1</span>).add $<span class="hljs-number">2</span>
675669
]</pre></div></div>
676670

677671
</li>

docs/v2/annotated-source/lexer.html

Lines changed: 24 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ <h1>lexer.coffee</h1>
127127
</div>
128128

129129
<div class="content"><div class='highlight'><pre>
130-
{Rewriter, INVERSES} = <span class="hljs-built_in">require</span> <span class="hljs-string">'./rewriter'</span></pre></div></div>
130+
{Rewriter, INVERSES, UNFINISHED} = <span class="hljs-built_in">require</span> <span class="hljs-string">'./rewriter'</span></pre></div></div>
131131

132132
</li>
133133

@@ -212,7 +212,7 @@ <h2 id="the-lexer-class">The Lexer Class</h2>
212212
@literate = opts.literate <span class="hljs-comment"># Are we lexing literate CoffeeScript?</span>
213213
@indent = <span class="hljs-number">0</span> <span class="hljs-comment"># The current indentation level.</span>
214214
@baseIndent = <span class="hljs-number">0</span> <span class="hljs-comment"># The overall minimum indentation level.</span>
215-
@indebt = <span class="hljs-number">0</span> <span class="hljs-comment"># The over-indentation at the current level.</span>
215+
@continuationLineAdditionalIndent = <span class="hljs-number">0</span> <span class="hljs-comment"># The over-indentation at the current level.</span>
216216
@outdebt = <span class="hljs-number">0</span> <span class="hljs-comment"># The under-outdentation at the current level.</span>
217217
@indents = [] <span class="hljs-comment"># The stack of all current indentation levels.</span>
218218
@indentLiteral = <span class="hljs-string">''</span> <span class="hljs-comment"># The indentation.</span>
@@ -996,13 +996,15 @@ <h2 id="tokenizers">Tokenizers</h2>
996996
@error <span class="hljs-string">'indentation mismatch'</span>, offset: indent.length
997997
<span class="hljs-keyword">return</span> indent.length
998998

999-
<span class="hljs-keyword">if</span> size - @indebt <span class="hljs-keyword">is</span> @indent
999+
<span class="hljs-keyword">if</span> size - @continuationLineAdditionalIndent <span class="hljs-keyword">is</span> @indent
10001000
<span class="hljs-keyword">if</span> noNewlines <span class="hljs-keyword">then</span> @suppressNewlines() <span class="hljs-keyword">else</span> @newlineToken offset
10011001
<span class="hljs-keyword">return</span> indent.length
10021002

10031003
<span class="hljs-keyword">if</span> size &gt; @indent
10041004
<span class="hljs-keyword">if</span> noNewlines
1005-
@indebt = size - @indent <span class="hljs-keyword">unless</span> backslash
1005+
@continuationLineAdditionalIndent = size - @indent <span class="hljs-keyword">unless</span> backslash
1006+
<span class="hljs-keyword">if</span> @continuationLineAdditionalIndent
1007+
prev.continuationLineIndent = @indent + @continuationLineAdditionalIndent
10061008
@suppressNewlines()
10071009
<span class="hljs-keyword">return</span> indent.length
10081010
<span class="hljs-keyword">unless</span> @tokens.length
@@ -1013,14 +1015,15 @@ <h2 id="tokenizers">Tokenizers</h2>
10131015
@token <span class="hljs-string">'INDENT'</span>, diff, offset: offset + indent.length - size, length: size
10141016
@indents.push diff
10151017
@ends.push {tag: <span class="hljs-string">'OUTDENT'</span>}
1016-
@outdebt = @indebt = <span class="hljs-number">0</span>
1018+
@outdebt = @continuationLineAdditionalIndent = <span class="hljs-number">0</span>
10171019
@indent = size
10181020
@indentLiteral = newIndentLiteral
10191021
<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> size &lt; @baseIndent
10201022
@error <span class="hljs-string">'missing indentation'</span>, offset: offset + indent.length
10211023
<span class="hljs-keyword">else</span>
1022-
@indebt = <span class="hljs-number">0</span>
1023-
@outdentToken {moveOut: @indent - size, noNewlines, outdentLength: indent.length, offset, indentSize: size}
1024+
endsContinuationLineIndentation = @continuationLineAdditionalIndent &gt; <span class="hljs-number">0</span>
1025+
@continuationLineAdditionalIndent = <span class="hljs-number">0</span>
1026+
@outdentToken {moveOut: @indent - size, noNewlines, outdentLength: indent.length, offset, indentSize: size, endsContinuationLineIndentation}
10241027
indent.length</pre></div></div>
10251028

10261029
</li>
@@ -1037,7 +1040,7 @@ <h2 id="tokenizers">Tokenizers</h2>
10371040

10381041
</div>
10391042

1040-
<div class="content"><div class='highlight'><pre> outdentToken: <span class="hljs-function"><span class="hljs-params">({moveOut, noNewlines, outdentLength = <span class="hljs-number">0</span>, offset = <span class="hljs-number">0</span>, indentSize})</span> -&gt;</span>
1043+
<div class="content"><div class='highlight'><pre> outdentToken: <span class="hljs-function"><span class="hljs-params">({moveOut, noNewlines, outdentLength = <span class="hljs-number">0</span>, offset = <span class="hljs-number">0</span>, indentSize, endsContinuationLineIndentation})</span> -&gt;</span>
10411044
decreasedIndent = @indent - moveOut
10421045
<span class="hljs-keyword">while</span> moveOut &gt; <span class="hljs-number">0</span>
10431046
lastIndent = @indents[@indents.length - <span class="hljs-number">1</span>]
@@ -1072,7 +1075,9 @@ <h2 id="tokenizers">Tokenizers</h2>
10721075
@outdebt -= moveOut <span class="hljs-keyword">if</span> dent
10731076
@suppressSemicolons()
10741077

1075-
@token <span class="hljs-string">'TERMINATOR'</span>, <span class="hljs-string">'\n'</span>, offset: offset + outdentLength, length: <span class="hljs-number">0</span> <span class="hljs-keyword">unless</span> @tag() <span class="hljs-keyword">is</span> <span class="hljs-string">'TERMINATOR'</span> <span class="hljs-keyword">or</span> noNewlines
1078+
<span class="hljs-keyword">unless</span> @tag() <span class="hljs-keyword">is</span> <span class="hljs-string">'TERMINATOR'</span> <span class="hljs-keyword">or</span> noNewlines
1079+
terminatorToken = @token <span class="hljs-string">'TERMINATOR'</span>, <span class="hljs-string">'\n'</span>, offset: offset + outdentLength, length: <span class="hljs-number">0</span>
1080+
terminatorToken.endsContinuationLineIndentation = {preContinuationLineIndent: @indent} <span class="hljs-keyword">if</span> endsContinuationLineIndentation
10761081
@indent = decreasedIndent
10771082
@indentLiteral = @indentLiteral[...decreasedIndent]
10781083
<span class="hljs-keyword">this</span></pre></div></div>
@@ -1977,14 +1982,17 @@ <h2 id="helpers">Helpers</h2>
19771982
</div>
19781983

19791984
<div class="content"><div class='highlight'><pre> getLocationDataCompensation: <span class="hljs-function"><span class="hljs-params">(start, end)</span> -&gt;</span>
1980-
compensation = <span class="hljs-number">0</span>
1985+
totalCompensation = <span class="hljs-number">0</span>
19811986
initialEnd = end
1982-
<span class="hljs-keyword">for</span> index, length <span class="hljs-keyword">of</span> @locationDataCompensations
1983-
index = parseInt index, <span class="hljs-number">10</span>
1984-
<span class="hljs-keyword">continue</span> <span class="hljs-keyword">unless</span> start &lt;= index <span class="hljs-keyword">and</span> (index &lt; end <span class="hljs-keyword">or</span> index <span class="hljs-keyword">is</span> end <span class="hljs-keyword">and</span> start <span class="hljs-keyword">is</span> initialEnd)
1985-
compensation += length
1986-
end += length
1987-
compensation</pre></div></div>
1987+
current = start
1988+
<span class="hljs-keyword">while</span> current &lt;= end
1989+
<span class="hljs-keyword">break</span> <span class="hljs-keyword">if</span> current <span class="hljs-keyword">is</span> end <span class="hljs-keyword">and</span> start <span class="hljs-keyword">isnt</span> initialEnd
1990+
compensation = @locationDataCompensations[current]
1991+
<span class="hljs-keyword">if</span> compensation?
1992+
totalCompensation += compensation
1993+
end += compensation
1994+
current++
1995+
<span class="hljs-keyword">return</span> totalCompensation</pre></div></div>
19881996

19891997
</li>
19901998

@@ -3015,23 +3023,6 @@ <h2 id="constants">Constants</h2>
30153023

30163024
</li>
30173025

3018-
3019-
<li id="section-120">
3020-
<div class="annotation">
3021-
3022-
<div class="pilwrap ">
3023-
<a class="pilcrow" href="#section-120">&#182;</a>
3024-
</div>
3025-
<p>Tokens that, when appearing at the end of a line, suppress a following TERMINATOR/INDENT token</p>
3026-
3027-
</div>
3028-
3029-
<div class="content"><div class='highlight'><pre>UNFINISHED = [<span class="hljs-string">'\\'</span>, <span class="hljs-string">'.'</span>, <span class="hljs-string">'?.'</span>, <span class="hljs-string">'?::'</span>, <span class="hljs-string">'UNARY'</span>, <span class="hljs-string">'DO'</span>, <span class="hljs-string">'DO_IIFE'</span>, <span class="hljs-string">'MATH'</span>, <span class="hljs-string">'UNARY_MATH'</span>, <span class="hljs-string">'+'</span>, <span class="hljs-string">'-'</span>,
3030-
<span class="hljs-string">'**'</span>, <span class="hljs-string">'SHIFT'</span>, <span class="hljs-string">'RELATION'</span>, <span class="hljs-string">'COMPARE'</span>, <span class="hljs-string">'&amp;'</span>, <span class="hljs-string">'^'</span>, <span class="hljs-string">'|'</span>, <span class="hljs-string">'&amp;&amp;'</span>, <span class="hljs-string">'||'</span>,
3031-
<span class="hljs-string">'BIN?'</span>, <span class="hljs-string">'EXTENDS'</span>]</pre></div></div>
3032-
3033-
</li>
3034-
30353026
</ul>
30363027
</div>
30373028
</body>

0 commit comments

Comments
 (0)