* Fix#4706: Comments before a PARAM_START token stay before that token
* Simplify nodes
* Add function-in-function test
* Fix#4706: Comments after class name should go after the identifier that's after `class`, not the variable assigned to
* Fix#4706: Top-level identifiers with trailing comments get wrapped in parentheses (around the comment too) so that Flow doesn't interpret it as a JavaScript label
* Cleanup
* If the source has parentheses wrapping an identifier followed by a block comment, output those parentheses rather than optimizing them away; this is a requirement of Flow, to distinguish from JavaScript labels
* More tests for Flow comments
* For local variables with trailing inline herecomments, output the comments up in the variable declarations line for Flow compatibility
* Fix#4706: Comments before a PARAM_START token stay before that token
* Simplify nodes
* Add function-in-function test
* Fix#4706: Comments after class name should go after the identifier that's after `class`, not the variable assigned to
* Fix#4706: Top-level identifiers with trailing comments get wrapped in parentheses (around the comment too) so that Flow doesn't interpret it as a JavaScript label
* Cleanup
* If the source has parentheses wrapping an identifier followed by a block comment, output those parentheses rather than optimizing them away; this is a requirement of Flow, to distinguish from JavaScript labels
* More tests for Flow comments
The handling of hoisted nodes in class bodies was incorrect, as the node
was being unwrapped *before* checking if it was hoisted, meaning nodes
that should have been hoisted would be output normally.
This affected `PassthroughLiteral`s as they were wrapped in a `Value`.
* Fix#4725: apply transpile option to require’d .coffee files
* Use the current module’s options if it has any, before going searching up the tree
* Don’t mutate passed-in options object
* If the REPL is run with `--transpile`, turn transpilation on for both the current REPL input and any files imported by that input
* Use the command.coffee machinery for parsing arguments
* Fix test for Windows
* Fix#4725: apply transpile option to require’d .coffee files
* Use the current module’s options if it has any, before going searching up the tree
* Don’t mutate passed-in options object
* Show an appropriate error if the user tries to use --transpile via the CLI and babel-core isn’t installed
* Update documentation around global/local
* Fix#4713: Use Babel’s built-in `filename` option to let Babel search for its options, rather than us doing so
* Improve transpilation docs
* Colons are good
* Docs cleanup
* Rewrite transpilation docs
* Better identifier for compiled scripts that didn’t come from files; better resolving of paths
* Fix#4464: backticked expressions in class body should be left in the body, not hoisted
* Fix#4464: backticked expressions in class body should be left in the body, not hoisted
* Simplify fix for #4464
This uses more of the existing machinery for moving class body
expressions into the initializer.
* Clarify the purpose of Class::addInitializerExpression
* Further clarify the purpose of Class::addInitializerExpression
* Add reference to class fields; format
comment wrapping
* Reapply 1d3af8c432, that got lost because of rebase/force-push shenanigans
* Updated output
* Upgrade Babeli (now babel-minify) which fixes the bug that was forcing us to run Babel twice for transpilation
* Add --transpile option (WIP)
* Node API always compiles a string, so it doesn’t need the option to pass a path to an options file, it can always just pass an object to `transpile`; get `transpile` working with `eval`
* Not allowing argument to `--transpile` so don’t need to cover so many cases
* Don’t need to worry about `sourceMaps` option to pass to Babel, `inputSourceMap` overrides it
* Rewrite Webpack test to use Node API
* Make the compiler safe again for browsers and Webpack/Browserify
* Node version of CoffeeScript.compile passes reference to Babel if transpile is requested
* Test Node API for transpile option
* Test for merged source maps
* Test for Node API error message
* Only stop searching for Babel options if a package.json has a truthy "babel" key
* Update docs
* Get `coffee` command working again in Node 6, by converting the ‘await’ wrapper in the REPL to use a Promise instead of the ‘await’ keyword; add tests for REPL ‘await’ wrapper, including test to skip async tests if the runtime doesn’t support them
* Code review
* Let's support Node 6+ if we can
* _extends utility instead of Object.assign()
* eqJS test for _extends
* Test that a user-defined function named `_extends` doesn’t conflict with our utility function
* IE8 polyfill note in docs
* Per discussion in #3075: if `sourceFiles` is unspecified, but `filename` is, use `filename`; output null instead of an empty string for `sources` or `sourceRoot`
* Update source map tests to reflect that now we return null instead of empty strings; check generated sources array
* Update source map documentation; still leave more obscure options undocumented
* Follow the TypeScript compiler’s example regarding v3SourceMap, but output empty strings instead of made-up filenames
* Have `sources` default to ‘<anonymous>’
* fix splat error with soak properties or expressions
* Add test based on #4260
* Add test based on #1349
* tests for the leading splat variant
* test for spaced prefix ...
* fixed 'if' statement in parens
* fixed replacing 'void 0' with '[]'
* remove 'void 0' replacement; add Splat::compileNode
* Use LEVEL_OP; follow style better
* Fix#3709: throwing an if, for, switch or while should throw the returned value of the statement/loop
* Fix#3789: don’t throw a throw (unless it’s in a closure)
* LEVEL_LIST works better than a list of node types
* Fix#2870: If --output ends with a filename, and the input is a file and not a path, save as the desired filename
* If an output path ends in a slash, force saving into an output folder even if that folder name would contain a period (e.g. /scripts.js/); if output filename is only periods, treat it as a path
* Restrict exceptions
* Fix#4629: interpolations (whether in strings or CSX tags) that contain nothing but comments should not be optimized out
* Template literals need an expression inside their interpolations, so if we only have a comment to put in there, toss in an empty string as well
* When using --require, check that the variable we’re creating from the required file/module is a valid identifier name before assigning to it; fixes#4209
* We don’t need no stinkin’ regex
* Don't throw an error in the console when loading a try: URL
* Handle the possibility of compiling multiple scripts with the same filename, or multiple anonymous scripts
* Fix#4558: Much more robust caching of sources and source maps, more careful lookup of source maps especially for CoffeeScript code compiled within a Coffee script (. . . within a Coffee script, etc.)
* Reimplement `cake release` to just use the shell to avoid the issues plaguing that command (something to do with module caching perhaps)