77 Commits

Author SHA1 Message Date
Jeremy Ashkenas
533ad8afe9 CoffeeScript 1.9.1 2015-02-18 15:43:33 -05:00
Simon Lydell
76c076db55 Fix #3597: Allow interpolations in object keys
The following is now allowed:

    o =
      a: 1
      b: 2
      "#{'c'}": 3
      "#{'d'}": 4
      e: 5
      "#{'f'}": 6
      g: 7

It compiles to:

    o = (
      obj = {
        a: 1,
        b: 2
      },
      obj["" + 'c'] = 3,
      obj["" + 'd'] = 4,
      obj.e = 5,
      obj["" + 'f'] = 6,
      obj.g = 7,
      obj
    );

- Closes #3039. Empty interpolations in object keys are now _supposed_ to be
  allowed.
- Closes #1131. No need to improve error messages for attempted key
  interpolation anymore.
- Implementing this required fixing the following bug: `("" + a): 1` used to
  error out on the colon, saying "unexpected colon". But really, it is the
  attempted object key that is unexpected. Now the error is on the opening
  parenthesis instead.
- However, the above fix broke some error message tests for regexes. The easiest
  way to fix this was to make a seemingly unrelated change: The error messages
  for unexpected identifiers, numbers, strings and regexes now say for example
  'unexpected string' instead of 'unexpected """some #{really long} string"""'.
  In other words, the tag _name_ is used instead of the tag _value_.
  This was way easier to implement, and is more helpful to the user. Using the
  tag value is good for operators, reserved words and the like, but not for
  tokens which can contain any text. For example, 'unexpected identifier' is
  better than 'unexpected expected' (if a variable called 'expected' was used
  erraneously).
- While writing tests for the above point I found a few minor bugs with string
  locations which have been fixed.
2015-02-09 17:32:37 +01:00
Simon Lydell
4d7a0d2470 Name generated variables without leading underscore
For example, `ref` not `_ref`. It's cleaner.

This also fixes #3816.
2015-01-30 20:33:03 +01:00
Jeremy Ashkenas
e0ec8a51e4 CoffeeScript 1.9.0 2015-01-29 12:20:46 -05:00
Simon Lydell
a63009fccb Fix #3671: Allow step in optimized range comprehensions
Allow the `by c` part in `for [a..b] by c then`.

Continue disallowing a `when d` part, since it makes no sense having a guard
that isn't given access to anything that changes on every iteration.
2015-01-10 02:31:56 +01:00
alubbe
dd5da7f5f2 implemented proper precedence for 'yield' 2014-10-13 03:32:02 +02:00
Andreas Lubbe
437b9ed65c added 'yield return' 2014-09-06 15:40:53 +02:00
Andreas Lubbe
c72556619f added 'yield from' 2014-09-06 13:53:21 +02:00
Andreas Lubbe
565d78f00b removed support for '->*" and '=>*' 2014-09-06 13:38:04 +02:00
Andreas Lubbe
75900660fd Merge remote-tracking branch 'A/master' 2014-09-06 11:32:25 +02:00
Jeremy Ashkenas
81047d45ee CoffeeScript 1.8.0 2014-08-26 12:24:29 -04:00
Michael Ficarra
4ab8503e5a CoffeeScript 1.7.1 2014-01-29 23:19:36 -06:00
xixixao
10293df1f9 Recompile source with 1.7.0 version 2014-01-28 03:34:00 +00:00
Andreas Lubbe
f375394381 Merge https://github.com/jashkenas/coffee-script
Conflicts:
	lib/coffee-script/lexer.js
	lib/coffee-script/parser.js
	lib/coffee-script/rewriter.js
	src/lexer.coffee
	src/rewriter.coffee
2014-01-25 19:37:35 -08:00
Demian Ferreiro
2b4421fca1 Merge branch 'master' into more-math-operators
Conflicts:
	lib/coffee-script/grammar.js
	lib/coffee-script/lexer.js
	lib/coffee-script/nodes.js
	lib/coffee-script/parser.js
	test/regexps.coffee
2014-01-24 15:40:28 -03:00
xixixao
369e0545c0 Added expansion to destructuring 2014-01-24 16:00:34 +00:00
Andreas Lubbe
56b04a58dc first attempt at using '->*" and '=>*' for generators 2013-12-19 14:21:14 -08:00
xixixao
d7862647d9 Fix multiple postfix conditionals 2013-12-17 03:31:19 +01:00
xixixao
efe8c68c75 Changed multiline string literals 2013-11-18 04:32:15 +00:00
Marc Häfner
25c6001a6c Speed up updateLocationDataIfMissing.
* Avoid excessive search for missing `locationData`
  * Fix `locationData` for `ELSE IF`.
2013-06-21 02:47:29 +02:00
Marc Häfner
4fd5e9a3ab Better handling of initial indent at file start.
* Detect initial indentation before the first token and enforce it.
  * Don't add `INDENT` token (or the matching `OUTDENT, TERMINATOR`).
2013-06-14 00:28:45 +02:00
Jeremy Ashkenas
84b8b5ccee CoffeeScript 1.6.3 2013-06-02 09:37:45 +04:00
Marc Häfner
cf07fcb4b1 #2900 -- parameter-less catch clause.
Plus some minor cleanup after f8c6b494aa
2013-04-12 17:50:45 +02:00
Demian Ferreiro
08b59aef8a Make power operator have higher precedence than unary operators: +, -, ~, ! 2013-03-25 00:05:04 -03:00
Demian Ferreiro
e237abff84 Merge branch 'power-operator' of git://github.com/charliesome/coffee-script into more-math-operators
Conflicts:
	src/nodes.coffee
	test/operators.coffee
2013-03-24 22:47:46 -03:00
Jeremy Ashkenas
566a7dabb2 Fixing erroneous whitespace fix in generated JS 2013-03-18 17:47:55 +08:00
Jeremy Ashkenas
a3e8de338a CoffeeScript 1.6.2 2013-03-18 13:06:33 +08:00
Jeremy Ashkenas
dbb99f31a7 Reverting #2490 2013-03-10 07:21:00 +08:00
Jeremy Ashkenas
c53df12ec1 disallow multiple else blocks in if/guard syntax 2013-03-09 15:44:45 +08:00
Jeremy Ashkenas
13fae12f69 Fixes #2490 -- adding guard-style if blocks 2013-03-09 10:40:37 +08:00
Jeremy Ashkenas
eef83a9fcb CoffeeScript 1.6.1 2013-03-05 11:07:16 +13:00
Jeremy Ashkenas
9f614fedec CoffeeScript 1.6.0 2013-03-05 08:19:08 +13:00
Jeremy Ashkenas
b3452c1276 Fixes #2508 -- existential access of the prototype. 2013-03-04 22:07:47 +13:00
Demian Ferreiro
bf70b4660e Revert #2599 2013-02-28 10:37:30 -03:00
Jeremy Ashkenas
af53c230a1 CoffeeScript 1.5.0 2013-02-25 21:12:22 +13:00
Jeremy Ashkenas
ac9d0e17e4 Merging in location data in the AST. Yee-hah. 2013-02-25 17:51:05 +13:00
Jeremy Ashkenas
5e498ca395 merged 2013-02-25 17:41:27 +13:00
Jeremy Ashkenas
14c2a16833 Reverted b31cc70 -- putting Generated comment back up top. Why? Why not? 2013-02-25 17:17:01 +13:00
Jason Walton
e1a2e11de4 Fix merge problem, and rebuild parser.js 2013-02-21 20:17:06 -05:00
Jason Walton
5e49df8ed4 Merge remote-tracking branch 'upstream/master'
Conflicts:
	lib/coffee-script/grammar.js
	src/grammar.coffee
2013-02-14 14:21:46 -05:00
Jeremy Ashkenas
fa1ffa66d3 Fixes #2359 -- tweak grammar to use new name 2013-02-14 16:34:32 +13:00
Jason Walton
c31bc6deb7 Update js files. 2013-02-06 10:40:48 -05:00
Jason Walton
fe45f1bf35 Merge remote-tracking branch 'upstream/master'
Conflicts:
	lib/coffee-script/grammar.js
	lib/coffee-script/rewriter.js
	src/grammar.coffee
	src/rewriter.coffee
2013-02-06 10:29:19 -05:00
Jeremy Ashkenas
b31cc70235 Moving the 'generated by coffeescript version X' comment to the bottom, to get it out of the way 2013-02-02 10:42:46 +11:00
Jeremy Ashkenas
78891a0ccc Merging in @epedemian's fix for #2359 -- disallow other-typed constructors 2013-02-01 22:30:22 +11:00
Jason Walton
a1ba0a89f8 Merge remote-tracking branch 'origin/master'
Conflicts:
	lib/coffee-script/coffee-script.js
	lib/coffee-script/lexer.js
	lib/coffee-script/parser.js
	src/lexer.coffee
2013-01-14 14:26:06 -05:00
Jeremy Ashkenas
547a271cee Merge pull request #2627 from int3/master
Parse compound assignment operator followed by a terminator. Closes #2532.
2013-01-05 20:10:32 -08:00
Jeremy Ashkenas
ba08a21d21 bumping version to 1.5.0-pre 2013-01-04 09:35:20 -10:00
Jez Ng
847ab4d18e Parse compound assignment followed by a terminator.
Closes #2532.
2012-11-27 20:11:01 -05:00
Jason Walton
25126e2f99 Add location data to nodes without passing it in constructors. 2012-11-15 15:35:01 -05:00