mirror of
https://github.com/jashkenas/coffeescript.git
synced 2026-05-03 03:00:14 -04:00
Merge branch 'master' of github.com:jashkenas/coffeescript
This commit is contained in:
@@ -685,7 +685,12 @@
|
||||
}
|
||||
firstToken = tokens[0], lastToken = tokens[tokens.length - 1];
|
||||
firstToken[2].first_column -= delimiter.length;
|
||||
lastToken[2].last_column += delimiter.length;
|
||||
if (lastToken[1].substr(-1) === '\n') {
|
||||
lastToken[2].last_line += 1;
|
||||
lastToken[2].last_column = delimiter.length - 1;
|
||||
} else {
|
||||
lastToken[2].last_column += delimiter.length;
|
||||
}
|
||||
if (lastToken[1].length === 0) {
|
||||
lastToken[2].last_column -= 1;
|
||||
}
|
||||
|
||||
@@ -573,7 +573,11 @@ exports.Lexer = class Lexer
|
||||
|
||||
[firstToken, ..., lastToken] = tokens
|
||||
firstToken[2].first_column -= delimiter.length
|
||||
lastToken[2].last_column += delimiter.length
|
||||
if lastToken[1].substr(-1) is '\n'
|
||||
lastToken[2].last_line += 1
|
||||
lastToken[2].last_column = delimiter.length - 1
|
||||
else
|
||||
lastToken[2].last_column += delimiter.length
|
||||
lastToken[2].last_column -= 1 if lastToken[1].length is 0
|
||||
|
||||
{tokens, index: offsetInChunk + delimiter.length}
|
||||
|
||||
@@ -528,6 +528,42 @@ test "Verify real CALL_END tokens have the right position", ->
|
||||
eq callEnd[2].first_column, startIndex + 2
|
||||
eq callEnd[2].last_column, startIndex + 2
|
||||
|
||||
test "Verify normal heredocs have the right position", ->
|
||||
source = '''
|
||||
"""
|
||||
a"""
|
||||
'''
|
||||
[stringToken] = CoffeeScript.tokens source
|
||||
eq stringToken[2].first_line, 0
|
||||
eq stringToken[2].first_column, 0
|
||||
eq stringToken[2].last_line, 1
|
||||
eq stringToken[2].last_column, 3
|
||||
|
||||
test "Verify heredocs ending with a newline have the right position", ->
|
||||
source = '''
|
||||
"""
|
||||
a
|
||||
"""
|
||||
'''
|
||||
[stringToken] = CoffeeScript.tokens source
|
||||
eq stringToken[2].first_line, 0
|
||||
eq stringToken[2].first_column, 0
|
||||
eq stringToken[2].last_line, 2
|
||||
eq stringToken[2].last_column, 2
|
||||
|
||||
test "Verify indented heredocs have the right position", ->
|
||||
source = '''
|
||||
->
|
||||
"""
|
||||
a
|
||||
"""
|
||||
'''
|
||||
[arrow, indent, stringToken] = CoffeeScript.tokens source
|
||||
eq stringToken[2].first_line, 1
|
||||
eq stringToken[2].first_column, 2
|
||||
eq stringToken[2].last_line, 3
|
||||
eq stringToken[2].last_column, 4
|
||||
|
||||
test "Verify all tokens get a location", ->
|
||||
doesNotThrow ->
|
||||
tokens = CoffeeScript.tokens testScript
|
||||
|
||||
Reference in New Issue
Block a user