diff --git a/lib/coffee-script/nodes.js b/lib/coffee-script/nodes.js index 105a221c..0209be18 100644 --- a/lib/coffee-script/nodes.js +++ b/lib/coffee-script/nodes.js @@ -1488,6 +1488,9 @@ value = prop.value; } else { ref3 = prop.base.cache(o), key = ref3[0], value = ref3[1]; + if (key instanceof IdentifierLiteral) { + key = new PropertyName(key.value); + } } prop = new Assign(new Value(new IdentifierLiteral(oref), [new Access(key)]), value); } diff --git a/src/nodes.coffee b/src/nodes.coffee index 54c85d4d..ddea3e6f 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -1019,6 +1019,7 @@ exports.Obj = class Obj extends Base value = prop.value else [key, value] = prop.base.cache o + key = new PropertyName key.value if key instanceof IdentifierLiteral prop = new Assign (new Value (new IdentifierLiteral oref), [new Access key]), value if indent then answer.push @makeCode indent answer.push prop.compileToFragments(o, LEVEL_TOP)... diff --git a/test/objects.coffee b/test/objects.coffee index b8bfac09..21e431ad 100644 --- a/test/objects.coffee +++ b/test/objects.coffee @@ -569,3 +569,9 @@ test "object keys with interpolations", -> interpolated: nested: 123: 456 + +test "#4324: Shorthand after interpolated key", -> + a = 2 + obj = {"#{1}": 1, a} + eq 1, obj[1] + eq 2, obj.a