Skip to content

Commit 463ea2c

Browse files
hashseedmarijnh
authored andcommitted
[javascript mode] fix tokenizing of underscore properties
The regexp for parsing numbers with numeric separators is too broad. This way, we mistake properties starting with underscore to be numbers.
1 parent 1745746 commit 463ea2c

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

mode/javascript/javascript.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
6767
if (ch == '"' || ch == "'") {
6868
state.tokenize = tokenString(ch);
6969
return state.tokenize(stream, state);
70-
} else if (ch == "." && stream.match(/^[\d_]+(?:[eE][+\-]?[\d_]+)?/)) {
70+
} else if (ch == "." && stream.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/)) {
7171
return ret("number", "number");
7272
} else if (ch == "." && stream.match("..")) {
7373
return ret("spread", "meta");

mode/javascript/test.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,13 @@
310310
"[number 1E+123_456];",
311311
"[number 12_34_56n];")
312312

313+
MT("underscore property",
314+
"[variable something].[property _property];",
315+
"[variable something].[property _123];",
316+
"[variable something].[property _for];",
317+
"[variable _for];",
318+
"[variable _123];")
319+
313320
var ts_mode = CodeMirror.getMode({indentUnit: 2}, "application/typescript")
314321
function TS(name) {
315322
test.mode(name, ts_mode, Array.prototype.slice.call(arguments, 1))

0 commit comments

Comments
 (0)