Here’s the original code:
res.write JSON.stringify {"#{result.statusCode}": "OK"}
and here’s the error that both the CoffeeScript linter in SublimeText 2 and the “Try CoffeeScript” interpreter on the CoffeeScript site give me:
PARSE ERROR ON LINE 1: UNEXPECTED '('
Obviously there’s no open parens in the code, so I don’t understand the error. Is it a bug in the CoffeeScript parser?
The smallest line of code that does this seems to be something like this:
{"#{a}": ""}
I’m assuming that string interpolation in an object’s key is valid, but I don’t know for sure.
EDIT:
After some investigation it seems that it’s not valid to do the string interpolation in the key because the resulting JavaScript would be invalid.
This:
{"#{a}": "stuff}
would translate to something like:
{ "" + a: "stuff"}
which isn’t valid.
But can someone explain why the error message it gives me is so wrong?
Unfortunately it’s not.
You’ll have to do something like
or if you want a one-liner
As for the misleading error, CoffeeScript is trying to translate your
{"#{a}": ''}into{("" + a): ""}which is not valid JavaScript. CoffeeScript is throwing the error at that left paren.