Skip to content

Commit d4b7bd3

Browse files
helixbassGeoffreyBooth
authored andcommitted
AST: fix interpolated regex tokens (#5262)
* this property * clean up AST tests * updated grammar * export location data * export default class location data * fix interpolated regex tokens
1 parent 559e735 commit d4b7bd3

File tree

3 files changed

+27
-19
lines changed

3 files changed

+27
-19
lines changed

lib/coffeescript/lexer.js

Lines changed: 16 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/lexer.coffee

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -480,16 +480,16 @@ exports.Lexer = class Lexer
480480
@validateUnicodeCodePointEscapes body, {delimiter}
481481
@token 'REGEX', "/#{body}/#{flags}", {length: end, origin, data: {delimiter}}
482482
else
483-
@token 'REGEX_START', '(', {length: 0, origin}
484-
@token 'IDENTIFIER', 'RegExp', length: 0
485-
@token 'CALL_START', '(', length: 0
483+
@token 'REGEX_START', '(', {length: 0, origin, generated: yes}
484+
@token 'IDENTIFIER', 'RegExp', length: 0, generated: yes
485+
@token 'CALL_START', '(', length: 0, generated: yes
486486
@mergeInterpolationTokens tokens, {double: yes, heregex: {flags}, endOffset: end - flags.length, quote: '///'}, (str) =>
487487
@validateUnicodeCodePointEscapes str, {delimiter}
488488
if flags
489-
@token ',', ',', offset: index - 1, length: 0
490-
@token 'STRING', '"' + flags + '"', offset: index - 1, length: flags.length
491-
@token ')', ')', offset: end, length: 0
492-
@token 'REGEX_END', ')', offset: end, length: 0
489+
@token ',', ',', offset: index - 1, length: 0, generated: yes
490+
@token 'STRING', '"' + flags + '"', offset: index, length: flags.length
491+
@token ')', ')', offset: end, length: 0, generated: yes
492+
@token 'REGEX_END', ')', offset: end, length: 0, generated: yes
493493

494494
# Explicitly attach any heregex comments to the REGEX/REGEX_END token.
495495
if commentTokens?.length
@@ -1008,7 +1008,7 @@ exports.Lexer = class Lexer
10081008
lastToken[2].range[1]
10091009
]
10101010
]
1011-
lparen[2] = lparen.origin[2]
1011+
lparen[2] = lparen.origin[2] unless quote?.length
10121012
rparen = @token 'STRING_END', ')', offset: endOffset - (quote ? '').length, length: quote?.length ? 0, generated: not quote?.length
10131013

10141014
# Pairs up a closing token, ensuring that all listed pairs of tokens are

test/location.coffee

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -607,9 +607,9 @@ test "Verify heregexes with interpolations have the right ending position", ->
607607
arrayEndColumn = arrayEnd[2].first_column
608608
for token in [comma]
609609
assertColumn token, arrayEndColumn - 2
610-
for token in [flagsString]
611-
assertColumn token, arrayEndColumn - 2, 1
612-
for token in [regexCallEnd, regexEnd, fnCallEnd]
610+
for token in [flagsString, regexCallEnd]
611+
assertColumn token, arrayEndColumn - 1, 1
612+
for token in [regexEnd, fnCallEnd]
613613
assertColumn token, arrayEndColumn
614614
assertColumn arrayEnd, arrayEndColumn, 1
615615

0 commit comments

Comments
 (0)