Skip to content
This repository was archived by the owner on Dec 15, 2022. It is now read-only.

Commit f17feaa

Browse files
committed
Add 'n' suffix for BigInt numeric
1 parent 5c627b2 commit f17feaa

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

grammars/javascript.cson

+4-4
Original file line numberDiff line numberDiff line change
@@ -1244,15 +1244,15 @@
12441244
'numbers':
12451245
'patterns': [
12461246
{
1247-
'match': '\\b(?<!\\$)0(x|X)[0-9a-fA-F]+\\b(?!\\$)'
1247+
'match': '\\b(?<!\\$)0(x|X)[0-9a-fA-F]+n?\\b(?!\\$)'
12481248
'name': 'constant.numeric.hex.js'
12491249
}
12501250
{
1251-
'match': '\\b(?<!\\$)0(b|B)[01]+\\b(?!\\$)'
1251+
'match': '\\b(?<!\\$)0(b|B)[01]+n?\\b(?!\\$)'
12521252
'name': 'constant.numeric.binary.js'
12531253
}
12541254
{
1255-
'match': '\\b(?<!\\$)0(o|O)?[0-7]+\\b(?!\\$)'
1255+
'match': '\\b(?<!\\$)0(o|O)?[0-7]+n?\\b(?!\\$)'
12561256
'name': 'constant.numeric.octal.js'
12571257
}
12581258
{
@@ -1265,7 +1265,7 @@
12651265
(?:\\b[0-9]+(\\.)[0-9]+\\b)| # 1.1
12661266
(?:\\b[0-9]+(\\.)\\B)| # 1.
12671267
(?:\\B(\\.)[0-9]+\\b)| # .1
1268-
(?:\\b[0-9]+\\b(?!\\.)) # 1
1268+
(?:\\b[0-9]+n?\\b(?!\\.)) # 1n
12691269
)(?!\\$)
12701270
'''
12711271
'captures':

spec/javascript-spec.coffee

+21
Original file line numberDiff line numberDiff line change
@@ -316,27 +316,48 @@ describe "JavaScript grammar", ->
316316
{tokens} = grammar.tokenizeLine('0X1D306')
317317
expect(tokens[0]).toEqual value: '0X1D306', scopes: ['source.js', 'constant.numeric.hex.js']
318318

319+
{tokens} = grammar.tokenizeLine('0x1D306n')
320+
expect(tokens[0]).toEqual value: '0x1D306n', scopes: ['source.js', 'constant.numeric.hex.js']
321+
322+
{tokens} = grammar.tokenizeLine('0X1D306n')
323+
expect(tokens[0]).toEqual value: '0X1D306n', scopes: ['source.js', 'constant.numeric.hex.js']
324+
319325
it "tokenizes binary literals", ->
320326
{tokens} = grammar.tokenizeLine('0b011101110111010001100110')
321327
expect(tokens[0]).toEqual value: '0b011101110111010001100110', scopes: ['source.js', 'constant.numeric.binary.js']
322328

323329
{tokens} = grammar.tokenizeLine('0B011101110111010001100110')
324330
expect(tokens[0]).toEqual value: '0B011101110111010001100110', scopes: ['source.js', 'constant.numeric.binary.js']
325331

332+
{tokens} = grammar.tokenizeLine('0b011101110111010001100110n')
333+
expect(tokens[0]).toEqual value: '0b011101110111010001100110n', scopes: ['source.js', 'constant.numeric.binary.js']
334+
335+
{tokens} = grammar.tokenizeLine('0B011101110111010001100110n')
336+
expect(tokens[0]).toEqual value: '0B011101110111010001100110n', scopes: ['source.js', 'constant.numeric.binary.js']
337+
326338
it "tokenizes octal literals", ->
327339
{tokens} = grammar.tokenizeLine('0o1411')
328340
expect(tokens[0]).toEqual value: '0o1411', scopes: ['source.js', 'constant.numeric.octal.js']
329341

330342
{tokens} = grammar.tokenizeLine('0O1411')
331343
expect(tokens[0]).toEqual value: '0O1411', scopes: ['source.js', 'constant.numeric.octal.js']
332344

345+
{tokens} = grammar.tokenizeLine('0o1411n')
346+
expect(tokens[0]).toEqual value: '0o1411n', scopes: ['source.js', 'constant.numeric.octal.js']
347+
348+
{tokens} = grammar.tokenizeLine('0O1411n')
349+
expect(tokens[0]).toEqual value: '0O1411n', scopes: ['source.js', 'constant.numeric.octal.js']
350+
333351
{tokens} = grammar.tokenizeLine('0010')
334352
expect(tokens[0]).toEqual value: '0010', scopes: ['source.js', 'constant.numeric.octal.js']
335353

336354
it "tokenizes decimals", ->
337355
{tokens} = grammar.tokenizeLine('1234')
338356
expect(tokens[0]).toEqual value: '1234', scopes: ['source.js', 'constant.numeric.decimal.js']
339357

358+
{tokens} = grammar.tokenizeLine('123456789n')
359+
expect(tokens[0]).toEqual value: '123456789n', scopes: ['source.js', 'constant.numeric.decimal.js']
360+
340361
{tokens} = grammar.tokenizeLine('5e-10')
341362
expect(tokens[0]).toEqual value: '5e-10', scopes: ['source.js', 'constant.numeric.decimal.js']
342363

0 commit comments

Comments
 (0)