Skip to content

Commit f4c1b20

Browse files
fixes #1724: regular expressions beginning with *
also normalised capitalisation in a few error messages
1 parent 08762a1 commit f4c1b20

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

lib/coffee-script/lexer.js

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

src/lexer.coffee

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ exports.Lexer = class Lexer
112112
id = new String id
113113
id.reserved = yes
114114
else if id in RESERVED
115-
@error "Reserved word \"#{word}\""
115+
@error "reserved word \"#{word}\""
116116

117117
unless forcedIdentifier
118118
id = COFFEE_ALIAS_MAP[id] if id in COFFEE_ALIASES
@@ -199,7 +199,9 @@ exports.Lexer = class Lexer
199199
return 0 if prev and (prev[0] in (if prev.spaced then NOT_REGEX else NOT_SPACED_REGEX))
200200
return 0 unless match = REGEX.exec @chunk
201201
[regex] = match
202-
@token 'REGEX', if regex is '//' then '/(?:)/' else regex
202+
if regex.match /^\/\*/ then @error 'regular expressions cannot begin with `*`'
203+
if regex is '//' then regex = '/(?:)/'
204+
@token 'REGEX', regex
203205
regex.length
204206
205207
# Matches multiline extended regular expressions.
@@ -324,7 +326,7 @@ exports.Lexer = class Lexer
324326
prev = last @tokens
325327
if value is '=' and prev
326328
if not prev[1].reserved and prev[1] in JS_FORBIDDEN
327-
@error "Reserved word \"#{@value()}\" can't be assigned"
329+
@error "reserved word \"#{@value()}\" can't be assigned"
328330
if prev[1] in ['||', '&&']
329331
prev[0] = 'COMPOUND_ASSIGN'
330332
prev[1] += '='

test/regexps.coffee

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ test "#764: regular expressions should be indexable", ->
3838
test "#584: slashes are allowed unescaped in character classes", ->
3939
ok /^a\/[/]b$/.test 'a//b'
4040

41+
test "#1724: regular expressions beginning with `*`", ->
42+
throws -> CoffeeScript.compile '/*/'
43+
4144

4245
# Heregexe(n|s)
4346

0 commit comments

Comments
 (0)