Simon Lydell
4ceb6a6818
Only allow yield return as a statement
...
Fixes #4097 . Also happens to fix #4096 . I also took the liberty to simplify the
error message for invalid use of `yield`.
2015-09-16 17:39:59 +02:00
Jeremy Ashkenas
d6ff91a454
Merge pull request #4095 from alubbe/standaloneyieldd
...
Add support for standalone yield
2015-09-14 10:55:39 -04:00
Jeremy Ashkenas
da23a2f702
Merge pull request #4093 from alubbe/betteryieldcompilation
...
Remove unnecessary brackets and empty spaces around yield
2015-09-14 10:54:35 -04:00
Andreas Lubbe
b1ef5a9996
Remove unnecessary brackets and empty spaces around yield
...
This removes unnecessary brackets and empty spaces around yield when not needed. We still need brackets for if(a === (yield)).
2015-09-13 13:11:10 +02:00
Andreas Lubbe
c1a9cfa044
Add support for standalone yield
...
This breaks compatibility with
->
yield for i in [1..3]
i * 2
and
->
yield
i * 2
yield's behaviour now mirrors that of return in that it can be used stand alone as well as with expressions. Thus, it currently also inherits the above limitations.
2015-09-13 12:30:59 +02:00
Andreas Lubbe
d3cff9082f
Remove uncaught error vars
2015-09-13 12:27:07 +02:00
Simon Lydell
75a4c01e17
Fix #4088 : Don't declare caught variables
2015-09-10 18:59:01 +02:00
Simon Lydell
cea773ec81
CoffeeScript 1.10.0
2015-09-03 20:10:18 +02:00
Simon Lydell
2c4d437e98
Fix #3926 : Disallow implicit objects as parameter destructuring
2015-08-28 23:11:47 +02:00
Simon Lydell
6d9553a016
Implement ES2015-like destructuring defaults
...
This let's you do things like:
fullName = ({first = 'John', last = 'Doe'}) -> "#{first} #{last}"
Note: CoffeeScrits treats `undefined` and `null` the same, and that's true in
the case of destructuring defaults as well, as opposed to ES2015 which only uses
the default value if the target is `undefined`. A similar ES2015 difference
already exists for function parameter defaults. It is important for CoffeeScript
to be consistent with itself.
fullName2 = (first = 'John', last = 'Doe') -> "#{first} #{last}"
assert fullName('Bob', null) is fullName2(first: 'Bob', last: null)
Fixes #1558 , #3288 and #4005 .
2015-08-27 22:16:13 +02:00
Simon Lydell
f588ecb288
Fix #4070 : Improve error message for lone expansion
2015-08-26 22:30:55 +02:00
Michael Ficarra
dc3e177811
Merge pull request #4068 from lydell/issue-1192
...
Fix #1192 : Assignment starting with object literals
2015-08-22 07:24:23 -07:00
Simon Lydell
2eef667916
Fix #1192 : Assignment starting with object literals
2015-08-22 16:21:35 +02:00
Bruno Bernardino
beac56d4d5
Updated compile
2015-08-16 21:34:22 +01:00
Bruno Bernardino
93e4eeafed
Removing the unnecessary underscore now :)
2015-08-16 21:32:16 +01:00
Bruno Bernardino
efdc67241a
Improved the tests and removed the hardcoded variable, according to suggestions.
2015-08-16 21:27:28 +01:00
Bruno Bernardino
24e8f1c98f
Closes #4036 : "Try catch" optimisation
...
Let me know if there's something I should be doing differently as this is my first contribution to coffeescript.
I fixed the reported issue where a generated variable could clash with a user-defined one in a try/catch block.
I added a test for a few scenarios with different variable names for a try/catch, to confirm the fix and avoid regressions.
2015-08-16 20:47:04 +01:00
Jeremy Ruten
3d7d68a766
Reset @seenFor in lexer before tokenizing
2015-07-07 22:23:26 -06:00
Rod Vagg
75ae45e2bb
don't copy arguments or caller from require
...
causes an error in io.js where strict-mode is set on internal modules
Fixes: https://github.com/jashkenas/coffeescript/issues/3810
2015-06-22 22:51:39 +10:00
Michael Ficarra
1f197fcc1b
Merge pull request #3985 from ide/array-check
...
Replace "instanceof Array" in transformer with "[object Array]" comparison
2015-06-05 09:40:02 -07:00
James Ide
2087923163
Replace "instanceof Array" in transformer with "[object Array]" comparison
...
Testing with `'[object Array]' is Object::toString.call element` allows arrays from another JS context to be properly handled. The specific use case here is to support jest, which sets up JS contexts using Node/io.js's "vm" module. This approach works in ES3 environments in contrast with ES5's `Array.isArray`.
2015-05-20 21:06:36 -07:00
Simon Lydell
b58772e8a7
CoffeeScript 1.9.3
2015-05-14 11:24:39 +02:00
Simon Lydell
52b1749d57
Fix formatting of #-only lines in herecomments
...
Before:
$ ./bin/coffee -bpe '###
> # paragraph 1
> #
> # paragraph 2
> ###'
/*
* paragraph 1
#
* paragraph 2
*/
After:
$ ./bin/coffee -bpe '###
# paragraph 1
#
# paragraph 2
###'
/*
* paragraph 1
*
* paragraph 2
*/
This does not re-break #3638 :
$ ./bin/coffee -bpe '###
> #/
> ###'
/*
#/
*/
2015-05-13 17:50:09 +02:00
Simon Lydell
ba85a38cb0
Commit compiled code that should have been in commit 378a04e4
2015-05-13 17:50:02 +02:00
Michael Ficarra
300faf401c
Merge pull request #3968 from lydell/nodes-tokens-errors
...
Fix `CoffeeScript.nodes(tokens)`; fix the repl
2015-05-01 07:51:17 -07:00
Michael Ficarra
f2c6066103
Merge pull request #3967 from lydell/implicit-call-implicit-obj
...
Fix #3935 : Implicit calls + obj key interpolation
2015-05-01 07:48:59 -07:00
Simon Lydell
36695540fc
Save alias names in the origin of tokens
...
... and use it for "reserved word can't be assigned" errors. Fixes #2306 .
2015-05-01 14:33:11 +02:00
Simon Lydell
fc0c4fdd5f
Fix CoffeeScript.nodes(tokens); fix the repl
...
If you passed an array of tokens (as opposed to a string of code) to
`CoffeeScript.nodes`, its attempts to prettify error messages would break. Now
it does not attempt to prettify error messages in that case anymore (because it
is not possible to prettify the errors without a string of code).
The repl was affected by the above bug.
Fixes #3887 .
2015-05-01 13:43:04 +02:00
Simon Lydell
ebc172d1ee
Fix #3935 : Implicit calls + obj key interpolation
...
Allow implicit calls when the first key of an implicit object has interpolation.
2015-05-01 12:02:03 +02:00
Michael Ficarra
1e62781759
Merge pull request #3953 from sixmen/fix_repl_fd_leak
...
fix history file descriptor leak
2015-04-23 06:46:50 -07:00
Sangmin Yoon
8b463cd3ad
fix history file descriptor leak
2015-04-22 15:26:44 +09:00
Sangmin Yoon
ce10a463f3
fix write after FIN error when using repl via socket
...
if repl.outputStream is a socket, it is closed when 'exit' event
occurred, so write throws an exception
2015-04-22 15:11:56 +09:00
Andreas Lubbe
edbb9a77e7
build & docs for 1.9.2
2015-04-15 17:26:30 +02:00
Jeremy Ashkenas
bd17cc9b3c
Merge pull request #3892 from matthieubulte/master
...
Added checking on process.stdout to be compatible with browserify
2015-03-09 09:42:27 -04:00
Cotton Hou
008bacf5d5
add compiled lib/browser.js
2015-03-09 15:59:10 +08:00
Matthieu Bulté
3548b4883e
Added checking on process.stdout to be compatible with browserify
2015-03-09 08:30:01 +01:00
Michael Ficarra
37a376497c
Merge pull request #3893 from josh/escape-literal-bracket-regexp
...
Escape literal ] in regexp
2015-03-08 22:18:16 -07:00
Joshua Peek
83744917b0
Escape literal ] in REGEX
...
] is not allowed in the PatternCharacter set
2015-03-08 21:59:09 -07:00
Jeremy Ashkenas
a548b70e8c
Merge pull request #3661 from dtaniwaki/fix-deprecated-option
...
Use stdio option instead of customFds
2015-03-06 09:58:33 -05:00
Jeremy Ashkenas
c8147c046a
Reverts #3758 , Fixes #3863 -- kills the broken warning
2015-03-03 14:30:52 -05:00
Jeremy Ashkenas
06aa329596
Revert "Escape literal [ in regexp"
2015-02-26 16:05:12 -05:00
Joshua Peek
7f7765546f
Escape literal [ in regexp
...
Improves compatibility with strict ES5 regexp syntax
2015-02-26 12:37:27 -06:00
Andreas Lubbe
84c125a71b
yield now behaves as expected around 'this' - fixes https://github.com/jashkenas/coffeescript/issues/3882
2015-02-26 13:01:12 +01:00
Andrey Taritsyn
71c59dddcc
Fix getting of character at index
2015-02-22 19:08:15 +03:00
Sam Gentle
836175baab
add -r/--require command line option
2015-02-20 02:58:10 +11:00
Jeremy Ashkenas
533ad8afe9
CoffeeScript 1.9.1
2015-02-18 15:43:33 -05:00
Jeremy Ashkenas
1961f06e08
Merge pull request #3861 from lydell/heredoc-undefined
...
Fix single-line heredocs starting with "undefined"
2015-02-18 14:06:09 -05:00
Simon Lydell
4503e2716e
Fix single-line heredocs starting with "undefined"
2015-02-18 17:40:40 +01:00
Andreas Lubbe
feee6954a6
fixed yield return producing incorrect output when used outside of the last line
2015-02-17 19:11:06 +01:00
Andreas Lubbe
e3f6e19950
fixed being unable to use 'yield throw'
2015-02-15 19:01:00 +01:00