* Update links to use https://coffeescript.org

* 2.3.1 changelog

* Bump version to 2.3.1; update output

* Forgot one

* Another one

* Lock Babel versions for Node 6 build to succeed, until Babel 7 is out
This commit is contained in:
Geoffrey Booth 2018-05-21 22:14:34 -07:00 committed by GitHub
parent 68302e6da7
commit be702d67f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
42 changed files with 1168 additions and 1159 deletions

View File

@ -19,7 +19,7 @@ unless process.env.NODE_DISABLE_COLORS
header = """
/**
* CoffeeScript Compiler v#{CoffeeScript.VERSION}
* http://coffeescript.org
* https://coffeescript.org
*
* Copyright 2011, Jeremy Ashkenas
* Released under the MIT License

View File

@ -7,7 +7,7 @@ Our issues history stretches back to 2009, so the odds are good that your topic
If you have a support request or question please use Stack Overflow:
https://stackoverflow.com/questions/tagged/coffeescript
Issues on GitHub are only related to problems of the CoffeeScript compiler itself and we cannot answer
Issues on GitHub are only related to problems of the CoffeeScript compiler itself and we cannot answer
support questions here.
-->
@ -21,18 +21,18 @@ with “Proposal:”. Once your issue is reviewed, a maintainer will edit the ti
of the codebase most relevant to the issue (if applicable).
If your request is that CoffeeScript support a new feature recently arrived to JavaScript, please note
that we generally only add features that have reached Stage 4 in the specification (in other words,
that we generally only add features that have reached Stage 4 in the specification (in other words,
the syntax is finalized and the feature is approved to be part of the next ES release). You can still
open an issue, but it will likely be tagged with “[Awaiting Stage 4]” until the relevant ES feature is
approved for release. See http://coffeescript.org/#contributing
approved for release. See https://coffeescript.org/#contributing
There are also a handful of JavaScript features that CoffeeScript intentionally does not support.
Please do not open issues regarding these. Theyre listed in http://coffeescript.org/#unsupported
Please do not open issues regarding these. Theyre listed in https://coffeescript.org/#unsupported
-->
### Input Code
<!--- If you're describing a bug, please let us know which sample code reproduces your problem. -->
<!--- If you have link from http://coffeescript.org/#try or a standalone repo please include that! -->
<!--- If you have link from https://coffeescript.org/#try or a standalone repo please include that! -->
```coffee
your (code) => here

View File

@ -1,20 +1,20 @@
<!--
Before making a PR please make sure to read our contributing guidelines:
http://coffeescript.org/#contributing
https://coffeescript.org/#contributing
For issue references: Add a comma-separated list of a
[closing word](https://help.github.com/articles/closing-issues-via-commit-messages/) followed by
For issue references: Add a comma-separated list of a
[closing word](https://help.github.com/articles/closing-issues-via-commit-messages/) followed by
the ticket number fixed by the PR. It should be underlined in the preview if done correctly.
All new features require tests. All but the most trivial bug fixes should also have new or updated tests.
Ensure that all new code you add to the compiler can be run in the minimum version of Node listed in
Ensure that all new code you add to the compiler can be run in the minimum version of Node listed in
`package.json`. New tests can require newer Node runtimes, but you may need to ensure that such tests
only run in supported runtimes; see `Cakefile` for examples of how to filter out certain tests in
only run in supported runtimes; see `Cakefile` for examples of how to filter out certain tests in
runtimes that dont support them.
Please follow the code style of the rest of the CoffeeScript codebase. Write comments in complete
sentences using Markdown, as the comments become the [annotated source](http://coffeescript.org/#annotated-source).
sentences using Markdown, as the comments become the [annotated source](https://coffeescript.org/#annotated-source).
For tests proving a bug is fixed, please mention the issue number in the test description (see examples
in the codebase).

View File

@ -53,7 +53,7 @@ Compile a script:
coffee -c /path/to/script.coffee
```
For documentation, usage, and examples, see: http://coffeescript.org/
For documentation, usage, and examples, see: https://coffeescript.org/
To suggest a feature or report a bug: https://github.com/jashkenas/coffeescript/issues
@ -61,6 +61,6 @@ If youd like to chat, drop by #coffeescript on Freenode IRC.
The source repository: https://github.com/jashkenas/coffeescript.git
Changelog: http://coffeescript.org/#changelog
Changelog: https://coffeescript.org/#changelog
Our lovely and talented contributors are listed here: https://github.com/jashkenas/coffeescript/contributors

View File

@ -124,7 +124,7 @@ We add support for loading remote Coffee scripts via <strong>XHR</strong>, and
<div class="content"><div class='highlight'><pre>
CoffeeScript = <span class="hljs-built_in">require</span> <span class="hljs-string">'./coffeescript'</span>
compile = CoffeeScript.compile</pre></div></div>
{ compile } = CoffeeScript</pre></div></div>
</li>
@ -135,13 +135,17 @@ compile = CoffeeScript.compile</pre></div></div>
<div class="pilwrap ">
<a class="pilcrow" href="#section-2">&#182;</a>
</div>
<p>Use standard JavaScript <code>eval</code> to eval code.</p>
<p>Use <code>window.eval</code> to evaluate code, rather than just <code>eval</code>, to run the
script in a clean global scope rather than inheriting the scope of the
CoffeeScript compiler. (So that <code>cake test:browser</code> also works in Node,
use either <code>window.eval</code> or <code>global.eval</code> as appropriate).</p>
</div>
<div class="content"><div class='highlight'><pre>CoffeeScript.eval = <span class="hljs-function"><span class="hljs-params">(code, options = {})</span> -&gt;</span>
options.bare ?= <span class="hljs-literal">on</span>
eval compile code, options</pre></div></div>
globalRoot = <span class="hljs-keyword">if</span> <span class="hljs-built_in">window</span>? <span class="hljs-keyword">then</span> <span class="hljs-built_in">window</span> <span class="hljs-keyword">else</span> <span class="hljs-built_in">global</span>
globalRoot[<span class="hljs-string">'eval'</span>] compile code, options</pre></div></div>
</li>

View File

@ -604,7 +604,7 @@ environment.</p>
</div>
<p>The real Lexer produces a generic stream of tokens. This object provides a
thin wrapper around it, compatible with the Jison API. We can then pass it
directly as a “Jison lexer.</p>
directly as a “Jison lexer.</p>
</div>

View File

@ -897,14 +897,14 @@ locally or globally.</p>
To use --transpile, you must have babel-core installed:
npm install --save-dev babel-core
And you must save options to configure Babel in one of the places it looks to find its options.
See http://coffeescript.org/#transpilation
See https://coffeescript.org/#transpilation
'''</span>
<span class="hljs-keyword">else</span>
<span class="hljs-built_in">console</span>.error <span class="hljs-string">'''
To use --transpile with globally-installed CoffeeScript, you must have babel-core installed globally:
npm install --global babel-core
And you must save options to configure Babel in one of the places it looks to find its options, relative to the file being compiled or to the current folder.
See http://coffeescript.org/#transpilation
See https://coffeescript.org/#transpilation
'''</span>
process.exit <span class="hljs-number">1</span>

View File

@ -915,6 +915,7 @@ or by array index or slice.</p>
o <span class="hljs-string">':: Property'</span>, <span class="hljs-function">-&gt;</span> [LOC(<span class="hljs-number">1</span>)(<span class="hljs-keyword">new</span> Access <span class="hljs-keyword">new</span> PropertyName(<span class="hljs-string">'prototype'</span>)), LOC(<span class="hljs-number">2</span>)(<span class="hljs-keyword">new</span> Access $<span class="hljs-number">2</span>)]
o <span class="hljs-string">'?:: Property'</span>, <span class="hljs-function">-&gt;</span> [LOC(<span class="hljs-number">1</span>)(<span class="hljs-keyword">new</span> Access <span class="hljs-keyword">new</span> PropertyName(<span class="hljs-string">'prototype'</span>), <span class="hljs-string">'soak'</span>), LOC(<span class="hljs-number">2</span>)(<span class="hljs-keyword">new</span> Access $<span class="hljs-number">2</span>)]
o <span class="hljs-string">'::'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> Access <span class="hljs-keyword">new</span> PropertyName <span class="hljs-string">'prototype'</span>
o <span class="hljs-string">'?::'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> Access <span class="hljs-keyword">new</span> PropertyName(<span class="hljs-string">'prototype'</span>), <span class="hljs-string">'soak'</span>
o <span class="hljs-string">'Index'</span>
]</pre></div></div>
@ -1748,7 +1749,7 @@ rules are necessary.</p>
<div class="pilwrap ">
<a class="pilcrow" href="#section-69">&#182;</a>
</div>
<p><a href="http://coffeescript.org/#existential-operator">The existential operator</a>.</p>
<p><a href="https://coffeescript.org/#existential-operator">The existential operator</a>.</p>
</div>

View File

@ -396,6 +396,62 @@ If <code>last</code> is not provided, this will simply return <code>first</code>
<div class="pilwrap ">
<a class="pilcrow" href="#section-15">&#182;</a>
</div>
<p>Build a dictionary of extra token properties organized by tokens locations
used as lookup hashes.</p>
</div>
<div class="content"><div class='highlight'><pre><span class="hljs-function"><span class="hljs-title">buildTokenDataDictionary</span> = <span class="hljs-params">(parserState)</span> -&gt;</span>
tokenData = {}
<span class="hljs-keyword">for</span> token <span class="hljs-keyword">in</span> parserState.parser.tokens <span class="hljs-keyword">when</span> token.comments
tokenHash = buildLocationHash token[<span class="hljs-number">2</span>]</pre></div></div>
</li>
<li id="section-16">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-16">&#182;</a>
</div>
<p>Multiple tokens might have the same location hash, such as the generated
<code>JS</code> tokens added at the start or end of the token stream to hold
comments that start or end a file.</p>
</div>
<div class="content"><div class='highlight'><pre> tokenData[tokenHash] ?= {}
<span class="hljs-keyword">if</span> token.comments <span class="hljs-comment"># `comments` is always an array.</span></pre></div></div>
</li>
<li id="section-17">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-17">&#182;</a>
</div>
<p>For “overlapping” tokens, that is tokens with the same location data
and therefore matching <code>tokenHash</code>es, merge the comments from both/all
tokens together into one array, even if there are duplicate comments;
they will get sorted out later.</p>
</div>
<div class="content"><div class='highlight'><pre> (tokenData[tokenHash].comments ?= []).push token.comments...
tokenData</pre></div></div>
</li>
<li id="section-18">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-18">&#182;</a>
</div>
<p>This returns a function which takes an object as a parameter, and if that
object is an AST node, updates that objects locationData.
The object is returned either way.</p>
@ -408,13 +464,13 @@ The object is returned either way.</p>
</li>
<li id="section-16">
<li id="section-19">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-16">&#182;</a>
<a class="pilcrow" href="#section-19">&#182;</a>
</div>
<p>Add location data</p>
<p>Add location data.</p>
</div>
@ -424,30 +480,22 @@ The object is returned either way.</p>
</li>
<li id="section-17">
<li id="section-20">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-17">&#182;</a>
<a class="pilcrow" href="#section-20">&#182;</a>
</div>
<p>Add comments data</p>
<p>Add comments, building the dictionary of token data if it hasnt been
built yet.</p>
</div>
<div class="content"><div class='highlight'><pre> <span class="hljs-keyword">unless</span> parserState.tokenComments
parserState.tokenComments = {}
<span class="hljs-keyword">for</span> token <span class="hljs-keyword">in</span> parserState.parser.tokens <span class="hljs-keyword">when</span> token.comments
tokenHash = buildLocationHash token[<span class="hljs-number">2</span>]
<span class="hljs-keyword">unless</span> parserState.tokenComments[tokenHash]?
parserState.tokenComments[tokenHash] = token.comments
<span class="hljs-keyword">else</span>
parserState.tokenComments[tokenHash].push token.comments...
<div class="content"><div class='highlight'><pre> parserState.tokenData ?= buildTokenDataDictionary parserState
<span class="hljs-keyword">if</span> obj.locationData?
objHash = buildLocationHash obj.locationData
<span class="hljs-keyword">if</span> parserState.tokenComments[objHash]?
attachCommentsToNode parserState.tokenComments[objHash], obj
<span class="hljs-keyword">if</span> parserState.tokenData[objHash]?.comments?
attachCommentsToNode parserState.tokenData[objHash].comments, obj
obj
exports.attachCommentsToNode = attachCommentsToNode = <span class="hljs-function"><span class="hljs-params">(comments, node)</span> -&gt;</span>
@ -458,11 +506,11 @@ exports.attachCommentsToNode = attachCommentsToNode = <span class="hljs-function
</li>
<li id="section-18">
<li id="section-21">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-18">&#182;</a>
<a class="pilcrow" href="#section-21">&#182;</a>
</div>
<p>Convert jison location data to a string.
<code>obj</code> can be a token, or a locationData.</p>
@ -482,11 +530,11 @@ exports.attachCommentsToNode = attachCommentsToNode = <span class="hljs-function
</li>
<li id="section-19">
<li id="section-22">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-19">&#182;</a>
<a class="pilcrow" href="#section-22">&#182;</a>
</div>
<p>A <code>.coffee.md</code> compatible version of <code>basename</code>, that returns the file sans-extension.</p>
@ -505,11 +553,11 @@ exports.attachCommentsToNode = attachCommentsToNode = <span class="hljs-function
</li>
<li id="section-20">
<li id="section-23">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-20">&#182;</a>
<a class="pilcrow" href="#section-23">&#182;</a>
</div>
<p>Determine if a filename represents a CoffeeScript file.</p>
@ -520,11 +568,11 @@ exports.attachCommentsToNode = attachCommentsToNode = <span class="hljs-function
</li>
<li id="section-21">
<li id="section-24">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-21">&#182;</a>
<a class="pilcrow" href="#section-24">&#182;</a>
</div>
<p>Determine if a filename represents a Literate CoffeeScript file.</p>
@ -535,11 +583,11 @@ exports.attachCommentsToNode = attachCommentsToNode = <span class="hljs-function
</li>
<li id="section-22">
<li id="section-25">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-22">&#182;</a>
<a class="pilcrow" href="#section-25">&#182;</a>
</div>
<p>Throws a SyntaxError from a given location.
The errors <code>toString</code> will return an error message following the “standard”
@ -556,11 +604,11 @@ marker showing where the error is.</p>
</li>
<li id="section-23">
<li id="section-26">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-23">&#182;</a>
<a class="pilcrow" href="#section-26">&#182;</a>
</div>
<p>Instead of showing the compilers stacktrace, show our custom error message
(this is useful when the error bubbles up in Node.js applications that
@ -575,11 +623,11 @@ compile CoffeeScript for example).</p>
</li>
<li id="section-24">
<li id="section-27">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-24">&#182;</a>
<a class="pilcrow" href="#section-27">&#182;</a>
</div>
<p>Update a compiler SyntaxError with source code information if it didnt have
it already.</p>
@ -591,11 +639,11 @@ it already.</p>
</li>
<li id="section-25">
<li id="section-28">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-25">&#182;</a>
<a class="pilcrow" href="#section-28">&#182;</a>
</div>
<p>Avoid screwing up the <code>stack</code> property of other errors (i.e. possible bugs).</p>
@ -621,11 +669,11 @@ it already.</p>
</li>
<li id="section-26">
<li id="section-29">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-26">&#182;</a>
<a class="pilcrow" href="#section-29">&#182;</a>
</div>
<p>Show only the first line on multi-line errors.</p>
@ -637,11 +685,11 @@ it already.</p>
</li>
<li id="section-27">
<li id="section-30">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-27">&#182;</a>
<a class="pilcrow" href="#section-30">&#182;</a>
</div>
<p>Check to see if were running on a color-enabled TTY.</p>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -709,7 +709,7 @@ undeclared variable <code>__</code>.</p>
or
npm install --global babel-core
And you must save options to configure Babel in one of the places it looks to find its options.
See http://coffeescript.org/#transpilation
See https://coffeescript.org/#transpilation
'''</span>
process.exit <span class="hljs-number">1</span>
transpile.options =

View File

@ -910,6 +910,8 @@ the continuation of an object.</p>
<div class="content"><div class='highlight'><pre> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> inImplicitObject() <span class="hljs-keyword">and</span> tag <span class="hljs-keyword">is</span> <span class="hljs-string">'TERMINATOR'</span> <span class="hljs-keyword">and</span> prevTag <span class="hljs-keyword">isnt</span> <span class="hljs-string">','</span> <span class="hljs-keyword">and</span>
<span class="hljs-keyword">not</span> (startsLine <span class="hljs-keyword">and</span> @looksObjectish(i + <span class="hljs-number">1</span>))
endImplicitObject()
<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> inImplicitControl() <span class="hljs-keyword">and</span> tokens[stackTop()[<span class="hljs-number">1</span>]][<span class="hljs-number">0</span>] <span class="hljs-keyword">is</span> <span class="hljs-string">'CLASS'</span> <span class="hljs-keyword">and</span> tag <span class="hljs-keyword">is</span> <span class="hljs-string">'TERMINATOR'</span>
stack.pop()
<span class="hljs-keyword">else</span>
<span class="hljs-keyword">break</span></pre></div></div>

File diff suppressed because one or more lines are too long

View File

@ -4,7 +4,7 @@
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>CoffeeScript</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="canonical" href="http://coffeescript.org" />
<link rel="canonical" href="https://coffeescript.org" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
@ -693,7 +693,7 @@ textarea {
<section id="introduction">
<p><strong>CoffeeScript is a little language that compiles into JavaScript.</strong> Underneath that awkward Java-esque patina, JavaScript has always had a gorgeous heart. CoffeeScript is an attempt to expose the good parts of JavaScript in a simple way.</p>
<p>The golden rule of CoffeeScript is: <em>“Its just JavaScript.”</em> The code compiles one-to-one into the equivalent JS, and there is no interpretation at runtime. You can use any existing JavaScript library seamlessly from CoffeeScript (and vice-versa). The compiled output is readable, pretty-printed, and tends to run as fast or faster than the equivalent handwritten JavaScript.</p>
<p><strong>Latest Version:</strong> <a href="https://github.com/jashkenas/coffeescript/tarball/2.3.0">2.3.0</a></p>
<p><strong>Latest Version:</strong> <a href="https://github.com/jashkenas/coffeescript/tarball/2.3.1">2.3.1</a></p>
<blockquote class="uneditable-code-block"><pre><code class="language-bash"><span class="comment"># Install locally for a project:</span>
npm install --save-dev coffeescript
@ -897,7 +897,7 @@ cubes = (function() {
<p>Most modern JavaScript features that CoffeeScript supports can run natively in Node 7.6+, meaning that Node can run CoffeeScripts output without any further processing required. Here are some notable exceptions:</p>
<ul>
<li><a href="#modules">Modules</a> and <a href="#jsx">JSX</a> always require transpilation.</li>
<li><a href="http://coffeescript.org/#splats">Splats, a.k.a. object rest/spread syntax, for objects</a> are supported by Node 8.6+.</li>
<li><a href="https://coffeescript.org/#splats">Splats, a.k.a. object rest/spread syntax, for objects</a> are supported by Node 8.6+.</li>
<li>The <a href="https://github.com/tc39/proposal-regexp-dotall-flag">regular expression <code>s</code> (dotall) flag</a> is supported by Node 9+.</li>
<li><a href="https://github.com/tc39/proposal-async-iteration">Async generator functions</a> are supported by Node 10+.</li>
</ul>
@ -4845,7 +4845,7 @@ The CoffeeScript logo is available in SVG for use in presentations.</li>
</section>
<section id="annotated-source">
<h2>Annotated Source</h2>
<p>You can browse the CoffeeScript 2.3.0 source in readable, annotated form <a href="annotated-source/">here</a>. You can also jump directly to a particular source file:</p>
<p>You can browse the CoffeeScript 2.3.1 source in readable, annotated form <a href="annotated-source/">here</a>. You can also jump directly to a particular source file:</p>
<ul>
<li><a href="annotated-source/grammar.html">Grammar Rules — src/grammar</a></li>
<li><a href="annotated-source/lexer.html">Lexing Tokens — src/lexer</a></li>
@ -5523,6 +5523,17 @@ x = <span class="number">2</span> + <span class="number">2</span>
<section id="changelog">
<h2>Changelog</h2>
<section id="2.3.1">
<h3><a href="https://github.com/jashkenas/coffeescript/compare/2.3.0...2.3.1">2.3.1</a>
<span class="timestamp"> &mdash; <time datetime="2018-05-21">2018-05-21</time></span>
</h3><ul>
<li>Returning a JSX tag that is adjacent to another JSX tag, as opposed to returning a root JSX tag or fragment, is invalid JSX syntax. Babel throws an error on this, and now the CoffeeScript compiler does too.</li>
<li>Invalid indentation inside a JSX interpolation (the middle of <code>&lt;tag&gt;{ ... }&lt;/tag&gt;</code>) now throws an error.</li>
<li>The browser compiler, used in <a href="https://coffeescript.org/#try">Try CoffeeScript</a> and similar web-based CoffeeScript editors, now evaluates code in a global scope rather than the scope of the browser compiler. This improves performance of code executed via the browser compiler.</li>
<li>Syntax cleanup: it is now possible for an implicit function call to take a body-less class as an argument, and <code>?::</code> now behaves identically to <code>::</code> with regard to implying a line continuation.</li>
</ul>
</section>
<section id="2.3.0">
<h3><a href="https://github.com/jashkenas/coffeescript/compare/2.2.4...2.3.0">2.3.0</a>
<span class="timestamp"> &mdash; <time datetime="2018-04-29">2018-04-29</time></span>

View File

@ -7509,11 +7509,11 @@ test 'JSX fragments: fragment with text nodes', ->
test 'JSX fragments: fragment with component nodes', ->
eqJS '''
Component = (props) =>
<Fragment>
<OtherComponent />
<OtherComponent />
</Fragment>
Component = (props) =>
<Fragment>
<OtherComponent />
<OtherComponent />
</Fragment>
''', '''
var Component;
@ -7525,6 +7525,58 @@ test 'JSX fragments: fragment with component nodes', ->
};
'''
test '#5055: JSX expression indentation bug', ->
eqJS '''
<div>
{someCondition &&
<span />
}
</div>
''', '''
<div>
{someCondition && <span />}
</div>;
'''
eqJS '''
<div>{someString +
"abc"
}
</div>
''', '''
<div>{someString + "abc"}
</div>;
'''
eqJS '''
<div>
{a ?
<span />
}
</div>
''', '''
<div>
{typeof a !== "undefined" && a !== null ? a : <span />}
</div>;
'''
# JSX is like XML, in that there needs to be a root element; but
# technically, adjacent top-level elements where only the last one
# is returned (as opposed to a fragment or root element) is permissible
# syntax. Its almost certainly an error, but its valid, so need to leave it
# to linters to catch. https://github.com/jashkenas/coffeescript/pull/5049
test '“Adjacent” tags on separate lines should still compile', ->
eqJS '''
->
<a />
<b />
''', '''
(function() {
<a />;
return <b />;
});
'''
</script>
<script type="text/x-coffeescript" class="test" id="error_messages">
# Error Formatting
@ -9191,6 +9243,28 @@ test 'CSX error: invalid attributes', ->
^^^^^^^^^^^^^^^^
'''
test '#5034: CSX error: Adjacent JSX elements must be wrapped in an enclosing tag', ->
assertErrorFormat '''
render = -> (
<Row>a</Row>
<Row>b</Row>
)
''', '''
[stdin]:3:4: error: Adjacent JSX elements must be wrapped in an enclosing tag
<Row>b</Row>
^^^^^^^^^^^
'''
assertErrorFormat '''
render = -> (
a = "foo"
<Row>a</Row>
<Row>b</Row>
)
''', '''
[stdin]:4:4: error: Adjacent JSX elements must be wrapped in an enclosing tag
<Row>b</Row>
^^^^^^^^^^^
'''
test 'Bound method called as callback before binding throws runtime error', ->
class Base
constructor: ->
@ -9370,6 +9444,7 @@ test "#3933: prevent implicit calls when cotrol flow is missing `THEN`", ->
when a ->
^^
'''
</script>
<script type="text/x-coffeescript" class="test" id="eval">
if vm = require? 'vm'
@ -9686,6 +9761,12 @@ test "`?.` and `::` should continue lines", ->
::
?.foo
)
ok not (
Date
?::
?.foo
)
#eq Object::toString, Date?.
#prototype
#::
@ -10973,6 +11054,27 @@ test "#4473: variable scope in chained calls", ->
obj.foo({f} = {f: 1}).bar(-> f = 5)
eq f, 5
test "#5052: implicit call of class with no body", ->
doesNotThrow -> CoffeeScript.compile 'f class'
doesNotThrow -> CoffeeScript.compile 'f class A'
doesNotThrow -> CoffeeScript.compile 'f class A extends B'
f = (args...) -> args
a = 1
[klass, shouldBeA] = f class A, a
eq shouldBeA, a
[shouldBeA] = f a, class A
eq shouldBeA, a
[obj, klass, shouldBeA] =
f
b: 1
class A
a
eq shouldBeA, a
</script>
<script type="text/x-coffeescript" class="test" id="functions">
# Function Literals
@ -15919,7 +16021,16 @@ test "#2567: Optimization of negated existential produces correct result", ->
test "#2508: Existential access of the prototype", ->
eq NonExistent?::nothing, undefined
eq(
NonExistent
?::nothing
undefined
)
ok Object?::toString
ok(
Object
?::toString
)
test "floor division operator", ->
eq 2, 7 // 3

View File

@ -0,0 +1,8 @@
```
releaseHeader('2018-05-21', '2.3.1', '2.3.0')
```
* Returning a JSX tag that is adjacent to another JSX tag, as opposed to returning a root JSX tag or fragment, is invalid JSX syntax. Babel throws an error on this, and now the CoffeeScript compiler does too.
* Invalid indentation inside a JSX interpolation (the middle of `<tag>{ ... }</tag>`) now throws an error.
* The browser compiler, used in [Try CoffeeScript](https://coffeescript.org/#try) and similar web-based CoffeeScript editors, now evaluates code in a global scope rather than the scope of the browser compiler. This improves performance of code executed via the browser compiler.
* Syntax cleanup: it is now possible for an implicit function call to take a body-less class as an argument, and `?::` now behaves identically to `::` with regard to implying a line continuation.

View File

@ -3,7 +3,7 @@
Most modern JavaScript features that CoffeeScript supports can run natively in Node 7.6+, meaning that Node can run CoffeeScripts output without any further processing required. Here are some notable exceptions:
* [Modules](#modules) and [JSX](#jsx) always require transpilation.
* [Splats, a.k.a. object rest/spread syntax, for objects](http://coffeescript.org/#splats) are supported by Node 8.6+.
* [Splats, a.k.a. object rest/spread syntax, for objects](https://coffeescript.org/#splats) are supported by Node 8.6+.
* The [regular expression `s` (dotall) flag](https://github.com/tc39/proposal-regexp-dotall-flag) is supported by Node 9+.
* [Async generator functions](https://github.com/tc39/proposal-async-iteration) are supported by Node 10+.

View File

@ -207,6 +207,9 @@
</section>
<section id="changelog">
<%= htmlFor('changelog') %>
<section id="2.3.1">
<%= htmlFor('changelog/2.3.1') %>
</section>
<section id="2.3.0">
<%= htmlFor('changelog/2.3.0') %>
</section>

View File

@ -57,7 +57,7 @@ $(document).ready ->
return if $target.prop('href') is "#{window.location.origin}/#try"
# Update the browser address bar on scroll, without adding to the history; clicking the sidebar links will automatically add to the history
replaceState $target.prop('href')
# Track this as a new pageview; we only want '/#hash', not 'http://coffeescript.org/#hash'
# Track this as a new pageview; we only want '/#hash', not 'https://coffeescript.org/#hash'
gtag 'config', GA_TRACKING_ID,
page_path: $target.prop('href').replace window.location.origin, ''

View File

@ -4,7 +4,7 @@
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>CoffeeScript</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="canonical" href="http://coffeescript.org" />
<link rel="canonical" href="https://coffeescript.org" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">

View File

@ -1,4 +1,4 @@
// Generated by CoffeeScript 2.3.0
// Generated by CoffeeScript 2.3.1
(function() {
// This **Browser** compatibility layer extends core CoffeeScript functions
// to make things work smoothly when compiling code directly in the browser.

View File

@ -1,4 +1,4 @@
// Generated by CoffeeScript 2.3.0
// Generated by CoffeeScript 2.3.1
(function() {
// `cake` is a simplified version of [Make](http://www.gnu.org/software/make/)
// ([Rake](http://rake.rubyforge.org/), [Jake](https://github.com/280north/jake))

View File

@ -1,4 +1,4 @@
// Generated by CoffeeScript 2.3.0
// Generated by CoffeeScript 2.3.1
(function() {
// CoffeeScript can be used both on the server, as a command-line compiler based
// on Node.js/V8, or to run CoffeeScript directly in the browser. This module

View File

@ -1,4 +1,4 @@
// Generated by CoffeeScript 2.3.0
// Generated by CoffeeScript 2.3.1
(function() {
// The `coffee` utility. Handles command-line compilation of CoffeeScript
// into various forms: saved into `.js` files or printed to stdout
@ -624,9 +624,9 @@
// Give appropriate instructions depending on whether `coffee` was run
// locally or globally.
if (require.resolve('.').indexOf(process.cwd()) === 0) {
console.error('To use --transpile, you must have babel-core installed:\n npm install --save-dev babel-core\nAnd you must save options to configure Babel in one of the places it looks to find its options.\nSee http://coffeescript.org/#transpilation');
console.error('To use --transpile, you must have babel-core installed:\n npm install --save-dev babel-core\nAnd you must save options to configure Babel in one of the places it looks to find its options.\nSee https://coffeescript.org/#transpilation');
} else {
console.error('To use --transpile with globally-installed CoffeeScript, you must have babel-core installed globally:\n npm install --global babel-core\nAnd you must save options to configure Babel in one of the places it looks to find its options, relative to the file being compiled or to the current folder.\nSee http://coffeescript.org/#transpilation');
console.error('To use --transpile with globally-installed CoffeeScript, you must have babel-core installed globally:\n npm install --global babel-core\nAnd you must save options to configure Babel in one of the places it looks to find its options, relative to the file being compiled or to the current folder.\nSee https://coffeescript.org/#transpilation');
}
process.exit(1);
}

View File

@ -1,4 +1,4 @@
// Generated by CoffeeScript 2.3.0
// Generated by CoffeeScript 2.3.1
(function() {
// The CoffeeScript parser is generated by [Jison](https://github.com/zaach/jison)
// from this grammar file. Jison is a bottom-up parser generator, similar in
@ -1982,7 +1982,7 @@
null,
true);
}),
// [The existential operator](http://coffeescript.org/#existential-operator).
// [The existential operator](https://coffeescript.org/#existential-operator).
o('Expression ?',
function() {
return new Existence($1);

View File

@ -1,4 +1,4 @@
// Generated by CoffeeScript 2.3.0
// Generated by CoffeeScript 2.3.1
(function() {
// This file contains the common helper functions that we'd like to share among
// the **Lexer**, **Rewriter**, and the **Nodes**. Merge objects, flatten

View File

@ -1,4 +1,4 @@
// Generated by CoffeeScript 2.3.0
// Generated by CoffeeScript 2.3.1
(function() {
// Node.js Implementation
var CoffeeScript, ext, fs, helpers, i, len, path, ref, universalCompile, vm,

View File

@ -1,4 +1,4 @@
// Generated by CoffeeScript 2.3.0
// Generated by CoffeeScript 2.3.1
(function() {
// The CoffeeScript Lexer. Uses a series of token-matching regexes to attempt
// matches against the beginning of the source code. When a match is found,

View File

@ -1,4 +1,4 @@
// Generated by CoffeeScript 2.3.0
// Generated by CoffeeScript 2.3.1
(function() {
// `nodes.coffee` contains all of the node classes for the syntax tree. Most
// nodes are created as the result of actions in the [grammar](grammar.html),

View File

@ -1,4 +1,4 @@
// Generated by CoffeeScript 2.3.0
// Generated by CoffeeScript 2.3.1
(function() {
var LONG_FLAG, MULTI_FLAG, OPTIONAL, OptionParser, SHORT_FLAG, buildRule, buildRules, normalizeArguments, repeat,
splice = [].splice;

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
// Generated by CoffeeScript 2.3.0
// Generated by CoffeeScript 2.3.1
(function() {
var CoffeeScript, Module, binary, child_process, ext, findExtension, fork, getRootModule, helpers, i, len, loadFile, path, ref;

View File

@ -1,4 +1,4 @@
// Generated by CoffeeScript 2.3.0
// Generated by CoffeeScript 2.3.1
(function() {
var CoffeeScript, addHistory, addMultilineHandler, fs, getCommandId, merge, nodeREPL, path, replDefaults, runInContext, sawSIGINT, transpile, updateSyntaxError, vm;
@ -254,7 +254,7 @@
transpile = {};
transpile.transpile = require('babel-core').transform;
} catch (error) {
console.error('To use --transpile with an interactive REPL, babel-core must be installed either in the current folder or globally:\n npm install --save-dev babel-core\nor\n npm install --global babel-core\nAnd you must save options to configure Babel in one of the places it looks to find its options.\nSee http://coffeescript.org/#transpilation');
console.error('To use --transpile with an interactive REPL, babel-core must be installed either in the current folder or globally:\n npm install --save-dev babel-core\nor\n npm install --global babel-core\nAnd you must save options to configure Babel in one of the places it looks to find its options.\nSee https://coffeescript.org/#transpilation');
process.exit(1);
}
transpile.options = {

View File

@ -1,4 +1,4 @@
// Generated by CoffeeScript 2.3.0
// Generated by CoffeeScript 2.3.1
(function() {
// The CoffeeScript language has a good deal of optional syntax, implicit syntax,
// and shorthand syntax. This can greatly complicate a grammar and bloat

View File

@ -1,4 +1,4 @@
// Generated by CoffeeScript 2.3.0
// Generated by CoffeeScript 2.3.1
(function() {
// The **Scope** class regulates lexical scoping within CoffeeScript. As you
// generate code, you create a tree of scopes in the same shape as the nested

View File

@ -1,4 +1,4 @@
// Generated by CoffeeScript 2.3.0
// Generated by CoffeeScript 2.3.1
(function() {
// Source maps allow JavaScript runtimes to match running JavaScript back to
// the original source code that corresponds to it. This can be minified

384
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "coffeescript",
"version": "2.3.0",
"version": "2.3.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -396,12 +396,6 @@
}
}
},
"babel-helper-evaluate-path": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.1.0.tgz",
"integrity": "sha1-ldmMTqNhUEg9sufT7J4ZVKcmKcs=",
"dev": true
},
"babel-helper-explode-assignable-expression": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz",
@ -413,12 +407,6 @@
"babel-types": "6.25.0"
}
},
"babel-helper-flip-expressions": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.1.2.tgz",
"integrity": "sha1-d/ZlL53pxCQB2Ce9RuvSEJ4+8Yo=",
"dev": true
},
"babel-helper-function-name": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
@ -458,18 +446,6 @@
"integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=",
"dev": true
},
"babel-helper-is-void-0": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.1.1.tgz",
"integrity": "sha1-cvIaOrugvvODf5F0/KcxrtmgKIg=",
"dev": true
},
"babel-helper-mark-eval-scopes": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.1.1.tgz",
"integrity": "sha1-RVQ0Xt+fJUlCe9IJjlMCU/ivKZI=",
"dev": true
},
"babel-helper-optimise-call-expression": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz",
@ -534,12 +510,6 @@
"babel-types": "6.25.0"
}
},
"babel-helper-remove-or-void": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.1.1.tgz",
"integrity": "sha1-nX4YVtxvr8tBsoOkFnMNwYRPZtc=",
"dev": true
},
"babel-helper-replace-supers": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz",
@ -554,12 +524,6 @@
"babel-types": "6.25.0"
}
},
"babel-helper-to-multiple-sequence-expressions": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.1.1.tgz",
"integrity": "sha1-XxuDKznkrPlU6RN/AlE5XHEZazU=",
"dev": true
},
"babel-helpers": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
@ -588,100 +552,6 @@
"babel-runtime": "6.23.0"
}
},
"babel-plugin-minify-builtins": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.1.3.tgz",
"integrity": "sha1-TyGn3LUfkaBOpx1H/w6OOwX+wCE=",
"dev": true,
"requires": {
"babel-helper-evaluate-path": "0.1.0"
}
},
"babel-plugin-minify-constant-folding": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.1.3.tgz",
"integrity": "sha1-V70XKt+LjXStfJlhLrlQQU6+o8o=",
"dev": true,
"requires": {
"babel-helper-evaluate-path": "0.1.0"
}
},
"babel-plugin-minify-dead-code-elimination": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.1.7.tgz",
"integrity": "sha1-d09TbzR7mDk6J7qnF4cpaIE8NCw=",
"dev": true,
"requires": {
"babel-helper-mark-eval-scopes": "0.1.1",
"babel-helper-remove-or-void": "0.1.1",
"lodash.some": "4.6.0"
}
},
"babel-plugin-minify-flip-comparisons": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.1.2.tgz",
"integrity": "sha1-4oa0C3WZsY3+oZUHHkJ5Rlz8GIQ=",
"dev": true,
"requires": {
"babel-helper-is-void-0": "0.1.1"
}
},
"babel-plugin-minify-guarded-expressions": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.1.2.tgz",
"integrity": "sha1-38PUc7A2LZYF084KweIjKMYNEAc=",
"dev": true,
"requires": {
"babel-helper-flip-expressions": "0.1.2"
}
},
"babel-plugin-minify-infinity": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.1.2.tgz",
"integrity": "sha1-Xxz2fd7cuhPIoA2oMlQt8AkaHNQ=",
"dev": true
},
"babel-plugin-minify-mangle-names": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.1.3.tgz",
"integrity": "sha1-v6JGYaZ5T7A4M1h+VYKLZUSeBv4=",
"dev": true,
"requires": {
"babel-helper-mark-eval-scopes": "0.1.1"
}
},
"babel-plugin-minify-numeric-literals": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.1.1.tgz",
"integrity": "sha1-1LiwySX4dHFO4z7ksmZ4WD185/s=",
"dev": true
},
"babel-plugin-minify-replace": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.1.2.tgz",
"integrity": "sha1-uQuecatNOzYyVimpG+q+E7CxasE=",
"dev": true
},
"babel-plugin-minify-simplify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.1.2.tgz",
"integrity": "sha1-qWjxZY/esvx1noH+Mx2Jgp3w9rk=",
"dev": true,
"requires": {
"babel-helper-flip-expressions": "0.1.2",
"babel-helper-is-nodes-equiv": "0.0.1",
"babel-helper-to-multiple-sequence-expressions": "0.1.1"
}
},
"babel-plugin-minify-type-constructors": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.1.2.tgz",
"integrity": "sha1-21PFt2y44vzUXYYvFxBMeHYTN+4=",
"dev": true,
"requires": {
"babel-helper-is-void-0": "0.1.1"
}
},
"babel-plugin-syntax-async-functions": {
"version": "6.13.0",
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
@ -1110,39 +980,6 @@
"babel-runtime": "6.23.0"
}
},
"babel-plugin-transform-inline-consecutive-adds": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.1.2.tgz",
"integrity": "sha1-VELp8cGceKeJn4pN7m/UgfYQAfU=",
"dev": true
},
"babel-plugin-transform-member-expression-literals": {
"version": "6.8.4",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.8.4.tgz",
"integrity": "sha1-BWebxAWWuRKTQBlZqhYgqxsr5Dc=",
"dev": true
},
"babel-plugin-transform-merge-sibling-variables": {
"version": "6.8.5",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.8.5.tgz",
"integrity": "sha1-A6vfEHxhJBkT6yaN3t5tW8VBhiw=",
"dev": true
},
"babel-plugin-transform-minify-booleans": {
"version": "6.8.2",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.8.2.tgz",
"integrity": "sha1-hFFXn3BucCweGrJ1beXI6jac8Hw=",
"dev": true
},
"babel-plugin-transform-property-literals": {
"version": "6.8.4",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.8.4.tgz",
"integrity": "sha1-atMREQuAoZKlbvtd30/jym96Ydo=",
"dev": true,
"requires": {
"esutils": "2.0.2"
}
},
"babel-plugin-transform-regenerator": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
@ -1152,36 +989,6 @@
"regenerator-transform": "0.10.1"
}
},
"babel-plugin-transform-regexp-constructors": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.1.1.tgz",
"integrity": "sha1-MSq3SHzIihxi7iXqG2CH6JuHeZw=",
"dev": true
},
"babel-plugin-transform-remove-console": {
"version": "6.8.4",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.8.4.tgz",
"integrity": "sha1-Qf3awZpymkw91+8pZOrAewlvmo8=",
"dev": true
},
"babel-plugin-transform-remove-debugger": {
"version": "6.8.4",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.8.4.tgz",
"integrity": "sha1-+FcEoIrapxtV13AFtblOm53yH24=",
"dev": true
},
"babel-plugin-transform-remove-undefined": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.1.2.tgz",
"integrity": "sha1-4ev1ERD2seBmXyg4Lvc/leUCNlI=",
"dev": true
},
"babel-plugin-transform-simplify-comparison-operators": {
"version": "6.8.4",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.8.4.tgz",
"integrity": "sha1-KqJKJi1mTIyz4SWjBseY16LeCNU=",
"dev": true
},
"babel-plugin-transform-strict-mode": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz",
@ -1192,43 +999,6 @@
"babel-types": "6.25.0"
}
},
"babel-plugin-transform-undefined-to-void": {
"version": "6.8.2",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.8.2.tgz",
"integrity": "sha1-/isdKU6wXodSTrk3JN6m4sPWb6E=",
"dev": true
},
"babel-preset-babili": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/babel-preset-babili/-/babel-preset-babili-0.1.4.tgz",
"integrity": "sha1-rZ1mUQAvW8PwfKswB4EWf1RyS/I=",
"dev": true,
"requires": {
"babel-plugin-minify-builtins": "0.1.3",
"babel-plugin-minify-constant-folding": "0.1.3",
"babel-plugin-minify-dead-code-elimination": "0.1.7",
"babel-plugin-minify-flip-comparisons": "0.1.2",
"babel-plugin-minify-guarded-expressions": "0.1.2",
"babel-plugin-minify-infinity": "0.1.2",
"babel-plugin-minify-mangle-names": "0.1.3",
"babel-plugin-minify-numeric-literals": "0.1.1",
"babel-plugin-minify-replace": "0.1.2",
"babel-plugin-minify-simplify": "0.1.2",
"babel-plugin-minify-type-constructors": "0.1.2",
"babel-plugin-transform-inline-consecutive-adds": "0.1.2",
"babel-plugin-transform-member-expression-literals": "6.8.4",
"babel-plugin-transform-merge-sibling-variables": "6.8.5",
"babel-plugin-transform-minify-booleans": "6.8.2",
"babel-plugin-transform-property-literals": "6.8.4",
"babel-plugin-transform-regexp-constructors": "0.1.1",
"babel-plugin-transform-remove-console": "6.8.4",
"babel-plugin-transform-remove-debugger": "6.8.4",
"babel-plugin-transform-remove-undefined": "0.1.2",
"babel-plugin-transform-simplify-comparison-operators": "6.8.4",
"babel-plugin-transform-undefined-to-void": "6.8.2",
"lodash.isplainobject": "4.0.6"
}
},
"babel-preset-env": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz",
@ -2719,8 +2489,8 @@
"dev": true,
"optional": true,
"requires": {
"delegates": "1.0.0",
"readable-stream": "2.3.6"
"delegates": "^1.0.0",
"readable-stream": "^2.0.6"
}
},
"balanced-match": {
@ -2733,7 +2503,7 @@
"bundled": true,
"dev": true,
"requires": {
"balanced-match": "1.0.0",
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
@ -2797,7 +2567,7 @@
"dev": true,
"optional": true,
"requires": {
"minipass": "2.2.4"
"minipass": "^2.2.1"
}
},
"fs.realpath": {
@ -2812,14 +2582,14 @@
"dev": true,
"optional": true,
"requires": {
"aproba": "1.2.0",
"console-control-strings": "1.1.0",
"has-unicode": "2.0.1",
"object-assign": "4.1.1",
"signal-exit": "3.0.2",
"string-width": "1.0.2",
"strip-ansi": "3.0.1",
"wide-align": "1.1.2"
"aproba": "^1.0.3",
"console-control-strings": "^1.0.0",
"has-unicode": "^2.0.0",
"object-assign": "^4.1.0",
"signal-exit": "^3.0.0",
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1",
"wide-align": "^1.1.0"
}
},
"glob": {
@ -2828,12 +2598,12 @@
"dev": true,
"optional": true,
"requires": {
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"has-unicode": {
@ -2848,7 +2618,7 @@
"dev": true,
"optional": true,
"requires": {
"safer-buffer": "2.1.2"
"safer-buffer": "^2.1.0"
}
},
"ignore-walk": {
@ -2857,7 +2627,7 @@
"dev": true,
"optional": true,
"requires": {
"minimatch": "3.0.4"
"minimatch": "^3.0.4"
}
},
"inflight": {
@ -2866,8 +2636,8 @@
"dev": true,
"optional": true,
"requires": {
"once": "1.4.0",
"wrappy": "1.0.2"
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
@ -2886,7 +2656,7 @@
"bundled": true,
"dev": true,
"requires": {
"number-is-nan": "1.0.1"
"number-is-nan": "^1.0.0"
}
},
"isarray": {
@ -2900,7 +2670,7 @@
"bundled": true,
"dev": true,
"requires": {
"brace-expansion": "1.1.11"
"brace-expansion": "^1.1.7"
}
},
"minimist": {
@ -2913,8 +2683,8 @@
"bundled": true,
"dev": true,
"requires": {
"safe-buffer": "5.1.1",
"yallist": "3.0.2"
"safe-buffer": "^5.1.1",
"yallist": "^3.0.0"
}
},
"minizlib": {
@ -2923,7 +2693,7 @@
"dev": true,
"optional": true,
"requires": {
"minipass": "2.2.4"
"minipass": "^2.2.1"
}
},
"mkdirp": {
@ -2946,9 +2716,9 @@
"dev": true,
"optional": true,
"requires": {
"debug": "2.6.9",
"iconv-lite": "0.4.21",
"sax": "1.2.4"
"debug": "^2.1.2",
"iconv-lite": "^0.4.4",
"sax": "^1.2.4"
}
},
"node-pre-gyp": {
@ -2957,16 +2727,16 @@
"dev": true,
"optional": true,
"requires": {
"detect-libc": "1.0.3",
"mkdirp": "0.5.1",
"needle": "2.2.0",
"nopt": "4.0.1",
"npm-packlist": "1.1.10",
"npmlog": "4.1.2",
"rc": "1.2.6",
"rimraf": "2.6.2",
"semver": "5.5.0",
"tar": "4.4.1"
"detect-libc": "^1.0.2",
"mkdirp": "^0.5.1",
"needle": "^2.2.0",
"nopt": "^4.0.1",
"npm-packlist": "^1.1.6",
"npmlog": "^4.0.2",
"rc": "^1.1.7",
"rimraf": "^2.6.1",
"semver": "^5.3.0",
"tar": "^4"
}
},
"nopt": {
@ -2975,8 +2745,8 @@
"dev": true,
"optional": true,
"requires": {
"abbrev": "1.1.1",
"osenv": "0.1.5"
"abbrev": "1",
"osenv": "^0.1.4"
}
},
"npm-bundled": {
@ -2991,8 +2761,8 @@
"dev": true,
"optional": true,
"requires": {
"ignore-walk": "3.0.1",
"npm-bundled": "1.0.3"
"ignore-walk": "^3.0.1",
"npm-bundled": "^1.0.1"
}
},
"npmlog": {
@ -3001,10 +2771,10 @@
"dev": true,
"optional": true,
"requires": {
"are-we-there-yet": "1.1.4",
"console-control-strings": "1.1.0",
"gauge": "2.7.4",
"set-blocking": "2.0.0"
"are-we-there-yet": "~1.1.2",
"console-control-strings": "~1.1.0",
"gauge": "~2.7.3",
"set-blocking": "~2.0.0"
}
},
"number-is-nan": {
@ -3023,7 +2793,7 @@
"bundled": true,
"dev": true,
"requires": {
"wrappy": "1.0.2"
"wrappy": "1"
}
},
"os-homedir": {
@ -3044,8 +2814,8 @@
"dev": true,
"optional": true,
"requires": {
"os-homedir": "1.0.2",
"os-tmpdir": "1.0.2"
"os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.0"
}
},
"path-is-absolute": {
@ -3066,10 +2836,10 @@
"dev": true,
"optional": true,
"requires": {
"deep-extend": "0.4.2",
"ini": "1.3.5",
"minimist": "1.2.0",
"strip-json-comments": "2.0.1"
"deep-extend": "~0.4.0",
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
},
"dependencies": {
"minimist": {
@ -3086,13 +2856,13 @@
"dev": true,
"optional": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "2.0.0",
"safe-buffer": "5.1.1",
"string_decoder": "1.1.1",
"util-deprecate": "1.0.2"
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"rimraf": {
@ -3101,7 +2871,7 @@
"dev": true,
"optional": true,
"requires": {
"glob": "7.1.2"
"glob": "^7.0.5"
}
},
"safe-buffer": {
@ -3144,9 +2914,9 @@
"bundled": true,
"dev": true,
"requires": {
"code-point-at": "1.1.0",
"is-fullwidth-code-point": "1.0.0",
"strip-ansi": "3.0.1"
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
}
},
"string_decoder": {
@ -3155,7 +2925,7 @@
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "5.1.1"
"safe-buffer": "~5.1.0"
}
},
"strip-ansi": {
@ -3163,7 +2933,7 @@
"bundled": true,
"dev": true,
"requires": {
"ansi-regex": "2.1.1"
"ansi-regex": "^2.0.0"
}
},
"strip-json-comments": {
@ -3178,13 +2948,13 @@
"dev": true,
"optional": true,
"requires": {
"chownr": "1.0.1",
"fs-minipass": "1.2.5",
"minipass": "2.2.4",
"minizlib": "1.1.0",
"mkdirp": "0.5.1",
"safe-buffer": "5.1.1",
"yallist": "3.0.2"
"chownr": "^1.0.1",
"fs-minipass": "^1.2.5",
"minipass": "^2.2.4",
"minizlib": "^1.1.0",
"mkdirp": "^0.5.0",
"safe-buffer": "^5.1.1",
"yallist": "^3.0.2"
}
},
"util-deprecate": {
@ -3199,7 +2969,7 @@
"dev": true,
"optional": true,
"requires": {
"string-width": "1.0.2"
"string-width": "^1.0.2"
}
},
"wrappy": {

View File

@ -8,7 +8,7 @@
"compiler"
],
"author": "Jeremy Ashkenas",
"version": "2.3.0",
"version": "2.3.1",
"license": "MIT",
"engines": {
"node": ">=6"
@ -32,17 +32,16 @@
"test": "node ./bin/cake test",
"test-harmony": "node --harmony ./bin/cake test"
},
"homepage": "http://coffeescript.org",
"homepage": "https://coffeescript.org",
"bugs": "https://github.com/jashkenas/coffeescript/issues",
"repository": {
"type": "git",
"url": "git://github.com/jashkenas/coffeescript.git"
},
"devDependencies": {
"babel-core": "~6.26.3",
"babel-preset-babili": "~0.1.4",
"babel-preset-env": "~1.6.1",
"babel-preset-minify": "^0.4.0",
"babel-core": "6.26.3",
"babel-preset-env": "1.6.1",
"babel-preset-minify": "0.4.0",
"codemirror": "^5.37.0",
"docco": "~0.8.0",
"highlight.js": "~9.12.0",

View File

@ -463,14 +463,14 @@ compileOptions = (filename, base) ->
To use --transpile, you must have babel-core installed:
npm install --save-dev babel-core
And you must save options to configure Babel in one of the places it looks to find its options.
See http://coffeescript.org/#transpilation
See https://coffeescript.org/#transpilation
'''
else
console.error '''
To use --transpile with globally-installed CoffeeScript, you must have babel-core installed globally:
npm install --global babel-core
And you must save options to configure Babel in one of the places it looks to find its options, relative to the file being compiled or to the current folder.
See http://coffeescript.org/#transpilation
See https://coffeescript.org/#transpilation
'''
process.exit 1

View File

@ -824,7 +824,7 @@ grammar =
o 'SimpleAssignable --', -> new Op '--', $1, null, true
o 'SimpleAssignable ++', -> new Op '++', $1, null, true
# [The existential operator](http://coffeescript.org/#existential-operator).
# [The existential operator](https://coffeescript.org/#existential-operator).
o 'Expression ?', -> new Existence $1
o 'Expression + Expression', -> new Op '+' , $1, $3

View File

@ -192,7 +192,7 @@ module.exports =
or
npm install --global babel-core
And you must save options to configure Babel in one of the places it looks to find its options.
See http://coffeescript.org/#transpilation
See https://coffeescript.org/#transpilation
'''
process.exit 1
transpile.options =