From dc44ebbdaac486896542c33c22a77dc631f74667 Mon Sep 17 00:00:00 2001 From: Nick Doiron Date: Fri, 23 Jan 2015 19:39:26 -0500 Subject: [PATCH] allow multiline comment inside of an object definition [Fixes #3761] use more CoffeeScript syntax --- lib/coffee-script/rewriter.js | 3 +++ src/rewriter.coffee | 1 + test/comments.coffee | 9 +++++++++ 3 files changed, 13 insertions(+) diff --git a/lib/coffee-script/rewriter.js b/lib/coffee-script/rewriter.js index 355822bd..5e225441 100644 --- a/lib/coffee-script/rewriter.js +++ b/lib/coffee-script/rewriter.js @@ -301,6 +301,9 @@ } else if (inImplicitObject() && !this.insideForDeclaration && sameLine && tag !== 'TERMINATOR' && prevTag !== ':' && endImplicitObject()) { } else if (inImplicitObject() && tag === 'TERMINATOR' && prevTag !== ',' && !(startsLine && this.looksObjectish(i + 1))) { + if (nextTag === 'HERECOMMENT') { + return forward(1); + } endImplicitObject(); } else { break; diff --git a/src/rewriter.coffee b/src/rewriter.coffee index becfe591..2e74d9a1 100644 --- a/src/rewriter.coffee +++ b/src/rewriter.coffee @@ -305,6 +305,7 @@ class exports.Rewriter # the continuation of an object. else if inImplicitObject() and tag is 'TERMINATOR' and prevTag isnt ',' and not (startsLine and @looksObjectish(i + 1)) + return forward 1 if nextTag is 'HERECOMMENT' endImplicitObject() else break diff --git a/test/comments.coffee b/test/comments.coffee index 8c2aa127..83b41774 100644 --- a/test/comments.coffee +++ b/test/comments.coffee @@ -418,3 +418,12 @@ test "#3638: Demand a whitespace after # symbol", -> """ eq CoffeeScript.compile(input, bare: on), result + +test "#3761: Multiline comment at end of an object", -> + anObject = + x: 3 + ### + #Comment + ### + + ok anObject.x is 3