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

Commit 246d2a3

Browse files
committed
Merge branch 'master' into wl-decorators
Conflicts: spec/javascript-spec.coffee
2 parents 2a00768 + 3c8e493 commit 246d2a3

File tree

1 file changed

+61
-75
lines changed

1 file changed

+61
-75
lines changed

spec/javascript-spec.coffee

+61-75
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ describe "Javascript grammar", ->
3636
{tokens} = grammar.tokenizeLine('with')
3737
expect(tokens[0]).toEqual value: 'with', scopes: ['source.js', 'keyword.control.js']
3838

39-
4039
describe "built-in globals", ->
4140
it "tokenizes them as support classes", ->
4241
{tokens} = grammar.tokenizeLine('window')
@@ -141,7 +140,6 @@ describe "Javascript grammar", ->
141140
1
142141
/ 2
143142
"""
144-
145143
expect(lines[0][0]).toEqual value: '1', scopes: ['source.js', 'constant.numeric.js']
146144
expect(lines[1][0]).toEqual value: '/ ', scopes: ['source.js']
147145
expect(lines[1][1]).toEqual value: '2', scopes: ['source.js', 'constant.numeric.js']
@@ -347,12 +345,12 @@ describe "Javascript grammar", ->
347345
expect(tokens[6]).toEqual value: ')', scopes: ['source.js', 'punctuation.definition.parameters.end.js']
348346

349347
describe "ES6 import", ->
350-
it "Tokenizes import ... as", ->
348+
it "tokenizes import ... as", ->
351349
{tokens} = grammar.tokenizeLine('import \'react\' as React')
352350
expect(tokens[0]).toEqual value: 'import', scopes: ['source.js', 'meta.import.js', 'keyword.control.js']
353351
expect(tokens[6]).toEqual value: 'as', scopes: ['source.js', 'meta.import.js', 'keyword.control.js']
354352

355-
it "Tokenizes import ... from", ->
353+
it "tokenizes import ... from", ->
356354
{tokens} = grammar.tokenizeLine('import React from \'react\'')
357355
expect(tokens[0]).toEqual value: 'import', scopes: ['source.js', 'meta.import.js', 'keyword.control.js']
358356
expect(tokens[4]).toEqual value: 'from', scopes: ['source.js', 'meta.import.js', 'keyword.control.js']
@@ -361,18 +359,17 @@ describe "Javascript grammar", ->
361359
expect(tokens[6]).toEqual value: 'from', scopes: ['source.js', 'meta.import.js', 'keyword.control.js']
362360

363361
describe "ES6 yield", ->
364-
it "Tokenizes yield", ->
362+
it "tokenizes yield", ->
365363
{tokens} = grammar.tokenizeLine('yield next')
366364
expect(tokens[0]).toEqual value: 'yield', scopes: ['source.js', 'meta.control.yield.js', 'keyword.control.js']
367365

368-
it "Tokenizes yield*", ->
366+
it "tokenizes yield*", ->
369367
{tokens} = grammar.tokenizeLine('yield * next')
370368
expect(tokens[0]).toEqual value: 'yield', scopes: ['source.js', 'meta.control.yield.js', 'keyword.control.js']
371369
expect(tokens[2]).toEqual value: '*', scopes: ['source.js', 'meta.control.yield.js', 'storage.modifier.js']
372370

373371
it "doesn't confuse strings and functions", ->
374372
{tokens} = grammar.tokenizeLine("'a'.b(':c(d)')")
375-
376373
expect(tokens[0]).toEqual value: "'", scopes: ['source.js', 'string.quoted.single.js', 'punctuation.definition.string.begin.js']
377374
expect(tokens[1]).toEqual value: "a", scopes: ['source.js', 'string.quoted.single.js']
378375
expect(tokens[2]).toEqual value: "'", scopes: ['source.js', 'string.quoted.single.js', 'punctuation.definition.string.end.js']
@@ -398,27 +395,9 @@ describe "Javascript grammar", ->
398395
{tokens} = grammar.tokenizeLine('default: ')
399396
expect(tokens[0]).toEqual value: 'default', scopes: ['source.js', 'keyword.control.js']
400397

401-
it "tokenizes arrow functions with params", ->
402-
{tokens} = grammar.tokenizeLine('(param1,param2)=>{}')
403-
expect(tokens[0]).toEqual value: '(', scopes: ['source.js', 'meta.function.arrow.js', 'punctuation.definition.parameters.begin.js']
404-
expect(tokens[1]).toEqual value: 'param1', scopes: ['source.js', 'meta.function.arrow.js', 'variable.parameter.function.js']
405-
expect(tokens[3]).toEqual value: 'param2', scopes: ['source.js', 'meta.function.arrow.js', 'variable.parameter.function.js']
406-
expect(tokens[4]).toEqual value: ')', scopes: ['source.js', 'meta.function.arrow.js', 'punctuation.definition.parameters.end.js']
407-
expect(tokens[5]).toEqual value: '=>', scopes: ['source.js', 'meta.function.arrow.js', 'storage.type.arrow.js']
408-
409-
it "tokenizes comments in function params", ->
410-
{tokens} = grammar.tokenizeLine('foo: function (/**Bar*/bar){')
411-
412-
expect(tokens[5]).toEqual value: '(', scopes: ['source.js', 'meta.function.json.js', 'punctuation.definition.parameters.begin.js']
413-
expect(tokens[6]).toEqual value: '/**', scopes: ['source.js', 'meta.function.json.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
414-
expect(tokens[7]).toEqual value: 'Bar', scopes: ['source.js', 'meta.function.json.js', 'comment.block.documentation.js']
415-
expect(tokens[8]).toEqual value: '*/', scopes: ['source.js', 'meta.function.json.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
416-
expect(tokens[9]).toEqual value: 'bar', scopes: ['source.js', 'meta.function.json.js', 'variable.parameter.function.js']
417-
418398
describe "non-anonymous functions", ->
419399
it "tokenizes methods", ->
420400
{tokens} = grammar.tokenizeLine('Foo.method = function nonAnonymous(')
421-
422401
expect(tokens[0]).toEqual value: 'Foo', scopes: ['source.js', 'meta.function.js', 'support.class.js']
423402
expect(tokens[2]).toEqual value: 'method', scopes: ['source.js', 'meta.function.js', 'entity.name.function.js']
424403
expect(tokens[4]).toEqual value: '=', scopes: ['source.js', 'meta.function.js', 'keyword.operator.js']
@@ -462,7 +441,6 @@ describe "Javascript grammar", ->
462441

463442
it "tokenizes functions", ->
464443
{tokens} = grammar.tokenizeLine('var func = function nonAnonymous(')
465-
466444
expect(tokens[0]).toEqual value: 'var', scopes: ['source.js', 'storage.modifier.js']
467445
expect(tokens[2]).toEqual value: 'func', scopes: ['source.js', 'meta.function.js', 'entity.name.function.js']
468446
expect(tokens[4]).toEqual value: '=', scopes: ['source.js', 'meta.function.js', 'keyword.operator.js']
@@ -472,7 +450,6 @@ describe "Javascript grammar", ->
472450

473451
it "tokenizes object functions", ->
474452
{tokens} = grammar.tokenizeLine('foo: function nonAnonymous(')
475-
476453
expect(tokens[0]).toEqual value: 'foo', scopes: ['source.js', 'meta.function.json.js', 'entity.name.function.js']
477454
expect(tokens[1]).toEqual value: ':', scopes: ['source.js', 'meta.function.json.js', 'keyword.operator.js']
478455
expect(tokens[3]).toEqual value: 'function', scopes: ['source.js', 'meta.function.json.js', 'storage.type.function.js']
@@ -481,7 +458,6 @@ describe "Javascript grammar", ->
481458

482459
it "tokenizes quoted object functions", ->
483460
{tokens} = grammar.tokenizeLine('"foo": function nonAnonymous(')
484-
485461
expect(tokens[1]).toEqual value: 'foo', scopes: ['source.js', 'meta.function.json.js', 'string.quoted.double.js', 'entity.name.function.js']
486462
expect(tokens[3]).toEqual value: ':', scopes: ['source.js', 'meta.function.json.js', 'keyword.operator.js']
487463
expect(tokens[5]).toEqual value: 'function', scopes: ['source.js', 'meta.function.json.js', 'storage.type.function.js']
@@ -494,6 +470,14 @@ describe "Javascript grammar", ->
494470
expect(tokens[2]).toEqual value: 'function', scopes: ['source.js', 'meta.function.js', 'storage.type.function.js']
495471
expect(tokens[4]).toEqual value: 'f', scopes: ['source.js', 'meta.function.js', 'entity.name.function.js']
496472

473+
it "tokenizes arrow functions with params", ->
474+
{tokens} = grammar.tokenizeLine('(param1,param2)=>{}')
475+
expect(tokens[0]).toEqual value: '(', scopes: ['source.js', 'meta.function.arrow.js', 'punctuation.definition.parameters.begin.js']
476+
expect(tokens[1]).toEqual value: 'param1', scopes: ['source.js', 'meta.function.arrow.js', 'variable.parameter.function.js']
477+
expect(tokens[3]).toEqual value: 'param2', scopes: ['source.js', 'meta.function.arrow.js', 'variable.parameter.function.js']
478+
expect(tokens[4]).toEqual value: ')', scopes: ['source.js', 'meta.function.arrow.js', 'punctuation.definition.parameters.end.js']
479+
expect(tokens[5]).toEqual value: '=>', scopes: ['source.js', 'meta.function.arrow.js', 'storage.type.arrow.js']
480+
497481
describe "decorators and annotations", ->
498482
it "tokenizes decorators", ->
499483
{tokens} = grammar.tokenizeLine('@thisIsADecorator(true)')
@@ -506,53 +490,55 @@ describe "Javascript grammar", ->
506490
{tokens} = grammar.tokenizeLine('@thisIsAnAnnotation')
507491
expect(tokens[0]).toEqual value: '@thisIsAnAnnotation', scopes: ['source.js', 'meta.function.annotation.js', 'entity.name.function.annotation.js']
508492

509-
it "tokenizes /* */ comments", ->
510-
{tokens} = grammar.tokenizeLine('/**/')
511-
512-
expect(tokens[0]).toEqual value: '/*', scopes: ['source.js', 'comment.block.js', 'punctuation.definition.comment.js']
513-
expect(tokens[1]).toEqual value: '*/', scopes: ['source.js', 'comment.block.js', 'punctuation.definition.comment.js']
514-
515-
{tokens} = grammar.tokenizeLine('/* foo */')
516-
517-
expect(tokens[0]).toEqual value: '/*', scopes: ['source.js', 'comment.block.js', 'punctuation.definition.comment.js']
518-
expect(tokens[1]).toEqual value: ' foo ', scopes: ['source.js', 'comment.block.js']
519-
expect(tokens[2]).toEqual value: '*/', scopes: ['source.js', 'comment.block.js', 'punctuation.definition.comment.js']
520-
521-
it "tokenizes /** */ comments", ->
522-
{tokens} = grammar.tokenizeLine('/***/')
523-
524-
expect(tokens[0]).toEqual value: '/**', scopes: ['source.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
525-
expect(tokens[1]).toEqual value: '*/', scopes: ['source.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
526-
527-
{tokens} = grammar.tokenizeLine('/** foo */')
528-
529-
expect(tokens[0]).toEqual value: '/**', scopes: ['source.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
530-
expect(tokens[1]).toEqual value: ' foo ', scopes: ['source.js', 'comment.block.documentation.js']
531-
expect(tokens[2]).toEqual value: '*/', scopes: ['source.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
532-
533-
{tokens} = grammar.tokenizeLine('/** @mixins */')
534-
535-
expect(tokens[0]).toEqual value: '/**', scopes: ['source.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
536-
expect(tokens[2]).toEqual value: '@mixins', scopes: ['source.js', 'comment.block.documentation.js', 'storage.type.class.jsdoc']
537-
expect(tokens[3]).toEqual value: ' ', scopes: ['source.js', 'comment.block.documentation.js']
538-
expect(tokens[4]).toEqual value: '*/', scopes: ['source.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
539-
540-
it "tokenizes comments inside function parameters correctly", ->
541-
{tokens} = grammar.tokenizeLine('function test(arg1 /*, arg2 */) {}')
542-
543-
expect(tokens[0]).toEqual value: 'function', scopes: ['source.js', 'meta.function.js', 'storage.type.function.js']
544-
expect(tokens[1]).toEqual value: ' ', scopes: ['source.js', 'meta.function.js']
545-
expect(tokens[2]).toEqual value: 'test', scopes: ['source.js', 'meta.function.js', 'entity.name.function.js']
546-
expect(tokens[3]).toEqual value: '(', scopes: ['source.js', 'meta.function.js', 'punctuation.definition.parameters.begin.js']
547-
expect(tokens[4]).toEqual value: 'arg1', scopes: ['source.js', 'meta.function.js', 'variable.parameter.function.js']
548-
expect(tokens[5]).toEqual value: ' ', scopes: ['source.js', 'meta.function.js']
549-
expect(tokens[6]).toEqual value: '/*', scopes: ['source.js', 'meta.function.js', 'comment.block.js', 'punctuation.definition.comment.js']
550-
expect(tokens[7]).toEqual value: ', arg2 ', scopes: ['source.js', 'meta.function.js', 'comment.block.js']
551-
expect(tokens[8]).toEqual value: '*/', scopes: ['source.js', 'meta.function.js', 'comment.block.js', 'punctuation.definition.comment.js']
552-
expect(tokens[9]).toEqual value: ')', scopes: ['source.js', 'meta.function.js', 'punctuation.definition.parameters.end.js']
553-
expect(tokens[10]).toEqual value: ' ', scopes: ['source.js']
554-
expect(tokens[11]).toEqual value: '{', scopes: ['source.js', 'punctuation.section.scope.begin.js']
555-
expect(tokens[12]).toEqual value: '}', scopes: ['source.js', 'punctuation.section.scope.end.js']
493+
describe "comments", ->
494+
it "tokenizes /* */ comments", ->
495+
{tokens} = grammar.tokenizeLine('/**/')
496+
expect(tokens[0]).toEqual value: '/*', scopes: ['source.js', 'comment.block.js', 'punctuation.definition.comment.js']
497+
expect(tokens[1]).toEqual value: '*/', scopes: ['source.js', 'comment.block.js', 'punctuation.definition.comment.js']
498+
499+
{tokens} = grammar.tokenizeLine('/* foo */')
500+
expect(tokens[0]).toEqual value: '/*', scopes: ['source.js', 'comment.block.js', 'punctuation.definition.comment.js']
501+
expect(tokens[1]).toEqual value: ' foo ', scopes: ['source.js', 'comment.block.js']
502+
expect(tokens[2]).toEqual value: '*/', scopes: ['source.js', 'comment.block.js', 'punctuation.definition.comment.js']
503+
504+
it "tokenizes /** */ comments", ->
505+
{tokens} = grammar.tokenizeLine('/***/')
506+
expect(tokens[0]).toEqual value: '/**', scopes: ['source.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
507+
expect(tokens[1]).toEqual value: '*/', scopes: ['source.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
508+
509+
{tokens} = grammar.tokenizeLine('/** foo */')
510+
expect(tokens[0]).toEqual value: '/**', scopes: ['source.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
511+
expect(tokens[1]).toEqual value: ' foo ', scopes: ['source.js', 'comment.block.documentation.js']
512+
expect(tokens[2]).toEqual value: '*/', scopes: ['source.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
513+
514+
{tokens} = grammar.tokenizeLine('/** @mixins */')
515+
expect(tokens[0]).toEqual value: '/**', scopes: ['source.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
516+
expect(tokens[2]).toEqual value: '@mixins', scopes: ['source.js', 'comment.block.documentation.js', 'storage.type.class.jsdoc']
517+
expect(tokens[3]).toEqual value: ' ', scopes: ['source.js', 'comment.block.documentation.js']
518+
expect(tokens[4]).toEqual value: '*/', scopes: ['source.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
519+
520+
it "tokenizes comments inside function parameters correctly", ->
521+
{tokens} = grammar.tokenizeLine('function test(arg1 /*, arg2 */) {}')
522+
expect(tokens[0]).toEqual value: 'function', scopes: ['source.js', 'meta.function.js', 'storage.type.function.js']
523+
expect(tokens[1]).toEqual value: ' ', scopes: ['source.js', 'meta.function.js']
524+
expect(tokens[2]).toEqual value: 'test', scopes: ['source.js', 'meta.function.js', 'entity.name.function.js']
525+
expect(tokens[3]).toEqual value: '(', scopes: ['source.js', 'meta.function.js', 'punctuation.definition.parameters.begin.js']
526+
expect(tokens[4]).toEqual value: 'arg1', scopes: ['source.js', 'meta.function.js', 'variable.parameter.function.js']
527+
expect(tokens[5]).toEqual value: ' ', scopes: ['source.js', 'meta.function.js']
528+
expect(tokens[6]).toEqual value: '/*', scopes: ['source.js', 'meta.function.js', 'comment.block.js', 'punctuation.definition.comment.js']
529+
expect(tokens[7]).toEqual value: ', arg2 ', scopes: ['source.js', 'meta.function.js', 'comment.block.js']
530+
expect(tokens[8]).toEqual value: '*/', scopes: ['source.js', 'meta.function.js', 'comment.block.js', 'punctuation.definition.comment.js']
531+
expect(tokens[9]).toEqual value: ')', scopes: ['source.js', 'meta.function.js', 'punctuation.definition.parameters.end.js']
532+
expect(tokens[10]).toEqual value: ' ', scopes: ['source.js']
533+
expect(tokens[11]).toEqual value: '{', scopes: ['source.js', 'punctuation.section.scope.begin.js']
534+
expect(tokens[12]).toEqual value: '}', scopes: ['source.js', 'punctuation.section.scope.end.js']
535+
536+
{tokens} = grammar.tokenizeLine('foo: function (/**Bar*/bar){')
537+
expect(tokens[5]).toEqual value: '(', scopes: ['source.js', 'meta.function.json.js', 'punctuation.definition.parameters.begin.js']
538+
expect(tokens[6]).toEqual value: '/**', scopes: ['source.js', 'meta.function.json.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
539+
expect(tokens[7]).toEqual value: 'Bar', scopes: ['source.js', 'meta.function.json.js', 'comment.block.documentation.js']
540+
expect(tokens[8]).toEqual value: '*/', scopes: ['source.js', 'meta.function.json.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
541+
expect(tokens[9]).toEqual value: 'bar', scopes: ['source.js', 'meta.function.json.js', 'variable.parameter.function.js']
556542

557543
describe "indentation", ->
558544
editor = null

0 commit comments

Comments
 (0)