diff --git a/lib/coffee-script/lexer.js b/lib/coffee-script/lexer.js index 1cac1574..76deb0c1 100644 --- a/lib/coffee-script/lexer.js +++ b/lib/coffee-script/lexer.js @@ -238,6 +238,7 @@ if (!(match = MULTI_DENT.exec(this.chunk))) return 0; indent = match[0]; this.line += count(indent, '\n'); + this.seenFor = false; prev = last(this.tokens, 1); size = indent.length - 1 - indent.lastIndexOf('\n'); noNewlines = this.unfinished(); diff --git a/src/lexer.coffee b/src/lexer.coffee index 621b4f77..1f6e81a8 100644 --- a/src/lexer.coffee +++ b/src/lexer.coffee @@ -241,6 +241,7 @@ exports.Lexer = class Lexer return 0 unless match = MULTI_DENT.exec @chunk indent = match[0] @line += count indent, '\n' + @seenFor = no prev = last @tokens, 1 size = indent.length - 1 - indent.lastIndexOf '\n' noNewlines = @unfinished() diff --git a/test/operators.coffee b/test/operators.coffee index 08d2c2c0..e1aa2b7c 100644 --- a/test/operators.coffee +++ b/test/operators.coffee @@ -199,6 +199,10 @@ test "#1100: precedence in or-test compilation of `in`", -> test "#1630: `in` should check `hasOwnProperty`", -> ok undefined not in length: 1 + +test "#1714: lexer bug with raw range `for` followed by `in`", -> + 0 for [1..10] + ok not ('a' in ['b']) # Chained Comparison