Skip to content

Commit cbc695b

Browse files
2.0.2 (#4758)
* Give the notes about `super` and `this` their own section in the docs * 2.0.2 changelog * 2.0.2 release output * Rewrite
1 parent f3375e7 commit cbc695b

34 files changed

+940
-444
lines changed

docs/v2/annotated-source/command.html

+4
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ <h1>command.coffee</h1>
295295
<div class="content"><div class='highlight'><pre> replCliOpts = useGlobal: <span class="hljs-literal">yes</span>
296296
opts.prelude = makePrelude opts.<span class="hljs-built_in">require</span> <span class="hljs-keyword">if</span> opts.<span class="hljs-built_in">require</span>
297297
replCliOpts.prelude = opts.prelude
298+
replCliOpts.transpile = opts.transpile
298299
<span class="hljs-keyword">return</span> forkNode() <span class="hljs-keyword">if</span> opts.nodejs
299300
<span class="hljs-keyword">return</span> usage() <span class="hljs-keyword">if</span> opts.help
300301
<span class="hljs-keyword">return</span> version() <span class="hljs-keyword">if</span> opts.version
@@ -508,6 +509,9 @@ <h1>command.coffee</h1>
508509
</div>
509510

510511
<div class="content"><div class='highlight'><pre><span class="hljs-function"><span class="hljs-title">compileStdio</span> = -&gt;</span>
512+
<span class="hljs-keyword">if</span> opts.map
513+
<span class="hljs-built_in">console</span>.error <span class="hljs-string">'--stdio and --map cannot be used together'</span>
514+
process.exit <span class="hljs-number">1</span>
511515
buffers = []
512516
stdin = process.openStdin()
513517
stdin.<span class="hljs-literal">on</span> <span class="hljs-string">'data'</span>, <span class="hljs-function"><span class="hljs-params">(buffer)</span> -&gt;</span>

docs/v2/annotated-source/grammar.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -650,7 +650,7 @@ <h2 id="grammatical-rules">Grammatical Rules</h2>
650650
</div>
651651

652652
<div class="content"><div class='highlight'><pre> Code: [
653-
o <span class="hljs-string">'PARAM_START ParamList PARAM_END FuncGlyph Block'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> Code $<span class="hljs-number">2</span>, $<span class="hljs-number">5</span>, $<span class="hljs-number">4</span>
653+
o <span class="hljs-string">'PARAM_START ParamList PARAM_END FuncGlyph Block'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> Code $<span class="hljs-number">2</span>, $<span class="hljs-number">5</span>, $<span class="hljs-number">4</span>, LOC(<span class="hljs-number">1</span>)(<span class="hljs-keyword">new</span> Literal $<span class="hljs-number">1</span>)
654654
o <span class="hljs-string">'FuncGlyph Block'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> Code [], $<span class="hljs-number">2</span>, $<span class="hljs-number">1</span>
655655
]</pre></div></div>
656656

docs/v2/annotated-source/index.html

+35-18
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,21 @@ <h1>index.coffee</h1>
274274
<div class="pilwrap ">
275275
<a class="pilcrow" href="#section-10">&#182;</a>
276276
</div>
277+
<p>Save the options for compiling child imports.</p>
278+
279+
</div>
280+
281+
<div class="content"><div class='highlight'><pre> mainModule.options = options</pre></div></div>
282+
283+
</li>
284+
285+
286+
<li id="section-11">
287+
<div class="annotation">
288+
289+
<div class="pilwrap ">
290+
<a class="pilcrow" href="#section-11">&#182;</a>
291+
</div>
277292
<p>Compile.</p>
278293

279294
</div>
@@ -287,11 +302,11 @@ <h1>index.coffee</h1>
287302
</li>
288303

289304

290-
<li id="section-11">
305+
<li id="section-12">
291306
<div class="annotation">
292307

293308
<div class="pilwrap ">
294-
<a class="pilcrow" href="#section-11">&#182;</a>
309+
<a class="pilcrow" href="#section-12">&#182;</a>
295310
</div>
296311
<p>Compile and evaluate a string of CoffeeScript (in a Node.js-like environment).
297312
The CoffeeScript REPL uses this to run the input.</p>
@@ -321,11 +336,11 @@ <h1>index.coffee</h1>
321336
</li>
322337

323338

324-
<li id="section-12">
339+
<li id="section-13">
325340
<div class="annotation">
326341

327342
<div class="pilwrap ">
328-
<a class="pilcrow" href="#section-12">&#182;</a>
343+
<a class="pilcrow" href="#section-13">&#182;</a>
329344
</div>
330345
<p>define module/require only if they chose not to specify their own</p>
331346

@@ -342,11 +357,11 @@ <h1>index.coffee</h1>
342357
</li>
343358

344359

345-
<li id="section-13">
360+
<li id="section-14">
346361
<div class="annotation">
347362

348363
<div class="pilwrap ">
349-
<a class="pilcrow" href="#section-13">&#182;</a>
364+
<a class="pilcrow" href="#section-14">&#182;</a>
350365
</div>
351366
<p>use the same hack node currently uses for their own REPL</p>
352367

@@ -368,11 +383,11 @@ <h1>index.coffee</h1>
368383
</li>
369384

370385

371-
<li id="section-14">
386+
<li id="section-15">
372387
<div class="annotation">
373388

374389
<div class="pilwrap ">
375-
<a class="pilcrow" href="#section-14">&#182;</a>
390+
<a class="pilcrow" href="#section-15">&#182;</a>
376391
</div>
377392
<p>Throw error with deprecation warning when depending upon implicit <code>require.extensions</code> registration</p>
378393

@@ -385,40 +400,42 @@ <h1>index.coffee</h1>
385400
Use CoffeeScript.register() or require the coffeescript/register module to require <span class="hljs-subst">#{ext}</span> files.
386401
"""</span>
387402

388-
CoffeeScript._compileFile = <span class="hljs-function"><span class="hljs-params">(filename, sourceMap = <span class="hljs-literal">no</span>, inlineMap = <span class="hljs-literal">no</span>)</span> -&gt;</span>
403+
CoffeeScript._compileFile = <span class="hljs-function"><span class="hljs-params">(filename, options = {})</span> -&gt;</span>
389404
raw = fs.readFileSync filename, <span class="hljs-string">'utf8'</span></pre></div></div>
390405

391406
</li>
392407

393408

394-
<li id="section-15">
409+
<li id="section-16">
395410
<div class="annotation">
396411

397412
<div class="pilwrap ">
398-
<a class="pilcrow" href="#section-15">&#182;</a>
413+
<a class="pilcrow" href="#section-16">&#182;</a>
399414
</div>
400415
<p>Strip the Unicode byte order mark, if this file begins with one.</p>
401416

402417
</div>
403418

404419
<div class="content"><div class='highlight'><pre> stripped = <span class="hljs-keyword">if</span> raw.charCodeAt(<span class="hljs-number">0</span>) <span class="hljs-keyword">is</span> <span class="hljs-number">0xFEFF</span> <span class="hljs-keyword">then</span> raw.substring <span class="hljs-number">1</span> <span class="hljs-keyword">else</span> raw
405420

421+
options = Object.assign {}, options,
422+
filename: filename
423+
literate: helpers.isLiterate filename
424+
sourceFiles: [filename]
425+
inlineMap: <span class="hljs-literal">yes</span> <span class="hljs-comment"># Always generate a source map, so that stack traces line up.</span>
426+
406427
<span class="hljs-keyword">try</span>
407-
answer = CoffeeScript.compile stripped, {
408-
filename, sourceMap, inlineMap
409-
sourceFiles: [filename]
410-
literate: helpers.isLiterate filename
411-
}
428+
answer = CoffeeScript.compile stripped, options
412429
<span class="hljs-keyword">catch</span> err</pre></div></div>
413430

414431
</li>
415432

416433

417-
<li id="section-16">
434+
<li id="section-17">
418435
<div class="annotation">
419436

420437
<div class="pilwrap ">
421-
<a class="pilcrow" href="#section-16">&#182;</a>
438+
<a class="pilcrow" href="#section-17">&#182;</a>
422439
</div>
423440
<p>As the filename and code of a dynamically loaded file will be different
424441
from the original file compiled with CoffeeScript.run, add that

docs/v2/annotated-source/lexer.html

+19-10
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,6 @@ <h2 id="tokenizers">Tokenizers</h2>
372372

373373
<div class="content"><div class='highlight'><pre> idLength = id.length
374374
poppedToken = <span class="hljs-literal">undefined</span>
375-
376375
<span class="hljs-keyword">if</span> id <span class="hljs-keyword">is</span> <span class="hljs-string">'own'</span> <span class="hljs-keyword">and</span> @tag() <span class="hljs-keyword">is</span> <span class="hljs-string">'FOR'</span>
377376
@token <span class="hljs-string">'OWN'</span>, id
378377
<span class="hljs-keyword">return</span> id.length
@@ -382,14 +381,21 @@ <h2 id="tokenizers">Tokenizers</h2>
382381
<span class="hljs-keyword">if</span> id <span class="hljs-keyword">is</span> <span class="hljs-string">'as'</span> <span class="hljs-keyword">and</span> @seenImport
383382
<span class="hljs-keyword">if</span> @value() <span class="hljs-keyword">is</span> <span class="hljs-string">'*'</span>
384383
@tokens[@tokens.length - <span class="hljs-number">1</span>][<span class="hljs-number">0</span>] = <span class="hljs-string">'IMPORT_ALL'</span>
385-
<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> @value() <span class="hljs-keyword">in</span> COFFEE_KEYWORDS
386-
@tokens[@tokens.length - <span class="hljs-number">1</span>][<span class="hljs-number">0</span>] = <span class="hljs-string">'IDENTIFIER'</span>
384+
<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> @value(<span class="hljs-literal">yes</span>) <span class="hljs-keyword">in</span> COFFEE_KEYWORDS
385+
prev = @prev()
386+
[prev[<span class="hljs-number">0</span>], prev[<span class="hljs-number">1</span>]] = [<span class="hljs-string">'IDENTIFIER'</span>, @value(<span class="hljs-literal">yes</span>)]
387387
<span class="hljs-keyword">if</span> @tag() <span class="hljs-keyword">in</span> [<span class="hljs-string">'DEFAULT'</span>, <span class="hljs-string">'IMPORT_ALL'</span>, <span class="hljs-string">'IDENTIFIER'</span>]
388388
@token <span class="hljs-string">'AS'</span>, id
389389
<span class="hljs-keyword">return</span> id.length
390-
<span class="hljs-keyword">if</span> id <span class="hljs-keyword">is</span> <span class="hljs-string">'as'</span> <span class="hljs-keyword">and</span> @seenExport <span class="hljs-keyword">and</span> @tag() <span class="hljs-keyword">in</span> [<span class="hljs-string">'IDENTIFIER'</span>, <span class="hljs-string">'DEFAULT'</span>]
391-
@token <span class="hljs-string">'AS'</span>, id
392-
<span class="hljs-keyword">return</span> id.length
390+
<span class="hljs-keyword">if</span> id <span class="hljs-keyword">is</span> <span class="hljs-string">'as'</span> <span class="hljs-keyword">and</span> @seenExport
391+
<span class="hljs-keyword">if</span> @tag() <span class="hljs-keyword">in</span> [<span class="hljs-string">'IDENTIFIER'</span>, <span class="hljs-string">'DEFAULT'</span>]
392+
@token <span class="hljs-string">'AS'</span>, id
393+
<span class="hljs-keyword">return</span> id.length
394+
<span class="hljs-keyword">if</span> @value(<span class="hljs-literal">yes</span>) <span class="hljs-keyword">in</span> COFFEE_KEYWORDS
395+
prev = @prev()
396+
[prev[<span class="hljs-number">0</span>], prev[<span class="hljs-number">1</span>]] = [<span class="hljs-string">'IDENTIFIER'</span>, @value(<span class="hljs-literal">yes</span>)]
397+
@token <span class="hljs-string">'AS'</span>, id
398+
<span class="hljs-keyword">return</span> id.length
393399
<span class="hljs-keyword">if</span> id <span class="hljs-keyword">is</span> <span class="hljs-string">'default'</span> <span class="hljs-keyword">and</span> @seenExport <span class="hljs-keyword">and</span> @tag() <span class="hljs-keyword">in</span> [<span class="hljs-string">'EXPORT'</span>, <span class="hljs-string">'AS'</span>]
394400
@token <span class="hljs-string">'DEFAULT'</span>, id
395401
<span class="hljs-keyword">return</span> id.length
@@ -455,7 +461,7 @@ <h2 id="tokenizers">Tokenizers</h2>
455461
</div>
456462

457463
<div class="content"><div class='highlight'><pre> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> tag <span class="hljs-keyword">is</span> <span class="hljs-string">'PROPERTY'</span> <span class="hljs-keyword">and</span> prev
458-
<span class="hljs-keyword">if</span> prev.spaced <span class="hljs-keyword">and</span> prev[<span class="hljs-number">0</span>] <span class="hljs-keyword">in</span> CALLABLE <span class="hljs-keyword">and</span> <span class="hljs-regexp">/^[gs]et$/</span>.test(prev[<span class="hljs-number">1</span>])
464+
<span class="hljs-keyword">if</span> prev.spaced <span class="hljs-keyword">and</span> prev[<span class="hljs-number">0</span>] <span class="hljs-keyword">in</span> CALLABLE <span class="hljs-keyword">and</span> <span class="hljs-regexp">/^[gs]et$/</span>.test(prev[<span class="hljs-number">1</span>]) <span class="hljs-keyword">and</span> @tokens[@tokens.length - <span class="hljs-number">2</span>][<span class="hljs-number">0</span>] <span class="hljs-keyword">isnt</span> <span class="hljs-string">'.'</span>
459465
@error <span class="hljs-string">"'<span class="hljs-subst">#{prev[<span class="hljs-number">1</span>]}</span>' cannot be used as a keyword, or as a function call without parentheses"</span>, prev[<span class="hljs-number">2</span>]
460466
<span class="hljs-keyword">else</span>
461467
prevprev = @tokens[@tokens.length - <span class="hljs-number">2</span>]
@@ -466,7 +472,7 @@ <h2 id="tokenizers">Tokenizers</h2>
466472
<span class="hljs-keyword">if</span> tag <span class="hljs-keyword">is</span> <span class="hljs-string">'IDENTIFIER'</span> <span class="hljs-keyword">and</span> id <span class="hljs-keyword">in</span> RESERVED
467473
@error <span class="hljs-string">"reserved word '<span class="hljs-subst">#{id}</span>'"</span>, length: id.length
468474

469-
<span class="hljs-keyword">unless</span> tag <span class="hljs-keyword">is</span> <span class="hljs-string">'PROPERTY'</span>
475+
<span class="hljs-keyword">unless</span> tag <span class="hljs-keyword">is</span> <span class="hljs-string">'PROPERTY'</span> <span class="hljs-keyword">or</span> @exportSpecifierList
470476
<span class="hljs-keyword">if</span> id <span class="hljs-keyword">in</span> COFFEE_ALIASES
471477
alias = id
472478
id = COFFEE_ALIAS_MAP[id]
@@ -1968,9 +1974,12 @@ <h2 id="helpers">Helpers</h2>
19681974

19691975
</div>
19701976

1971-
<div class="content"><div class='highlight'><pre> value: <span class="hljs-function">-&gt;</span>
1977+
<div class="content"><div class='highlight'><pre> value: <span class="hljs-function"><span class="hljs-params">(useOrigin = <span class="hljs-literal">no</span>)</span> -&gt;</span>
19721978
[..., token] = @tokens
1973-
token?[<span class="hljs-number">1</span>]</pre></div></div>
1979+
<span class="hljs-keyword">if</span> useOrigin <span class="hljs-keyword">and</span> token?.origin?
1980+
token.origin?[<span class="hljs-number">1</span>]
1981+
<span class="hljs-keyword">else</span>
1982+
token?[<span class="hljs-number">1</span>]</pre></div></div>
19741983

19751984
</li>
19761985

0 commit comments

Comments
 (0)