Commit Graph

4423 Commits

Author SHA1 Message Date
Geoffrey Booth
f8c150f201 Merge pull request #4439 from GeoffreyBooth/2.0.0-alpha1
[CS2] 2.0.0-alpha1
2.0.0-alpha1
2017-02-21 07:04:18 -08:00
Geoffrey Booth
a5cb8cd7c3 Rebuild release 2017-02-20 16:07:44 -08:00
Geoffrey Booth
32799ad732 Make test compatible with Firefox (though it still fails there while it passes in Node and Chrome) 2017-02-20 15:59:59 -08:00
Geoffrey Booth
d47f90599e Bump date 2017-02-20 15:59:59 -08:00
Geoffrey Booth
5817aeb837 Fix browser test.html to work with async tests 2017-02-20 15:59:58 -08:00
Geoffrey Booth
7de06c3dcb Ensure unique source maps’ sourceURL; closes #4126 2017-02-20 15:46:48 -08:00
Geoffrey Booth
6f0f173795 Update changelog for 1.12.4 2017-02-20 15:31:28 -08:00
Geoffrey Booth
221a8720fe Merge branch '2' into 2.0.0-alpha1
# Conflicts:
#	Cakefile
#	README.md
#	documentation/sections/changelog.md
2017-02-18 18:36:15 -05:00
Alan Pierce
ff56533e0b Fix CS2 build after merge pulled in a bare super call (#4447)
[CS2] Fix CS2 build after merge pulled in a bare super call
2017-02-18 18:14:47 -05:00
Geoffrey Booth
e88619a3bb Merge branch 'master' into 2
# Conflicts:
#	documentation/sections/resources.md
#	lib/coffee-script/browser.js
#	lib/coffee-script/cake.js
#	lib/coffee-script/coffee-script.js
#	lib/coffee-script/command.js
#	lib/coffee-script/grammar.js
#	lib/coffee-script/helpers.js
#	lib/coffee-script/index.js
#	lib/coffee-script/lexer.js
#	lib/coffee-script/nodes.js
#	lib/coffee-script/optparse.js
#	lib/coffee-script/register.js
#	lib/coffee-script/repl.js
#	lib/coffee-script/rewriter.js
#	lib/coffee-script/scope.js
#	lib/coffee-script/sourcemap.js
#	package.json
2017-02-18 10:52:55 -05:00
Simon Lydell
91e3f7255c Merge pull request #4441 from GeoffreyBooth/1.12.4
1.12.4
1.12.4
2017-02-18 09:47:25 +01:00
Geoffrey Booth
664c7a4743 Update compiled output 2017-02-18 02:54:41 -05:00
Geoffrey Booth
f018e94be9 Update changelog 2017-02-18 02:54:15 -05:00
Geoffrey Booth
79d38cc30b Bump dependency version 2017-02-18 02:53:56 -05:00
Geoffrey Booth
ee8f022317 Merge branch 'master' of github.com:jashkenas/coffeescript into 1.12.4
# Conflicts:
#	Cakefile
2017-02-18 02:48:57 -05:00
Geoffrey Booth
98c1a3a045 Refactor Cake tasks (#4440)
* Node comes with NPM nowadays, so there’s not really a reason to install CoffeeScript the non-NPM way

* The cake documentation tasks should each have build and watch modes following the same form

* Refactor the build tasks to be more foolproof, including the parser unless it’s explicitly excluded

* Abstract out testing built code, to prepare for watching the build task

* Cake task to cut a new release

* cake build:watch, based on https://github.com/GeoffreyBooth/coffeescript-gulp

* Coding style

* Tests shouldn’t write files in a watched folder

* Don’t crash if the REPL test history file is already gone by the time we try to delete it
2017-02-18 02:47:02 -05:00
Simon Lydell
d84c94dc6d Merge pull request #4445 from alangpierce/upstream-fix-new-location-data
Properly update location data when setting a call to use `new`
2017-02-17 18:21:23 +01:00
Simon Lydell
4f714cc7f9 Merge pull request #4444 from alangpierce/upstream-fix-heregex-end-location
Place ending heregex tokens one index earlier
2017-02-17 18:21:08 +01:00
Alan Pierce
fbc77f7445 Properly update location data when setting a call to use new
This is an upstream port of https://github.com/decaffeinate/coffeescript/pull/24

In a case like `new A().b(c)`, the jison structure ends up being different from
the resulting AST. To the jison parser, this is the `new` unary operator applied
to the expression `A().b(c)`. When the unary operator is applied, the
`Call.prototype.newInstance` function traverses into the leftmost function call
and sets the `isNew` flag to true, and the `Op` constructor returns the `Call`
node so that the call is used in place of the unary operator. However, the code
wasn't updating the node location data, so this commit fixes that.

It's sort of hard to get the location data in `newInstance`, so we set a flag on
every affected node in `newInstance` and override `updateLocationDataIfMissing`
(which is called with the location data after the fact) so that it updates just
the starting position.
2017-02-16 20:43:19 -08:00
Alan Pierce
f757614334 Place ending heregex tokens one index earlier
This is an upstream port of https://github.com/decaffeinate/coffeescript/pull/17

The lexer generates fake tokens for interpolated heregexes, and the ending
tokens were being placed where the start (inclusive) and end (inclusive) index
were one past the end of the heregex. This meant that in a case like
`[a ///#{b}///]`, the end tokens of the heregex and also the implicit function
call end were all being placed at the `]`, so the AST location data would say
that the function call ends at the end of the `]`.

To fix, I can just subtract 1 from the position of those ending heregex tokens
so that their end lines up with the end of the heregex itself. This is similar
to previous fixes that changed `OUTDENT` and `CALL_END` tokens so that the end
of the token lines up with the end of the AST node.
2017-02-16 20:32:41 -08:00
Geoffrey Booth
94023d88ca Updated compiled output for 1.12.4 2017-02-14 23:30:32 -08:00
Geoffrey Booth
4547cbac3a Bump version to 1.12.4 and update changelog 2017-02-14 23:30:10 -08:00
Geoffrey Booth
856bf5e68c cake build:watch, based on https://github.com/GeoffreyBooth/coffeescript-gulp 2017-02-14 19:13:41 -08:00
Geoffrey
f4a1172b6f Cake task to cut a new release 2017-02-13 21:58:23 -08:00
Geoffrey
9866224dba Abstract out testing built code, to prepare for watching the build task 2017-02-13 21:49:04 -08:00
Geoffrey
8a271995c7 Refactor the build tasks to be more foolproof, including the parser unless it’s explicitly excluded 2017-02-13 21:05:12 -08:00
Geoffrey
c06a0584ff The cake documentation tasks should each have build and watch modes following the same form 2017-02-13 21:04:14 -08:00
Geoffrey
37e6513c02 Node comes with NPM nowadays, so there’s not really a reason to install CoffeeScript the non-NPM way 2017-02-13 20:31:58 -08:00
Geoffrey
4cc701a9da Remove hyphen in coffee-script 2017-02-12 17:00:05 -08:00
Geoffrey
d2e94c6ebd Fix Try CoffeeScript for mobile 2017-02-12 16:36:52 -08:00
Geoffrey Booth
d7d32cf0b6 Prepare for new module name on NPM 2017-02-10 11:38:43 -08:00
Geoffrey Booth
ebe32d35e2 Add breaking changes link to changelog; bump date 2017-02-10 11:36:35 -08:00
Geoffrey Booth
ecafe7ce0f Update changelog for 2.0.0-alpha1 2017-02-09 13:33:35 -08:00
Geoffrey Booth
41a229e22e Update browser-based tests output 2017-02-09 13:29:23 -08:00
Geoffrey Booth
d9194b2670 Update annotated source for 2.0.0-alpha1 2017-02-09 13:29:12 -08:00
Geoffrey Booth
365d1968e9 Bump CoffeeScript version to 2.0.0-alpha1 2017-02-09 13:28:22 -08:00
Geoffrey Booth
eebc432efb Fix link to browser-based tests 2017-02-09 13:27:24 -08:00
Geoffrey Booth
dd5aa2b7a4 Bump version of Closure Compiler, update browser compiler 2017-02-09 13:26:46 -08:00
Geoffrey Booth
d1d2c16fdd Update docs for classes, breaking changes (#4438)
* Update classes docs for CS2

* Port breaking changes from https://github.com/jashkenas/coffeescript/wiki/%5BWIP%5D-Breaking-changes-in-CoffeeScript-2 into new docs section

* Update browser compiler

* Update re @connec’s notes; split classes section into two sections for classes and working with prototypes; make breaking changes examples editable whenever possible
2017-02-09 08:50:11 -08:00
Geoffrey
ef1898ba42 Merge commit '3d0d04efe286fdbd9b1b1841112a6b9c991e9698' into 2 2017-02-07 20:20:51 -08:00
Ruben Rodriguez
3d0d04efe2 getSourceMap needs to pass literate flag to compile() (#4435) 2017-02-04 19:33:09 -08:00
Geoffrey Booth
81cbca5bb8 Update async test to use new super syntax 2017-02-04 17:05:18 -08:00
Geoffrey
da3db1be39 Merge branch 'master' of github.com:jashkenas/coffeescript into 2
# Conflicts:
#	lib/coffee-script/nodes.js
#	lib/coffee-script/scope.js
2017-02-04 12:36:49 -08:00
Chris Connelly
396bd4f2f2 [CS2] Compile all super calls to ES2015 super (#4424)
* Compile all super calls to ES2015 super

This breaks using `super` in non-methods, meaning several tests are
failing. Self-compilation still works.

* Use bound functions for IIFEs containing `super`

`super` can only be called directly in a method, or in an arrow
function.

* Fix handling of `class @A extends A`

This behaviour worked 'for free' when the parent reference was being
cached by the executable class body wrapper. There now needs to be
special handling in place to check if the parent name matches the class
name, and if so to cache the parent reference.

* Fix tests broken by compiling ES2015 `super`

* Disallow bare super

This removes syntax support for 'bare' super calls, e.g.:

    class B extends A
      constructor: -> super

`super` must now always be followed with arguments like a regular
function call. This also removes the capability of implicitly forwarding
arguments. The above can be equivalently be written as:

    class B extends A
      constructor: -> super arguments...

* Support super with accessors

`super` with following accessor(s) is now compiled to ES2015
equivalents. In particular, expressions such as `super.name`,
`super[name]`, and also `super.name.prop` are all now valid, and can be
used as expected as calls (i.e. `super.name()`) or in expressions (i.e.
`if super.name? ...`).

`super` without accessors is compiled to a constructor super call in a
constructor, and otherwise, as before, to a super call to the method of
the same name, i.e.

    speak: -> super()

...is equivalent to

    speak: -> super.speak()

A neat side-effect of the changes is that existential calls now work
properly with super, meaning `super?()` will only call if the super
property exists (and is a function). This is not valid for super in
constructors.

* Prevent calling `super` methods with `new`

This fixes a bug in the previous super handling whereby using the `new`
operator with a `super` call would silently drop the `new`. This is now
an explicit compiler error, as it is invalid JS at runtime.

* Clean up some old super handling code

This was mostly code for tracking the source classes and variables for
methods, which were needed to build the old lookups on `__super__`.

* Add TODO to improve bare super parse error

* Add some TODOs to improve some of the class tests
2017-02-04 12:03:17 -08:00
Geoffrey Booth
cbea7b5d1c [CS2] Fix handling of parameters that are complex (#4430)
* Add failing test per #4406

* If a parameter is a function call, define it in an expression within the function body

* Remove the space between `function` and `*` for generator functions, to follow usual ES idiom

* We can collapse `isCall` into `isComplex`

* Don’t need existence check here

* Correct destructured parameter default evaluation order with an incrementing variable (or more generally any complicated parameter that isComplex)

* Try to pull complex parameters out of the parameter list if their order of execution matters; but don’t pull _all_ complex parameters out of the parameter list, so that we don’t lose parameter default values

* Add lots of comments about node special properties

* Err on the side of caution in deciding whether a complex parameter is allowable in a function parameter list rather than the function body (there are lots more detections we could add to find additional “safe” parameters)

* Follow the ES and CS2 convention of assigning parameter default values only when undefined, not when null or undefined

* Along with arrays and empty objects, also let values whose bases are not complex be allowed in the function parameter list (like `obj.prop`)

* Better way to check for undefined parameters when declaring them in a function body

* Once we’ve put a complex parameter in the function body, all following complex parameters go into the function body; no need to create lots of exceptions of when to choose whether to put a complex param in the body

* Rename `isComplex` to `shouldCache` for clarity
2017-02-01 06:54:42 -08:00
Simon Lydell
87e537c917 Merge pull request #4432 from connec/fix-export-declarations
Fix "export" squashing variable declarations
2017-01-26 16:58:43 +01:00
Chris Connelly
b61324058d Fix "export" squashing variable declarations
Exports that referenced variables assigned in the module would prevent
the referenced variables from being declared, resulting in
ReferenceErrors at run time.

Fixes #4394.
2017-01-26 15:27:41 +00:00
Geoffrey Booth
3e7973e08d Merge branch 'master' into 2
# Conflicts:
#	lib/coffee-script/browser.js
#	lib/coffee-script/cake.js
#	lib/coffee-script/coffee-script.js
#	lib/coffee-script/command.js
#	lib/coffee-script/grammar.js
#	lib/coffee-script/helpers.js
#	lib/coffee-script/index.js
#	lib/coffee-script/lexer.js
#	lib/coffee-script/nodes.js
#	lib/coffee-script/optparse.js
#	lib/coffee-script/register.js
#	lib/coffee-script/repl.js
#	lib/coffee-script/rewriter.js
#	lib/coffee-script/scope.js
#	lib/coffee-script/sourcemap.js
#	package.json
2017-01-24 18:54:55 -08:00
Simon Lydell
635e207f3f Update release date for 1.12.3 1.12.3 2017-01-24 18:53:18 +01:00
Simon Lydell
e87d5749bd Merge pull request #4429 from GeoffreyBooth/1.12.3
1.12.3
2017-01-24 18:50:29 +01:00