From e694b41a94896fa6ce099201e607a1f28a00c61e Mon Sep 17 00:00:00 2001 From: Timothy Jones Date: Thu, 21 Oct 2010 14:27:25 +1300 Subject: [PATCH] Operators now respect new lines as being spaced. --- lib/lexer.js | 5 +++++ src/lexer.coffee | 2 ++ test/test_operations.coffee | 6 ++++++ 3 files changed, 13 insertions(+) diff --git a/lib/lexer.js b/lib/lexer.js index a644d861..29f3449a 100644 --- a/lib/lexer.js +++ b/lib/lexer.js @@ -314,6 +314,11 @@ return true; }; Lexer.prototype.newlineToken = function(newlines) { + var prev; + prev = last(this.tokens); + if (prev) { + prev.newLine = true; + } if (this.tag() !== 'TERMINATOR') { this.token('TERMINATOR', '\n'); } diff --git a/src/lexer.coffee b/src/lexer.coffee index 1c0d457d..d9c5d562 100644 --- a/src/lexer.coffee +++ b/src/lexer.coffee @@ -289,6 +289,8 @@ exports.Lexer = class Lexer # Generate a newline token. Consecutive newlines get merged together. newlineToken: (newlines) -> + prev = last @tokens + prev.newLine = true if prev @token 'TERMINATOR', '\n' unless @tag() is 'TERMINATOR' true diff --git a/test/test_operations.coffee b/test/test_operations.coffee index 0ba5cd64..07beb3e9 100644 --- a/test/test_operations.coffee +++ b/test/test_operations.coffee @@ -152,3 +152,9 @@ a = -> share++ if share is 0 b = -> share++ if share is 1 c = -> share++ if share is 2 ok a() not in [b(),c()] and share is 3 + + +# Operators should respect new lines as spaced. +a = 123 + +456 +ok a is 579