diff --git a/.no-sublime-package b/.no-sublime-package deleted file mode 100644 index e69de29..0000000 diff --git a/JavaScript (Babel).YAML-tmLanguage b/JavaScript (Babel).YAML-tmLanguage deleted file mode 100644 index 0b2a492..0000000 --- a/JavaScript (Babel).YAML-tmLanguage +++ /dev/null @@ -1,1467 +0,0 @@ -# [PackageDev] target_format: plist, ext: tmLanguage -name: JavaScript (Babel) -scopeName: source.js -fileTypes: [js, jsx, babel, es6] -firstLineMatch: ^#!\s*/.*\b(node|js)$\n? - -patterns: -- include: '#core' - -repository: - core: - patterns: - - include: '#literal-function-labels' - - include: '#literal-arrow-function-labels' - - include: '#literal-labels' - - - include: '#literal-for' - - include: '#literal-switch' - - - include: '#styled-components' # add support for styled-components - - include: '#graphql' - - - include: '#expression' - - include: '#literal-punctuation' - - expression: - patterns: - - include: '#merge-conflits' - - include: '#literal-regexp' # before operators and keywords to avoid ambiguities - - include: '#literal-jsx' - - include: '#es7-decorators' - - include: '#support-class' - - include: '#support-other' - - - include: '#literal-function' - - include: '#literal-arrow-function' - - include: '#literal-prototype' # after literal-function, which includes some prototype strings - - - include: '#literal-keywords' - - - include: '#literal-method' - - include: '#literal-module' - - include: '#literal-class' - - include: '#flowtype-declaration' - - - include: '#literal-number' # after literal-method since short methods can be numbers - - include: '#literal-template-string' - - include: '#literal-string' - - include: '#literal-language-constant' - - include: '#literal-language-variable' - - - include: '#literal-constructor' - - include: '#literal-method-call' - - include: '#literal-function-call' - - - include: '#comments' - - include: '#brackets' - - - include: '#literal-operators' - - include: '#literal-variable' - - round-brackets: - patterns: - - name: meta.group.braces.round.js - begin: \( - beginCaptures: - '0': {name: meta.brace.round.begin.js} - end: \) - endCaptures: - '0': {name: meta.brace.round.end.js} - patterns: - - include: '#expression' - - square-brackets: - patterns: - - name: meta.group.braces.square.js - begin: \[ - beginCaptures: - '0': {name: meta.brace.square.begin.js} - end: \] - endCaptures: - '0': {name: meta.brace.square.end.js} - patterns: - - include: '#expression' - - curly-brackets: - patterns: - - name: meta.group.braces.curly.js - begin: '{' - beginCaptures: - '0': {name: meta.brace.curly.begin.js} - end: '}' - endCaptures: - '0': {name: meta.brace.curly.end.js} - patterns: - - include: $self - - brackets: - patterns: - - include: '#round-brackets' - - include: '#square-brackets' - - include: '#curly-brackets' - - comments: - patterns: - - name: comment.block.documentation.js - begin: /\*\*(?!/) - captures: - '0': {name: punctuation.definition.comment.js} - end: \*/ - - - name: comment.block.js - begin: /\* - beginCaptures: - '0': {name: punctuation.definition.comment.begin.js} - end: \*/ - endCaptures: - '0': {name: punctuation.definition.comment.end.js} - - - name: comment.block.html.js - match: (?>) - captures: - '0': {name: punctuation.definition.comment.js} - - - name: comment.line.double-slash.js - match: (//).*$\n? - captures: - '1': {name: punctuation.definition.comment.js} - - - name: comment.line.shebang.js - match: ^(#!).*$\n? - captures: - '1': {name: punctuation.definition.comment.js} - - function-declaration-parameters: - patterns: - - begin: \( - beginCaptures: - '0': {name: punctuation.definition.parameters.begin.js} - end: \) - endCaptures: - '0': {name: punctuation.definition.parameters.end.js} - patterns: - - include: '#comments' - - include: '#flowtype-annotation' - - name: keyword.operator.spread.js - match: (?import|export|default|from|as)\b - - literal-class: - patterns: - # e.g. class MyClass { } - - name: meta.class.js - begin: (?; - # e.g. static (o: ?void): {[key: any]: any}; - # e.g. return(value: R): { done: true, value: R }; - # e.g. (o: T): T; - - name: meta.short-method.flowtype.js - begin: (@@[_$a-zA-Z][$\w]*|static|return)(?=\s*[<(])|(?=\s*<) - beginCaptures: - '1': {name: keyword.operator.flowtype.js} - end: (?=\s*[;{]) - patterns: - - include: '#flowtype-polymorph' - - include: '#function-declaration-parameters' - - include: '#flowtype-annotation' - - include: '#comments' - - include: '#curly-brackets' - - # In objects and flow annotations it can't be assumed that a start quote - # or start square-bracket is for a method - it may be a computed property. - # For multi-line quoted short methods and computed property methods, only - # the polymorphism constraints and parameters are matched. - - name: meta.class-method.computed.js - begin: (?<=[]"'])\s*(?=[<(]) - end: (?=\s*[;{]) - patterns: - - include: '#flowtype-polymorph' - - include: '#function-declaration-parameters' - - include: '#flowtype-annotation' - - include: '#comments' - - include: '#curly-brackets' - - - name: meta.class-accessor.js - begin: >- - (?x) - ((?>get|set)\s+) - (?> - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - (([_$a-zA-Z][$\w]*|\d+)) - )(?=\s*[<(]) - beginCaptures: - '1': {name: storage.type.js} - '2': {name: string.quoted.js} - '3': {name: punctuation.definition.string.begin.js} - '4': {name: entity.name.function.js} - '5': {name: punctuation.definition.string.end.js} - '6': {name: string.quoted.js} - '7': {name: punctuation.definition.string.begin.js} - '8': {name: entity.name.function.js} - '9': {name: punctuation.definition.string.end.js} - '10': {name: string.unquoted.js} - '11': {name: entity.name.function.js} - end: (?=\s*[;{]) - patterns: - - include: '#flowtype-polymorph' - - include: '#function-declaration-parameters' - - include: '#flowtype-annotation' - - include: '#comments' - - include: '#curly-brackets' - - - name: meta.class-method.js - begin: >- - (?x) - (?> - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - (([_$a-zA-Z][$\w]*|\d+)) - )(?=\s*[<(]) - beginCaptures: - '1': {name: string.quoted.js} - '2': {name: punctuation.definition.string.begin.js} - '3': {name: entity.name.function.js} - '4': {name: punctuation.definition.string.end.js} - '5': {name: string.quoted.js} - '6': {name: punctuation.definition.string.begin.js} - '7': {name: entity.name.function.js} - '8': {name: punctuation.definition.string.end.js} - '9': {name: string.unquoted.js} - '10': {name: entity.name.function.js} - end: (?=\s*[;{]) - patterns: - - include: '#flowtype-polymorph' - - include: '#function-declaration-parameters' - - include: '#flowtype-annotation' - - include: '#comments' - - include: '#curly-brackets' - - class-method-storage: - patterns: - - name: storage.modifier.js - match: (?static|declare)\b - - - name: storage.type.js - match: (?- - (?x) - (?:\b(static)\s+)? - (?:\b(async)\s+)? - (?:(\*)\s*)? - (?> - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - (([_$a-zA-Z][$\w]*|\d+)) - ) - (?=\s*(\((?>(?>[^()]+)|\g<-1>)*\))(?>\s|/\*.*\*/)*\{) - beginCaptures: - '1': {name: storage.type.js} - '2': {name: storage.type.js} - '3': {name: keyword.generator.asterisk.js} - '4': {name: string.quoted.js} - '5': {name: punctuation.definition.string.begin.js} - '6': {name: entity.name.function.js} - '7': {name: punctuation.definition.string.end.js} - '8': {name: string.quoted.js} - '9': {name: punctuation.definition.string.begin.js} - '10': {name: entity.name.function.js} - '11': {name: punctuation.definition.string.end.js} - '12': {name: string.unquoted.js} - '13': {name: entity.name.function.js} - end: (?<=\)) - patterns: - - include: '#function-declaration-parameters' - - # getter/setter - - name: meta.accessor.js - begin: >- - (?x) - \b(?:(static)\s+)? - (get|set)\s+ - ([_$a-zA-Z][$\w]*|\d+)\s* - (?=(\((?>(?>[^()]+)|\g<-1>)*\))(?>\s|/\*.*\*/)*\{) - beginCaptures: - '1': {name: storage.type.js} - '2': {name: storage.type.accessor.js} - '3': {name: entity.name.accessor.js} - end: (?<=\)) - patterns: - - include: '#function-declaration-parameters' - - literal-prototype: - patterns: - # e.g. Sound.prototype = { } when extending an object - - name: meta.prototype.declaration.js - match: ([_$a-zA-Z][$\w]*)(\.)(prototype)\s*(=)\s* - captures: - '1': {name: entity.name.class.js} - '2': {name: keyword.operator.accessor.js} - '3': {name: variable.language.prototype.js} - '4': {name: keyword.operator.assignment.js} - - # e.g. Sound.prototype - - name: meta.prototype.access.js - match: ([_$a-zA-Z][$\w]*)(\.)(prototype)\b - captures: - '1': {name: entity.name.class.js} - '2': {name: keyword.operator.accessor.js} - '3': {name: variable.language.prototype.js} - - literal-function: - patterns: - # e.g. function play(arg1, arg2) { } - # e.g. play = function(arg1, arg2) { } - - name: meta.function.js - begin: >- - (?x) - (?:([_$a-zA-Z][$\w]*)\s*(=)\s*)? - (?:(async)\s+)? - (function)(?>\s*(\*)|(?=[\s(<])) - \s*([_$a-zA-Z][$\w]*)? - beginCaptures: - '1': {name: entity.name.function.js} - '2': {name: keyword.operator.assignment.js} - '3': {name: storage.type.js} - '4': {name: storage.type.function.js} - '5': {name: keyword.generator.asterisk.js} - '6': {name: entity.name.function.js} - end: (?<=\)) - patterns: - - include: '#flowtype-polymorph' - - include: '#function-declaration-parameters' - - # e.g. Sound.prototype.play = function(arg1, arg2) { } - - name: meta.function.prototype.js - begin: >- - (?x) - (\b_?[A-Z][$\w]*)? - (\.)(prototype) - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(?:(async)\s+)? - \s*(function)(?>\s*(\*)|(?=[\s(<])) - \s*([_$a-zA-Z][$\w]*)?\s* - beginCaptures: - '1': {name: entity.name.class.js} - '2': {name: keyword.operator.accessor.js} - '3': {name: variable.language.prototype.js} - '4': {name: keyword.operator.accessor.js} - '5': {name: entity.name.function.js} - '6': {name: keyword.operator.assignment.js} - '7': {name: storage.type.js} - '8': {name: storage.type.function.js} - '9': {name: keyword.generator.asterisk.js} - '10': {name: entity.name.function.js} - end: (?<=\)) - patterns: - - include: '#flowtype-polymorph' - - include: '#function-declaration-parameters' - - # e.g. Sound.play = function(arg1, arg2) { } - - name: meta.function.static.js - begin: >- - (?x) - (\b_?[A-Z][$\w]*)? - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(?:(async)\s+)? - \s*(function)(?>\s*(\*)|(?=[\s(<])) - \s*([_$a-zA-Z][$\w]*)?\s* - beginCaptures: - '1': {name: entity.name.class.js} - '2': {name: keyword.operator.accessor.js} - '3': {name: entity.name.function.js} - '4': {name: keyword.operator.assignment.js} - '5': {name: storage.type.js} - '6': {name: storage.type.function.js} - '7': {name: keyword.generator.asterisk.js} - '8': {name: entity.name.function.js} - end: (?<=\)) - patterns: - - include: '#flowtype-polymorph' - - include: '#function-declaration-parameters' - - literal-function-labels: - patterns: - # e.g. play: function(arg1, arg2) { } - # e.g. "play": function(arg1, arg2) { } - - name: meta.function.json.js - begin: >- - (?x) - (?> - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - (([_$a-zA-Z][$\w]*|\d+)) - ) - \s*(:) - \s*(?:\b(async)\s+)? - \s*(function)(?>\s*(\*)|(?=[\s(<])) - \s*([_$a-zA-Z][$\w]*)? - beginCaptures: - '1': {name: string.quoted.js} - '2': {name: punctuation.definition.string.begin.js} - '3': {name: entity.name.function.js} - '4': {name: punctuation.definition.string.end.js} - '5': {name: string.quoted.js} - '6': {name: punctuation.definition.string.begin.js} - '7': {name: entity.name.function.js} - '8': {name: punctuation.definition.string.end.js} - '9': {name: string.unquoted.js} - '10': {name: entity.name.function.js} - '11': {name: punctuation.separator.key-value.js} - '12': {name: storage.type.js} - '13': {name: storage.type.function.js} - '14': {name: keyword.generator.asterisk.js} - '15': {name: entity.name.function.js} - end: (?<=\)) - patterns: - - include: '#flowtype-polymorph' - - include: '#function-declaration-parameters' - - literal-arrow-function: - patterns: - # e.g. (args) => { } - # e.g. play = (args) => { } - - name: meta.function.arrow.js - begin: >- - (?x) - (?:([_$a-zA-Z][$\w]*)\s*(=)\s*)? - (?:\b(async)\s+)? - (?=(\((?>(?>[^()]+)|\g<-1>)*\))\s*(=>)) - beginCaptures: - '1': {name: entity.name.function.js} - '2': {name: keyword.operator.assignment.js} - '3': {name: storage.type.js} - end: (?<=\))\s*(=>) - endCaptures: - '1': {name: storage.type.function.arrow.js} - patterns: - - include: '#function-declaration-parameters' - - # e.g. arg => { } - # e.g. play = arg => { } - - name: meta.function.arrow.js - match: >- - (?x) - (?:([_$a-zA-Z][$\w]*)\s*(=)\s*)? - (?:(async)\s+)? - \b([_$a-zA-Z][$\w]*)\s*(=>) - captures: - '1': {name: entity.name.function.js} - '2': {name: keyword.operator.assignment.js} - '3': {name: storage.type.js} - '4': {name: variable.parameter.function.js} - '5': {name: storage.type.function.arrow.js} - - # e.g. Sound.prototype.play = (args) => { } - - name: meta.prototype.function.arrow.js - begin: >- - (?x) - (\b_?[A-Z][$\w]*)? - (\.)(prototype) - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(async)? - \s*(?=(\((?>(?>[^()]+)|\g<-1>)*\))\s*(=>)) - beginCaptures: - '1': {name: entity.name.class.js} - '2': {name: keyword.operator.accessor.js} - '3': {name: variable.language.prototype.js} - '4': {name: keyword.operator.accessor.js} - '5': {name: entity.name.function.js} - '6': {name: keyword.operator.assignment.js} - '7': {name: storage.type.js} - end: (?<=\))\s*(=>) - endCaptures: - '1': {name: storage.type.function.arrow.js} - patterns: - - include: '#function-declaration-parameters' - - # e.g. Sound.prototype.play = arg => { } - - name: meta.prototype.function.arrow.js - match: >- - (?x) - (\b_?[A-Z][$\w]*)? - (\.)(prototype) - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(async)? - \s*\b([_$a-zA-Z][$\w]*)\s*(=>) - captures: - '1': {name: entity.name.class.js} - '2': {name: keyword.operator.accessor.js} - '3': {name: variable.language.prototype.js} - '4': {name: keyword.operator.accessor.js} - '5': {name: entity.name.function.js} - '6': {name: keyword.operator.assignment.js} - '7': {name: storage.type.js} - '8': {name: variable.parameter.function.js} - '9': {name: storage.type.function.arrow.js} - - # e.g. Sound.play = (args) => { } - - name: meta.function.static.arrow.js - begin: >- - (?x) - (\b_?[A-Z][$\w]*)? - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(async)? - \s*(?=(\((?>(?>[^()]+)|\g<-1>)*\))\s*(=>)) - beginCaptures: - '1': {name: entity.name.class.js} - '2': {name: keyword.operator.accessor.js} - '3': {name: entity.name.function.js} - '4': {name: keyword.operator.assignment.js} - '5': {name: storage.type.js} - end: (?<=\))\s*(=>) - endCaptures: - '1': {name: storage.type.function.arrow.js} - patterns: - - include: '#function-declaration-parameters' - - # e.g. Sound.play = arg => { } - - name: meta.function.static.arrow.js - match: >- - (?x) - (\b_?[A-Z][$\w]*)? - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(async)? - \s*\b([_$a-zA-Z][$\w]*)\s*(=>) - captures: - '1': {name: entity.name.class.js} - '2': {name: keyword.operator.accessor.js} - '3': {name: entity.name.function.js} - '4': {name: keyword.operator.assignment.js} - '5': {name: storage.type.js} - '6': {name: variable.parameter.function.js} - '7': {name: storage.type.function.arrow.js} - - literal-arrow-function-labels: - patterns: - # e.g. play: (args) => { } - # e.g. "play": (args) => { } - - name: meta.function.json.arrow.js - begin: >- - (?x) - (?> - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - (([_$a-zA-Z][$\w]*|\d+)) - ) - \s*(:) - \s*(?:\b(async)\s+)? - \s*(?=(\((?>(?>[^()]+)|\g<-1>)*\))\s*(=>)) - beginCaptures: - '1': {name: string.quoted.js} - '2': {name: punctuation.definition.string.begin.js} - '3': {name: entity.name.function.js} - '4': {name: punctuation.definition.string.end.js} - '5': {name: string.quoted.js} - '6': {name: punctuation.definition.string.begin.js} - '7': {name: entity.name.function.js} - '8': {name: punctuation.definition.string.end.js} - '9': {name: string.unquoted.js} - '10': {name: entity.name.function.js} - '11': {name: punctuation.separator.key-value.js} - '12': {name: storage.type.js} - end: (?<=\))\s*(=>) - endCaptures: - '1': {name: storage.type.function.arrow.js} - patterns: - - include: '#function-declaration-parameters' - - # e.g. play: arg => { } - # e.g. "play": arg => { } - - name: meta.function.json.arrow.js - match: >- - (?x) - (?> - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - (([_$a-zA-Z][$\w]*|\d+)) - ) - \s*(:) - \s*(?:\b(async)\s+)? - \s*\b([_$a-zA-Z][$\w]*)\s*(=>) - captures: - '1': {name: string.quoted.js} - '2': {name: punctuation.definition.string.begin.js} - '3': {name: entity.name.function.js} - '4': {name: punctuation.definition.string.end.js} - '5': {name: string.quoted.js} - '6': {name: punctuation.definition.string.begin.js} - '7': {name: entity.name.function.js} - '8': {name: punctuation.definition.string.end.js} - '9': {name: string.unquoted.js} - '10': {name: entity.name.function.js} - '11': {name: punctuation.separator.key-value.js} - '12': {name: storage.type.js} - '13': {name: variable.parameter.function.js} - '14': {name: storage.type.function.arrow.js} - - literal-function-call: - patterns: - - name: meta.function-call.without-arguments.js - match: ([_$a-zA-Z][$\w]*)\s*(\(\s*\)) - captures: - '1': {name: variable.function.js} - '2': {name: meta.group.braces.round.function.arguments.js} - - - name: meta.function-call.with-arguments.js - match: ([_$a-zA-Z][$\w]*)\s*(?=\() - captures: - '1': {name: variable.function.js} - - - name: meta.function-call.tagged-template.js - match: ([_$a-zA-Z][$\w]*)\s*(?=`) - captures: - '1': {name: variable.function.js} - - literal-method-call: - patterns: - - name: meta.function-call.static.without-arguments.js - match: >- - (?x) - (?:(?<=\.)|\b) - ([A-Z][$\w]*)\s*(\.) - ([_$a-zA-Z][$\w]*)\s* - (\(\s*\)) - captures: - '1': {name: variable.other.class.js} - '2': {name: keyword.operator.accessor.js} - '3': {name: variable.function.js} - '4': {name: meta.group.braces.round.function.arguments.js} - - - name: meta.function-call.static.with-arguments.js - match: >- - (?x) - (?:(?<=\.)|\b) - ([A-Z][$\w]*)\s*(\.) - ([_$a-zA-Z][$\w]*)\s* - (?=\() - captures: - '1': {name: variable.other.class.js} - '2': {name: keyword.operator.accessor.js} - '3': {name: variable.function.js} - - - name: meta.function-call.method.without-arguments.js - match: >- - (?x) - (?<=\.) - ([_$a-zA-Z][$\w]*)\s* - (\(\s*\)) - captures: - '1': {name: variable.function.js} - '2': {name: meta.group.braces.round.function.arguments.js} - - - name: meta.function-call.method.with-arguments.js - match: >- - (?x) - (?<=\.) - ([_$a-zA-Z][$\w]*)\s* - (?=\() - captures: - '1': {name: variable.function.js} - - literal-language-variable: - patterns: - - name: variable.language.arguments.js - match: (?const|let|var)\b - - literal-keywords: - patterns: - - include: '#literal-keyword-storage' - - - match: (?await|yield))\b(?:\s*(\*))? - captures: - '1': {name: keyword.control.flow.js} - '2': {name: keyword.generator.asterisk.js} - - - name: keyword.control.flow.js - match: (?if|else)\b - - - name: keyword.control.trycatch.js - match: (?catch|finally|throw|try)\b - - - name: keyword.control.loop.js - match: (?break|continue|do|goto|while|case|default)\b - - - name: keyword.other.reserved.js - match: (?enum|module|public|package|private|interface|protected)\b - - - name: keyword.other.js - match: (?delete|instanceof|in|new|of|typeof|void|with)\b - - - name: keyword.operator.logical.js - match: >- - (?x) - !(?!=)| # logical-not right-to-left right - && | # logical-and left-to-right both - \|\| # logical-or left-to-right both - - - name: keyword.operator.assignment.js - match: >- - (?x) - =(?!=) # assignment right-to-left both - - - name: keyword.operator.assignment.augmented.js - match: >- - (?x) - %= | # assignment right-to-left both - &= | # assignment right-to-left both - \*= | # assignment right-to-left both - \+= | # assignment right-to-left both - -= | # assignment right-to-left both - /= | # assignment right-to-left both - \^= | # assignment right-to-left both - \|= | # assignment right-to-left both - <<= | # assignment right-to-left both - >>= | # assignment right-to-left both - >>>= # assignment right-to-left both - - - name: keyword.operator.bitwise.js - match: >- - (?x) - ~ | # bitwise-not right-to-left right - << | # bitwise-shift left-to-right both - >>> | # bitwise-shift left-to-right both - >> | # bitwise-shift left-to-right both - & | # bitwise-and left-to-right both - \^ | # bitwise-xor left-to-right both - \| # bitwise-or left-to-right both - - - name: keyword.operator.relational.js - match: >- - (?x) - <= | # relational left-to-right both - >= | # relational left-to-right both - < | # relational left-to-right both - > # relational left-to-right both - - - name: keyword.operator.comparison.js - match: >- - (?x) - === | # equality left-to-right both - !== | # equality left-to-right both - == | # equality left-to-right both - != # equality left-to-right both - - - name: keyword.operator.arithmetic.js - match: >- - (?x) - -- | # decrement n/a right-or-left - \+\+ | # increment n/a right-or-left - / | # division left-to-right both - % | # modulus left-to-right both - \* | # multiplication left-to-right both - \+ | # addition left-to-right both - - # subtraction left-to-right both - - - name: keyword.operator.ternary.js - match: '[?:]' - - - name: keyword.operator.spread.js - match: (?- - (?x) - (? - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - )\s*:) - end: ':' - endCaptures: - '0': {name: punctuation.separator.key-value.js} - patterns: - - include: '#literal-string' - - - name: constant.other.object.key.js - match: (?- - (?xi) - (?:\B[-+])? - (?: - \b0b[0-1]*| # binary - \b0o[0-7]*| # octal - \b0x[0-9a-f]*| # hex - ( - \B\.[0-9]+| # e.g. .999 - \b[0-9]+(\.[0-9]*)? # e.g. 999.999, 999. or 999 - )(e[-+]?[0-9]+)? # e.g. e+123, E-123 - ) - - - name: constant.language.infinity.js - match: (?:\B[-+]|\b)(Infinity)\b - - literal-punctuation: - patterns: - - name: punctuation.terminator.statement.js - match: ; - - - name: meta.delimiter.comma.js - match: ',' - - literal-regexp: - patterns: - # ignore ++, -- since they're uncommon, distinguishing them is not possible in sublime text, see: - # http://stackoverflow.com/questions/5519596/when-parsing-javascript-what-determines-the-meaning-of-a-slash - - name: string.regexp.js - begin: >- - (?x) - (?<= - \.|\(|,|{|}|\[|;|<|>|<=|>=|==|!=|===|!==|\+|-|\*|%|\+\+|--|<<|>>|>>>|&|\||\^|!|~|&&|\|\||\?|:|=|\+=|-=|\*=|%=|<<=|>>=|>>>=|&=|\|=|\^=|/|/=| - \Wnew|\Wdelete|\Wvoid|\Wtypeof|\Winstanceof|\Win|\Wdo|\Wreturn|\Wcase|\Wthrow|\Wyield| - ^new|^delete|^void|^typeof|^instanceof|^in|^do|^return|^case|^throw|^yield|^ - )\s* - (/) - (?!/|\*|$) - beginCaptures: - '1': {name: punctuation.definition.string.begin.js} - end: (/)([gimy]*) - endCaptures: - '1': {name: punctuation.definition.string.end.js} - '2': {name: keyword.other.js} - patterns: - - include: source.regexp.js - - literal-string: - patterns: - - name: string.quoted.js - begin: (["']) - beginCaptures: - '0': {name: punctuation.definition.string.begin.js} - end: (\1)|(\n) - endCaptures: - '1': {name: punctuation.definition.string.end.js} - '2': {name: invalid.illegal.newline.js} - patterns: - - include: '#string-content' - - literal-template-string: - begin: '`' - beginCaptures: - '0': {name: string.interpolated.js keyword.other.template.begin.js} - end: '`' - captures: - '0': {name: string.interpolated.js keyword.other.template.end.js} - patterns: - - include: '#string-content' - - name: constant.character.escape.js - match: \\` - - begin: \${ - beginCaptures: - '0': {name: keyword.other.substitution.begin.js} - end: '}' - endCaptures: - '0': {name: keyword.other.substitution.end.js} - patterns: - - include: '#expression' - # Workaround so themes color the contents of template strings as "string", - # but not any interpolated expression within. - - name: string.interpolated.js - match: '.' - - string-content: - # https://mathiasbynens.be/notes/javascript-escapes - patterns: - - name: constant.character.escape.newline.js - match: \\\s*\n - - - name: constant.character.escape.js - match: \\([1-7][0-7]{0,2}|[0-7]{2,3}|[bfnrtv0'"\\]|x\h{2}|u\{\h+\}|u\h{4}) - - # https://github.com/styled-components/styled-components - styled-components: - patterns: - - name: meta.styled-components.js - begin: (?(?>[^()]+)|\g<-1>)*\))\s*`) - captures: - '1': {name: meta.function-call.with-arguments.js variable.function.js} - end: (?<=`) - patterns: - # Like #round-brackets, but with "meta.function-call.with-arguments.js" so - # it can stop before the template starts. - - name: meta.function-call.with-arguments.js meta.group.js - begin: \( - beginCaptures: - '0': {name: punctuation.definition.group.begin.js} - end: \) - endCaptures: - '0': {name: punctuation.definition.group.end.js} - patterns: - - include: '#expression' - - begin: '`' - beginCaptures: - '0': {name: punctuation.definition.string.template.begin.js} - end: '`' - contentName: source.css.embedded.js - endCaptures: - '0': {name: punctuation.definition.string.template.end.js} - patterns: - - include: source.js.css - - graphql: - patterns: - - name: meta.graphql.js - begin: '\s*+gql`' - end: '`' - patterns: - - include: source.graphql - - name: js - begin: '\${' - end: '}' - patterns: - - include: '#core' - - - name: meta.graphql.js - begin: '\s*+`#graphql' - end: '`' - patterns: - - include: source.graphql - - name: js - begin: '\${' - end: '}' - patterns: - - include: '#core' - - - literal-variable: - patterns: - # e.g. CONSTANT - - name: variable.other.constant.js - match: _*?[A-Z][_$\dA-Z]*\b - - # e.g. Class.property - - name: meta.property.class.js - match: \b([A-Z][$\w]*)\s*(\.)([_$a-zA-Z][$\w]*) - captures: - '1': {name: variable.other.class.js} - '2': {name: keyword.operator.accessor.js} - '3': {name: variable.other.property.static.js} - - # e.g. obj.property - - name: variable.other.object.js - match: (?Eval|Range|Reference|Syntax|Type|URI)?Error)\b - - - name: support.class.node.js - match: \b(?>Buffer)\b - - support-other: - patterns: - - name: support.function.builtin.js - match: (?document|window)\b - - - name: support.type.object.node.js - match: (?global|GLOBAL|root|__dirname|__filename)\b - - - match: (?|\Wreturn|^return|\Wdefault|^)(?=\s*<[_$a-zA-Z]) - end: (?<=/>|>) - patterns: - - include: '#jsx-tag-start' - - jsx-tag-start: - patterns: - - begin: (<)([_$a-zA-Z][-$:.\w]*[$\w]*) - beginCaptures: - '1': {name: meta.tag.jsx punctuation.definition.tag.begin.jsx} - '2': {name: meta.tag.jsx entity.name.tag.jsx} - end: ()|(/>) - endCaptures: - '1': {name: meta.tag.jsx punctuation.definition.tag.begin.jsx} - '2': {name: meta.tag.jsx entity.name.tag.jsx} - '3': {name: meta.tag.jsx punctuation.definition.tag.end.jsx} - '4': {name: meta.tag.jsx punctuation.definition.tag.end.jsx} - patterns: - - include: '#jsx-tag-end' - - include: '#jsx-attributes' - - - name: invalid.illegal.tag.incomplete.jsx - match: '<' - - jsx-tag-end: - begin: '>' - beginCaptures: - '0': {name: meta.tag.jsx punctuation.definition.tag.end.jsx} - end: (?=- - (?x) - (@)([_$a-zA-Z][$\w]*)\b - captures: - '1': {name: punctuation.definition.tag.js} - '2': {name: entity.name.tag.js} - - merge-conflits: - patterns: - - match: ^([<]{7})\s(.+)$ - captures: - '1': {name: invalid.illegal.conflict-marker.merge-into.js} - '2': {name: invalid.illegal.string.js} - - match: ^([=|]{7})$ - captures: - '1': {name: invalid.illegal.conflict-marker.separator.js} - - match: ^([>]{7})\s(.+)$ - captures: - '1': {name: invalid.illegal.conflict-marker.other-commit.js} - '2': {name: invalid.illegal.string.js} - - flowtype-polymorph: - # http://flowtype.org/blog/2015/03/12/Bounded-Polymorphism.html - name: meta.flowtype.polymorph.js - begin: '<' - beginCaptures: - '0': {name: punctuation.section.flowtype.begin.js} - end: '>' - endCaptures: - '0': {name: punctuation.section.flowtype.end.js} - patterns: - - include: '#flowtype-tokens' - - flowtype-annotation: - patterns: - - name: meta.flowtype.annotation.js - begin: (?:(\?)\s*)?(:) - beginCaptures: - '1': {name: keyword.operator.flowtype.optional.js} - '2': {name: keyword.operator.flowtype.annotation.js} - end: (?=\S) - applyEndPatternLast: 1 - patterns: - - include: '#flowtype-tokens' - - flowtype-brackets: - patterns: - - begin: '{' - beginCaptures: - '0': {name: punctuation.section.flowtype.begin.js} - end: '}' - endCaptures: - '0': {name: punctuation.section.flowtype.end.js} - patterns: - - include: '#flowtype-tokens' - - flowtype-identifier: - patterns: - - include: '#support-class' - - - name: constant.other.primitve.flowtype.js - match: \b(?:any|bool|boolean|mixed|number|string|void)\b - - - name: variable.other.flowtype.js - match: '[_$a-zA-Z][$\w]*' - - - name: keyword.operator.flowtype.optional.js - match: \? - - flowtype-tokens: - patterns: - - begin: (?<=[:?|&=])(?=\s*{) - end: (?<=}) - patterns: - - include: '#flowtype-brackets' - - - name: meta.flowtype.set.js - match: \s*([|&])\s* - captures: - '1': {name: keyword.operator.flowtype.other.js} - - - name: keyword.operator.flowtype.other.js - match: '[*:?&|.]|\.\.\.|\b(typeof)\b' - - - begin: '<' - beginCaptures: - '0': {name: punctuation.section.flowtype.begin.js} - end: '>' - endCaptures: - '0': {name: punctuation.section.flowtype.end.js} - patterns: - - include: '#flowtype-tokens' - - - begin: \[ - beginCaptures: - '0': {name: punctuation.section.flowtype.begin.js} - end: \] - endCaptures: - '0': {name: punctuation.section.flowtype.end.js} - patterns: - - include: '#flowtype-tokens' - - - begin: \( - beginCaptures: - '0': {name: punctuation.section.flowtype.begin.js} - end: \) - endCaptures: - '0': {name: punctuation.section.flowtype.end.js} - patterns: - - include: '#flowtype-tokens' - - - name: meta.flowtype.function.js - begin: '=>' - beginCaptures: - '0': {name: keyword.operator.flowtype.js} - end: (?<=}|[_$a-zA-Z]) - patterns: - - include: '#flowtype-brackets' - - include: '#flowtype-identifier' - - include: '#comments' - - - include: '#flowtype-identifier' - - include: '#literal-string' - - include: '#comments' diff --git a/JavaScript (Babel).sublime-syntax b/JavaScript (Babel).sublime-syntax new file mode 100644 index 0000000..f20ac3e --- /dev/null +++ b/JavaScript (Babel).sublime-syntax @@ -0,0 +1,2970 @@ +%YAML 1.2 +--- +first_line_match: ^#!\s*/.*\b(node|js)\b +contexts: + support-property-ecma-reflect: + - match: (?:apply|construct|defineProperty|deleteProperty|get|getOwnPropertyDescriptor|getPrototypeOf|has|isExtensible|ownKeys|preventExtensions|set|setPrototypeOf){{identifier_break}} + scope: support.function.builtin.js + pop: true + + for-condition-contents: + # This could be either type of for loop. + - match: (?:const|let|var){{identifier_break}} + scope: storage.type.js + set: + - - include: for-of-rest + - match: (?=\S) + set: + - for-oldstyle-rest + - variable-binding-list + - initializer + - variable-binding-pattern + + - match: (?=\S) + set: + - - include: for-of-rest + - match: (?=\S) + set: for-oldstyle-rest + - expression-end-no-in + - expression-begin + + prototype: + - include: comments + + postfix-operators: + - match: -- + scope: keyword.operator.arithmetic.js + - match: \+\+ + scope: keyword.operator.arithmetic.js + + class-body-contents: + - meta_scope: meta.block.js + + - match: \} + scope: punctuation.section.block.end.js + pop: true + + - match: \; + scope: punctuation.terminator.statement.js + + - include: decorator + + - match: constructor{{identifier_break}} + scope: entity.name.function.constructor.js + push: + - function-meta + - function-declaration-expect-body + - function-declaration-meta + - function-declaration-expect-parameters + + - match: static{{identifier_break}} + scope: storage.modifier.js + push: class-field + + - match: (?={{class_element_name}}) + push: class-field + + decorator-expression-begin: + - include: decorator-name + - include: expression-begin + + function-parameter-binding-name: + - match: '{{non_reserved_identifier}}' + scope: meta.binding.name.js variable.parameter.function.js + - match: '{{identifier}}' + scope: invalid.illegal.identifier.js meta.binding.name.js variable.parameter.function.js + + import-list: + - match: ',' + scope: punctuation.separator.comma.js + push: + - import-export-alias + - import-item + - include: else-pop + + jsx-tag-attributes: + - meta_content_scope: meta.tag.js + + - match: '>' + scope: punctuation.definition.tag.end.js + set: jsx-body + + - match: / + scope: punctuation.definition.tag.end.js + set: jsx-expect-tag-end + + - include: jsx-interpolation + + - match: '{{jsx_identifier}}' + scope: entity.other.attribute-name.js + + - match: '=' + scope: punctuation.separator.key-value.js + push: jsx-attribute-value + + for-await: + - match: await{{identifier_break}} + scope: keyword.control.flow.await.js + pop: true + - include: else-pop + + support-property-ecma-number: + - match: (?:EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY){{identifier_break}} + scope: support.constant.builtin.js + pop: true + - match: (?:isFinite|isInteger|isNaN|isSafeInteger|NaN|parseFloat|parseInt){{identifier_break}} + scope: support.function.builtin.js + pop: true + + class-meta: + - meta_include_prototype: false + - meta_scope: meta.class.js + - include: immediately-pop + + arrow-function-expect-arrow: + - match: => + scope: storage.type.function.arrow.js + pop: true + - include: else-pop + + constructor: + - match: new{{identifier_break}} + scope: keyword.operator.word.new.js + set: + - match: (?=\s*\.) + set: new-target + - match: (?=\s*\S) + set: + - constructor-meta + - constructor-body-expect-arguments + - constructor-body-expect-class-end + - constructor-body-expect-class-begin + + support-variable-dom: + - match: XMLHttpRequest{{identifier_break}} + scope: support.class.dom.js + pop: true + - match: (?:document|window|navigator){{identifier_break}} + scope: support.type.object.dom.js + pop: true + - match: (?:clearTimeout|setTimeout){{identifier_break}} + scope: support.function.dom.js + pop: true + + immediately-pop: + - match: '' + pop: true + + import-meta: + - meta_include_prototype: false + - meta_scope: meta.import.js + - include: immediately-pop + + flow-type-operators: + - match: \|(?!\}) + scope: keyword.operator.type.union.js + push: flow-type-begin + - match: \& + scope: keyword.operator.type.intersection.js + push: flow-type-begin + - match: => + scope: storage.type.function.arrow.js + push: flow-type-begin + - match: \? + scope: storage.modifier.maybe.js + push: flow-type-begin + - match: \. + scope: punctuation.separator.accessor.js + push: flow-type-begin + + - match: \[\] + scope: storage.modifier.array.js + - match: '%checks{{identifier_break}}' + scope: storage.modifier.checks.js + + initializer: + - match: '=' + scope: keyword.operator.assignment.js + set: expression-no-comma + - include: else-pop + + flow-type-declare: + - match: declare{{identifier_break}}(?=\s*(?:type|class|function|var|let|const|opaque|export|module){{identifier_break}}) + scope: storage.type.js + set: + - match: opaque{{identifier_break}} + scope: storage.modifier.js + pop: true + - match: module{{identifier_break}} + scope: storage.type.js + set: + - flow-type-module-meta + - flow-type-module-body + - flow-type-module-name + - match: export{{identifier_break}} + scope: storage.type.js + set: flow-type-declare-export + - include: else-pop + + block-scope: + - include: block + - include: else-pop + + literal-number: + # floats + - match: |- + (?x: + # 1., 1.1, 1.1e1, 1.1e-1, 1.e1, 1.e-1 | 1e1, 1e-1 + {{dec_integer}} (?: (\.) {{dec_digit}}* {{dec_exponent}}? | {{dec_exponent}} ) + # .1, .1e1, .1e-1 + | (\.) {{dec_digit}}+ {{dec_exponent}}? + ){{identifier_break}} + scope: constant.numeric.float.decimal.js + captures: + 1: punctuation.separator.decimal.js + 2: punctuation.separator.decimal.js + pop: true + + # integers + - match: 0{{dec_digit}}+{{identifier_break}} + scope: constant.numeric.integer.octal.js invalid.deprecated.numeric.octal.js + pop: true + + - match: (0[Xx]){{hex_digit}}*(n)?{{identifier_break}} + scope: constant.numeric.integer.hexadecimal.js + captures: + 1: punctuation.definition.numeric.base.js + 2: storage.type.numeric.js + pop: true + + - match: (0[Oo]){{oct_digit}}*(n)?{{identifier_break}} + scope: constant.numeric.integer.octal.js + captures: + 1: punctuation.definition.numeric.base.js + 2: storage.type.numeric.js + pop: true + + - match: (0[Bb]){{bin_digit}}*(n)?{{identifier_break}} + scope: constant.numeric.integer.binary.js + captures: + 1: punctuation.definition.numeric.base.js + 2: storage.type.numeric.js + pop: true + + - match: '{{dec_integer}}(n|(?!\.)){{identifier_break}}' + scope: constant.numeric.integer.decimal.js + captures: + 1: storage.type.numeric.js + pop: true + + # illegal numbers + - match: 0[Xx]{{identifier_part}}+ + scope: invalid.illegal.numeric.hexadecimal.js + pop: true + + - match: 0[Bb]{{identifier_part}}+ + scope: invalid.illegal.numeric.binary.js + pop: true + + - match: 0{{identifier_part}}+ + scope: invalid.illegal.numeric.octal.js + pop: true + + - match: '[1-9]{{identifier_part}}+(?:\.{{identifier_part}}*)?' + scope: invalid.illegal.numeric.decimal.js + pop: true + + variable-binding-object-alias: + - match: ':' + scope: punctuation.separator.key-value.js + set: variable-binding-pattern + - include: else-pop + + literal-variable-base: + - match: '{{dollar_only_identifier}}' + scope: variable.other.dollar.only.js punctuation.dollar.js + pop: true + - match: '{{dollar_identifier}}' + scope: variable.other.dollar.js + captures: + 1: punctuation.dollar.js + pop: true + - match: '{{constant_identifier}}' + scope: variable.other.constant.js + pop: true + - match: '{{identifier}}' + scope: variable.other.readwrite.js + pop: true + - match: (#)({{identifier}}) + captures: + 1: punctuation.definition.variable.js + 2: variable.other.readwrite.js + pop: true + + support-property-ecma-atomics: + - match: (?:and|add|compareExchange|exchange|isLockFree|load|or|store|sub|wait|wake|xor){{identifier_break}} + scope: support.function.builtin.js + pop: true + + parenthesized-expression: + - match: \( + scope: punctuation.section.group.begin.js + set: + - meta_scope: meta.group.js + - match: \) + scope: punctuation.section.group.end.js + pop: true + - match: (?=:) + push: flow-type-annotation + - match: (?=\S) + push: expression + + catch-meta: + - meta_include_prototype: false + - meta_scope: meta.catch.js + - include: immediately-pop + + support-property-ecma-typedarray: + - match: (?:BYTES_PER_ELEMENT){{identifier_break}} + scope: support.constant.builtin.js + pop: true + + for-of-rest: + - match: (?:of|in){{identifier_break}} + scope: keyword.operator.word.js + set: expression + + class-field-rest: + - match: ',' + scope: punctuation.separator.js + push: + - initializer + - field-name + - include: else-pop + + support-property-ecma-bigint: + - match: (?:asUintN|asIntN){{identifier_break}} + scope: support.function.builtin.js + pop: true + + constructor-body-expect-class-begin: + - match: (?={{identifier}}\s*\() + set: + - include: support + - match: '{{dollar_only_identifier}}' + scope: variable.type.dollar.only.js punctuation.dollar.js + pop: true + - match: '{{dollar_identifier}}' + scope: variable.type.dollar.js + captures: + 1: punctuation.dollar.js + pop: true + - match: '{{identifier}}' + scope: variable.type.js + pop: true + - include: else-pop + + - include: expression-begin + + variable-binding-pattern: + - match: '' + set: + - - include: flow-type-annotation + - - include: variable-binding-name + - include: variable-binding-array-destructuring + - include: variable-binding-object-destructuring + - include: else-pop + + statements: + - match: \)|\}|\] + scope: invalid.illegal.stray-bracket-end.js + pop: true + + - match: (?=\S) + push: statement + + literal-string: + - match: "'" + scope: punctuation.definition.string.begin.js + set: + - meta_include_prototype: false + - meta_scope: meta.string.js string.quoted.single.js + - match: \' + scope: punctuation.definition.string.end.js + pop: true + - match: \n + scope: invalid.illegal.newline.js + pop: true + - include: string-content + - match: '"' + scope: punctuation.definition.string.begin.js + set: + - meta_include_prototype: false + - meta_scope: meta.string.js string.quoted.double.js + - match: \" + scope: punctuation.definition.string.end.js + pop: true + - match: \n + scope: invalid.illegal.newline.js + pop: true + - include: string-content + + finally-meta: + - meta_include_prototype: false + - meta_scope: meta.finally.js + - include: immediately-pop + + flow-type-module-body: + - match: \{ + scope: punctuation.section.block.begin.js + set: flow-type-module-contents + - include: else-pop + + flow-type-generic-arguments: + - match: < + scope: punctuation.section.generic.begin.js + set: + - meta_scope: meta.generic.js + - match: '>' + scope: punctuation.section.generic.end.js + pop: true + - include: flow-type-list + - include: else-pop + + function-or-class-declaration: + - match: (?=class{{identifier_break}}) + set: class + + - match: (?={{func_lookahead}}) + set: function-declaration + + class-field: + - match: \+ + scope: storage.modifier.variance.js + + - match: '{{method_lookahead}}' + set: method-declaration + + - match: |- + (?x)(?= + \#? {{identifier}} + \s* = \s* + {{either_func_lookahead}} + ) + set: + - function-initializer + - flow-type-annotation-optional + - function-name-meta + - field-name + + - match: (?={{property_name}}) + set: + - field-initializer-or-method-declaration + - flow-type-annotation-optional + - field-name + + - match: (?=#{{identifier}}) + set: + - class-field-rest + - initializer + - flow-type-annotation-optional + - field-name + + - include: else-pop + + jsx-tag-name: + - match: '' + set: + - - clear_scopes: 1 + - meta_scope: meta.tag.name.js + - include: immediately-pop + - jsx-tag-name-component + + flow-type-declare-export: + - match: default{{identifier_break}} + scope: keyword.control.import-export.js + set: flow-type + - match: (?=\S) + pop: true + + tagged-template: + - include: literal-string-template-custom-comments + - include: literal-string-template-custom-tags + - include: styled-components + + - match: '{{identifier}}(?=\s*`)' + scope: variable.function.tagged-template.js + pop: true + + call-path: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + push: object-property + - include: else-pop + + for-condition: + - match: \( + scope: punctuation.section.group.js + set: + - for-condition-end + - for-condition-contents + - include: else-pop + + support-property-node-process: + - match: (?:arch|argv|argv0|channel|config|connected|debugPort|env|execArgv|execPath|exitCode|mainModule|noDeprecation|pid|platform|ppid|release|stderr|stdin|stdout|throwDeprecation|title|traceDeprecation|version|versions){{identifier_break}} + scope: support.constant.node.js + pop: true + - match: (?:abort|chdir|cpuUsage|cwd|disconnect|dlopen|emitWarning|exit|getegid|geteuid|getgit|getgroups|getuid|hasUncaughtExceptionCaptureCallback|hrtime|initGroups|kill|memoryUsage|nextTick|send|setegid|seteuid|setgid|setgroups|setuid|hasUncaughtExceptionCaptureCallback|umask|uptime){{identifier_break}} + scope: support.function.node.js + pop: true + + block: + - match: \{ + scope: punctuation.section.block.begin.js + set: + - meta_scope: meta.block.js + - match: \} + scope: punctuation.section.block.end.js + pop: true + - include: statements + + flow-type-utility: + - match: |- + (?x) (?: + Class|Function| + \$(?: + Keys|Values|ReadOnly|Exact|Diff|Rest|PropertyType|ElementType| + ObjMap|TupleMap|Call|Supertype|Subtype + ) + ){{identifier_break}} + scope: support.type.utility.js + pop: true + + support-property-ecma-math: + - match: (?:E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2){{identifier_break}} + scope: support.constant.builtin.js + pop: true + - match: (?:abs|acos|acosh|asin|asin|atan|atanh|atan2|cbrt|ceil|clz32|cos|cosh|exp|expm1|floor|fround|hypot|imul|log|log1p|log10|log2|max|min|pow|random|round|sign|sin|sinh|sqrt|tan|tanh|trunc){{identifier_break}} + scope: support.function.builtin.js + pop: true + + function-declaration: + - match: '' + set: + - function-meta + - function-declaration-expect-body + - function-declaration-meta + - flow-type-annotation + - function-declaration-expect-parameters + - flow-type-generic-parameters + - function-declaration-expect-name + - function-declaration-expect-generator-star + - function-declaration-expect-function-keyword + - function-declaration-expect-async + + support-property-ecma-string: + - match: (?:fromCharCode|fromCodePoint|raw){{identifier_break}} + scope: support.function.builtin.js + pop: true + + await-expression: + - match: await{{identifier_break}} + scope: keyword.control.flow.await.js + + literal-string-template-custom-comments: [] + left-expression-end: + - include: expression-break + + - match: (?=`) + push: literal-string-template + + - match: (?=(?:\.\?)?\() + push: function-call-arguments + + - include: property-access + + - include: fallthrough + + - include: else-pop + + string-content: + - match: \\\n + scope: constant.character.escape.newline.js + - match: \\(?:x\h\h|u\h\h\h\h|.) + scope: constant.character.escape.js + + decorator: + - match: '@' + scope: punctuation.definition.annotation.js + push: + - decorator-meta + - decorator-expression-end + - decorator-expression-begin + + flow-type-object: + - match: \{\| + scope: punctuation.section.block.begin.js + set: + - meta_scope: meta.type.object.exact.js + - match: \|\} + scope: punctuation.section.block.end.js + pop: true + - include: flow-type-object-contents + + - match: \{ + scope: punctuation.section.block.begin.js + set: + - meta_scope: meta.type.object.js + - match: \} + scope: punctuation.section.block.end.js + pop: true + - include: flow-type-object-contents + + export-extended: + - include: flow-type-export-type + + - include: variable-declaration + - include: function-or-class-declaration + + - match: default{{identifier_break}} + scope: keyword.control.import-export.js + set: + - include: function-or-class-declaration + - match: (?=\S) + set: expression-statement + + - match: (?=\S) + set: + - expect-semicolon + - import-export-from + - export-list + - import-export-alias + - export-item + + call-function-name: + - match: '{{dollar_only_identifier}}' + scope: variable.function.js variable.other.dollar.only.js punctuation.dollar.js + pop: true + - match: '{{identifier}}' + scope: variable.function.js + pop: true + - include: else-pop + + import-meta-expression: + - match: import{{identifier_break}} + scope: keyword.import.js + set: import-expression-end + + function-declaration-expect-async: + - match: async{{identifier_break}} + scope: storage.type.js + pop: true + - include: else-pop + + flow-type-literal: + - match: true{{identifier_break}} + scope: constant.language.boolean.true.js + pop: true + - match: false{{identifier_break}} + scope: constant.language.boolean.false.js + pop: true + - match: (?=\d) + set: + - - match: '{{identifier_part}}+' + scope: invalid.illegal.js + - include: immediately-pop + - literal-number + - match: (?=['"]) + set: literal-string + + support-property-ecma-proxy: + - match: revocable{{identifier_break}} + scope: support.function.builtin.js + pop: true + + import-export: + - match: import{{identifier_break}}(?!{{nothing}}[.(]) + scope: keyword.control.import-export.js + set: + - meta_scope: meta.import.js + - match: (?=[.(]) # Recovery for import expressions + set: + - expression-statement-end + - import-expression-end + - match: (?=\S) + set: + - import-meta + - expect-semicolon + - import-string-or-items + + - match: export{{identifier_break}} + scope: keyword.control.import-export.js + set: + - export-meta + - export-extended + + binary-operators: + - match: instanceof{{identifier_break}} + scope: keyword.operator.js + push: expression-begin + - match: in{{identifier_break}} + scope: keyword.operator.js + push: expression-begin + - match: '&&|\|\||\?\?' + scope: keyword.operator.logical.js + push: expression-begin + - match: =(?![=>]) + scope: keyword.operator.assignment.js + push: expression-begin + - match: |- + (?x) + %= | # assignment right-to-left both + &= | # assignment right-to-left both + \*= | # assignment right-to-left both + \+= | # assignment right-to-left both + -= | # assignment right-to-left both + /= | # assignment right-to-left both + \^= | # assignment right-to-left both + \|= | # assignment right-to-left both + <<= | # assignment right-to-left both + >>= | # assignment right-to-left both + >>>= # assignment right-to-left both + scope: keyword.operator.assignment.augmented.js + push: expression-begin + - match: |- + (?x) + << | # bitwise-shift left-to-right both + >>> | # bitwise-shift left-to-right both + >> | # bitwise-shift left-to-right both + & | # bitwise-and left-to-right both + \^ | # bitwise-xor left-to-right both + \| # bitwise-or left-to-right both + scope: keyword.operator.bitwise.js + push: expression-begin + - match: |- + (?x) + <= | # relational left-to-right both + >= | # relational left-to-right both + < | # relational left-to-right both + > # relational left-to-right both + scope: keyword.operator.relational.js + push: expression-begin + - match: |- + (?x) + === | # equality left-to-right both + !== | # equality left-to-right both + == | # equality left-to-right both + != # equality left-to-right both + scope: keyword.operator.comparison.js + push: expression-begin + - match: |- + (?x) + / | # division left-to-right both + % | # modulus left-to-right both + \* | # multiplication left-to-right both + \+ | # addition left-to-right both + - # subtraction left-to-right both + scope: keyword.operator.arithmetic.js + push: expression-begin + - match: ',' + scope: keyword.operator.comma.js # Comma operator, not punctuation. + push: expression-begin + + inherited-class-expression-end: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + push: + - include: inherited-class-name + - include: object-property + + - include: left-expression-end + + call-method-meta: + - meta_include_prototype: false + - meta_scope: meta.function-call.method.js + - include: else-pop + + switch-meta: + - meta_include_prototype: false + - meta_scope: meta.switch.js + - include: immediately-pop + + import-string-or-items: + - include: literal-string + - match: (?=\S) + set: + - import-export-from + - import-list + - import-export-alias + - import-item + + flow-type-meta: + - meta_scope: meta.flow-type.js + - include: immediately-pop + + literal-string-template-custom-lookahead: [] + expression-end-no-in: + - match: (?=in{{identifier_break}}) + pop: true + - include: expression-end + + regexp: + - meta_include_prototype: false + - meta_scope: meta.string.js string.regexp.js + - match: / + scope: punctuation.definition.string.end.js + set: + - meta_include_prototype: false + - meta_content_scope: meta.string.js string.regexp.js + - match: '[gimyus]' + scope: keyword.other.js + - match: '[A-Za-z0-9]' # Ignore unknown flags for future-compatibility + - include: immediately-pop + - match: (?=.|\n) + push: + - meta_include_prototype: false + - match: (?=/) + pop: true + - include: scope:source.regexp.js + + comments-top-level: + - match: ^(#!).*$\n? + scope: comment.line.shebang.js + captures: + 1: punctuation.definition.comment.js + + arrow-function-expect-body: + - include: function-block + - match: (?=\S) + set: + - block-meta + - expression-no-comma + + method-name: + - match: '{{dollar_identifier}}' + scope: meta.mapping.key.dollar.js entity.name.function.js + captures: + 1: punctuation.dollar.js + pop: true + - match: '{{identifier}}' + scope: entity.name.function.js + pop: true + - match: "'" + scope: punctuation.definition.string.begin.js + set: + - meta_include_prototype: false + - meta_scope: meta.string.js string.quoted.single.js + - meta_content_scope: entity.name.function.js + - match: \' + scope: punctuation.definition.string.end.js + pop: true + - match: \n + scope: invalid.illegal.newline.js + pop: true + - include: string-content + - match: '"' + scope: punctuation.definition.string.begin.js + set: + - meta_include_prototype: false + - meta_scope: meta.string.js string.quoted.double.js + - meta_content_scope: entity.name.function.js + - match: \" + scope: punctuation.definition.string.end.js + pop: true + - match: \n + scope: invalid.illegal.newline.js + pop: true + - include: string-content + + - match: (?=\[) + push: computed-property-name + + - include: else-pop + + support-property-node-module: + - match: (?:children|exports|filename|id|loaded|parent|paths){{identifier_break}} + scope: support.constant.node.js + pop: true + - match: require{{identifier_break}} + scope: support.function.node.js + pop: true + + flow-type-pragma: + - match: (//)\s*(?=@) + scope: comment.line.double-slash.pragma.js + captures: + 1: punctuation.definition.comment.js + push: + - meta_include_prototype: false + - match: (@)(flow) + captures: + 1: punctuation.definition.pragma.js + 2: support.function.pragma.js + pop: true + - include: else-pop + + class-body: + - match: \{ + scope: punctuation.section.block.begin.js + set: class-body-contents + + - include: else-pop + + constructor-body-expect-class-end: + - include: property-access + - include: else-pop + + jsx-tag-name-component: + - match: '{{jsx_identifier}}' + scope: entity.name.tag.js + set: + - match: '[:.]' + scope: punctuation.accessor.js + set: jsx-tag-name + - include: else-pop + - include: else-pop + + variable-binding-top: + - include: function-assignment + - match: (?={{binding_pattern_lookahead}}) + set: + - initializer + - variable-binding-pattern + - include: else-pop + + function-meta: + - meta_include_prototype: false + - meta_scope: meta.function.js + - include: immediately-pop + + flow-type-object-value: + - match: (\?)?(:) + captures: + 1: storage.modifier.optional.js + 2: punctuation.separator.key-value.js + set: flow-type + - include: else-pop + + do-while-meta: + - meta_include_prototype: false + - meta_scope: meta.do-while.js + - include: immediately-pop + + try-meta: + - meta_include_prototype: false + - meta_scope: meta.try.js + - include: immediately-pop + + conditional: + - match: switch{{identifier_break}} + scope: keyword.control.conditional.switch.js + set: + - switch-meta + - switch-block + - expect-parenthesized-expression + + - match: do{{identifier_break}} + scope: keyword.control.loop.do-while.js + set: + - do-while-meta + - do-while-condition + - block-scope + + - match: for{{identifier_break}} + scope: keyword.control.loop.for.js + set: + - for-meta + - block-scope + - for-condition + - for-await + + - match: while{{identifier_break}} + scope: keyword.control.loop.while.js + set: + - while-meta + - block-scope + - expect-parenthesized-expression + + - match: with{{identifier_break}} + scope: keyword.control.import.with.js + set: + - with-meta + - block-scope + - expect-parenthesized-expression + + - match: if{{identifier_break}} + scope: keyword.control.conditional.if.js + set: + - conditional-meta + - block-scope + - expect-parenthesized-expression + + - match: else\s+if{{identifier_break}} + scope: keyword.control.conditional.elseif.js + set: + - conditional-meta + - block-scope + - expect-parenthesized-expression + + - match: else{{identifier_break}} + scope: keyword.control.conditional.else.js + set: + - conditional-meta + - block-scope + + - match: try{{identifier_break}} + scope: keyword.control.exception.try.js + set: + - try-meta + - block-scope + + - match: finally{{identifier_break}} + scope: keyword.control.exception.finally.js + set: + - finally-meta + - block-scope + + - match: catch{{identifier_break}} + scope: keyword.control.exception.catch.js + set: + - catch-meta + - block-scope + - expect-parenthesized-expression + + function-name-meta: + - meta_include_prototype: false + - meta_scope: entity.name.function.js + - include: immediately-pop + + flow-type-generic-parameters: + - match: < + scope: punctuation.section.generic.begin.js + set: + - meta_scope: meta.generic.declaration.js + - match: '>' + scope: punctuation.section.generic.end.js + pop: true + - include: comma-separator + - match: \+ + scope: storage.modifier.variance.js + - match: '{{identifier}}' + scope: variable.parameter.type.js + push: + - - match: '=' + scope: keyword.operator.assignment.js + set: flow-type + - include: else-pop + - flow-type-annotation + - include: else-pop + + function-parameter-binding-spread: + - match: \.\.\. + scope: keyword.operator.spread.js + push: function-parameter-binding-pattern + + expression-break: + - match: (?=[;})\]]) + pop: true + + comma-separator: + - match: ',' + scope: punctuation.separator.comma.js + + variable-binding-list-top: + - match: '{{line_ending_ahead}}' + set: + - match: '{{line_continuation_lookahead}}' + set: variable-binding-top + - include: else-pop + - match: ',' + scope: punctuation.separator.comma.js + push: variable-binding-top + - include: else-pop + + jsx-interpolation: + - match: '{' + scope: punctuation.definition.interpolation.begin.js + push: + - - meta_scope: meta.interpolation.js + - meta_content_scope: source.js.embedded.jsx + - match: '}' + scope: punctuation.definition.interpolation.end.js + pop: true + - expression + + flow-type-special: + - match: any{{identifier_break}} + scope: support.type.any.js + pop: true + + - match: mixed{{identifier_break}} + scope: support.type.mixed.js + pop: true + + variable-declaration: + - match: (?:const|let|var){{identifier_break}} + scope: storage.type.js + set: + - expect-semicolon + - variable-binding-list-top + - variable-binding-top + + flow-type-function: + - match: \( + scope: punctuation.section.grouping.begin.js + set: + - meta_scope: meta.group.js + - match: \) + scope: punctuation.section.grouping.end.js + pop: true + - include: flow-type-list + + flow-type-class: + - match: '{{identifier}}' + scope: variable.other.class.js + pop: true + + styled-components: + - match: (?=(?:styled|css|createGlobalStyle|injectGlobal|keyframes){{identifier_break}}) + set: + - styled-component-end + - styled-component-begin + support-property-ecma-arraybuffer: + - match: isView{{identifier_break}} + scope: support.function.builtin.js + pop: true + + object-literal-meta-key: + - meta_scope: meta.mapping.key.js + - include: else-pop + + expression-statement-end: + - match: '{{line_ending_ahead}}' + set: + - match: '{{line_continuation_lookahead}}' + set: expression-statement-end + - include: else-pop + - include: expression-end + + import-export-from: + - match: from{{identifier_break}} + scope: keyword.control.import-export.js + set: literal-string + - include: else-pop + + function-declaration-parameters: + - match: \( + scope: punctuation.section.group.begin.js + set: + - match: \) + scope: punctuation.section.group.end.js + pop: true + - include: function-parameter-binding-list + + styled-component-end: + - match: \. + scope: punctuation.accessor.dot.js + push: styled-component-begin + + - match: (?=`) + set: + - match: '`' + scope: punctuation.definition.string.begin.js + push: + - - meta_include_prototype: false + - meta_scope: meta.string.js string.quoted.other.js + - match: '`' + scope: punctuation.definition.string.end.js + pop: true + - include: immediately-pop + - - clear_scopes: 1 + - include: immediately-pop + - - match: '' + set: scope:source.js.css + with_prototype: + - match: (?=`) + pop: true + - match: \$\{ + scope: punctuation.section.interpolation.begin.js + push: + - clear_scopes: 1 + - meta_scope: meta.interpolation.js + - meta_content_scope: source.js.embedded.expression + - match: \} + scope: punctuation.section.interpolation.end.js + pop: true + - match: (?=\S) + push: expression + - include: string-content + - include: else-pop + - include: expression-end + + expect-semicolon: + - match: \; + scope: punctuation.terminator.statement.js + pop: true + - include: else-pop + + support-property-ecma-json: + - match: (?:parse|stringify){{identifier_break}} + scope: support.function.builtin.js + pop: true + + import-brace: + - include: flow-type-import-type + + - meta_scope: meta.block.js + - include: comma-separator + - match: \} + scope: punctuation.section.block.end.js + pop: true + - match: '{{identifier}}' + scope: variable.other.readwrite.js + push: import-export-alias + - match: \* + scope: constant.other.js + push: import-export-alias + - include: else-pop + + support: + - include: support-variable-ecma + - include: support-variable-console + - include: support-variable-dom + - include: support-variable-node + + class-name: + - match: '{{non_reserved_identifier}}' + scope: entity.name.class.js + set: flow-type-generic-parameters + - include: else-pop + + variable-binding-object-destructuring: + - match: \{ + scope: punctuation.section.block.begin.js + set: + - meta_scope: meta.binding.destructuring.mapping.js + - match: \} + scope: punctuation.section.block.end.js + pop: true + - include: variable-binding-spread + - match: (?={{identifier}}|\[|'|") + push: + - initializer + - variable-binding-object-alias + - object-literal-meta-key + - variable-binding-object-key + - include: comma-separator + + function-declaration-meta-no-clear: + - meta_include_prototype: false + - meta_scope: meta.function.declaration.js + - include: immediately-pop + + field-initializer-or-method-declaration: + - match: (?=\() + set: + - function-meta + - function-declaration-expect-body + - function-declaration-meta + - function-declaration-expect-parameters + - match: (?=\S) + set: + - class-field-rest + - initializer + + function-parameter-binding-array-destructuring: + - match: \[ + scope: punctuation.section.brackets.begin.js + set: + - meta_scope: meta.binding.destructuring.sequence.js + - match: \] + scope: punctuation.section.brackets.end.js + pop: true + - include: function-parameter-binding-list + + import-export-alias: + - match: as{{identifier_break}} + scope: keyword.control.import-export.js + set: + - match: default{{identifier_break}} + scope: keyword.control.import-export.js + pop: true + - match: '{{identifier}}' + scope: variable.other.readwrite.js + pop: true + - include: else-pop + - include: else-pop + + decorator-expression-end: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + push: + - include: decorator-name + - include: object-property + + - include: left-expression-end + + for-oldstyle-rest: + - match: (?=\)) + pop: true + - match: ; + scope: punctuation.separator.expression.js + - match: (?=\S) + push: expression + + switch-block: + - match: \{ + scope: punctuation.section.block.begin.js + set: switch-block-contents + - include: else-pop + + support-property: + - include: support-property-ecma + + jsx-body: + - meta_include_prototype: false + + - match: < + scope: punctuation.definition.tag.begin.js + set: + - meta_scope: meta.tag.js + + - match: / + scope: punctuation.definition.tag.begin.js + set: + - jsx-expect-tag-end + - jsx-tag-name + + - match: (?=\S) + set: + - jsx-body + - jsx-tag-attributes + - jsx-tag-name + + - include: jsx-html-escapes + - include: jsx-interpolation + function-declaration-expect-generator-star: + - match: \* + scope: keyword.generator.asterisk.js + pop: true + - include: else-pop + + comments: + - include: flow-type-pragma + + - match: /\*\*(?!/) + scope: punctuation.definition.comment.begin.js + push: + - meta_include_prototype: false + - meta_scope: comment.block.documentation.js + - match: \*/ + scope: punctuation.definition.comment.end.js + pop: true + - match: ^\s*(\*)(?!/) + captures: + 1: punctuation.definition.comment.js + - match: /\* + scope: punctuation.definition.comment.begin.js + push: + - meta_include_prototype: false + - meta_scope: comment.block.js + - match: \*/ + scope: punctuation.definition.comment.end.js + pop: true + - match: // + scope: punctuation.definition.comment.js + push: + - meta_include_prototype: false + - meta_scope: comment.line.double-slash.js + - match: \n + pop: true + + function-declaration-expect-function-keyword: + - match: function{{identifier_break}} + scope: storage.type.function.js + pop: true + - include: else-pop + + with-meta: + - meta_include_prototype: false + - meta_scope: meta.with.js + - include: immediately-pop + + function-declaration-expect-parameters: + - include: function-declaration-parameters + - include: else-pop + + object-literal-expect-colon: + - match: ':' + scope: punctuation.separator.key-value.js + - include: else-pop + + while-meta: + - meta_include_prototype: false + - meta_scope: meta.while.js + - include: immediately-pop + + inherited-class-expression-begin: + - include: inherited-class-name + - include: expression-begin + + main: + - include: comments-top-level + + - match: \)|\}|\] + scope: invalid.illegal.stray-bracket-end.js + # Don't pop or embedding could break. + + - include: statements + + export-meta: + - meta_include_prototype: false + - meta_scope: meta.export.js + - include: immediately-pop + + expression-end: + - include: postfix-operators + - include: binary-operators + - include: ternary-operator + + - include: left-expression-end + + flow-type-object-indexer-type: + - match: \] + scope: punctuation.section.brackets.end.js + pop: true + - include: flow-type-list + + flow-type-annotation: + - match: ':' + scope: punctuation.separator.type.js + set: + - flow-type-meta + - flow-type + - match: (?!\s*(?:$|:|//|/\*)) + pop: true + + restricted-production: + - meta_include_prototype: false + - match: '{{line_ending_ahead}}' + pop: true + - match: '' + set: expression-statement + + support-property-ecma-array: + - match: (?:from|isArray|of){{identifier_break}} + scope: support.function.builtin.js + pop: true + + expression-statement: + - match: (?=\S) + set: + - expect-semicolon + - expression-statement-end + - expression-begin + + variable-binding-name: + - match: (?={{non_reserved_identifier}}) + set: + - meta_scope: meta.binding.name.js + - include: literal-variable + + object-literal-contents: + - meta_scope: meta.mapping.js + + - match: \} + scope: punctuation.section.block.end.js + pop: true + + - match: \.\.\. + scope: keyword.operator.spread.js + push: expression-no-comma + + - match: >- + (?x)(?= + {{property_name}}\s*: + (?: {{either_func_lookahead}} ) + ) + push: + - either-function-declaration + - function-declaration-meta-no-clear + - object-literal-expect-colon + - object-literal-meta-key + - method-name + + - match: '{{method_lookahead}}' + push: method-declaration + + - match: '{{identifier}}(?=\s*(?:[},]|$|//|/\*))' + scope: variable.other.readwrite.js + + - match: (?=\[) + push: + - object-literal-meta-key + - computed-property-name + + - match: (?=\"|') + push: + - object-literal-meta-key + - literal-string + + - match: (?=[-+]?(?:\.[0-9]|0[bxo]|\d)) + push: + - object-literal-meta-key + - literal-number + + # - include: bare-property-name + - match: (?={{identifier}}) + push: + - object-literal-meta-key + - bare-property-name + + - include: comma-separator + - match: ':' + scope: punctuation.separator.key-value.js + push: expression-no-comma + + # In case we're inside a destructured arrow function parameter that we + # misidentified as an object literal. + - match: '=' + scope: keyword.operator.assignment.js + push: expression-no-comma + + jsx-tag-attributes-top: + - meta_scope: meta.tag.js + - match: / + scope: punctuation.definition.tag.begin.js + set: + - - meta_scope: invalid.illegal.unmatched-tag.js + - include: immediately-pop + - jsx-expect-tag-end + - jsx-tag-name + + - match: (?=\S) + set: + - jsx-tag-attributes + - jsx-tag-name + + variable-binding-list: + - include: comma-separator + - match: (?={{binding_pattern_lookahead}}) + push: + - initializer + - variable-binding-pattern + - include: else-pop + + label: + - match: ({{identifier}})\s*(:) + captures: + 1: entity.name.label.js + 2: punctuation.separator.js + + new-target: + - match: \. + scope: punctuation.accessor.dot.js + set: + - match: target{{identifier_break}} + scope: variable.language.target.js + pop: true + - include: else-pop + + - include: else-pop + + statement: + - include: flow-type-declare + - include: flow-type-alias + + - match: \; + scope: punctuation.terminator.statement.empty.js + pop: true + + - include: import-export + - include: conditional + - include: block + - include: label + - include: variable-declaration + + - match: break{{identifier_break}} + scope: keyword.control.flow.break.js + set: + - expect-semicolon + - expect-label + + - match: continue{{identifier_break}} + scope: keyword.control.flow.continue.js + set: + - expect-semicolon + - expect-label + + - match: debugger{{identifier_break}} + scope: keyword.control.flow.debugger.js + set: expect-semicolon + + - match: return{{identifier_break}} + scope: keyword.control.flow.return.js + set: restricted-production + + - match: throw{{identifier_break}} + scope: keyword.control.flow.throw.js + set: restricted-production + + - include: function-or-class-declaration + + - include: decorator + + - include: expression-statement + + variable-binding-array-destructuring: + - match: \[ + scope: punctuation.section.brackets.begin.js + set: + - meta_scope: meta.binding.destructuring.sequence.js + - match: \] + scope: punctuation.section.brackets.end.js + pop: true + - include: variable-binding-spread + - include: variable-binding-list + + builtin-console-properties: + - match: (?:warn|info|log|error|time|timeEnd|assert|count|dir|group|groupCollapsed|groupEnd|profile|profileEnd|table|trace|timeStamp){{identifier_break}} + scope: support.function.console.js + pop: true + - include: object-property + + yield-expression: + - match: yield{{identifier_break}} + scope: keyword.control.flow.yield.js + set: + - match: $ + pop: true + - match: \* + scope: keyword.generator.asterisk.js + set: expression-begin + - match: (?=\S) + set: expression-begin + + bare-property-name: + - match: '{{identifier}}' + scope: string.unquoted.js + pop: true + expression: + - meta_include_prototype: false + - match: '' + set: [expression-end, expression-begin] + + conditional-meta: + - meta_include_prototype: false + - meta_scope: meta.conditional.js + - include: immediately-pop + + jsx-attribute-value: + - include: jsx-tag + - include: jsx-interpolation + + - match: "'" + scope: punctuation.definition.string.begin.js + set: + - meta_include_prototype: false + - meta_scope: string.quoted.single.js + - match: \' + scope: punctuation.definition.string.end.js + pop: true + - include: jsx-html-escapes + - match: '"' + scope: punctuation.definition.string.begin.js + set: + - meta_include_prototype: false + - meta_scope: string.quoted.double.js + - match: \" + scope: punctuation.definition.string.end.js + pop: true + - include: jsx-html-escapes + + - include: else-pop + + call-function-meta: + - meta_include_prototype: false + - meta_scope: meta.function-call.js + - include: else-pop + + function-parameter-binding-object-alias: + - match: ':' + scope: punctuation.separator.key-value.js + set: function-parameter-binding-pattern + - include: else-pop + + literal-string-template-custom-tags: [] + function-parameter-binding-list: + - match: ',' + scope: punctuation.separator.parameter.function.js + - include: function-parameter-binding-spread + - match: (?={{binding_pattern_lookahead}}) + push: + - initializer + - function-parameter-binding-pattern + - include: else-pop + + arrow-function-declaration: + - meta_include_prototype: false + - match: '' + set: + - function-meta + - arrow-function-expect-body + - function-declaration-meta + - arrow-function-expect-arrow + - arrow-function-expect-parameters + - function-declaration-expect-async + + function-call-arguments: + - match: (\.\?)?(\() + captures: + 1: punctuation.accessor.js + 2: punctuation.section.group.begin.js + set: + - meta_scope: meta.group.js + - match: \) + scope: punctuation.section.group.end.js + pop: true + - include: expression-list + + export-list: + - match: ',' + scope: punctuation.separator.comma.js + push: + - import-export-alias + - export-item + - include: else-pop + + constructor-body-expect-arguments: + - include: function-call-arguments + - include: else-pop + + fallthrough: + # If an arrow function has the ( and ) on different lines, we won't have matched + - match: => + scope: storage.type.function.arrow.js + push: + - function-meta + - arrow-function-expect-body + + function-declaration-identifiers-expect-class: + - match: prototype{{identifier_break}} + scope: support.constant.prototype.js + pop: true + - include: language-identifiers + - match: '{{dollar_only_identifier}}' + scope: support.class.dollar.only.js punctuation.dollar.js + pop: true + - match: '{{dollar_identifier}}' + scope: support.class.dollar.js + captures: + 1: punctuation.dollar.js + pop: true + - match: '{{identifier}}' + scope: support.class.js + pop: true + - include: else-pop + + import-item: + - include: flow-type-import-type + + - match: \{ + scope: punctuation.section.block.begin.js + set: import-brace + - match: '{{non_reserved_identifier}}' + scope: variable.other.readwrite.js + pop: true + - match: \* + scope: constant.other.js + pop: true + - include: else-pop + + flow-type-typeof: + - match: typeof{{identifier_break}} + scope: keyword.operator.js + set: + - left-expression-end + - expression-begin + + function-parameter-binding-object-destructuring: + - match: \{ + scope: punctuation.section.block.begin.js + set: + - meta_scope: meta.binding.destructuring.mapping.js + - match: ',' + scope: punctuation.separator.parameter.function.js + - match: \} + scope: punctuation.section.block.end.js + pop: true + - include: function-parameter-binding-spread + - match: (?={{identifier}}|\[|'|") + push: + - initializer + - function-parameter-binding-object-alias + - object-literal-meta-key + - function-parameter-binding-object-key + + block-meta: + - meta_include_prototype: false + - meta_scope: meta.block.js + - include: immediately-pop + + function-declaration-meta: + - meta_include_prototype: false + - meta_scope: meta.function.declaration.js + - clear_scopes: 1 + - include: immediately-pop + + method-declaration-expect-prefix: + - match: \* + scope: keyword.generator.asterisk.js + - match: (?:get|set){{identifier_break}}(?!\s*\() + scope: storage.type.accessor.js + - include: else-pop + + support-variable-console: + # https://console.spec.whatwg.org/ + - match: console{{identifier_break}} + scope: support.type.object.console.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: builtin-console-properties + - include: else-pop + + flow-type-object-contents: + - include: comma-separator + - match: ; + scope: punctuation.separator.semicolon.js + - match: '{{method_lookahead}}' + push: method-declaration + - match: \+ + scope: storage.modifier.variance.js + - match: '{{identifier}}' + scope: meta.object-literal.key.js + push: flow-type-object-value + - match: \[ + scope: punctuation.section.brackets.begin.js + push: + - flow-type-object-value + - flow-type-object-indexer-type + - flow-type-object-indexer-label + + expression-begin: + - match: (?=`) + set: + - include: literal-string-template-custom-comments + - include: literal-string-template-custom-lookahead + - include: literal-string-template + + - include: jsx-tag + + - include: expression-break + + - include: yield-expression + - include: await-expression + + - include: regexp-complete + - include: literal-string + - include: tagged-template + - include: literal-string-template + - include: constructor + - include: literal-number + - include: prefix-operators + - include: import-meta-expression + + - include: class + - include: constants + - include: function-assignment + - include: either-function-declaration + - include: object-literal + + - include: parenthesized-expression + - include: array-literal + + - include: literal-call + - include: literal-variable + + - include: else-pop + + flow-type-begin: + - include: flow-type-existential + - include: flow-type-literal + - include: flow-type-special + - include: flow-type-primitive + - include: flow-type-utility + - include: flow-type-typeof + - include: flow-type-class + - include: flow-type-function + - include: flow-type-tuple + - include: flow-type-object + + - include: else-pop + + flow-type-object-indexer-label: + - match: ({{identifier}})\s*(:) + captures: + 1: meta.object-literal.key.js + 2: punctuation.separator.key-value.js + pop: true + - include: else-pop + + function-parameter-binding-object-key: + - match: '{{identifier}}(?=\s*:)' + pop: true + - include: literal-string + - include: computed-property-name + - include: function-parameter-binding-name + - include: else-pop + + expression-list: + - include: expression-break + - include: comma-separator + - match: (?=\S) + push: expression-no-comma + + method-declaration: + - match: '' + set: + - function-meta + - function-declaration-expect-body + - function-declaration-meta + - flow-type-annotation + - function-declaration-expect-parameters + - flow-type-generic-parameters + - method-name + - method-declaration-expect-prefix + - function-declaration-expect-async + + literal-string-template: + - match: '`' + scope: punctuation.definition.string.begin.js + set: + - meta_include_prototype: false + - meta_scope: meta.string.js string.quoted.other.js + - match: '`' + scope: punctuation.definition.string.end.js + pop: true + - match: \$\{ + scope: punctuation.section.interpolation.begin.js + push: + - clear_scopes: 1 + - meta_scope: meta.interpolation.js + - meta_content_scope: source.js.embedded + - match: \} + scope: punctuation.section.interpolation.end.js + pop: true + - match: (?=\S) + push: expression + - include: string-content + + switch-block-contents: + - meta_scope: meta.block.js + + - match: \} + scope: punctuation.section.block.end.js + pop: true + + - match: case{{identifier_break}} + scope: keyword.control.conditional.case.js + push: + - expect-case-colon + - expression + + - match: default{{identifier_break}} + scope: keyword.control.conditional.default.js + push: + - expect-case-colon + + - include: statements + + flow-type-alias: + - match: (?=type{{identifier_break}}) + set: + - - match: (?={{identifier}}) + set: + - - meta_scope: meta.declaration.type.js + - match: '' + pop: true + - flow-type-alias-initializer + - flow-type-generic-parameters + - - match: '{{identifier}}' + scope: entity.name.type.js + pop: true + - - include: else-pop + + - match: (?=\S) + set: [expression-statement, expression-end] + - - match: type{{identifier_break}}(?=\s*(?:$|{{identifier}})) + scope: storage.type.js + set: + - meta_scope: meta.declaration.type.js + - include: else-pop + - include: expression-begin + + ternary-operator-expect-colon: + - match: ':' + scope: keyword.operator.ternary.js + set: expression-no-comma + - include: else-pop + + array-literal: + - match: \[ + scope: punctuation.section.brackets.begin.js + set: + - meta_scope: meta.sequence.js + - match: \] + scope: punctuation.section.brackets.end.js + pop: true + - include: expression-list + + export-brace: + - meta_scope: meta.block.js + - include: comma-separator + - match: \} + scope: punctuation.section.block.end.js + pop: true + - match: '{{identifier}}' + scope: variable.other.readwrite.js + push: import-export-alias + - match: \* + scope: constant.other.js + push: import-export-alias + - include: else-pop + + flow-type-export-type: + - match: type{{identifier_break}}(?=\s*\{) + scope: storage.type.js + set: export-item + - include: flow-type-alias + + function-declaration-expect-name: + - match: '{{non_reserved_identifier}}' + scope: entity.name.function.js + pop: true + - include: else-pop + + function-declaration-expect-body: + - include: function-block + - include: else-pop + + do-while-condition: + - match: while{{identifier_break}} + scope: keyword.control.loop.while.js + set: parenthesized-expression + - include: else-pop + + computed-property-name: + - match: \[ + scope: punctuation.section.brackets.begin.js + set: + - match: \] + scope: punctuation.section.brackets.end.js + pop: true + - match: (?=\S) + push: expression + + jsx-meta: + - meta_scope: meta.jsx.js + - include: immediately-pop + + object-literal: + - match: \{ + scope: punctuation.section.block.begin.js + set: object-literal-contents + + flow-type-primitive: + - match: boolean{{identifier_break}} + scope: support.type.primitive.boolean.js + pop: true + + - match: number{{identifier_break}} + scope: support.type.primitive.number.js + pop: true + + - match: string{{identifier_break}} + scope: support.type.primitive.string.js + pop: true + + - match: null{{identifier_break}} + scope: support.type.primitive.null.js + pop: true + + - match: void{{identifier_break}} + scope: support.type.primitive.void.js + pop: true + + support-property-ecma-object: + - match: (?:assign|create|defineProperties|defineProperty|entries|freeze|fromEntries|getOwnPropertyDescriptors?|getOwnPropertyNames|getOwnPropertySymbols|getPrototypeOf|is|isExtensible|isFrozen|isSealed|keys|preventExtensions|seal|setPrototypeOf|values){{identifier_break}} + scope: support.function.builtin.js + pop: true + + flow-type-existential: + - match: \* + scope: constant.language.type.existential.js + pop: true + + expression-end-no-comma: + - match: (?=,) + pop: true + - include: expression-end + + literal-variable: + - include: language-identifiers + - include: support + + - match: '{{constant_identifier}}(?=\s*[\[.])' + scope: support.class.js + pop: true + + - match: (?={{identifier}}\s*(?:\.\?)?\() + set: call-function-name + + - include: literal-variable-base + + arrow-function-expect-parameters: + - match: '{{identifier}}' + scope: variable.parameter.function.js + pop: true + - include: function-declaration-parameters + - include: else-pop + + else-pop: + - match: (?=\S) + pop: true + + support-property-ecma-symbol: + - match: (?:asyncIterator|hasInstance|isConcatSpreadable|iterator|match|replace|search|species|split|toPrimitive|toStringTag|unscopeables){{identifier_break}} + scope: support.constant.builtin.js + pop: true + - match: (?:for|keyFor){{identifier_break}} + scope: support.function.builtin.js + pop: true + + literal-call: + - match: (?={{identifier}}\s*(?:\.\?)?\() + set: + - call-function-meta + - function-call-arguments + - literal-variable + + - match: (?={{identifier}}\s*(?:\.\s*{{identifier}}\s*)+(?:\.\?)?\() + set: + - call-method-meta + - function-call-arguments + - call-path + - literal-variable + + class: + - match: class{{identifier_break}} + scope: storage.type.class.js + set: + - class-meta + - class-body + - class-extends + - class-name + + inherited-class-name: + - match: '{{non_reserved_identifier}}{{left_expression_end_lookahead}}' + scope: entity.other.inherited-class.js + pop: true + + flow-type-alias-initializer: + - match: '=' + scope: keyword.operator.assignment.js + set: + - flow-type-meta + - flow-type + - include: else-pop + support-variable-node: + - match: global{{identifier_break}} + scope: support.type.object.node.js + pop: true + + - match: Buffer{{identifier_break}} + scope: support.class.node.js + pop: true + + - match: process{{identifier_break}} + scope: support.constant.node.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-node-process + - include: object-property + - include: else-pop + - include: else-pop + + # Module-level variables + - match: (?:__dirname|__filename|exports){{identifier_break}} + scope: support.constant.node.js + pop: true + - match: module{{identifier_break}} + scope: support.constant.node.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-node-module + - include: object-property + - include: else-pop + - include: else-pop + - match: require{{identifier_break}} + scope: support.function.node.js + pop: true + + expect-parenthesized-expression: + - include: parenthesized-expression + - include: else-pop + + flow-type-module-name: + - include: literal-string + - match: '{{identifier}}' + scope: entity.name.module.js + pop: true + - include: else-pop + + for-meta: + - meta_include_prototype: false + - meta_scope: meta.for.js + - include: immediately-pop + + field-name: + - match: '{{dollar_identifier}}' + scope: meta.mapping.key.dollar.js variable.other.readwrite.js + captures: + 1: punctuation.dollar.js + pop: true + - match: '{{identifier}}' + scope: variable.other.readwrite.js + pop: true + - match: "'" + scope: punctuation.definition.string.begin.js + set: + - meta_include_prototype: false + - meta_scope: meta.string.js string.quoted.single.js + - meta_content_scope: variable.other.readwrite.js + - match: \' + scope: punctuation.definition.string.end.js + pop: true + - match: \n + scope: invalid.illegal.newline.js + pop: true + - include: string-content + - match: '"' + scope: punctuation.definition.string.begin.js + set: + - meta_include_prototype: false + - meta_scope: meta.string.js string.quoted.double.js + - meta_content_scope: variable.other.readwrite.js + - match: \" + scope: punctuation.definition.string.end.js + pop: true + - match: \n + scope: invalid.illegal.newline.js + pop: true + - include: string-content + - match: (#)({{identifier}}) + captures: + 1: punctuation.definition.variable.js + 2: variable.other.readwrite.js + + - match: (?=\[) + push: computed-property-name + + - include: else-pop + + object-property-base: + - match: '{{dollar_only_identifier}}' + scope: meta.property.object.dollar.only.js punctuation.dollar.js + pop: true + - match: '{{dollar_identifier}}' + scope: meta.property.object.dollar.js + captures: + 1: punctuation.dollar.js + pop: true + - match: '{{identifier}}' + scope: meta.property.object.js + pop: true + - match: '{{identifier_part}}+{{identifier_break}}' + scope: invalid.illegal.illegal-identifier.js + pop: true + - match: (#)({{identifier}}) + captures: + 1: punctuation.definition.variable.js + 2: meta.property.object.js + pop: true + + function-initializer: + - meta_scope: meta.function.declaration.js + - match: '=' + scope: keyword.operator.assignment.js + set: + - meta_content_scope: meta.function.declaration.js + - include: expression-no-comma + + - include: else-pop + + flow-type-annotation-optional: + - match: \?(?=:) + scope: storage.modifier.optional.js + - include: flow-type-annotation + + flow-type-module-contents: + - match: \} + scope: punctuation.section.block.end.js + pop: true + - include: main + + jsx-html-escapes: + - match: (&)#?[[:alnum:]]+(;) + scope: constant.character.escape.js + captures: + 1: punctuation.definition.entity.js + 2: punctuation.definition.entity.js + + property-access: + - match: (\.\?)?(\[) + captures: + 1: punctuation.accessor.js + 2: punctuation.section.brackets.begin.js + push: + - meta_scope: meta.brackets.js + - match: \] + scope: punctuation.section.brackets.end.js + pop: true + - match: (?=\S) + push: expression + + - match: \.(?:\?)? + scope: punctuation.accessor.js + push: + - match: (?={{identifier}}\s*(?:\.\?)?\() + set: + - call-method-meta + - function-call-arguments + - call-path + - object-property + - include: object-property + + language-identifiers: + - match: arguments{{identifier_break}} + scope: variable.language.arguments.js + pop: true + - match: super{{identifier_break}} + scope: variable.language.super.js + pop: true + - match: this{{identifier_break}} + scope: variable.language.this.js + pop: true + - match: globalThis{{identifier_break}} + scope: variable.language.global.js + pop: true + + # These three are ordinary variables, not literals! + - match: undefined{{identifier_break}} + scope: constant.language.undefined.js + pop: true + - match: NaN{{identifier_break}} + scope: constant.language.nan.js + pop: true + - match: Infinity{{identifier_break}} + scope: constant.language.infinity.js + pop: true + + function-declaration-identifiers: + - match: (?={{identifier}}\s*\.) + push: + - expect-dot-accessor + - function-declaration-identifiers-expect-class + - match: prototype{{identifier_break}} + scope: support.constant.prototype.js + pop: true + - match: (?=#?{{identifier}}) + set: + - function-name-meta + - literal-variable-base + + export-item: + - match: \{ + scope: punctuation.section.block.begin.js + set: export-brace + - match: '{{non_reserved_identifier}}' + scope: variable.other.readwrite.js + pop: true + - match: \* + scope: constant.other.js + pop: true + - include: else-pop + + function-parameter-binding-pattern: + - match: '' + set: + - - include: flow-type-annotation-optional + - - include: function-parameter-binding-name + - include: function-parameter-binding-array-destructuring + - include: function-parameter-binding-object-destructuring + - include: else-pop + + flow-type-end: + - include: flow-type-operators + - match: (?=<) + push: flow-type-generic-arguments + - include: else-pop + + function-block: + - match: \{ + scope: punctuation.section.block.begin.js + set: + - meta_scope: meta.block.js + - match: \} + scope: punctuation.section.block.end.js + pop: true + - include: statements + + support-property-ecma-date: + - match: (?:now|parse|UTC){{identifier_break}} + scope: support.function.builtin.js + pop: true + + support-variable-ecma: + - match: Array{{identifier_break}} + scope: support.class.builtin.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-ecma-array + - include: object-property + - include: else-pop + - include: else-pop + + - match: ArrayBuffer{{identifier_break}} + scope: support.class.builtin.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-ecma-arraybuffer + - include: object-property + - include: else-pop + - include: else-pop + + - match: Atomics{{identifier_break}} + scope: support.constant.builtin.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-ecma-atomics + - include: object-property + - include: else-pop + - include: else-pop + + - match: BigInt{{identifier_break}} + scope: support.class.builtin.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-ecma-bigint + - include: object-property + - include: else-pop + - include: else-pop + + - match: Date{{identifier_break}} + scope: support.class.builtin.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-ecma-date + - include: object-property + - include: else-pop + - include: else-pop + + - match: JSON{{identifier_break}} + scope: support.constant.builtin.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-ecma-json + - include: object-property + - include: else-pop + - include: else-pop + + - match: Math{{identifier_break}} + scope: support.constant.builtin.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-ecma-math + - include: object-property + - include: else-pop + - include: else-pop + + - match: Number{{identifier_break}} + scope: support.class.builtin.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-ecma-number + - include: object-property + - include: else-pop + - include: else-pop + + - match: Object{{identifier_break}} + scope: support.class.builtin.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-ecma-object + - include: object-property + - include: else-pop + - include: else-pop + + - match: Promise{{identifier_break}} + scope: support.class.builtin.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-ecma-promise + - include: object-property + - include: else-pop + - include: else-pop + + - match: Proxy{{identifier_break}} + scope: support.class.builtin.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-ecma-proxy + - include: object-property + - include: else-pop + - include: else-pop + + - match: Reflect{{identifier_break}} + scope: support.constant.builtin.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-ecma-reflect + - include: object-property + - include: else-pop + - include: else-pop + + - match: String{{identifier_break}} + scope: support.class.builtin.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-ecma-string + - include: object-property + - include: else-pop + - include: else-pop + + - match: Symbol{{identifier_break}} + scope: support.class.builtin.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-ecma-symbol + - include: object-property + - include: else-pop + - include: else-pop + + - match: |- + (?x: + (?: + BigInt64| + BigUint64| + Float(?:32|64)| + Int(?:8|16|32)| + Uint(?:8|16|32|32Clamped) + ) + Array{{identifier_break}} + ) + scope: support.class.builtin.js + set: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + set: + - include: support-property-ecma-typedarray + - include: object-property + - include: else-pop + - include: else-pop + + # Classes with no constructor properties + - match: (?:Boolean|DataView|Function|Map|RegExp|Set|WeakMap|WeakSet){{identifier_break}} + scope: support.class.builtin.js + pop: true + - match: (?:Eval|Range|Reference|Syntax|Type|URI)?Error{{identifier_break}} + scope: support.class.builtin.js + pop: true + + - match: (?:eval|isFinite|isNaN|parseFloat|parseInt|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent){{identifier_break}} + scope: support.function.js + pop: true + + flow-type-module-meta: + - meta_scope: meta.module.js + - include: immediately-pop + + variable-binding-spread: + - match: \.\.\. + scope: keyword.operator.spread.js + push: variable-binding-pattern + + constants: + - match: true{{identifier_break}} + scope: constant.language.boolean.true.js + pop: true + - match: false{{identifier_break}} + scope: constant.language.boolean.false.js + pop: true + - match: null{{identifier_break}} + scope: constant.language.null.js + pop: true + + variable-binding-object-key: + - match: '{{identifier}}(?=\s*:)' + pop: true + - include: literal-string + - include: computed-property-name + - include: variable-binding-name + - include: else-pop + + flow-type: + - match: '' + set: + - flow-type-end + - flow-type-begin + + flow-type-list: + - include: comma-separator + - match: (?=\S) + push: flow-type + + for-condition-end: + - meta_scope: meta.group.js + + - match: \) + scope: punctuation.section.group.js + pop: true + + expression-no-comma: + - meta_include_prototype: false + - match: '' + set: [expression-end-no-comma, expression-begin] + + regexp-complete: + - match: / + scope: punctuation.definition.string.begin.js + set: regexp + + jsx-expect-tag-end: + - meta_content_scope: meta.tag.js + - match: '>' + scope: meta.tag.js punctuation.definition.tag.end.js + pop: true + - include: else-pop + + expect-label: + - meta_include_prototype: false + - match: (?={{nothing}}{{identifier}}) + set: + - match: '{{non_reserved_identifier}}' + scope: variable.label.js + pop: true + - match: '{{identifier}}' + scope: invalid.illegal.identifier.js variable.label.js + pop: true + - include: else-pop + - include: immediately-pop + + function-assignment: + - match: |- + (?x)(?= + (?:{{identifier}} \s* \. \s*)* + {{identifier}} + \s* = \s* + {{either_func_lookahead}} + ) + set: + - function-initializer + - function-declaration-identifiers + + support-property-ecma-promise: + - match: (?:all|race|reject|resolve|allSettled|any){{identifier_break}} + scope: support.function.builtin.js + pop: true + + constructor-meta: + - meta_include_prototype: false + - meta_scope: meta.function-call.constructor.js + - include: immediately-pop + + class-extends: + - match: extends{{identifier_break}} + scope: storage.modifier.extends.js + set: + - flow-type-generic-arguments + - inherited-class-expression-end + - inherited-class-expression-begin + - include: else-pop + + expect-dot-accessor: + - match: '{{dot_accessor}}' + scope: punctuation.accessor.js + pop: true + - include: else-pop + + styled-component-begin: + - match: '{{identifier}}(?=\s*\()' + scope: variable.function.js + pop: true + + - match: '{{identifier}}(?=\s*`)' + scope: variable.function.tagged-template.js + pop: true + + - match: '{{identifier}}' + scope: variable.other.readwrite.js + pop: true + + - include: else-pop + jsx-tag: + - match: < + scope: punctuation.definition.tag.begin.js + set: + - jsx-meta + - jsx-tag-attributes-top + + flow-type-import-type: + - match: type{{identifier_break}} + scope: storage.type.js + + - match: typeof{{identifier_break}} + scope: keyword.operator.js + + prefix-operators: + - match: '~' + scope: keyword.operator.bitwise.js + - match: '!(?!=)' + scope: keyword.operator.logical.js + - match: -- + scope: keyword.operator.arithmetic.js + - match: \+\+ + scope: keyword.operator.arithmetic.js + - match: \.\.\. + scope: keyword.operator.spread.js + - match: \+|\- + scope: keyword.operator.arithmetic.js + - match: (?:delete|typeof|void){{identifier_break}} + scope: keyword.operator.js + + ternary-operator: + - match: \? + scope: keyword.operator.ternary.js + set: + - ternary-operator-expect-colon + - expression-no-comma + + call-method-name: + - include: support-property + - match: '{{identifier}}' + scope: variable.function.js + pop: true + - include: else-pop + + expect-case-colon: + - match: ':' + scope: punctuation.separator.js + pop: true + - include: else-pop + + either-function-declaration: + - match: (?={{func_lookahead}}) + set: function-declaration + - match: (?={{arrow_func_lookahead}}) + set: arrow-function-declaration + + flow-type-tuple: + - match: \[ + scope: punctuation.section.brackets.begin.js + set: + - meta_scope: meta.sequence.js + - match: \] + scope: punctuation.section.brackets.end.js + pop: true + - include: flow-type-list + + support-property-ecma: + - match: constructor{{identifier_break}} + scope: variable.language.constructor.js + pop: true + - match: prototype{{identifier_break}} + scope: support.constant.prototype.js + pop: true + + - match: (?:hasOwnProperty|isPrototypeOf|propertyIsEnumerable|toLocaleString|toString|valueOf){{identifier_break}} + scope: support.function.js + pop: true + + # Annex B + - match: __proto__{{identifier_break}} + scope: invalid.deprecated.js variable.language.prototype.js + pop: true + - match: (?:__defineGetter__|__defineSetter__|__lookupGetter__){{identifier_break}} + scope: invalid.deprecated.js support.function.js + pop: true + + import-expression-end: + - match: (?=\() + set: function-call-arguments + - match: \. + scope: punctuation.accessor.js + set: + - match: meta{{identifier_break}} + scope: variable.language.import.js + pop: true + - include: object-property + - include: else-pop + object-property: + - match: |- + (?x)(?= + {{identifier}} + \s* = \s* + {{either_func_lookahead}} + ) + set: + - function-initializer + - function-name-meta + - object-property-base + + - include: support-property + + - match: (?={{identifier}}\s*(?:\.\?)?\() + set: call-method-name + + - include: object-property-base + - include: else-pop + + decorator-name: + - match: '{{identifier}}{{left_expression_end_lookahead}}' + scope: variable.annotation.js + pop: true + + decorator-meta: + - meta_include_prototype: false + - meta_scope: meta.annotation.js + - include: immediately-pop + +scope: source.js +variables: + block_comment: (?:/\*{{block_comment_contents}}\*/) + non_reserved_identifier: (?:(?!{{reserved_word}}){{identifier}}) + dot_accessor: |- + (?x: # Match . and .?, but not .?( or .?[ + \. + (?! \? [\[(] ) + \?? + ) + line_continuation_lookahead: >- + (?x:(?= + \s* + (?! \+\+ | -- ) + (?= + != | + [-+*/%><=&|^\[(;,.:?] | + (?:in|instanceof){{identifier_break}} + ) + )) + oct_digit: '[0-7_]' + identifier_escape: (?:\\u(?:\h{4}|\{\h+\})) + jsx_identifier_part: (?:{{identifier_part}}|-) + jsx_identifier_break: (?!{{jsx_identifier_part}}) + jsx_identifier: '{{identifier_start}}{{jsx_identifier_part}}*{{jsx_identifier_break}}' + identifier_start: (?:[_$\p{L}\p{Nl}]|{{identifier_escape}}) + identifier_break: (?!{{identifier_part}}) + either_func_lookahead: (?:{{func_lookahead}}|{{arrow_func_lookahead}}) + hex_digit: '[\h_]' + line_ending_ahead: (?={{nothing}}(?:/\*{{block_comment_contents}})?$) + block_comment_contents: (?:(?:[^*]|\*(?!/))*) + bin_digit: '[01_]' + property_name: >- + (?x: + {{identifier}} + | '(?:[^\\']|\\.)*' + | "(?:[^\\"]|\\.)*" + | \[ .* \] + ) + left_expression_end_lookahead: (?!\s*[.\[\(]) + class_element_name: |- + (?x: + \+? + (?: + \*? + {{property_name}} + | \#{{identifier}} + ) + ) + dec_exponent: (?:[Ee](?:[-+]|(?![-+])){{dec_digit}}*) + dollar_identifier: (?:(\$){{identifier_part}}*{{identifier_break}}) + dollar_only_identifier: (?:\${{identifier_break}}) + arrow_func_lookahead: |- + (?x)(?: + \s*(async\s*)? + (?: + {{identifier}} + |\( (?: [^()]|\([^()]*\) )* \) + ) + (?: + \s*: + \s*{{identifier}} + )? + \s*=> + ) + constant_identifier: (?:[[:upper:]]{{identifier_part}}*{{identifier_break}}) + reserved_word: |- + (?x: + break|case|catch|class|const|continue|debugger|default|delete|do|else| + export|extends|finally|for|function|if|import|in|instanceof|new|return| + super|switch|this|throw|try|typeof|var|void|while|with|yield| + enum| + null|true|false + ){{identifier_break}} + binding_pattern_lookahead: (?:{{identifier}}|\[|\{) + identifier: (?:{{identifier_start}}{{identifier_part}}*{{identifier_break}}) + func_lookahead: |- + (?x: + \s* + (?:async{{identifier_break}}{{nothing}})? + function{{identifier_break}} + ) + method_lookahead: |- + (?x)(?= + (?: get|set|async ){{identifier_break}}(?!\s*:) + | \* + | {{property_name}} \s* (?:\(|<) + ) + dec_digit: '[0-9_]' + identifier_part: (?:[_$\p{L}\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{200C}\x{200D}]|{{identifier_escape}}) + nothing: (?x:(?:\s+|{{block_comment}})*) + dec_integer: (?:0|[1-9]{{dec_digit}}*) +file_extensions: + - js + - jsx + - es6 + - babel +name: JavaScript (Babel) diff --git a/JavaScript (Babel).tmLanguage b/JavaScript (Babel).tmLanguage deleted file mode 100644 index 16a1ff6..0000000 --- a/JavaScript (Babel).tmLanguage +++ /dev/null @@ -1,4005 +0,0 @@ - - - - - fileTypes - - js - mjs - jsx - babel - es6 - cjs - - firstLineMatch - ^#!\s*/.*\b(node|js)$\n? - name - JavaScript (Babel) - patterns - - - include - #core - - - repository - - brackets - - patterns - - - include - #round-brackets - - - include - #square-brackets - - - include - #curly-brackets - - - - class-method-definition - - patterns - - - begin - (@@[_$a-zA-Z][$\w]*|static|return)(?=\s*[<(])|(?=\s*<) - beginCaptures - - 1 - - name - keyword.operator.flowtype.js - - - end - (?=\s*[;{]) - name - meta.short-method.flowtype.js - patterns - - - include - #flowtype-polymorph - - - include - #function-declaration-parameters - - - include - #flowtype-annotation - - - include - #comments - - - include - #curly-brackets - - - - - begin - (?<=[]"'])\s*(?=[<(]) - end - (?=\s*[;{]) - name - meta.class-method.computed.js - patterns - - - include - #flowtype-polymorph - - - include - #function-declaration-parameters - - - include - #flowtype-annotation - - - include - #comments - - - include - #curly-brackets - - - - - begin - (?x) - ((?>get|set)\s+) - (?> - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - (([_$a-zA-Z][$\w]*|\d+)) - )(?=\s*[<(]) - beginCaptures - - 1 - - name - storage.type.js - - 10 - - name - string.unquoted.js - - 11 - - name - entity.name.function.js - - 2 - - name - string.quoted.js - - 3 - - name - punctuation.definition.string.begin.js - - 4 - - name - entity.name.function.js - - 5 - - name - punctuation.definition.string.end.js - - 6 - - name - string.quoted.js - - 7 - - name - punctuation.definition.string.begin.js - - 8 - - name - entity.name.function.js - - 9 - - name - punctuation.definition.string.end.js - - - end - (?=\s*[;{]) - name - meta.class-accessor.js - patterns - - - include - #flowtype-polymorph - - - include - #function-declaration-parameters - - - include - #flowtype-annotation - - - include - #comments - - - include - #curly-brackets - - - - - begin - (?x) - (?> - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - (([_$a-zA-Z][$\w]*|\d+)) - )(?=\s*[<(]) - beginCaptures - - 1 - - name - string.quoted.js - - 10 - - name - entity.name.function.js - - 2 - - name - punctuation.definition.string.begin.js - - 3 - - name - entity.name.function.js - - 4 - - name - punctuation.definition.string.end.js - - 5 - - name - string.quoted.js - - 6 - - name - punctuation.definition.string.begin.js - - 7 - - name - entity.name.function.js - - 8 - - name - punctuation.definition.string.end.js - - 9 - - name - string.unquoted.js - - - end - (?=\s*[;{]) - name - meta.class-method.js - patterns - - - include - #flowtype-polymorph - - - include - #function-declaration-parameters - - - include - #flowtype-annotation - - - include - #comments - - - include - #curly-brackets - - - - - - class-method-storage - - patterns - - - match - (?<!\.)\b(?>static|declare)\b - name - storage.modifier.js - - - match - (?<!\.)\b(async)\b - name - storage.type.js - - - match - (?<!\.)\b(get|set)\b(?!\s*\() - name - storage.type.js - - - match - \* - name - keyword.generator.asterisk.js - - - - class-properties - - patterns - - - begin - ([_$a-zA-Z][$\w]*)(?=\s*[:=]) - beginCaptures - - 1 - - name - variable.other.property.js - - - end - (?=\s*[;}]) - name - meta.class.property.js - patterns - - - include - #flowtype-annotation - - - include - #expression - - - - - - comments - - patterns - - - begin - /\*\*(?!/) - captures - - 0 - - name - punctuation.definition.comment.js - - - end - \*/ - name - comment.block.documentation.js - - - begin - /\* - beginCaptures - - 0 - - name - punctuation.definition.comment.begin.js - - - end - \*/ - endCaptures - - 0 - - name - punctuation.definition.comment.end.js - - - name - comment.block.js - - - captures - - 0 - - name - punctuation.definition.comment.js - - - match - (?><!--|-->) - name - comment.block.html.js - - - captures - - 1 - - name - punctuation.definition.comment.js - - - match - (//).*$\n? - name - comment.line.double-slash.js - - - captures - - 1 - - name - punctuation.definition.comment.js - - - match - ^(#!).*$\n? - name - comment.line.shebang.js - - - - core - - patterns - - - include - #literal-function-labels - - - include - #literal-arrow-function-labels - - - include - #literal-labels - - - include - #literal-for - - - include - #literal-switch - - - include - #styled-components - - - include - #graphql - - - include - #expression - - - include - #literal-punctuation - - - - curly-brackets - - patterns - - - begin - { - beginCaptures - - 0 - - name - meta.brace.curly.begin.js - - - end - } - endCaptures - - 0 - - name - meta.brace.curly.end.js - - - name - meta.group.braces.curly.js - patterns - - - include - $self - - - - - - es7-decorators - - patterns - - - captures - - 1 - - name - punctuation.definition.tag.js - - 2 - - name - entity.name.tag.js - - - match - (?x) - (@)([_$a-zA-Z][$\w]*)\b - name - tag.decorator.js - - - - expression - - patterns - - - include - #merge-conflits - - - include - #literal-regexp - - - include - #literal-jsx - - - include - #es7-decorators - - - include - #support-class - - - include - #support-other - - - include - #literal-function - - - include - #literal-arrow-function - - - include - #literal-prototype - - - include - #literal-keywords - - - include - #literal-method - - - include - #literal-module - - - include - #literal-class - - - include - #flowtype-declaration - - - include - #literal-number - - - include - #literal-template-string - - - include - #literal-string - - - include - #literal-language-constant - - - include - #literal-language-variable - - - include - #literal-constructor - - - include - #literal-method-call - - - include - #literal-function-call - - - include - #comments - - - include - #brackets - - - include - #literal-operators - - - include - #literal-variable - - - - flowtype-annotation - - patterns - - - applyEndPatternLast - 1 - begin - (?:(\?)\s*)?(:) - beginCaptures - - 1 - - name - keyword.operator.flowtype.optional.js - - 2 - - name - keyword.operator.flowtype.annotation.js - - - end - (?=\S) - name - meta.flowtype.annotation.js - patterns - - - include - #flowtype-tokens - - - - - - flowtype-brackets - - patterns - - - begin - { - beginCaptures - - 0 - - name - punctuation.section.flowtype.begin.js - - - end - } - endCaptures - - 0 - - name - punctuation.section.flowtype.end.js - - - patterns - - - include - #flowtype-tokens - - - - - - flowtype-declaration - - patterns - - - match - (?<!\.)\b(declare)\b - name - support.type.declare.flowtype.js - - - begin - (?<!\.)\b(type)\b(?=\s*[_$a-zA-Z]) - beginCaptures - - 1 - - name - support.type.type.flowtype.js - - - end - (?=\s*(;|from)) - name - meta.type.flowtype.js - patterns - - - include - #flowtype-tokens - - - - - begin - (?<!\.)\b(type)\b(?=\s*{) - beginCaptures - - 1 - - name - support.type.type.flowtype.js - - - end - (?<=}) - name - meta.type.flowtype.js - patterns - - - include - #comments - - - include - #flowtype-brackets - - - include - #flowtype-polymorph - - - match - ([_$a-zA-Z][$\w]*) - name - entity.name.type.js - - - - - - flowtype-identifier - - patterns - - - include - #support-class - - - match - \b(?:any|bool|boolean|mixed|number|string|void)\b - name - constant.other.primitve.flowtype.js - - - match - [_$a-zA-Z][$\w]* - name - variable.other.flowtype.js - - - match - \? - name - keyword.operator.flowtype.optional.js - - - - flowtype-polymorph - - begin - < - beginCaptures - - 0 - - name - punctuation.section.flowtype.begin.js - - - end - > - endCaptures - - 0 - - name - punctuation.section.flowtype.end.js - - - name - meta.flowtype.polymorph.js - patterns - - - include - #flowtype-tokens - - - - flowtype-tokens - - patterns - - - begin - (?<=[:?|&=])(?=\s*{) - end - (?<=}) - patterns - - - include - #flowtype-brackets - - - - - captures - - 1 - - name - keyword.operator.flowtype.other.js - - - match - \s*([|&])\s* - name - meta.flowtype.set.js - - - match - [*:?&|.]|\.\.\.|\b(typeof)\b - name - keyword.operator.flowtype.other.js - - - begin - < - beginCaptures - - 0 - - name - punctuation.section.flowtype.begin.js - - - end - > - endCaptures - - 0 - - name - punctuation.section.flowtype.end.js - - - patterns - - - include - #flowtype-tokens - - - - - begin - \[ - beginCaptures - - 0 - - name - punctuation.section.flowtype.begin.js - - - end - \] - endCaptures - - 0 - - name - punctuation.section.flowtype.end.js - - - patterns - - - include - #flowtype-tokens - - - - - begin - \( - beginCaptures - - 0 - - name - punctuation.section.flowtype.begin.js - - - end - \) - endCaptures - - 0 - - name - punctuation.section.flowtype.end.js - - - patterns - - - include - #flowtype-tokens - - - - - begin - => - beginCaptures - - 0 - - name - keyword.operator.flowtype.js - - - end - (?<=}|[_$a-zA-Z]) - name - meta.flowtype.function.js - patterns - - - include - #flowtype-brackets - - - include - #flowtype-identifier - - - include - #comments - - - - - include - #flowtype-identifier - - - include - #literal-string - - - include - #comments - - - - function-declaration-parameters - - patterns - - - begin - \( - beginCaptures - - 0 - - name - punctuation.definition.parameters.begin.js - - - end - \) - endCaptures - - 0 - - name - punctuation.definition.parameters.end.js - - - patterns - - - include - #comments - - - include - #flowtype-annotation - - - match - (?<!\.)\.\.\. - name - keyword.operator.spread.js - - - match - ([_$a-zA-Z][$\w]*) - name - variable.parameter.function.js - - - match - , - name - punctuation.separator.parameter.function.js - - - begin - = - beginCaptures - - 0 - - name - keyword.operator.assignment.js - - - end - (?=[,)]) - name - meta.parameter.optional.js - patterns - - - include - #expression - - - - - - - - graphql - - patterns - - - begin - \s*+gql` - end - ` - name - meta.graphql.js - patterns - - - include - source.graphql - - - begin - \${ - end - } - name - js - patterns - - - include - #core - - - - - - - begin - \s*+`#graphql - end - ` - name - meta.graphql.js - patterns - - - include - source.graphql - - - begin - \${ - end - } - name - js - patterns - - - include - #core - - - - - - - - jsx-attribute-assignment - - match - = - name - keyword.operator.assignment.jsx - - jsx-attribute-name - - match - [_$a-zA-Z][-$\w]* - name - entity.other.attribute-name.jsx - - jsx-attributes - - patterns - - - include - #jsx-attribute-name - - - include - #jsx-attribute-assignment - - - include - #jsx-string-quoted - - - include - #jsx-evaluated-code - - - include - #comments - - - - jsx-entities - - patterns - - - match - &(?:[a-zA-Z0-9]+|#\d+|#x\h+); - name - constant.character.entity.jsx - - - match - &\S*; - name - invalid.illegal.bad-ampersand.jsx - - - - jsx-evaluated-code - - begin - { - beginCaptures - - 0 - - name - punctuation.section.embedded.begin.jsx - - - end - } - endCaptures - - 0 - - name - punctuation.section.embedded.end.jsx - - - name - meta.embedded.expression.jsx - patterns - - - include - #expression - - - - jsx-string-quoted - - begin - (["']) - beginCaptures - - 0 - - name - punctuation.definition.string.begin.jsx - - - end - \1 - endCaptures - - 0 - - name - punctuation.definition.string.end.jsx - - - name - string.quoted.jsx - patterns - - - include - #jsx-entities - - - - jsx-tag-end - - begin - > - beginCaptures - - 0 - - name - meta.tag.jsx punctuation.definition.tag.end.jsx - - - end - (?=</) - patterns - - - include - #jsx-tag-start - - - include - #jsx-evaluated-code - - - include - #jsx-entities - - - - jsx-tag-start - - patterns - - - begin - (<)([_$a-zA-Z][-$:.\w]*[$\w]*) - beginCaptures - - 1 - - name - meta.tag.jsx punctuation.definition.tag.begin.jsx - - 2 - - name - meta.tag.jsx entity.name.tag.jsx - - - end - (</)(\2)(>)|(/>) - endCaptures - - 1 - - name - meta.tag.jsx punctuation.definition.tag.begin.jsx - - 2 - - name - meta.tag.jsx entity.name.tag.jsx - - 3 - - name - meta.tag.jsx punctuation.definition.tag.end.jsx - - 4 - - name - meta.tag.jsx punctuation.definition.tag.end.jsx - - - patterns - - - include - #jsx-tag-end - - - include - #jsx-attributes - - - - - match - < - name - invalid.illegal.tag.incomplete.jsx - - - - literal-arrow-function - - patterns - - - begin - (?x) - (?:([_$a-zA-Z][$\w]*)\s*(=)\s*)? - (?:\b(async)\s+)? - (?=(\((?>(?>[^()]+)|\g<-1>)*\))\s*(=>)) - beginCaptures - - 1 - - name - entity.name.function.js - - 2 - - name - keyword.operator.assignment.js - - 3 - - name - storage.type.js - - - end - (?<=\))\s*(=>) - endCaptures - - 1 - - name - storage.type.function.arrow.js - - - name - meta.function.arrow.js - patterns - - - include - #function-declaration-parameters - - - - - captures - - 1 - - name - entity.name.function.js - - 2 - - name - keyword.operator.assignment.js - - 3 - - name - storage.type.js - - 4 - - name - variable.parameter.function.js - - 5 - - name - storage.type.function.arrow.js - - - match - (?x) - (?:([_$a-zA-Z][$\w]*)\s*(=)\s*)? - (?:(async)\s+)? - \b([_$a-zA-Z][$\w]*)\s*(=>) - name - meta.function.arrow.js - - - begin - (?x) - (\b_?[A-Z][$\w]*)? - (\.)(prototype) - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(async)? - \s*(?=(\((?>(?>[^()]+)|\g<-1>)*\))\s*(=>)) - beginCaptures - - 1 - - name - entity.name.class.js - - 2 - - name - keyword.operator.accessor.js - - 3 - - name - variable.language.prototype.js - - 4 - - name - keyword.operator.accessor.js - - 5 - - name - entity.name.function.js - - 6 - - name - keyword.operator.assignment.js - - 7 - - name - storage.type.js - - - end - (?<=\))\s*(=>) - endCaptures - - 1 - - name - storage.type.function.arrow.js - - - name - meta.prototype.function.arrow.js - patterns - - - include - #function-declaration-parameters - - - - - captures - - 1 - - name - entity.name.class.js - - 2 - - name - keyword.operator.accessor.js - - 3 - - name - variable.language.prototype.js - - 4 - - name - keyword.operator.accessor.js - - 5 - - name - entity.name.function.js - - 6 - - name - keyword.operator.assignment.js - - 7 - - name - storage.type.js - - 8 - - name - variable.parameter.function.js - - 9 - - name - storage.type.function.arrow.js - - - match - (?x) - (\b_?[A-Z][$\w]*)? - (\.)(prototype) - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(async)? - \s*\b([_$a-zA-Z][$\w]*)\s*(=>) - name - meta.prototype.function.arrow.js - - - begin - (?x) - (\b_?[A-Z][$\w]*)? - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(async)? - \s*(?=(\((?>(?>[^()]+)|\g<-1>)*\))\s*(=>)) - beginCaptures - - 1 - - name - entity.name.class.js - - 2 - - name - keyword.operator.accessor.js - - 3 - - name - entity.name.function.js - - 4 - - name - keyword.operator.assignment.js - - 5 - - name - storage.type.js - - - end - (?<=\))\s*(=>) - endCaptures - - 1 - - name - storage.type.function.arrow.js - - - name - meta.function.static.arrow.js - patterns - - - include - #function-declaration-parameters - - - - - captures - - 1 - - name - entity.name.class.js - - 2 - - name - keyword.operator.accessor.js - - 3 - - name - entity.name.function.js - - 4 - - name - keyword.operator.assignment.js - - 5 - - name - storage.type.js - - 6 - - name - variable.parameter.function.js - - 7 - - name - storage.type.function.arrow.js - - - match - (?x) - (\b_?[A-Z][$\w]*)? - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(async)? - \s*\b([_$a-zA-Z][$\w]*)\s*(=>) - name - meta.function.static.arrow.js - - - - literal-arrow-function-labels - - patterns - - - begin - (?x) - (?> - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - (([_$a-zA-Z][$\w]*|\d+)) - ) - \s*(:) - \s*(?:\b(async)\s+)? - \s*(?=(\((?>(?>[^()]+)|\g<-1>)*\))\s*(=>)) - beginCaptures - - 1 - - name - string.quoted.js - - 10 - - name - entity.name.function.js - - 11 - - name - punctuation.separator.key-value.js - - 12 - - name - storage.type.js - - 2 - - name - punctuation.definition.string.begin.js - - 3 - - name - entity.name.function.js - - 4 - - name - punctuation.definition.string.end.js - - 5 - - name - string.quoted.js - - 6 - - name - punctuation.definition.string.begin.js - - 7 - - name - entity.name.function.js - - 8 - - name - punctuation.definition.string.end.js - - 9 - - name - string.unquoted.js - - - end - (?<=\))\s*(=>) - endCaptures - - 1 - - name - storage.type.function.arrow.js - - - name - meta.function.json.arrow.js - patterns - - - include - #function-declaration-parameters - - - - - captures - - 1 - - name - string.quoted.js - - 10 - - name - entity.name.function.js - - 11 - - name - punctuation.separator.key-value.js - - 12 - - name - storage.type.js - - 13 - - name - variable.parameter.function.js - - 14 - - name - storage.type.function.arrow.js - - 2 - - name - punctuation.definition.string.begin.js - - 3 - - name - entity.name.function.js - - 4 - - name - punctuation.definition.string.end.js - - 5 - - name - string.quoted.js - - 6 - - name - punctuation.definition.string.begin.js - - 7 - - name - entity.name.function.js - - 8 - - name - punctuation.definition.string.end.js - - 9 - - name - string.unquoted.js - - - match - (?x) - (?> - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - (([_$a-zA-Z][$\w]*|\d+)) - ) - \s*(:) - \s*(?:\b(async)\s+)? - \s*\b([_$a-zA-Z][$\w]*)\s*(=>) - name - meta.function.json.arrow.js - - - - literal-class - - patterns - - - begin - (?<!\.)\b(?:(class)|(interface))\b - beginCaptures - - 1 - - name - storage.type.class.js - - 2 - - name - storage.type.interface.flowtype.js - - - end - \} - endCaptures - - 0 - - name - meta.brace.curly.end.js - - - name - meta.class.js - patterns - - - include - #comments - - - begin - ([_$a-zA-Z][$\w]*) - beginCaptures - - 0 - - name - entity.name.class.js - - - end - (?={) - patterns - - - include - #comments - - - include - #flowtype-polymorph - - - begin - (?<!\.)\b(extends)\b - beginCaptures - - 0 - - name - storage.type.extends.js - - - end - (?={) - name - meta.class.extends.js - patterns - - - include - #flowtype-polymorph - - - include - #expression - - - - - - - begin - \{ - beginCaptures - - 0 - - name - meta.brace.curly.begin.js - - - end - (?=}) - patterns - - - include - #es7-decorators - - - include - #class-properties - - - include - #class-method-definition - - - include - #class-method-storage - - - include - #brackets - - - include - #comments - - - - - - - - literal-constructor - - patterns - - - begin - (new)\s+(?=[_$a-zA-Z][$\w.]*) - beginCaptures - - 1 - - name - keyword.operator.new.js - - - end - (?![_$a-zA-Z][$\w.]*) - name - meta.instance.constructor.js - patterns - - - include - #support-class - - - include - #support-other - - - captures - - 2 - - name - variable.function.constructor.js - - - match - ([_$a-zA-Z][$\w.]*\.)?([_$a-zA-Z][$\w]*) - - - - - - literal-for - - patterns - - - begin - (?<!\.)\b(for)\b - beginCaptures - - 1 - - name - keyword.control.loop.js - - - end - \) - endCaptures - - 0 - - name - meta.brace.round.end.js - - - name - meta.for.js - patterns - - - include - #comments - - - begin - \( - beginCaptures - - 0 - - name - meta.brace.round.begin.js - - - end - (?=\)) - patterns - - - include - #literal-keyword-storage - - - include - #expression - - - include - #literal-punctuation - - - - - - - - literal-function - - patterns - - - begin - (?x) - (?:([_$a-zA-Z][$\w]*)\s*(=)\s*)? - (?:(async)\s+)? - (function)(?>\s*(\*)|(?=[\s(<])) - \s*([_$a-zA-Z][$\w]*)? - beginCaptures - - 1 - - name - entity.name.function.js - - 2 - - name - keyword.operator.assignment.js - - 3 - - name - storage.type.js - - 4 - - name - storage.type.function.js - - 5 - - name - keyword.generator.asterisk.js - - 6 - - name - entity.name.function.js - - - end - (?<=\)) - name - meta.function.js - patterns - - - include - #flowtype-polymorph - - - include - #function-declaration-parameters - - - - - begin - (?x) - (\b_?[A-Z][$\w]*)? - (\.)(prototype) - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(?:(async)\s+)? - \s*(function)(?>\s*(\*)|(?=[\s(<])) - \s*([_$a-zA-Z][$\w]*)?\s* - beginCaptures - - 1 - - name - entity.name.class.js - - 10 - - name - entity.name.function.js - - 2 - - name - keyword.operator.accessor.js - - 3 - - name - variable.language.prototype.js - - 4 - - name - keyword.operator.accessor.js - - 5 - - name - entity.name.function.js - - 6 - - name - keyword.operator.assignment.js - - 7 - - name - storage.type.js - - 8 - - name - storage.type.function.js - - 9 - - name - keyword.generator.asterisk.js - - - end - (?<=\)) - name - meta.function.prototype.js - patterns - - - include - #flowtype-polymorph - - - include - #function-declaration-parameters - - - - - begin - (?x) - (\b_?[A-Z][$\w]*)? - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(?:(async)\s+)? - \s*(function)(?>\s*(\*)|(?=[\s(<])) - \s*([_$a-zA-Z][$\w]*)?\s* - beginCaptures - - 1 - - name - entity.name.class.js - - 2 - - name - keyword.operator.accessor.js - - 3 - - name - entity.name.function.js - - 4 - - name - keyword.operator.assignment.js - - 5 - - name - storage.type.js - - 6 - - name - storage.type.function.js - - 7 - - name - keyword.generator.asterisk.js - - 8 - - name - entity.name.function.js - - - end - (?<=\)) - name - meta.function.static.js - patterns - - - include - #flowtype-polymorph - - - include - #function-declaration-parameters - - - - - - literal-function-call - - patterns - - - captures - - 1 - - name - variable.function.js - - 2 - - name - meta.group.braces.round.function.arguments.js - - - match - ([_$a-zA-Z][$\w]*)\s*(\(\s*\)) - name - meta.function-call.without-arguments.js - - - captures - - 1 - - name - variable.function.js - - - match - ([_$a-zA-Z][$\w]*)\s*(?=\() - name - meta.function-call.with-arguments.js - - - captures - - 1 - - name - variable.function.js - - - match - ([_$a-zA-Z][$\w]*)\s*(?=`) - name - meta.function-call.tagged-template.js - - - - literal-function-labels - - patterns - - - begin - (?x) - (?> - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - (([_$a-zA-Z][$\w]*|\d+)) - ) - \s*(:) - \s*(?:\b(async)\s+)? - \s*(function)(?>\s*(\*)|(?=[\s(<])) - \s*([_$a-zA-Z][$\w]*)? - beginCaptures - - 1 - - name - string.quoted.js - - 10 - - name - entity.name.function.js - - 11 - - name - punctuation.separator.key-value.js - - 12 - - name - storage.type.js - - 13 - - name - storage.type.function.js - - 14 - - name - keyword.generator.asterisk.js - - 15 - - name - entity.name.function.js - - 2 - - name - punctuation.definition.string.begin.js - - 3 - - name - entity.name.function.js - - 4 - - name - punctuation.definition.string.end.js - - 5 - - name - string.quoted.js - - 6 - - name - punctuation.definition.string.begin.js - - 7 - - name - entity.name.function.js - - 8 - - name - punctuation.definition.string.end.js - - 9 - - name - string.unquoted.js - - - end - (?<=\)) - name - meta.function.json.js - patterns - - - include - #flowtype-polymorph - - - include - #function-declaration-parameters - - - - - - literal-jsx - - begin - (?<=\(|\{|\[|,|&&|\|\||\?|:|=|=>|\Wreturn|^return|\Wdefault|^)(?=\s*<[_$a-zA-Z]) - contentName - meta.jsx.js - end - (?<=/>|>) - patterns - - - include - #jsx-tag-start - - - - literal-keyword-storage - - patterns - - - match - (?<!\.)\b(?>const|let|var)\b - name - storage.type.js - - - - literal-keywords - - patterns - - - include - #literal-keyword-storage - - - captures - - 1 - - name - keyword.control.flow.js - - 2 - - name - keyword.generator.asterisk.js - - - match - (?<!\.)\b((?>await|yield))\b(?:\s*(\*))? - - - match - (?<!\.)\b(return)\b - name - keyword.control.flow.js - - - match - (?<!\.)\b(?>if|else)\b - name - keyword.control.conditional.js - - - match - (?<!\.)\b(?>catch|finally|throw|try)\b - name - keyword.control.trycatch.js - - - match - (?<!\.)\b(?>break|continue|do|goto|while|case|default)\b - name - keyword.control.loop.js - - - match - (?<!\.)\b(?>enum|module|public|package|private|interface|protected)\b - name - keyword.other.reserved.js - - - match - (?<!\.)\b(debugger)\b - name - keyword.other.js - - - - literal-labels - - patterns - - - begin - (?x) - (?<!\?)(?<!\?\s)(?=(?> - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - )\s*:) - end - : - endCaptures - - 0 - - name - punctuation.separator.key-value.js - - - patterns - - - include - #literal-string - - - - - captures - - 1 - - name - string.unquoted.label.js - - 2 - - name - punctuation.separator.key-value.js - - - match - (?<!\.|\?|\?\s)([_$a-zA-Z][$\w]*)\s*(:) - name - constant.other.object.key.js - - - - literal-language-constant - - patterns - - - match - (?<!\.)\b(true)\b - name - constant.language.boolean.true.js - - - match - (?<!\.)\b(false)\b - name - constant.language.boolean.false.js - - - match - (?<!\.)\b(null)\b - name - constant.language.null.js - - - match - (?<!\.)\b(undefined)\b - name - constant.language.undefined.js - - - match - (?<!\.)\b(NaN)\b - name - constant.language.nan.js - - - - literal-language-variable - - patterns - - - match - (?<!(?<!\.\.)\.)\b(arguments)\b - name - variable.language.arguments.js - - - match - (?<!(?<!\.\.)\.)\b(super)\b - name - variable.language.super.js - - - match - (?<!(?<!\.\.)\.)\b(this)\b - name - variable.language.this.js - - - match - (?<!(?<!\.\.)\.)\b(self)\b - name - variable.language.self.js - - - match - (?<=\.)(__proto__)\b - name - variable.language.proto.js - - - match - (?<=\.)(constructor)\b - name - variable.language.constructor.js - - - match - (?<=\.)(prototype)\b - name - variable.language.prototype.js - - - - literal-method - - patterns - - - begin - (?x) - (?:\b(static)\s+)? - (?:\b(async)\s+)? - (?:(\*)\s*)? - (?> - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - (([_$a-zA-Z][$\w]*|\d+)) - ) - (?=\s*(\((?>(?>[^()]+)|\g<-1>)*\))(?>\s|/\*.*\*/)*\{) - beginCaptures - - 1 - - name - storage.type.js - - 10 - - name - entity.name.function.js - - 11 - - name - punctuation.definition.string.end.js - - 12 - - name - string.unquoted.js - - 13 - - name - entity.name.function.js - - 2 - - name - storage.type.js - - 3 - - name - keyword.generator.asterisk.js - - 4 - - name - string.quoted.js - - 5 - - name - punctuation.definition.string.begin.js - - 6 - - name - entity.name.function.js - - 7 - - name - punctuation.definition.string.end.js - - 8 - - name - string.quoted.js - - 9 - - name - punctuation.definition.string.begin.js - - - end - (?<=\)) - name - meta.method.js - patterns - - - include - #function-declaration-parameters - - - - - begin - (?x) - \b(?:(static)\s+)? - (get|set)\s+ - ([_$a-zA-Z][$\w]*|\d+)\s* - (?=(\((?>(?>[^()]+)|\g<-1>)*\))(?>\s|/\*.*\*/)*\{) - beginCaptures - - 1 - - name - storage.type.js - - 2 - - name - storage.type.accessor.js - - 3 - - name - entity.name.accessor.js - - - end - (?<=\)) - name - meta.accessor.js - patterns - - - include - #function-declaration-parameters - - - - - - literal-method-call - - patterns - - - captures - - 1 - - name - variable.other.class.js - - 2 - - name - keyword.operator.accessor.js - - 3 - - name - variable.function.js - - 4 - - name - meta.group.braces.round.function.arguments.js - - - match - (?x) - (?:(?<=\.)|\b) - ([A-Z][$\w]*)\s*(\.) - ([_$a-zA-Z][$\w]*)\s* - (\(\s*\)) - name - meta.function-call.static.without-arguments.js - - - captures - - 1 - - name - variable.other.class.js - - 2 - - name - keyword.operator.accessor.js - - 3 - - name - variable.function.js - - - match - (?x) - (?:(?<=\.)|\b) - ([A-Z][$\w]*)\s*(\.) - ([_$a-zA-Z][$\w]*)\s* - (?=\() - name - meta.function-call.static.with-arguments.js - - - captures - - 1 - - name - variable.function.js - - 2 - - name - meta.group.braces.round.function.arguments.js - - - match - (?x) - (?<=\.) - ([_$a-zA-Z][$\w]*)\s* - (\(\s*\)) - name - meta.function-call.method.without-arguments.js - - - captures - - 1 - - name - variable.function.js - - - match - (?x) - (?<=\.) - ([_$a-zA-Z][$\w]*)\s* - (?=\() - name - meta.function-call.method.with-arguments.js - - - - literal-module - - patterns - - - match - (?<!\.)\b(?>import|export|default|from|as)\b - name - keyword.operator.module.js - - - - literal-number - - patterns - - - match - (?i)(?:\B[-+]|\b)0x[0-9a-f]*\.(\B|\b[0-9]+) - name - invalid.illegal.numeric.hex.js - - - match - (?:\B[-+]|\b)0[0-9]+\.(\B|\b[0-9]+) - name - invalid.illegal.numeric.octal.js - - - match - (?xi) - (?:\B[-+])? - (?: - \b0b[0-1]*| # binary - \b0o[0-7]*| # octal - \b0x[0-9a-f]*| # hex - ( - \B\.[0-9]+| # e.g. .999 - \b[0-9]+(\.[0-9]*)? # e.g. 999.999, 999. or 999 - )(e[-+]?[0-9]+)? # e.g. e+123, E-123 - ) - name - constant.numeric.js - - - match - (?:\B[-+]|\b)(Infinity)\b - name - constant.language.infinity.js - - - - literal-operators - - patterns - - - match - (?<!\.)\b(?>delete|instanceof|in|new|of|typeof|void|with)\b - name - keyword.operator.js - - - match - (?x) - !(?!=)| # logical-not right-to-left right - && | # logical-and left-to-right both - \|\| # logical-or left-to-right both - name - keyword.operator.logical.js - - - match - (?x) - =(?!=) # assignment right-to-left both - name - keyword.operator.assignment.js - - - match - (?x) - %= | # assignment right-to-left both - &= | # assignment right-to-left both - \*= | # assignment right-to-left both - \+= | # assignment right-to-left both - -= | # assignment right-to-left both - /= | # assignment right-to-left both - \^= | # assignment right-to-left both - \|= | # assignment right-to-left both - <<= | # assignment right-to-left both - >>= | # assignment right-to-left both - >>>= # assignment right-to-left both - name - keyword.operator.assignment.augmented.js - - - match - (?x) - ~ | # bitwise-not right-to-left right - << | # bitwise-shift left-to-right both - >>> | # bitwise-shift left-to-right both - >> | # bitwise-shift left-to-right both - & | # bitwise-and left-to-right both - \^ | # bitwise-xor left-to-right both - \| # bitwise-or left-to-right both - name - keyword.operator.bitwise.js - - - match - (?x) - <= | # relational left-to-right both - >= | # relational left-to-right both - < | # relational left-to-right both - > # relational left-to-right both - name - keyword.operator.relational.js - - - match - (?x) - === | # equality left-to-right both - !== | # equality left-to-right both - == | # equality left-to-right both - != # equality left-to-right both - name - keyword.operator.comparison.js - - - match - (?x) - -- | # decrement n/a right-or-left - \+\+ | # increment n/a right-or-left - / | # division left-to-right both - % | # modulus left-to-right both - \* | # multiplication left-to-right both - \+ | # addition left-to-right both - - # subtraction left-to-right both - name - keyword.operator.arithmetic.js - - - match - [?:] - name - keyword.operator.ternary.js - - - match - (?<!\.)\.\.\. - name - keyword.operator.spread.js - - - match - \. - name - keyword.operator.accessor.js - - - - literal-prototype - - patterns - - - captures - - 1 - - name - entity.name.class.js - - 2 - - name - keyword.operator.accessor.js - - 3 - - name - variable.language.prototype.js - - 4 - - name - keyword.operator.assignment.js - - - match - ([_$a-zA-Z][$\w]*)(\.)(prototype)\s*(=)\s* - name - meta.prototype.declaration.js - - - captures - - 1 - - name - entity.name.class.js - - 2 - - name - keyword.operator.accessor.js - - 3 - - name - variable.language.prototype.js - - - match - ([_$a-zA-Z][$\w]*)(\.)(prototype)\b - name - meta.prototype.access.js - - - - literal-punctuation - - patterns - - - match - ; - name - punctuation.terminator.statement.js - - - match - , - name - meta.delimiter.comma.js - - - - literal-regexp - - patterns - - - begin - (?x) - (?<= - \.|\(|,|{|}|\[|;|<|>|<=|>=|==|!=|===|!==|\+|-|\*|%|\+\+|--|<<|>>|>>>|&|\||\^|!|~|&&|\|\||\?|:|=|\+=|-=|\*=|%=|<<=|>>=|>>>=|&=|\|=|\^=|/|/=| - \Wnew|\Wdelete|\Wvoid|\Wtypeof|\Winstanceof|\Win|\Wdo|\Wreturn|\Wcase|\Wthrow|\Wyield| - ^new|^delete|^void|^typeof|^instanceof|^in|^do|^return|^case|^throw|^yield|^ - )\s* - (/) - (?!/|\*|$) - beginCaptures - - 1 - - name - punctuation.definition.string.begin.js - - - end - (/)([gimy]*) - endCaptures - - 1 - - name - punctuation.definition.string.end.js - - 2 - - name - keyword.other.js - - - name - string.regexp.js - patterns - - - include - source.regexp.js - - - - - - literal-string - - patterns - - - begin - (["']) - beginCaptures - - 0 - - name - punctuation.definition.string.begin.js - - - end - (\1)|(\n) - endCaptures - - 1 - - name - punctuation.definition.string.end.js - - 2 - - name - invalid.illegal.newline.js - - - name - string.quoted.js - patterns - - - include - #string-content - - - - - - literal-switch - - patterns - - - begin - (?<!\.)\b(switch)\b - beginCaptures - - 1 - - name - keyword.control.switch.js - - - end - \} - endCaptures - - 0 - - name - meta.brace.curly.end.js - - - name - meta.switch.js - patterns - - - include - #comments - - - include - #round-brackets - - - begin - \{ - beginCaptures - - 0 - - name - meta.brace.curly.begin.js - - - end - (?=}) - patterns - - - begin - (?<!\.)\b(case|default)\b - beginCaptures - - 1 - - name - keyword.control.switch.js - - - end - (?=:) - patterns - - - include - #expression - - - - - include - $self - - - - - - - - literal-template-string - - begin - ` - beginCaptures - - 0 - - name - string.interpolated.js keyword.other.template.begin.js - - - captures - - 0 - - name - string.interpolated.js keyword.other.template.end.js - - - end - ` - patterns - - - include - #string-content - - - match - \\` - name - constant.character.escape.js - - - begin - \${ - beginCaptures - - 0 - - name - keyword.other.substitution.begin.js - - - end - } - endCaptures - - 0 - - name - keyword.other.substitution.end.js - - - patterns - - - include - #expression - - - - - match - . - name - string.interpolated.js - - - - literal-variable - - patterns - - - match - _*?[A-Z][_$\dA-Z]*\b - name - variable.other.constant.js - - - captures - - 1 - - name - variable.other.class.js - - 2 - - name - keyword.operator.accessor.js - - 3 - - name - variable.other.property.static.js - - - match - \b([A-Z][$\w]*)\s*(\.)([_$a-zA-Z][$\w]*) - name - meta.property.class.js - - - captures - - 1 - - name - variable.other.object.js - - - match - (?<!\.)([_$a-zA-Z][$\w]*)\s*(?=[\[\.]) - name - variable.other.object.js - - - captures - - 1 - - name - variable.other.property.js - - - match - (?<=\.)\s*([_$a-zA-Z][$\w]*) - name - meta.property.object.js - - - match - [_$a-zA-Z][$\w]* - name - variable.other.readwrite.js - - - - merge-conflits - - patterns - - - captures - - 1 - - name - invalid.illegal.conflict-marker.merge-into.js - - 2 - - name - invalid.illegal.string.js - - - match - ^([<]{7})\s(.+)$ - - - captures - - 1 - - name - invalid.illegal.conflict-marker.separator.js - - - match - ^([=|]{7})$ - - - captures - - 1 - - name - invalid.illegal.conflict-marker.other-commit.js - - 2 - - name - invalid.illegal.string.js - - - match - ^([>]{7})\s(.+)$ - - - - round-brackets - - patterns - - - begin - \( - beginCaptures - - 0 - - name - meta.brace.round.begin.js - - - end - \) - endCaptures - - 0 - - name - meta.brace.round.end.js - - - name - meta.group.braces.round.js - patterns - - - include - #expression - - - - - - square-brackets - - patterns - - - begin - \[ - beginCaptures - - 0 - - name - meta.brace.square.begin.js - - - end - \] - endCaptures - - 0 - - name - meta.brace.square.end.js - - - name - meta.group.braces.square.js - patterns - - - include - #expression - - - - - - string-content - - patterns - - - match - \\\s*\n - name - constant.character.escape.newline.js - - - match - \\([1-7][0-7]{0,2}|[0-7]{2,3}|[bfnrtv0'"\\]|x\h{2}|u\{\h+\}|u\h{4}) - name - constant.character.escape.js - - - - styled-components - - patterns - - - begin - (?<!\.)\b(injectGlobal|keyframes)\s*(`) - beginCaptures - - 1 - - name - variable.function.tagged-template.js - - 2 - - name - punctuation.definition.string.template.begin.js - - - contentName - source.css.embedded.js - end - ` - endCaptures - - 0 - - name - punctuation.definition.string.template.end.js - - - name - meta.styled-components.js - patterns - - - include - source.js.css - - - - - begin - (?<!\.)\b(styled)(\.)([_$a-zA-Z][$\w]*)\s*(`) - beginCaptures - - 1 - - name - variable.other.object.js - - 2 - - name - punctuation.accessor.js - - 3 - - name - variable.function.tagged-template.js - - 4 - - name - punctuation.definition.string.template.begin.js - - - contentName - source.css.embedded.js - end - ` - endCaptures - - 0 - - name - punctuation.definition.string.template.end.js - - - name - meta.styled-components.js - patterns - - - include - source.js.css - - - - - begin - (?<!\.)\b(styled)\s*(?=(\((?>(?>[^()]+)|\g<-1>)*\))\s*`) - captures - - 1 - - name - meta.function-call.with-arguments.js variable.function.js - - - end - (?<=`) - name - meta.styled-components.js - patterns - - - begin - \( - beginCaptures - - 0 - - name - punctuation.definition.group.begin.js - - - end - \) - endCaptures - - 0 - - name - punctuation.definition.group.end.js - - - name - meta.function-call.with-arguments.js meta.group.js - patterns - - - include - #expression - - - - - begin - ` - beginCaptures - - 0 - - name - punctuation.definition.string.template.begin.js - - - contentName - source.css.embedded.js - end - ` - endCaptures - - 0 - - name - punctuation.definition.string.template.end.js - - - patterns - - - include - source.js.css - - - - - - - - support-class - - patterns - - - match - (?<!\.)\b(Array|ArrayBuffer|Boolean|DataView|Date|Float32Array|Float64Array|Function|Infinity|Int16Array|Int32Array|Int8Array|JSON|Map|Math|NaN|Number|Object|Promise|Proxy|Reflect|RegExp|Set|String|Symbol|System|TypeError|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|WeakMap|WeakSet)\b - name - support.class.builtin.js - - - match - (?<!\.)\b((?>Eval|Range|Reference|Syntax|Type|URI)?Error)\b - name - support.class.error.js - - - match - \b(?>Buffer)\b - name - support.class.node.js - - - - support-other - - patterns - - - match - (?<!\.)\b(constructor|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|hasOwnProperty|isFinite|isNaN|isPrototypeOf|parseFloat|parseInt|propertyIsEnumerable|toLocaleString|toString|unescape|valueOf)\b - name - support.function.builtin.js - - - match - (?<!\.)\b(clearImmediate|clearInterval|clearTimeout|require|setImmediate|setInterval|setTimeout)\b - name - support.function.node.js - - - match - (?<!\.)\b(?>document|window)\b - name - support.type.object.dom.js - - - match - (?<!\.)\b(?>global|GLOBAL|root|__dirname|__filename)\b - name - support.type.object.node.js - - - captures - - 1 - - name - support.type.object.console.js - - 2 - - name - keyword.operator.accessor.js - - 3 - - name - support.function.console.js - - - match - (?<!\.)\b(console)(?:(\.)(assert|count|dir|error|group|groupCollapsed|groupEnd|info|log|profile|profileEnd|table|time|timeEnd|trace|warn))?\b - - - captures - - 1 - - name - support.type.object.process.js - - 2 - - name - keyword.operator.accessor.js - - 3 - - name - support.type.object.process.js - - 4 - - name - support.function.process.js - - - match - (?<!\.)\b(process)(?:(\.)(?:(arch|argv|config|env|execArgv|execPath|exitCode|mainModule|pid|platform|stderr|stdin|stdout|title|version|versions)|(abort|chdir|cwd|exit|getgid|getgroups|getuid|hrtime|initgroups|kill|memoryUsage|nextTick|setgid|setgroups|setuid|umask|uptime)))?\b - - - captures - - 1 - - name - support.type.object.module.js - - 2 - - name - keyword.operator.accessor.js - - 3 - - name - support.type.object.module.js - - - match - (?<!\.)\b(exports|module)(?:(\.)(children|exports|filename|id|loaded|parent))?\b - - - begin - {{ - end - }} - name - meta.tag.mustache.js - - - - - scopeName - source.js - - diff --git a/README.md b/README.md index 75b4e96..752321b 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ # babel-sublime -> Only supports **Sublime Text 3**. Sublime Text 2 is no longer supported. - -Language definitions for [ES6+ JavaScript](http://kangax.github.io/compat-table/es6/) with [React JSX syntax](http://facebook.github.io/react/docs/jsx-in-depth.html) extensions. +Language definition for [modern JavaScript](http://kangax.github.io/compat-table/es2016plus/) with [JSX syntax](http://facebook.github.io/react/docs/jsx-in-depth.html), [Flow typing](https://flow.org/), and [Styled Components](https://styled-components.com/). ## Installation @@ -11,57 +9,29 @@ Find it as [**Babel**](https://packagecontrol.io/packages/Babel) through [Packag #### Setting as the default syntax To set it as the default syntax for a particular extension: - 1. Open a file with that extension, - 2. Select `View` from the menu, - 3. Then `Syntax` `->` `Open all with current extension as...` `->` `Babel` `->` `JavaScript (Babel)`. - 4. Repeat this for each extension (e.g.: `.js` and `.jsx`). - -#### Setting a Color Scheme -`Babel` comes bundled with `Next` and `Monokai` from [Benvie/JavaScriptNext.tmLanguage](https://github.com/Benvie/JavaScriptNext.tmLanguage). Select one from `Preferences` `->` `Color Scheme` `->` `Babel` +1. Open a file with that extension, +2. From the `View` menu, select `Syntax` → `Open all with current extension as…` → `Babel` → `JavaScript (Babel)` +3. Repeat this for each extension (e.g.: `.js` and `.jsx`). -#### Advanced usage - -It's possible to set `Babel` as the _only_ JavaScript package by disabling the stock one. To do so, add `"ignored_packages": ["JavaScript"]` to your `Preferences.sublime-settings`. The benefits include: - * extension-less node scripts will automatically be recognized as `JavaScript (Babel)`, - * and reduced clutter in the syntax menu. +#### Setting a Color Scheme -**Keep in mind**, the stock snippets will no longer work (you may still use your own), and other third-party packages that depend on the stock package may break (no known ones so far). +`Babel` comes bundled with `Next` from [Benvie/JavaScriptNext.tmLanguage](https://github.com/Benvie/JavaScriptNext.tmLanguage). From the command palette, select `UI: Select Color Scheme` and select `Next`. ## Screenshots -![babel-sublime-vs-sublime-react--react-class](https://raw.githubusercontent.com/babel/babel-sublime/45c7d37/screenshots/compare-react-class@2x.png) - -* `babel-sublime` supports modern JavaScript syntax, including [arrow functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions), [destructuring](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment), [shorthand methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions), [template strings](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings), and more. - -![babel-sublime-vs-sublime-react--jsx-comments-etc](https://raw.githubusercontent.com/babel/babel-sublime/9a6e85f/screenshots/compare-jsx-comments-etc@2x.png) - -* `babel-sublime` correctly matches JSX comments between attributes, namespaced components, and non-alpha characters in tag/attribute names. - -![babel-sublime-vs-sublime-react--jsx-tight](https://raw.githubusercontent.com/babel/babel-sublime/9a6e85f/screenshots/compare-jsx-tight@2x.png) - -* Greater-/less-than comparisons are correctly identified as such and not mistaken for JSX tags. +![babel-sublime-vs-built-in-jsx](screenshots/compare-builtin-jsx@2x.png) ## Snippets Find them separately at [babel/babel-sublime-snippets](https://github.com/babel/babel-sublime-snippets) or as [**Babel Snippets**](https://packagecontrol.io/packages/Babel%20Snippets) through [Package Control](https://packagecontrol.io/). -## Suggested Resources - -Sublime Text Color Schemes which are ready for JavaScript's new features and babel-sublime package. - -#### [Oceanic Next Color Scheme](https://github.com/voronianski/oceanic-next-theme) - -[![](https://raw.githubusercontent.com/voronianski/babel-sublime/master/screenshots/oceanic-next.png)](https://github.com/voronianski/oceanic-next-theme) - -#### [Zeus Color Scheme](https://github.com/zaynali53/Zeus-Theme) - -[![zeus-color-scheme](https://raw.githubusercontent.com/zaynali53/Zeus-Theme/master/Zeus-Color-Scheme.PNG)](https://github.com/zaynali53/Zeus-Theme) - ## About -Under the hood, _babel-sublime_ is based on the excellent [Benvie/JavaScriptNext.tmLanguage](https://github.com/Benvie/JavaScriptNext.tmLanguage) with JSX syntax support built on top. The initial definitions for JSX came from [reactjs/sublime-react](https://github.com/reactjs/sublime-react) via [yungters/sublime](https://github.com/yungsters/sublime.git) - special thanks go to [@jgebhardt](https://github.com/jgebhardt) and [@zpao](https://github.com/zpao). +Under the hood, `babel-sublime`'s syntax definition is built using [JS Custom](https://github.com/Thom1729/Sublime-JS-Custom). JS Custom is based on Sublime's [core JavaScript syntax](https://github.com/sublimehq/Packages), which is in turn descended from [Benvie/JavaScriptNext.tmLanguage](https://github.com/Benvie/JavaScriptNext.tmLanguage). Special thanks go to [@jgebhardt](https://github.com/jgebhardt) and [@zpao](https://github.com/zpao). ## Contributing -Pull Requests should include your changes to the respective `YAML-tmKittens` file as well as the converted `tmKittens` file. Use [AAAPackageDev](https://github.com/SublimeText/AAAPackageDev) to convert the `YAML-tmKittens` files. +The `JavaScript (Babel).sublime-syntax` file itself is generated by JS Custom and should not be manually modified — any bug fixes or enhancements to the syntax itself should go through [JS Custom](https://github.com/Thom1729/Sublime-JS-Custom). + +If you modify the commenting rules or Next theme, make sure to do so by editing the appropriate `YAML-tmPreferences` or `YAML-tmTheme` file and converting that file using [PackageDev](https://github.com/SublimeText/PackageDev). Then, commit both the source (YAML) file and the converted (XML) file. diff --git a/build/build.py b/build/build.py new file mode 100644 index 0000000..3a69265 --- /dev/null +++ b/build/build.py @@ -0,0 +1,48 @@ +import sublime +import sublime_plugin + + +__all__ = ['BuildBabelPackageCommand'] + + +BABEL_CONFIGURATION = { + 'name': 'JavaScript (Babel)', + 'scope': 'source.js', + 'file_extensions': [ 'js', 'jsx', 'es6', 'babel' ], + 'flow_types': True, + 'jsx': True, + 'string_object_keys': True, + 'custom_templates': { + 'styled_components': True, + }, +} + + +class BuildBabelPackageCommand(sublime_plugin.ApplicationCommand): + def run(self): + from sublime_lib import ResourcePath + from pathlib import Path + from shutil import rmtree + + package_path = Path(__file__).parent.parent + syntax_path = ResourcePath.from_file_path(package_path) / 'JavaScript (Babel).sublime-syntax' + test_directory = package_path / 'tests' + + + rmtree(str(test_directory), ignore_errors=True) + test_directory.mkdir() + + print("Building syntax…") + sublime.active_window().run_command('build_js_custom_syntax', { + 'name': 'Babel', + 'configuration': BABEL_CONFIGURATION, + 'destination_path': str(syntax_path.file_path()), + }) + + print("Building tests…") + sublime.run_command('build_js_custom_tests', { + 'syntax_path': str(syntax_path), + 'suites': ['base', 'flow', 'jsx', 'string_object_keys'], + 'destination_directory': str(test_directory), + }) + print('Done.') diff --git a/messages.json b/messages.json index 80aa64c..fba5c35 100644 --- a/messages.json +++ b/messages.json @@ -4,5 +4,6 @@ "5.0.0": "messages/5.0.0.txt", "7.1.0": "messages/7.1.0.txt", "7.1.1": "messages/7.1.0.txt", - "8.0.0": "messages/8.0.0.txt" + "8.0.0": "messages/8.0.0.txt", + "10.0.0": "messages/10.0.0.txt" } diff --git a/messages/10.0.0.txt b/messages/10.0.0.txt new file mode 100644 index 0000000..f308dfa --- /dev/null +++ b/messages/10.0.0.txt @@ -0,0 +1,13 @@ +babel-sublime +------------- + +Syntax highlighting has been completely overhauled. The new syntax definition provides better support for modern JavaScript and better compatibility with existing color schemes and tools. + +A few examples of improvements and bug fixes: + +- JSX fragments are fully supported. +- Anonymous classes work correctly. +- Missing optional semicolons do not break highlighting. +- Regular expressions are always correctly detected. + +This is a major change. The new syntax definition has been extensively tested in beta, but if you have any problems then please don't hesitate to report them at https://github.com/babel/babel-sublime/issues. diff --git a/plugin.py b/plugin.py new file mode 100644 index 0000000..bb1009c --- /dev/null +++ b/plugin.py @@ -0,0 +1,4 @@ +from .build.build import BuildBabelPackageCommand + + +__all__ = ['BuildBabelPackageCommand'] diff --git a/screenshots/compare-builtin-jsx@2x.png b/screenshots/compare-builtin-jsx@2x.png new file mode 100644 index 0000000..73bef83 Binary files /dev/null and b/screenshots/compare-builtin-jsx@2x.png differ diff --git a/screenshots/compare-jsx-comments-etc@2x.png b/screenshots/compare-jsx-comments-etc@2x.png deleted file mode 100644 index 6246d27..0000000 Binary files a/screenshots/compare-jsx-comments-etc@2x.png and /dev/null differ diff --git a/screenshots/compare-jsx-illegal@2x.png b/screenshots/compare-jsx-illegal@2x.png deleted file mode 100644 index ac8931f..0000000 Binary files a/screenshots/compare-jsx-illegal@2x.png and /dev/null differ diff --git a/screenshots/compare-jsx-tight@2x.png b/screenshots/compare-jsx-tight@2x.png deleted file mode 100644 index 9aa4a2e..0000000 Binary files a/screenshots/compare-jsx-tight@2x.png and /dev/null differ diff --git a/screenshots/compare-react-class@2x.png b/screenshots/compare-react-class@2x.png deleted file mode 100644 index 197d36d..0000000 Binary files a/screenshots/compare-react-class@2x.png and /dev/null differ diff --git a/screenshots/oceanic-next.png b/screenshots/oceanic-next.png deleted file mode 100644 index 4256f52..0000000 Binary files a/screenshots/oceanic-next.png and /dev/null differ diff --git a/test/syntax_test_issues_OLD.js b/test/syntax_test_issues_OLD.js deleted file mode 100644 index 8b3a41a..0000000 --- a/test/syntax_test_issues_OLD.js +++ /dev/null @@ -1,275 +0,0 @@ -// SYNTAX TEST "Packages/babel-sublime/JavaScript (Babel).tmLanguage" - -/** - * https://github.com/babel/babel-sublime/issues/243 - */ - -class Foo extends create('Bar') {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class -//^^^ meta.class storage.type.class -// ^^^ meta.class entity.name.class -// ^^^^^^^^^^^^^^^^^^^^^^ meta.class meta.class.extends -// ^^^^^^^ meta.class meta.class.extends storage.type.extends -// ^^^^^^^^^^^^^ meta.class meta.class.extends meta.method -// ^^^^^^ meta.class meta.class.extends meta.method string.unquoted entity.name.function -// ^ meta.class meta.class.extends meta.method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class.extends meta.method variable.parameter.function -// ^ meta.class meta.class.extends meta.method punctuation.definition.parameters.end -// ^ meta.class meta.brace.curly.begin -// ^ meta.class meta.brace.curly.end - - -/** - * https://github.com/babel/babel-sublime/issues/244 - */ - -var foo = bar ? "+" + baz : qux; -//^ storage.type -//<- source.js -// ^^^ variable.other.readwrite -// ^ keyword.operator.assignment -// ^^^ variable.other.readwrite -// ^ keyword.operator.ternary -// ^^^ string.quoted -// ^ string.quoted punctuation.definition.string.begin -// ^ string.quoted punctuation.definition.string.end -// ^ keyword.operator.arithmetic -// ^^^^^ constant.other.object.key -// ^^^ constant.other.object.key string.unquoted.label -// ^ constant.other.object.key punctuation.separator.key-value -// ^^^ variable.other.readwrite -// ^ punctuation.terminator.statement - -var foo = bar ? "+" + baz + baz2 : qux; -//^ storage.type -//<- source.js -// ^^^ variable.other.readwrite -// ^ keyword.operator.assignment -// ^^^ variable.other.readwrite -// ^ keyword.operator.ternary -// ^^^ string.quoted -// ^ string.quoted punctuation.definition.string.begin -// ^ string.quoted punctuation.definition.string.end -// ^ keyword.operator.arithmetic -// ^^^ variable.other.readwrite -// ^ keyword.operator.arithmetic -// ^^^^^^ constant.other.object.key -// ^^^^ constant.other.object.key string.unquoted.label -// ^ constant.other.object.key punctuation.separator.key-value -// ^^^ variable.other.readwrite -// ^ punctuation.terminator.statement - -var foo = bar ? "+" + (baz) : qux; -//^ storage.type -//<- source.js -// ^^^ variable.other.readwrite -// ^ keyword.operator.assignment -// ^^^ variable.other.readwrite -// ^ keyword.operator.ternary -// ^^^ string.quoted -// ^ string.quoted punctuation.definition.string.begin -// ^ string.quoted punctuation.definition.string.end -// ^ keyword.operator.arithmetic -// ^ meta.group.braces.round meta.brace.round.begin -// ^^^ meta.group.braces.round variable.other.readwrite -// ^ meta.group.braces.round meta.brace.round.end -// ^ punctuation.separator.key-value -// ^^^ variable.other.readwrite -// ^ punctuation.terminator.statement - - -/** - * https://github.com/babel/babel-sublime/issues/249 - */ - -{{{{{{{{{{{{{{ -//^^^^^^^^^^^^ meta.tag.mustache - console.log -//^^^^^^^^^^^^ meta.tag.mustache -}}}}}}}}}}}}}} -//^^^^^^^^^^^^ source.js - meta.tag.mustache - - -/** - * https://github.com/babel/babel-sublime/issues/253 - */ - -for(let a of list) -//^^^^^^^^^^^^^^^^ meta.for -//^ keyword.control.loop -// ^ meta.brace.round.begin -// ^^^ storage.type -// ^ variable.other.readwrite -// ^^ keyword.operator -// ^^^^ variable.other.readwrite -// ^ meta.for meta.brace.round.end - -for(let a of []) -//^^^^^^^^^^^^^^ meta.for -//^ keyword.control.loop -// ^ meta.brace.round.begin -// ^^^ storage.type -// ^ variable.other.readwrite -// ^^ keyword.operator -// ^ meta.group.braces.square meta.brace.square.begin -// ^ meta.group.braces.square meta.brace.square.end -// ^ meta.brace.round.end - -for(let a of (list || [])) -//^^^^^^^^^^^^^^^^^^^^^^^^ meta.for -//^ keyword.control.loop -//<- source.js -// ^ meta.brace.round.begin -// ^^^ storage.type -// ^ variable.other.readwrite -// ^^^ meta.function-call.with-arguments -// ^^ meta.function-call.with-arguments variable.function -// ^^^^^^^^^^^^ meta.group.braces.round -// ^ meta.group.braces.round meta.brace.round.begin -// ^^^^ meta.group.braces.round variable.other.readwrite -// ^^ meta.group.braces.round keyword.operator.logical -// ^ meta.group.braces.round meta.group.braces.square meta.brace.square.begin -// ^ meta.group.braces.round meta.group.braces.square meta.brace.square.end -// ^^ meta.brace.round.end -// ^ meta.group.braces.round meta.brace.round.end - - -/** - * https://github.com/babel/babel-sublime/issues/256 - */ - -return a ? a*a : 0; -//^^^^ keyword.control.flow -//<- source.js -// ^ variable.other.readwrite -// ^ keyword.operator.ternary -// ^ variable.other.readwrite -// ^ keyword.operator.arithmetic -// ^^^ constant.other.object.key -// ^ constant.other.object.key string.unquoted.label -// ^ constant.other.object.key punctuation.separator.key-value -// ^ constant.numeric -// ^ punctuation.terminator.statement - - -/** - * https://github.com/babel/babel-sublime/issues/270 - */ - -class Foo { -//^^^ meta.class storage.type.class -// ^^^ meta.class entity.name.class -// ^ meta.class meta.brace.curly.begin - bar = baz::map( -//^^^ meta.class.property variable.other.property -// ^ meta.class.property keyword.operator.assignment -// ^^^ meta.class.property variable.other.readwrite -// ^ meta.class.property meta.flowtype.annotation keyword.operator.flowtype.annotation -// ^ meta.class.property meta.flowtype.annotation keyword.operator.flowtype.other -// ^^^ meta.class.property meta.flowtype.annotation variable.other.flowtype -// ^ meta.class.property meta.flowtype.annotation punctuation.section.flowtype.begin - thing => 1 -// ^^^^^ meta.class.property meta.flowtype.annotation variable.other.flowtype -// ^^ meta.class.property meta.flowtype.annotation meta.flowtype.function keyword.operator.flowtype - ); - constructor() {} -//^^^^^^^^^^^ meta.class.property meta.flowtype.annotation meta.flowtype.function variable.other.flowtype -// ^ meta.class.property meta.flowtype.annotation punctuation.section.flowtype.begin -// ^ meta.class.property meta.flowtype.annotation punctuation.section.flowtype.end -} -))} /* END ERROR */ - - -/** - * https://github.com/babel/babel-sublime/issues/274 - */ - -void
{[]}
-//^^ keyword.operator -//<- source.js -// ^ keyword.operator.relational -// ^^^ variable.other.readwrite -// ^ keyword.operator.relational -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^^^^^ meta.group.braces.curly meta.group.braces.square meta.jsx -// ^ meta.group.braces.curly meta.group.braces.square meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.jsx meta.tag entity.name.tag -// ^^ meta.group.braces.curly meta.group.braces.square meta.jsx meta.tag punctuation.definition.tag.end -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly meta.brace.curly.end -// ^ keyword.operator.relational -// ^^^^^^ string.regexp -// ^ string.regexp punctuation.definition.string.begin -/ /* END ERROR */ - - -/** - * https://github.com/babel/babel-sublime/issues/275 - */ - -if (_.startsWith(line, 'State(')) {} -//<- keyword.control.conditional -// ^ meta.group.braces.round meta.brace.round.begin -// ^ meta.group.braces.round variable.other.object variable.other.object -// ^ meta.group.braces.round keyword.operator.accessor -// ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.group.braces.round meta.method -// ^^^^^^^^^^ meta.group.braces.round meta.method string.unquoted entity.name.function -// ^ meta.group.braces.round meta.method punctuation.definition.parameters.begin -// ^^^^ meta.group.braces.round meta.method variable.parameter.function -// ^ meta.group.braces.round meta.method punctuation.separator.parameter.function -// ^^^^^ meta.group.braces.round meta.method variable.parameter.function -// ^ meta.group.braces.round meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.round meta.brace.round.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - - -/** - * https://github.com/babel/babel-sublime/issues/284 - */ - -@web.controller('/hello') -//^ tag.decorator entity.name.tag -//<- tag.decorator punctuation.definition.tag -// ^ keyword.operator.accessor -// ^^^^^^^^^^ meta.function-call.method.with-arguments variable.function -// ^ meta.group.braces.round meta.brace.round.begin -// ^^^^^^^^ meta.group.braces.round string.quoted -// ^ meta.group.braces.round string.quoted punctuation.definition.string.begin -// ^ meta.group.braces.round string.quoted punctuation.definition.string.end -// ^ meta.group.braces.round meta.brace.round.end -class Klass { -//^^^ storage.type.class -// ^^^^^ entity.name.class -// ^ meta.brace.curly.begin - @web.get() -//^ tag.decorator punctuation.definition.tag -// ^^^ tag.decorator entity.name.tag -// ^^^ meta.class-method string.unquoted entity.name.function -// ^ meta.class-method punctuation.definition.parameters.begin -// ^ meta.class-method punctuation.definition.parameters.end - foo(a, b) {} -// ^ meta.class-method punctuation.definition.parameters.begin -// ^ meta.class-method variable.parameter.function -// ^ meta.class-method punctuation.separator.parameter.function -// ^ meta.class-method variable.parameter.function -// ^ meta.class-method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - - @web.use -//^ tag.decorator punctuation.definition.tag -// ^^^ tag.decorator entity.name.tag - bar(c, d) {} -//^^^^^^^^^ meta.class-method -//^^^ meta.class-method string.unquoted entity.name.function -// ^ meta.class-method punctuation.definition.parameters.begin -// ^ meta.class-method variable.parameter.function -// ^ meta.class-method punctuation.separator.parameter.function -// ^ meta.class-method variable.parameter.function -// ^ meta.class-method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -} -//<- meta.class meta.brace.curly.end diff --git a/test/syntax_test_js_babel_OLD.js b/test/syntax_test_js_babel_OLD.js deleted file mode 100644 index eb32dd2..0000000 --- a/test/syntax_test_js_babel_OLD.js +++ /dev/null @@ -1,3187 +0,0 @@ -// SYNTAX TEST "Packages/babel-sublime/JavaScript (Babel).tmLanguage" - -class MyClass { -//^^^ meta.class storage.type.class -// ^^^^^^^ meta.class entity.name.class -// ^ meta.class meta.brace.curly.begin - - type: string; -//^^^^ meta.class meta.class.property variable.other.property -// ^^^^^^^^ meta.class meta.class.property meta.flowtype.annotation -// ^ meta.class meta.class.property meta.flowtype.annotation keyword.operator.flowtype.annotation -// ^^^^^^ meta.class meta.class.property meta.flowtype.annotation constant.other.primitve.flowtype - - type: () => void; -//^^^^ meta.class meta.class.property variable.other.property -// ^^^^^^^^^^^^ meta.class meta.class.property meta.flowtype.annotation -// ^ meta.class meta.class.property meta.flowtype.annotation keyword.operator.flowtype.annotation -// ^ meta.class meta.class.property meta.flowtype.annotation punctuation.section.flowtype.begin -// ^ meta.class meta.class.property meta.flowtype.annotation punctuation.section.flowtype.end -// ^^^^^^^ meta.class meta.class.property meta.flowtype.annotation meta.flowtype.function -// ^^ meta.class meta.class.property meta.flowtype.annotation meta.flowtype.function keyword.operator.flowtype -// ^^^^ meta.class meta.class.property meta.flowtype.annotation meta.flowtype.function constant.other.primitve.flowtype - - @@iterator(): Iterator<[K, V]>; -//^^^^^^^^^^ meta.class meta.short-method.flowtype keyword.operator.flowtype -// ^ meta.class meta.short-method.flowtype punctuation.definition.parameters.begin -// ^ meta.class meta.short-method.flowtype punctuation.definition.parameters.end -// ^^^^^^^^^^^^^^^^^^ meta.class meta.short-method.flowtype meta.flowtype.annotation -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation keyword.operator.flowtype.annotation -// ^^^^^^^^ meta.class meta.short-method.flowtype meta.flowtype.annotation variable.other.flowtype -// ^^ meta.class meta.short-method.flowtype meta.flowtype.annotation punctuation.section.flowtype.begin -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation variable.other.flowtype -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation variable.other.flowtype -// ^^ meta.class meta.short-method.flowtype meta.flowtype.annotation punctuation.section.flowtype.end - - static (o: ?void): {[key: any]: any}; -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class meta.short-method.flowtype -//^^^^^^ meta.class meta.short-method.flowtype keyword.operator.flowtype -// ^ meta.class meta.short-method.flowtype punctuation.definition.parameters.begin -// ^ meta.class meta.short-method.flowtype variable.parameter.function -// ^^^^^^^ meta.class meta.short-method.flowtype meta.flowtype.annotation -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation keyword.operator.flowtype.annotation -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation keyword.operator.flowtype.other -// ^^^^ meta.class meta.short-method.flowtype meta.flowtype.annotation constant.other.primitve.flowtype -// ^ meta.class meta.short-method.flowtype punctuation.definition.parameters.end -// ^^^^^^^^^^^^^^^^^^^ meta.class meta.short-method.flowtype meta.flowtype.annotation -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation keyword.operator.flowtype.annotation -// ^^ meta.class meta.short-method.flowtype meta.flowtype.annotation punctuation.section.flowtype.begin -// ^^^ meta.class meta.short-method.flowtype meta.flowtype.annotation variable.other.flowtype -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation keyword.operator.flowtype.other -// ^^^ meta.class meta.short-method.flowtype meta.flowtype.annotation constant.other.primitve.flowtype -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation punctuation.section.flowtype.end -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation keyword.operator.flowtype.other -// ^^^ meta.class meta.short-method.flowtype meta.flowtype.annotation constant.other.primitve.flowtype -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation punctuation.section.flowtype.end - - return(value: R): { done: true, value: R }; -//^^^^^^ meta.class meta.short-method.flowtype keyword.operator.flowtype -// ^ meta.class meta.short-method.flowtype meta.flowtype.polymorph punctuation.section.flowtype.begin -// ^ meta.class meta.short-method.flowtype meta.flowtype.polymorph variable.other.flowtype -// ^ meta.class meta.short-method.flowtype meta.flowtype.polymorph punctuation.section.flowtype.end -// ^ meta.class meta.short-method.flowtype punctuation.definition.parameters.begin -// ^^^^^ meta.class meta.short-method.flowtype variable.parameter.function -// ^^^ meta.class meta.short-method.flowtype meta.flowtype.annotation -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation keyword.operator.flowtype.annotation -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation variable.other.flowtype -// ^ meta.class meta.short-method.flowtype punctuation.definition.parameters.end -// ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class meta.short-method.flowtype meta.flowtype.annotation -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation keyword.operator.flowtype.annotation -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation punctuation.section.flowtype.begin -// ^^^^ meta.class meta.short-method.flowtype meta.flowtype.annotation variable.other.flowtype -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation keyword.operator.flowtype.other -// ^^^^ meta.class meta.short-method.flowtype meta.flowtype.annotation variable.other.flowtype -// ^^^^^ meta.class meta.short-method.flowtype meta.flowtype.annotation variable.other.flowtype -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation keyword.operator.flowtype.other -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation variable.other.flowtype -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation punctuation.section.flowtype.end - - (o: T): T; -//^^^^^^^^^^^^^^^^^^^^ meta.class meta.short-method.flowtype -//^^^^^^^^^^^ meta.class meta.short-method.flowtype meta.flowtype.polymorph -//^ meta.class meta.short-method.flowtype meta.flowtype.polymorph punctuation.section.flowtype.begin -// ^ meta.class meta.short-method.flowtype meta.flowtype.polymorph variable.other.flowtype -// ^ meta.class meta.short-method.flowtype meta.flowtype.polymorph keyword.operator.flowtype.other -// ^^^^^^ meta.class meta.short-method.flowtype meta.flowtype.polymorph support.class.builtin -// ^ meta.class meta.short-method.flowtype meta.flowtype.polymorph punctuation.section.flowtype.end -// ^ meta.class meta.short-method.flowtype punctuation.definition.parameters.begin -// ^ meta.class meta.short-method.flowtype variable.parameter.function -// ^^^ meta.class meta.short-method.flowtype meta.flowtype.annotation -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation keyword.operator.flowtype.annotation -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation variable.other.flowtype -// ^ meta.class meta.short-method.flowtype punctuation.definition.parameters.end -// ^^^ meta.class meta.short-method.flowtype meta.flowtype.annotation -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation keyword.operator.flowtype.annotation -// ^ meta.class meta.short-method.flowtype meta.flowtype.annotation variable.other.flowtype - - regularMethod() {} -//^^^^^^^^^^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - - *generatorMethod() {} -//^ meta.class keyword.generator.asterisk -// ^^^^^^^^^^^^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - - static staticRegularMethod() {} -//^^^^^^ meta.class storage.modifier -// ^^^^^^^^^^^^^^^^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - - static get staticGetterMethod() {} -//^^^^^^ meta.class storage.modifier -// ^^^^ meta.class meta.class-accessor storage.type -// ^^^^^^^^^^^^^^^^^^ meta.class meta.class-accessor string.unquoted entity.name.function -// ^ meta.class meta.class-accessor punctuation.definition.parameters.begin -// ^ meta.class meta.class-accessor punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - - static set staticSetterMethod(arg) {} -//^^^^^^ meta.class storage.modifier -// ^^^^ meta.class meta.class-accessor storage.type -// ^^^^^^^^^^^^^^^^^^ meta.class meta.class-accessor string.unquoted entity.name.function -// ^ meta.class meta.class-accessor punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-accessor variable.parameter.function -// ^ meta.class meta.class-accessor punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - - static *staticGeneratorMethod() {} -//^^^^^^ meta.class storage.modifier -// ^ meta.class keyword.generator.asterisk -// ^^^^^^^^^^^^^^^^^^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static async staticAsyncMethod() {} -//^^^^^^ meta.class storage.modifier -// ^^^^^ meta.class storage.type -// ^^^^^^^^^^^^^^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - - async asyncMethod() {} -//^^^^^ meta.class storage.type -// ^^^^^^^^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - [computedMethod()]() {} -//^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^^^^^^^^^^^ meta.class meta.group.braces.square meta.function-call.without-arguments variable.function -// ^^ meta.class meta.group.braces.square meta.function-call.without-arguments meta.group.braces.round.function.arguments -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - ["computedString"]() {} -//^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^^^^^^^^^^^^^ meta.class meta.group.braces.square string.quoted -// ^ meta.class meta.group.braces.square string.quoted punctuation.definition.string.begin -// ^ meta.class meta.group.braces.square string.quoted punctuation.definition.string.end -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - - ["computed" + "String"]() {} -//^^^^^^^^^^^^^^^^^^^^^^^ meta.class meta.group.braces.square -//^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^^^^^^^ meta.class meta.group.braces.square string.quoted -// ^ meta.class meta.group.braces.square string.quoted punctuation.definition.string.begin -// ^ meta.class meta.group.braces.square string.quoted punctuation.definition.string.end -// ^ meta.class meta.group.braces.square keyword.operator.arithmetic -// ^^^^^^^^ meta.class meta.group.braces.square string.quoted -// ^ meta.class meta.group.braces.square string.quoted punctuation.definition.string.begin -// ^ meta.class meta.group.braces.square string.quoted punctuation.definition.string.end -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - - *[Symbol.iterator]() {} -//^ meta.class keyword.generator.asterisk -// ^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^^^ meta.class meta.group.braces.square support.class.builtin -// ^ meta.class meta.group.braces.square keyword.operator.accessor -// ^^^^^^^^ meta.class meta.group.braces.square meta.property.object variable.other.property -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end -} - - - -let Sound = { -//^ storage.type -//<- source.js -// ^^^^^ variable.other.readwrite -// ^ keyword.operator.assignment -// ^ meta.group.braces.curly meta.brace.curly.begin - - get() {}, -//^^^ meta.group.braces.curly meta.method string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - get(arg) {}, -//^^^ meta.group.braces.curly meta.method string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.method variable.parameter.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - set() {}, -//^^^ meta.group.braces.curly meta.method string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - set(arg) {}, -//^^^ meta.group.braces.curly meta.method string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.method variable.parameter.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - play() {}, -//^^^^ meta.group.braces.curly meta.method string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - play(arg) {}, -//^^^^ meta.group.braces.curly meta.method string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.method variable.parameter.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - 'play'() {}, -//^ meta.group.braces.curly meta.method string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.method string.quoted entity.name.function -// ^ meta.group.braces.curly meta.method string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - 'play'(arg) {}, -//^ meta.group.braces.curly meta.method string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.method string.quoted entity.name.function -// ^ meta.group.braces.curly meta.method string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.method variable.parameter.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - *play() {}, -//^ meta.group.braces.curly meta.method keyword.generator.asterisk -// ^^^^ meta.group.braces.curly meta.method string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - *play(arg) {}, -//^ meta.group.braces.curly meta.method keyword.generator.asterisk -// ^^^^ meta.group.braces.curly meta.method string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.method variable.parameter.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - async play() {}, -//^^^^^^^^^^^^ meta.group.braces.curly meta.method -//^^^^^ meta.group.braces.curly meta.method storage.type -// ^^^^ meta.group.braces.curly meta.method string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - async play(arg) {}, -//^^^^^^^^^^^^^^^ meta.group.braces.curly meta.method -//^^^^^ meta.group.braces.curly meta.method storage.type -// ^^^^ meta.group.braces.curly meta.method string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.method variable.parameter.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - get play() {}, -//^^^^^^^^^^ meta.group.braces.curly meta.accessor -//^^^ meta.group.braces.curly meta.accessor storage.type.accessor -// ^^^^ meta.group.braces.curly meta.accessor entity.name.accessor -// ^ meta.group.braces.curly meta.accessor punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.accessor punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - set play(arg) {}, -//^^^^^^^^^^^^^ meta.group.braces.curly meta.accessor -//^^^ meta.group.braces.curly meta.accessor storage.type.accessor -// ^^^^ meta.group.braces.curly meta.accessor entity.name.accessor -// ^ meta.group.braces.curly meta.accessor punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.accessor variable.parameter.function -// ^ meta.group.braces.curly meta.accessor punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - *'play'() {}, -//^ meta.group.braces.curly meta.method keyword.generator.asterisk -// ^ meta.group.braces.curly meta.method string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.method string.quoted entity.name.function -// ^ meta.group.braces.curly meta.method string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - *'play'(arg) {}, -//^ meta.group.braces.curly meta.method keyword.generator.asterisk -// ^ meta.group.braces.curly meta.method string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.method string.quoted entity.name.function -// ^ meta.group.braces.curly meta.method string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.method variable.parameter.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - async 'play'() {}, -//^^^^^^^^^^^^^^ meta.group.braces.curly meta.method -//^^^^^ meta.group.braces.curly meta.method storage.type -// ^ meta.group.braces.curly meta.method string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.method string.quoted entity.name.function -// ^ meta.group.braces.curly meta.method string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - async 'play'(arg) {}, -//^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.method -//^^^^^ meta.group.braces.curly meta.method storage.type -// ^ meta.group.braces.curly meta.method string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.method string.quoted entity.name.function -// ^ meta.group.braces.curly meta.method string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.method variable.parameter.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - get 'play'() {}, -//^^^ meta.group.braces.curly variable.other.readwrite -// ^ meta.group.braces.curly meta.method string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.method string.quoted entity.name.function -// ^ meta.group.braces.curly meta.method string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - set 'play'(arg) {}, -//^^^ meta.group.braces.curly variable.other.readwrite -// ^ meta.group.braces.curly meta.method string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.method string.quoted entity.name.function -// ^ meta.group.braces.curly meta.method string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.method variable.parameter.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - [Play.name()]() {}, -//^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments variable.other.class -// ^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments keyword.operator.accessor -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments variable.function -// ^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments meta.group.braces.round.function.arguments -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.begin -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - [Play.name()[]](arg) {}, -//^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments variable.other.class -// ^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments keyword.operator.accessor -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments variable.function -// ^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments meta.group.braces.round.function.arguments -// ^ meta.group.braces.curly meta.group.braces.square meta.group.braces.square meta.brace.square.begin -// ^^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly meta.group.braces.square meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.begin -// ^^^ meta.group.braces.curly meta.group.braces.round variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - *[Play.name()]() {}, -//^ meta.group.braces.curly keyword.operator.arithmetic -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments variable.other.class -// ^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments keyword.operator.accessor -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments variable.function -// ^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments meta.group.braces.round.function.arguments -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.begin -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - *[Play.name()](arg) {}, -//^ meta.group.braces.curly keyword.operator.arithmetic -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments variable.other.class -// ^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments keyword.operator.accessor -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments variable.function -// ^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments meta.group.braces.round.function.arguments -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.begin -// ^^^ meta.group.braces.curly meta.group.braces.round variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - async [Play.name()]() {}, -//^^^^^^ meta.group.braces.curly variable.other.object -//^^^^^ meta.group.braces.curly variable.other.object variable.other.object -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments variable.other.class -// ^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments keyword.operator.accessor -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments variable.function -// ^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments meta.group.braces.round.function.arguments -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.begin -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - async [Play.name()](arg) {}, -//^^^^^^ meta.group.braces.curly variable.other.object -//^^^^^ meta.group.braces.curly variable.other.object variable.other.object -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments variable.other.class -// ^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments keyword.operator.accessor -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments variable.function -// ^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments meta.group.braces.round.function.arguments -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.begin -// ^^^ meta.group.braces.curly meta.group.braces.round variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - get [Play.name()]() {}, -//^^^^ meta.group.braces.curly variable.other.object -//^^^ meta.group.braces.curly variable.other.object variable.other.object -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments variable.other.class -// ^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments keyword.operator.accessor -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments variable.function -// ^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments meta.group.braces.round.function.arguments -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.begin -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - set [Play.name()](arg) {}, -//^^^^ meta.group.braces.curly variable.other.object -//^^^ meta.group.braces.curly variable.other.object variable.other.object -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments variable.other.class -// ^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments keyword.operator.accessor -// ^^^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments variable.function -// ^^ meta.group.braces.curly meta.group.braces.square meta.function-call.static.without-arguments meta.group.braces.round.function.arguments -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.begin -// ^^^ meta.group.braces.curly meta.group.braces.round variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - 0() {}, -//^ meta.group.braces.curly meta.method string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - 0(arg) {}, -//^ meta.group.braces.curly meta.method string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.method variable.parameter.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - *0() {}, -//^ meta.group.braces.curly meta.method keyword.generator.asterisk -// ^ meta.group.braces.curly meta.method string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - *0(arg) {}, -//^ meta.group.braces.curly meta.method keyword.generator.asterisk -// ^ meta.group.braces.curly meta.method string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.method variable.parameter.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - async 0() {}, -//^^^^^^^^^ meta.group.braces.curly meta.method -//^^^^^ meta.group.braces.curly meta.method storage.type -// ^ meta.group.braces.curly meta.method string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - async 0(arg) {}, -//^^^^^^^^^^^^ meta.group.braces.curly meta.method -//^^^^^ meta.group.braces.curly meta.method storage.type -// ^ meta.group.braces.curly meta.method string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.method variable.parameter.function -// ^ meta.group.braces.curly meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - get 0() {}, -//^^^^^^^ meta.group.braces.curly meta.accessor -//^^^ meta.group.braces.curly meta.accessor storage.type.accessor -// ^ meta.group.braces.curly meta.accessor entity.name.accessor -// ^ meta.group.braces.curly meta.accessor punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.accessor punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - set 0(arg) {}, -//^^^^^^^^^^ meta.group.braces.curly meta.accessor -//^^^ meta.group.braces.curly meta.accessor storage.type.accessor -// ^ meta.group.braces.curly meta.accessor entity.name.accessor -// ^ meta.group.braces.curly meta.accessor punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.accessor variable.parameter.function -// ^ meta.group.braces.curly meta.accessor punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - play: function() {}, -//^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json -//^^^^ meta.group.braces.curly meta.function.json string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.function.json punctuation.separator.key-value -// ^^^^^^^^ meta.group.braces.curly meta.function.json storage.type.function -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - play: function(arg) {}, -//^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json -//^^^^ meta.group.braces.curly meta.function.json string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.function.json punctuation.separator.key-value -// ^^^^^^^^ meta.group.braces.curly meta.function.json storage.type.function -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function.json variable.parameter.function -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - play: function*() {}, -//^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json -//^^^^ meta.group.braces.curly meta.function.json string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.function.json punctuation.separator.key-value -// ^^^^^^^^ meta.group.braces.curly meta.function.json storage.type.function -// ^ meta.group.braces.curly meta.function.json keyword.generator.asterisk -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - play: function*(arg) {}, -//^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json -//^^^^ meta.group.braces.curly meta.function.json string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.function.json punctuation.separator.key-value -// ^^^^^^^^ meta.group.braces.curly meta.function.json storage.type.function -// ^ meta.group.braces.curly meta.function.json keyword.generator.asterisk -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function.json variable.parameter.function -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - play: async function() {}, -//^^^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json -//^^^^ meta.group.braces.curly meta.function.json string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.function.json punctuation.separator.key-value -// ^^^^^ meta.group.braces.curly meta.function.json storage.type -// ^^^^^^^^ meta.group.braces.curly meta.function.json storage.type.function -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - play: async function(arg) {}, -//^^^^^^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json -//^^^^ meta.group.braces.curly meta.function.json string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.function.json punctuation.separator.key-value -// ^^^^^ meta.group.braces.curly meta.function.json storage.type -// ^^^^^^^^ meta.group.braces.curly meta.function.json storage.type.function -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function.json variable.parameter.function -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - play: async function*() {}, -//^^^^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json -//^^^^ meta.group.braces.curly meta.function.json string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.function.json punctuation.separator.key-value -// ^^^^^ meta.group.braces.curly meta.function.json storage.type -// ^^^^^^^^ meta.group.braces.curly meta.function.json storage.type.function -// ^ meta.group.braces.curly meta.function.json keyword.generator.asterisk -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - play: async function*(arg) {}, -//^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json -//^^^^ meta.group.braces.curly meta.function.json string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.function.json punctuation.separator.key-value -// ^^^^^ meta.group.braces.curly meta.function.json storage.type -// ^^^^^^^^ meta.group.braces.curly meta.function.json storage.type.function -// ^ meta.group.braces.curly meta.function.json keyword.generator.asterisk -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function.json variable.parameter.function -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - play: async () => {}, -//^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json.arrow -//^^^^ meta.group.braces.curly meta.function.json.arrow string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.separator.key-value -// ^^^^^ meta.group.braces.curly meta.function.json.arrow storage.type -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.definition.parameters.end -// ^^ meta.group.braces.curly meta.function.json.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - play: async (arg) => {}, -//^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json.arrow -//^^^^ meta.group.braces.curly meta.function.json.arrow string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.separator.key-value -// ^^^^^ meta.group.braces.curly meta.function.json.arrow storage.type -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function.json.arrow variable.parameter.function -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.definition.parameters.end -// ^^ meta.group.braces.curly meta.function.json.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - play: async arg => {}, -//^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json.arrow -//^^^^ meta.group.braces.curly meta.function.json.arrow string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.separator.key-value -// ^^^^^ meta.group.braces.curly meta.function.json.arrow storage.type -// ^^^ meta.group.braces.curly meta.function.json.arrow variable.parameter.function -// ^^ meta.group.braces.curly meta.function.json.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - play: () => {}, -//^^^^^^^^^^^ meta.group.braces.curly meta.function.json.arrow -//^^^^ meta.group.braces.curly meta.function.json.arrow string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.separator.key-value -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.definition.parameters.end -// ^^ meta.group.braces.curly meta.function.json.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - play: (arg) => {}, -//^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json.arrow -//^^^^ meta.group.braces.curly meta.function.json.arrow string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.separator.key-value -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function.json.arrow variable.parameter.function -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.definition.parameters.end -// ^^ meta.group.braces.curly meta.function.json.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - play: arg => {}, -//^^^^^^^^^^^^ meta.group.braces.curly meta.function.json.arrow -//^^^^ meta.group.braces.curly meta.function.json.arrow string.unquoted entity.name.function -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.separator.key-value -// ^^^ meta.group.braces.curly meta.function.json.arrow variable.parameter.function -// ^^ meta.group.braces.curly meta.function.json.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - "play": function() {}, -//^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json -//^ meta.group.braces.curly meta.function.json string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.function.json string.quoted entity.name.function -// ^ meta.group.braces.curly meta.function.json string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.function.json punctuation.separator.key-value -// ^^^^^^^^ meta.group.braces.curly meta.function.json storage.type.function -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - "play": function(arg) {}, -//^^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json -//^ meta.group.braces.curly meta.function.json string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.function.json string.quoted entity.name.function -// ^ meta.group.braces.curly meta.function.json string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.function.json punctuation.separator.key-value -// ^^^^^^^^ meta.group.braces.curly meta.function.json storage.type.function -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function.json variable.parameter.function -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - "play": function*() {}, -//^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json -//^ meta.group.braces.curly meta.function.json string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.function.json string.quoted entity.name.function -// ^ meta.group.braces.curly meta.function.json string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.function.json punctuation.separator.key-value -// ^^^^^^^^ meta.group.braces.curly meta.function.json storage.type.function -// ^ meta.group.braces.curly meta.function.json keyword.generator.asterisk -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - "play": function*(arg) {}, -//^^^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json -//^ meta.group.braces.curly meta.function.json string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.function.json string.quoted entity.name.function -// ^ meta.group.braces.curly meta.function.json string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.function.json punctuation.separator.key-value -// ^^^^^^^^ meta.group.braces.curly meta.function.json storage.type.function -// ^ meta.group.braces.curly meta.function.json keyword.generator.asterisk -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function.json variable.parameter.function -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - "play": async function() {}, -//^^^^^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json -//^ meta.group.braces.curly meta.function.json string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.function.json string.quoted entity.name.function -// ^ meta.group.braces.curly meta.function.json string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.function.json punctuation.separator.key-value -// ^^^^^ meta.group.braces.curly meta.function.json storage.type -// ^^^^^^^^ meta.group.braces.curly meta.function.json storage.type.function -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - "play": async function(arg) {}, -//^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json -//^ meta.group.braces.curly meta.function.json string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.function.json string.quoted entity.name.function -// ^ meta.group.braces.curly meta.function.json string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.function.json punctuation.separator.key-value -// ^^^^^ meta.group.braces.curly meta.function.json storage.type -// ^^^^^^^^ meta.group.braces.curly meta.function.json storage.type.function -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function.json variable.parameter.function -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - "play": async function*() {}, -//^^^^^^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json -//^ meta.group.braces.curly meta.function.json string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.function.json string.quoted entity.name.function -// ^ meta.group.braces.curly meta.function.json string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.function.json punctuation.separator.key-value -// ^^^^^ meta.group.braces.curly meta.function.json storage.type -// ^^^^^^^^ meta.group.braces.curly meta.function.json storage.type.function -// ^ meta.group.braces.curly meta.function.json keyword.generator.asterisk -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - "play": async function*(arg) {}, -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json -//^ meta.group.braces.curly meta.function.json string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.function.json string.quoted entity.name.function -// ^ meta.group.braces.curly meta.function.json string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.function.json punctuation.separator.key-value -// ^^^^^ meta.group.braces.curly meta.function.json storage.type -// ^^^^^^^^ meta.group.braces.curly meta.function.json storage.type.function -// ^ meta.group.braces.curly meta.function.json keyword.generator.asterisk -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function.json variable.parameter.function -// ^ meta.group.braces.curly meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - "play": async () => {}, -//^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json.arrow -//^ meta.group.braces.curly meta.function.json.arrow string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.function.json.arrow string.quoted entity.name.function -// ^ meta.group.braces.curly meta.function.json.arrow string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.separator.key-value -// ^^^^^ meta.group.braces.curly meta.function.json.arrow storage.type -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.definition.parameters.end -// ^^ meta.group.braces.curly meta.function.json.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - "play": async (arg) => {}, -//^^^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json.arrow -//^ meta.group.braces.curly meta.function.json.arrow string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.function.json.arrow string.quoted entity.name.function -// ^ meta.group.braces.curly meta.function.json.arrow string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.separator.key-value -// ^^^^^ meta.group.braces.curly meta.function.json.arrow storage.type -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function.json.arrow variable.parameter.function -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.definition.parameters.end -// ^^ meta.group.braces.curly meta.function.json.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - "play": async arg => {}, -//^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json.arrow -//^ meta.group.braces.curly meta.function.json.arrow string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.function.json.arrow string.quoted entity.name.function -// ^ meta.group.braces.curly meta.function.json.arrow string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.separator.key-value -// ^^^^^ meta.group.braces.curly meta.function.json.arrow storage.type -// ^^^ meta.group.braces.curly meta.function.json.arrow variable.parameter.function -// ^^ meta.group.braces.curly meta.function.json.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - "play": () => {}, -//^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json.arrow -//^ meta.group.braces.curly meta.function.json.arrow string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.function.json.arrow string.quoted entity.name.function -// ^ meta.group.braces.curly meta.function.json.arrow string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.separator.key-value -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.definition.parameters.end -// ^^ meta.group.braces.curly meta.function.json.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - "play": (arg) => {}, -//^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json.arrow -//^ meta.group.braces.curly meta.function.json.arrow string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.function.json.arrow string.quoted entity.name.function -// ^ meta.group.braces.curly meta.function.json.arrow string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.separator.key-value -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function.json.arrow variable.parameter.function -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.definition.parameters.end -// ^^ meta.group.braces.curly meta.function.json.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - "play": arg => {}, -//^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.json.arrow -//^ meta.group.braces.curly meta.function.json.arrow string.quoted punctuation.definition.string.begin -// ^^^^ meta.group.braces.curly meta.function.json.arrow string.quoted entity.name.function -// ^ meta.group.braces.curly meta.function.json.arrow string.quoted punctuation.definition.string.end -// ^ meta.group.braces.curly meta.function.json.arrow punctuation.separator.key-value -// ^^^ meta.group.braces.curly meta.function.json.arrow variable.parameter.function -// ^^ meta.group.braces.curly meta.function.json.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - [play]: function() {}, -//^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly punctuation.separator.key-value -// ^^^^^^^^ meta.group.braces.curly meta.function storage.type.function -// ^ meta.group.braces.curly meta.function punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - [play]: function(arg) {}, -//^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly punctuation.separator.key-value -// ^^^^^^^^ meta.group.braces.curly meta.function storage.type.function -// ^ meta.group.braces.curly meta.function punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function variable.parameter.function -// ^ meta.group.braces.curly meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - [play]: function*() {}, -//^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly punctuation.separator.key-value -// ^^^^^^^^ meta.group.braces.curly meta.function storage.type.function -// ^ meta.group.braces.curly meta.function keyword.generator.asterisk -// ^ meta.group.braces.curly meta.function punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - [play]: function*(arg) {}, -//^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly punctuation.separator.key-value -// ^^^^^^^^ meta.group.braces.curly meta.function storage.type.function -// ^ meta.group.braces.curly meta.function keyword.generator.asterisk -// ^ meta.group.braces.curly meta.function punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function variable.parameter.function -// ^ meta.group.braces.curly meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - [play]: async function() {}, -//^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly punctuation.separator.key-value -// ^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function -// ^^^^^ meta.group.braces.curly meta.function storage.type -// ^^^^^^^^ meta.group.braces.curly meta.function storage.type.function -// ^ meta.group.braces.curly meta.function punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - [play]: async function(arg) {}, -//^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly punctuation.separator.key-value -// ^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function -// ^^^^^ meta.group.braces.curly meta.function storage.type -// ^^^^^^^^ meta.group.braces.curly meta.function storage.type.function -// ^ meta.group.braces.curly meta.function punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function variable.parameter.function -// ^ meta.group.braces.curly meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - [play]: async function*() {}, -//^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly punctuation.separator.key-value -// ^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function -// ^^^^^ meta.group.braces.curly meta.function storage.type -// ^^^^^^^^ meta.group.braces.curly meta.function storage.type.function -// ^ meta.group.braces.curly meta.function keyword.generator.asterisk -// ^ meta.group.braces.curly meta.function punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - [play]: async function*(arg) {}, -//^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly punctuation.separator.key-value -// ^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.function -// ^^^^^ meta.group.braces.curly meta.function storage.type -// ^^^^^^^^ meta.group.braces.curly meta.function storage.type.function -// ^ meta.group.braces.curly meta.function keyword.generator.asterisk -// ^ meta.group.braces.curly meta.function punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function variable.parameter.function -// ^ meta.group.braces.curly meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - [play]: async () => {}, -//^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly punctuation.separator.key-value -// ^^^^^^^^^^^ meta.group.braces.curly meta.function.arrow -// ^^^^^ meta.group.braces.curly meta.function.arrow storage.type -// ^ meta.group.braces.curly meta.function.arrow punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.group.braces.curly meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - [play]: async (arg) => {}, -//^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly punctuation.separator.key-value -// ^^^^^^^^^^^^^^ meta.group.braces.curly meta.function.arrow -// ^^^^^ meta.group.braces.curly meta.function.arrow storage.type -// ^ meta.group.braces.curly meta.function.arrow punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function.arrow variable.parameter.function -// ^ meta.group.braces.curly meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.group.braces.curly meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - [play]: async arg => {}, -//^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly punctuation.separator.key-value -// ^^^^^^^^^^^^ meta.group.braces.curly meta.function.arrow -// ^^^^^ meta.group.braces.curly meta.function.arrow storage.type -// ^^^ meta.group.braces.curly meta.function.arrow variable.parameter.function -// ^^ meta.group.braces.curly meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - [play]: () => {}, -//^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly punctuation.separator.key-value -// ^^^^^ meta.group.braces.curly meta.function.arrow -// ^ meta.group.braces.curly meta.function.arrow punctuation.definition.parameters.begin -// ^ meta.group.braces.curly meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.group.braces.curly meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - [play]: (arg) => {}, -//^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly punctuation.separator.key-value -// ^^^^^^^^ meta.group.braces.curly meta.function.arrow -// ^ meta.group.braces.curly meta.function.arrow punctuation.definition.parameters.begin -// ^^^ meta.group.braces.curly meta.function.arrow variable.parameter.function -// ^ meta.group.braces.curly meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.group.braces.curly meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.delimiter.comma - - [play]: arg => {} -//^ meta.group.braces.curly meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.curly meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.curly punctuation.separator.key-value -// ^^^^^^ meta.group.braces.curly meta.function.arrow -// ^^^ meta.group.braces.curly meta.function.arrow variable.parameter.function -// ^^ meta.group.braces.curly meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end - -} - -class Sound extends Model { -//^^^ meta.class storage.type.class -// ^^^^^ meta.class entity.name.class -// ^^^^^^ meta.class meta.flowtype.polymorph -// ^ meta.class meta.flowtype.polymorph punctuation.section.flowtype.begin -// ^ meta.class meta.flowtype.polymorph variable.other.flowtype -// ^ meta.class meta.flowtype.polymorph variable.other.flowtype -// ^ meta.class meta.flowtype.polymorph punctuation.section.flowtype.end -// ^^^^^^^^^^^^^^^^^^^^ meta.class meta.class.extends -// ^^^^^^^ meta.class meta.class.extends storage.type.extends -// ^^^^^ meta.class meta.class.extends variable.other.readwrite -// ^^^^^^ meta.class meta.class.extends meta.flowtype.polymorph -// ^ meta.class meta.class.extends meta.flowtype.polymorph punctuation.section.flowtype.begin -// ^ meta.class meta.class.extends meta.flowtype.polymorph variable.other.flowtype -// ^ meta.class meta.class.extends meta.flowtype.polymorph variable.other.flowtype -// ^ meta.class meta.class.extends meta.flowtype.polymorph punctuation.section.flowtype.end -// ^ meta.class meta.brace.curly.begin - get() {} -//^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - get(arg) {} -//^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - set() {} -//^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - set(arg) {} -//^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - *get() {} -//^ meta.class keyword.generator.asterisk -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - *get(arg) {} -//^ meta.class keyword.generator.asterisk -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - *set() {} -//^ meta.class keyword.generator.asterisk -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - *set(arg) {} -//^ meta.class keyword.generator.asterisk -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - async get() {} -//^^^^^ meta.class storage.type -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - async get(arg) {} -//^^^^^ meta.class storage.type -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - async set() {} -//^^^^^ meta.class storage.type -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - async set(arg) {} -//^^^^^ meta.class storage.type -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static get() {} -//^^^^^^ meta.class storage.modifier -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static get(arg) {} -//^^^^^^ meta.class storage.modifier -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static set() {} -//^^^^^^ meta.class storage.modifier -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static set(arg) {} -//^^^^^^ meta.class storage.modifier -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static *get() {} -//^^^^^^ meta.class storage.modifier -// ^ meta.class keyword.generator.asterisk -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static *get(arg) {} -//^^^^^^ meta.class storage.modifier -// ^ meta.class keyword.generator.asterisk -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static *set() {} -//^^^^^^ meta.class storage.modifier -// ^ meta.class keyword.generator.asterisk -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static *set(arg) {} -//^^^^^^ meta.class storage.modifier -// ^ meta.class keyword.generator.asterisk -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static async get() {} -//^^^^^^ meta.class storage.modifier -// ^^^^^ meta.class storage.type -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static async get(arg) {} -//^^^^^^ meta.class storage.modifier -// ^^^^^ meta.class storage.type -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static async set() {} -//^^^^^^ meta.class storage.modifier -// ^^^^^ meta.class storage.type -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static async set(arg) {} -//^^^^^^ meta.class storage.modifier -// ^^^^^ meta.class storage.type -// ^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static get get() {} -//^^^^^^ meta.class storage.modifier -// ^^^^ meta.class meta.class-accessor storage.type -// ^^^ meta.class meta.class-accessor string.unquoted entity.name.function -// ^ meta.class meta.class-accessor punctuation.definition.parameters.begin -// ^ meta.class meta.class-accessor punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static set set(arg) {} -//^^^^^^ meta.class storage.modifier -// ^^^^ meta.class meta.class-accessor storage.type -// ^^^ meta.class meta.class-accessor string.unquoted entity.name.function -// ^ meta.class meta.class-accessor punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-accessor variable.parameter.function -// ^ meta.class meta.class-accessor punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - play() {} -//^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - play(arg) {} -//^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - 'play'() {} -//^ meta.class meta.class-method string.quoted punctuation.definition.string.begin -// ^^^^ meta.class meta.class-method string.quoted entity.name.function -// ^ meta.class meta.class-method string.quoted punctuation.definition.string.end -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - 'play'(arg) {} -//^ meta.class meta.class-method string.quoted punctuation.definition.string.begin -// ^^^^ meta.class meta.class-method string.quoted entity.name.function -// ^ meta.class meta.class-method string.quoted punctuation.definition.string.end -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - *play() {} -//^ meta.class keyword.generator.asterisk -// ^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - *play(arg) {} -//^ meta.class keyword.generator.asterisk -// ^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - *'play'() {} -//^ meta.class keyword.generator.asterisk -// ^ meta.class meta.class-method string.quoted punctuation.definition.string.begin -// ^^^^ meta.class meta.class-method string.quoted entity.name.function -// ^ meta.class meta.class-method string.quoted punctuation.definition.string.end -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - *'play'(arg) {} -//^ meta.class keyword.generator.asterisk -// ^ meta.class meta.class-method string.quoted punctuation.definition.string.begin -// ^^^^ meta.class meta.class-method string.quoted entity.name.function -// ^ meta.class meta.class-method string.quoted punctuation.definition.string.end -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - async play() {} -//^^^^^ meta.class storage.type -// ^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - async play(arg) {} -//^^^^^ meta.class storage.type -// ^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - get play() {} -//^^^^ meta.class meta.class-accessor storage.type -// ^^^^ meta.class meta.class-accessor string.unquoted entity.name.function -// ^ meta.class meta.class-accessor punctuation.definition.parameters.begin -// ^ meta.class meta.class-accessor punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - set play(arg) {} -//^^^^ meta.class meta.class-accessor storage.type -// ^^^^ meta.class meta.class-accessor string.unquoted entity.name.function -// ^ meta.class meta.class-accessor punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-accessor variable.parameter.function -// ^ meta.class meta.class-accessor punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static play() {} -//^^^^^^ meta.class storage.modifier -// ^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static play(arg) {} -//^^^^^^ meta.class storage.modifier -// ^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static *play() {} -//^^^^^^ meta.class storage.modifier -// ^ meta.class keyword.generator.asterisk -// ^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static *play(arg) {} -//^^^^^^ meta.class storage.modifier -// ^ meta.class keyword.generator.asterisk -// ^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static async play() {} -//^^^^^^ meta.class storage.modifier -// ^^^^^ meta.class storage.type -// ^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static async play(arg) {} -//^^^^^^ meta.class storage.modifier -// ^^^^^ meta.class storage.type -// ^^^^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static get play() {} -//^^^^^^ meta.class storage.modifier -// ^^^^ meta.class meta.class-accessor storage.type -// ^^^^ meta.class meta.class-accessor string.unquoted entity.name.function -// ^ meta.class meta.class-accessor punctuation.definition.parameters.begin -// ^ meta.class meta.class-accessor punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static set play(arg) {} -//^^^^^^ meta.class storage.modifier -// ^^^^ meta.class meta.class-accessor storage.type -// ^^^^ meta.class meta.class-accessor string.unquoted entity.name.function -// ^ meta.class meta.class-accessor punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-accessor variable.parameter.function -// ^ meta.class meta.class-accessor punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - 0() {} -//^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - 0(arg) {} -//^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - *0() {} -//^ meta.class keyword.generator.asterisk -// ^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - *0(arg) {} -//^ meta.class keyword.generator.asterisk -// ^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - async 0() {} -//^^^^^ meta.class storage.type -// ^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - async 0(arg) {} -//^^^^^ meta.class storage.type -// ^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - get 0() {} -//^^^^ meta.class meta.class-accessor storage.type -// ^ meta.class meta.class-accessor string.unquoted entity.name.function -// ^ meta.class meta.class-accessor punctuation.definition.parameters.begin -// ^ meta.class meta.class-accessor punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - set 0(arg) {} -//^^^^ meta.class meta.class-accessor storage.type -// ^ meta.class meta.class-accessor string.unquoted entity.name.function -// ^ meta.class meta.class-accessor punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-accessor variable.parameter.function -// ^ meta.class meta.class-accessor punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static 0() {} -//^^^^^^ meta.class storage.modifier -// ^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static 0(arg) {} -//^^^^^^ meta.class storage.modifier -// ^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static *0() {} -//^^^^^^ meta.class storage.modifier -// ^ meta.class keyword.generator.asterisk -// ^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static *0(arg) {} -//^^^^^^ meta.class storage.modifier -// ^ meta.class keyword.generator.asterisk -// ^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static async 0() {} -//^^^^^^ meta.class storage.modifier -// ^^^^^ meta.class storage.type -// ^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static async 0(arg) {} -//^^^^^^ meta.class storage.modifier -// ^^^^^ meta.class storage.type -// ^ meta.class meta.class-method string.unquoted entity.name.function -// ^ meta.class meta.class-method punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method variable.parameter.function -// ^ meta.class meta.class-method punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - [play]() {} -//^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.class meta.group.braces.square variable.other.readwrite -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - [play](arg) {} -//^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.class meta.group.braces.square variable.other.readwrite -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method.computed variable.parameter.function -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - *[play]() {} -//^ meta.class keyword.generator.asterisk -// ^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.class meta.group.braces.square variable.other.readwrite -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - *[play](arg) {} -//^ meta.class keyword.generator.asterisk -// ^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.class meta.group.braces.square variable.other.readwrite -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method.computed variable.parameter.function -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - async [play]() {} -//^^^^^ meta.class storage.type -// ^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.class meta.group.braces.square variable.other.readwrite -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - async [play](arg) {} -//^^^^^ meta.class storage.type -// ^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.class meta.group.braces.square variable.other.readwrite -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method.computed variable.parameter.function -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - get [play]() {} -//^^^ meta.class storage.type -// ^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.class meta.group.braces.square variable.other.readwrite -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - set [play](arg) {} -//^^^ meta.class storage.type -// ^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.class meta.group.braces.square variable.other.readwrite -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method.computed variable.parameter.function -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static [play]() {} -//^^^^^^ meta.class storage.modifier -// ^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.class meta.group.braces.square variable.other.readwrite -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static [play](arg) {} -//^^^^^^ meta.class storage.modifier -// ^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.class meta.group.braces.square variable.other.readwrite -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method.computed variable.parameter.function -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static *[play]() {} -//^^^^^^ meta.class storage.modifier -// ^ meta.class keyword.generator.asterisk -// ^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.class meta.group.braces.square variable.other.readwrite -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static *[play](arg) {} -//^^^^^^ meta.class storage.modifier -// ^ meta.class keyword.generator.asterisk -// ^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.class meta.group.braces.square variable.other.readwrite -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method.computed variable.parameter.function -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static async [play]() {} -//^^^^^^ meta.class storage.modifier -// ^^^^^ meta.class storage.type -// ^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.class meta.group.braces.square variable.other.readwrite -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static async [play](arg) {} -//^^^^^^ meta.class storage.modifier -// ^^^^^ meta.class storage.type -// ^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.class meta.group.braces.square variable.other.readwrite -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method.computed variable.parameter.function -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static get [play]() {} -//^^^^^^ meta.class storage.modifier -// ^^^ meta.class storage.type -// ^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.class meta.group.braces.square variable.other.readwrite -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end - static set [play](arg) {} -//^^^^^^ meta.class storage.modifier -// ^^^ meta.class storage.type -// ^ meta.class meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.class meta.group.braces.square variable.other.readwrite -// ^ meta.class meta.group.braces.square meta.brace.square.end -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.begin -// ^^^ meta.class meta.class-method.computed variable.parameter.function -// ^ meta.class meta.class-method.computed punctuation.definition.parameters.end -// ^ meta.class meta.group.braces.curly meta.brace.curly.begin -// ^ meta.class meta.group.braces.curly meta.brace.curly.end -} -//<- meta.class meta.brace.curly.end - - -Sound -//^^^ variable.other.readwrite -Sound() -//^^^ meta.function-call.without-arguments variable.function -// ^^ meta.function-call.without-arguments meta.group.braces.round.function.arguments -Sound = {} -//^^^ variable.other.readwrite -//<- source.js -// ^ keyword.operator.assignment -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.play -//^^^ meta.property.class variable.other.class -// ^ meta.property.class keyword.operator.accessor -// ^^^^ meta.property.class variable.other.property.static -Sound[play] -//^^^ variable.other.object variable.other.object -// ^ meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.square meta.brace.square.end -Sound.play() -//^^^ meta.function-call.static.without-arguments variable.other.class -// ^ meta.function-call.static.without-arguments keyword.operator.accessor -// ^^^^ meta.function-call.static.without-arguments variable.function -// ^^ meta.function-call.static.without-arguments meta.group.braces.round.function.arguments -Sound[play]() -//^^^ variable.other.object variable.other.object -// ^ meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.round meta.brace.round.begin -// ^ meta.group.braces.round meta.brace.round.end -Sound.play = {} -//^^^ meta.property.class variable.other.class -//<- source.js -// ^ meta.property.class keyword.operator.accessor -// ^^^^ meta.property.class variable.other.property.static -// ^ keyword.operator.assignment -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound[play] = {} -//^^^ variable.other.object variable.other.object -//<- source.js -// ^ meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.square meta.brace.square.end -// ^ keyword.operator.assignment -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.prototype -//^^^ meta.prototype.access entity.name.class -// ^ meta.prototype.access keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.access variable.language.prototype -Sound.prototype() -//^^^ meta.prototype.access entity.name.class -// ^ meta.prototype.access keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.access variable.language.prototype -// ^ meta.group.braces.round meta.brace.round.begin -// ^ meta.group.braces.round meta.brace.round.end -Sound.prototype = {} -//^^^^^^^^^^^^^^^^ meta.prototype.declaration -//^^^ meta.prototype.declaration entity.name.class -// ^ meta.prototype.declaration keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.declaration variable.language.prototype -// ^ meta.prototype.declaration keyword.operator.assignment -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.prototype.play -//^^^ meta.prototype.access entity.name.class -// ^ meta.prototype.access keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.access variable.language.prototype -// ^ keyword.operator.accessor -// ^^^^ meta.property.object variable.other.property -Sound.prototype.play() -//^^^ meta.prototype.access entity.name.class -// ^ meta.prototype.access keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.access variable.language.prototype -// ^ keyword.operator.accessor -// ^^^^ meta.function-call.method.without-arguments variable.function -// ^^ meta.function-call.method.without-arguments meta.group.braces.round.function.arguments -Sound.prototype[play]() -//^^^ meta.prototype.access entity.name.class -// ^ meta.prototype.access keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.access variable.language.prototype -// ^ meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.round meta.brace.round.begin -// ^ meta.group.braces.round meta.brace.round.end -Sound.prototype.play = -//^^^ meta.prototype.access entity.name.class -//<- source.js -// ^ meta.prototype.access keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.access variable.language.prototype -// ^ keyword.operator.accessor -// ^^^^ meta.property.object variable.other.property -// ^ keyword.operator.assignment -Sound.prototype[play] = -//^^^ meta.prototype.access entity.name.class -//<- source.js -// ^ meta.prototype.access keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.access variable.language.prototype -// ^ meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.square meta.brace.square.end -// ^ keyword.operator.assignment -Sound.play.repeat -//^^^ meta.property.class variable.other.class -// ^ meta.property.class keyword.operator.accessor -// ^^^^ meta.property.class variable.other.property.static -// ^ keyword.operator.accessor -// ^^^^^^ meta.property.object variable.other.property -Sound[play].repeat -//^^^ variable.other.object variable.other.object -// ^ meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.square meta.brace.square.end -// ^ keyword.operator.accessor -// ^^^^^^ meta.property.object variable.other.property -Sound.play.repeat() -//^^^ meta.property.class variable.other.class -// ^ meta.property.class keyword.operator.accessor -// ^^^^ meta.property.class variable.other.property.static -// ^ keyword.operator.accessor -// ^^^^^^ meta.function-call.method.without-arguments variable.function -// ^^ meta.function-call.method.without-arguments meta.group.braces.round.function.arguments -Sound[play].repeat() -//^^^ variable.other.object variable.other.object -// ^ meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.square meta.brace.square.end -// ^ keyword.operator.accessor -// ^^^^^^ meta.function-call.method.without-arguments variable.function -// ^^ meta.function-call.method.without-arguments meta.group.braces.round.function.arguments -Sound.play.repeat = {} -//^^^ meta.property.class variable.other.class -//<- source.js -// ^ meta.property.class keyword.operator.accessor -// ^^^^ meta.property.class variable.other.property.static -// ^ keyword.operator.accessor -// ^^^^^^ meta.property.object variable.other.property -// ^ keyword.operator.assignment -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound[play].repeat = {} -//^^^ variable.other.object variable.other.object -//<- source.js -// ^ meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.square meta.brace.square.end -// ^ keyword.operator.accessor -// ^^^^^^ meta.property.object variable.other.property -// ^ keyword.operator.assignment -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - - -Sound.prototype.play = function() {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.prototype -//^^^ meta.function.prototype entity.name.class -//<- source.js -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^^^^^^ meta.function.prototype variable.language.prototype -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^ meta.function.prototype entity.name.function -// ^ meta.function.prototype keyword.operator.assignment -// ^^^^^^^^ meta.function.prototype storage.type.function -// ^ meta.function.prototype punctuation.definition.parameters.begin -// ^ meta.function.prototype punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.prototype.play = function(arg) {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.prototype -//^^^ meta.function.prototype entity.name.class -//<- source.js -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^^^^^^ meta.function.prototype variable.language.prototype -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^ meta.function.prototype entity.name.function -// ^ meta.function.prototype keyword.operator.assignment -// ^^^^^^^^ meta.function.prototype storage.type.function -// ^ meta.function.prototype punctuation.definition.parameters.begin -// ^^^ meta.function.prototype variable.parameter.function -// ^ meta.function.prototype punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.prototype.play = function*() {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.prototype -//^^^ meta.function.prototype entity.name.class -//<- source.js -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^^^^^^ meta.function.prototype variable.language.prototype -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^ meta.function.prototype entity.name.function -// ^ meta.function.prototype keyword.operator.assignment -// ^^^^^^^^ meta.function.prototype storage.type.function -// ^ meta.function.prototype keyword.generator.asterisk -// ^ meta.function.prototype punctuation.definition.parameters.begin -// ^ meta.function.prototype punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.prototype.play = function*(arg) {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.prototype -//^^^ meta.function.prototype entity.name.class -//<- source.js -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^^^^^^ meta.function.prototype variable.language.prototype -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^ meta.function.prototype entity.name.function -// ^ meta.function.prototype keyword.operator.assignment -// ^^^^^^^^ meta.function.prototype storage.type.function -// ^ meta.function.prototype keyword.generator.asterisk -// ^ meta.function.prototype punctuation.definition.parameters.begin -// ^^^ meta.function.prototype variable.parameter.function -// ^ meta.function.prototype punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.prototype.play = async function() {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.prototype -//^^^ meta.function.prototype entity.name.class -//<- source.js -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^^^^^^ meta.function.prototype variable.language.prototype -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^ meta.function.prototype entity.name.function -// ^ meta.function.prototype keyword.operator.assignment -// ^^^^^ meta.function.prototype storage.type -// ^^^^^^^^ meta.function.prototype storage.type.function -// ^ meta.function.prototype punctuation.definition.parameters.begin -// ^ meta.function.prototype punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.prototype.play = async function(arg) {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.prototype -//^^^ meta.function.prototype entity.name.class -//<- source.js -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^^^^^^ meta.function.prototype variable.language.prototype -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^ meta.function.prototype entity.name.function -// ^ meta.function.prototype keyword.operator.assignment -// ^^^^^ meta.function.prototype storage.type -// ^^^^^^^^ meta.function.prototype storage.type.function -// ^ meta.function.prototype punctuation.definition.parameters.begin -// ^^^ meta.function.prototype variable.parameter.function -// ^ meta.function.prototype punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.prototype.play = async function*() {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.prototype -//^^^ meta.function.prototype entity.name.class -//<- source.js -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^^^^^^ meta.function.prototype variable.language.prototype -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^ meta.function.prototype entity.name.function -// ^ meta.function.prototype keyword.operator.assignment -// ^^^^^ meta.function.prototype storage.type -// ^^^^^^^^ meta.function.prototype storage.type.function -// ^ meta.function.prototype keyword.generator.asterisk -// ^ meta.function.prototype punctuation.definition.parameters.begin -// ^ meta.function.prototype punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.prototype.play = async function*(arg) {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.prototype -//^^^ meta.function.prototype entity.name.class -//<- source.js -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^^^^^^ meta.function.prototype variable.language.prototype -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^ meta.function.prototype entity.name.function -// ^ meta.function.prototype keyword.operator.assignment -// ^^^^^ meta.function.prototype storage.type -// ^^^^^^^^ meta.function.prototype storage.type.function -// ^ meta.function.prototype keyword.generator.asterisk -// ^ meta.function.prototype punctuation.definition.parameters.begin -// ^^^ meta.function.prototype variable.parameter.function -// ^ meta.function.prototype punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.prototype.play = async () => {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.prototype.function.arrow -//^^^ meta.prototype.function.arrow entity.name.class -//<- source.js -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.function.arrow variable.language.prototype -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^^ meta.prototype.function.arrow entity.name.function -// ^ meta.prototype.function.arrow keyword.operator.assignment -// ^^^^^ meta.prototype.function.arrow storage.type -// ^ meta.prototype.function.arrow punctuation.definition.parameters.begin -// ^ meta.prototype.function.arrow punctuation.definition.parameters.end -// ^^ meta.prototype.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.prototype.play = async (arg) => {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.prototype.function.arrow -//^^^ meta.prototype.function.arrow entity.name.class -//<- source.js -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.function.arrow variable.language.prototype -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^^ meta.prototype.function.arrow entity.name.function -// ^ meta.prototype.function.arrow keyword.operator.assignment -// ^^^^^ meta.prototype.function.arrow storage.type -// ^ meta.prototype.function.arrow punctuation.definition.parameters.begin -// ^^^ meta.prototype.function.arrow variable.parameter.function -// ^ meta.prototype.function.arrow punctuation.definition.parameters.end -// ^^ meta.prototype.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.prototype.play = async arg => {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.prototype.function.arrow -//^^^ meta.prototype.function.arrow entity.name.class -//<- source.js -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.function.arrow variable.language.prototype -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^^ meta.prototype.function.arrow entity.name.function -// ^ meta.prototype.function.arrow keyword.operator.assignment -// ^^^^^ meta.prototype.function.arrow storage.type -// ^^^ meta.prototype.function.arrow variable.parameter.function -// ^^ meta.prototype.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.prototype.play = () => {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.prototype.function.arrow -//^^^ meta.prototype.function.arrow entity.name.class -//<- source.js -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.function.arrow variable.language.prototype -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^^ meta.prototype.function.arrow entity.name.function -// ^ meta.prototype.function.arrow keyword.operator.assignment -// ^ meta.prototype.function.arrow punctuation.definition.parameters.begin -// ^ meta.prototype.function.arrow punctuation.definition.parameters.end -// ^^ meta.prototype.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.prototype.play = (arg) => {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.prototype.function.arrow -//^^^ meta.prototype.function.arrow entity.name.class -//<- source.js -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.function.arrow variable.language.prototype -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^^ meta.prototype.function.arrow entity.name.function -// ^ meta.prototype.function.arrow keyword.operator.assignment -// ^ meta.prototype.function.arrow punctuation.definition.parameters.begin -// ^^^ meta.prototype.function.arrow variable.parameter.function -// ^ meta.prototype.function.arrow punctuation.definition.parameters.end -// ^^ meta.prototype.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.prototype.play = arg => {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.prototype.function.arrow -//^^^ meta.prototype.function.arrow entity.name.class -//<- source.js -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.function.arrow variable.language.prototype -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^^ meta.prototype.function.arrow entity.name.function -// ^ meta.prototype.function.arrow keyword.operator.assignment -// ^^^ meta.prototype.function.arrow variable.parameter.function -// ^^ meta.prototype.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - - -Sound.play = function() {} -//^^^^^^^^^^^^^^^^^^^^^ meta.function.static -//^^^ meta.function.static entity.name.class -//<- source.js -// ^ meta.function.static keyword.operator.accessor -// ^^^^ meta.function.static entity.name.function -// ^ meta.function.static keyword.operator.assignment -// ^^^^^^^^ meta.function.static storage.type.function -// ^ meta.function.static punctuation.definition.parameters.begin -// ^ meta.function.static punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.play = function(arg) {} -//^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.static -//^^^ meta.function.static entity.name.class -//<- source.js -// ^ meta.function.static keyword.operator.accessor -// ^^^^ meta.function.static entity.name.function -// ^ meta.function.static keyword.operator.assignment -// ^^^^^^^^ meta.function.static storage.type.function -// ^ meta.function.static punctuation.definition.parameters.begin -// ^^^ meta.function.static variable.parameter.function -// ^ meta.function.static punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.play = function*() {} -//^^^^^^^^^^^^^^^^^^^^^^ meta.function.static -//^^^ meta.function.static entity.name.class -//<- source.js -// ^ meta.function.static keyword.operator.accessor -// ^^^^ meta.function.static entity.name.function -// ^ meta.function.static keyword.operator.assignment -// ^^^^^^^^ meta.function.static storage.type.function -// ^ meta.function.static keyword.generator.asterisk -// ^ meta.function.static punctuation.definition.parameters.begin -// ^ meta.function.static punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.play = function*(arg) {} -//^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.static -//^^^ meta.function.static entity.name.class -//<- source.js -// ^ meta.function.static keyword.operator.accessor -// ^^^^ meta.function.static entity.name.function -// ^ meta.function.static keyword.operator.assignment -// ^^^^^^^^ meta.function.static storage.type.function -// ^ meta.function.static keyword.generator.asterisk -// ^ meta.function.static punctuation.definition.parameters.begin -// ^^^ meta.function.static variable.parameter.function -// ^ meta.function.static punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.play = async function() {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.static -//^^^ meta.function.static entity.name.class -//<- source.js -// ^ meta.function.static keyword.operator.accessor -// ^^^^ meta.function.static entity.name.function -// ^ meta.function.static keyword.operator.assignment -// ^^^^^ meta.function.static storage.type -// ^^^^^^^^ meta.function.static storage.type.function -// ^ meta.function.static punctuation.definition.parameters.begin -// ^ meta.function.static punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.play = async function(arg) {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.static -//^^^ meta.function.static entity.name.class -//<- source.js -// ^ meta.function.static keyword.operator.accessor -// ^^^^ meta.function.static entity.name.function -// ^ meta.function.static keyword.operator.assignment -// ^^^^^ meta.function.static storage.type -// ^^^^^^^^ meta.function.static storage.type.function -// ^ meta.function.static punctuation.definition.parameters.begin -// ^^^ meta.function.static variable.parameter.function -// ^ meta.function.static punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.play = async function*() {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.static -//^^^ meta.function.static entity.name.class -//<- source.js -// ^ meta.function.static keyword.operator.accessor -// ^^^^ meta.function.static entity.name.function -// ^ meta.function.static keyword.operator.assignment -// ^^^^^ meta.function.static storage.type -// ^^^^^^^^ meta.function.static storage.type.function -// ^ meta.function.static keyword.generator.asterisk -// ^ meta.function.static punctuation.definition.parameters.begin -// ^ meta.function.static punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.play = async function*(arg) {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.static -//^^^ meta.function.static entity.name.class -//<- source.js -// ^ meta.function.static keyword.operator.accessor -// ^^^^ meta.function.static entity.name.function -// ^ meta.function.static keyword.operator.assignment -// ^^^^^ meta.function.static storage.type -// ^^^^^^^^ meta.function.static storage.type.function -// ^ meta.function.static keyword.generator.asterisk -// ^ meta.function.static punctuation.definition.parameters.begin -// ^^^ meta.function.static variable.parameter.function -// ^ meta.function.static punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.play = async () => {} -//^^^^^^^^^^^^^^^^^^^^^^ meta.function.static.arrow -//^^^ meta.function.static.arrow entity.name.class -//<- source.js -// ^ meta.function.static.arrow keyword.operator.accessor -// ^^^^ meta.function.static.arrow entity.name.function -// ^ meta.function.static.arrow keyword.operator.assignment -// ^^^^^ meta.function.static.arrow storage.type -// ^ meta.function.static.arrow punctuation.definition.parameters.begin -// ^ meta.function.static.arrow punctuation.definition.parameters.end -// ^^ meta.function.static.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.play = async (arg) => {} -//^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.static.arrow -//^^^ meta.function.static.arrow entity.name.class -//<- source.js -// ^ meta.function.static.arrow keyword.operator.accessor -// ^^^^ meta.function.static.arrow entity.name.function -// ^ meta.function.static.arrow keyword.operator.assignment -// ^^^^^ meta.function.static.arrow storage.type -// ^ meta.function.static.arrow punctuation.definition.parameters.begin -// ^^^ meta.function.static.arrow variable.parameter.function -// ^ meta.function.static.arrow punctuation.definition.parameters.end -// ^^ meta.function.static.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.play = async arg => {} -//^^^^^^^^^^^^^^^^^^^^^^^ meta.function.static.arrow -//^^^ meta.function.static.arrow entity.name.class -//<- source.js -// ^ meta.function.static.arrow keyword.operator.accessor -// ^^^^ meta.function.static.arrow entity.name.function -// ^ meta.function.static.arrow keyword.operator.assignment -// ^^^^^ meta.function.static.arrow storage.type -// ^^^ meta.function.static.arrow variable.parameter.function -// ^^ meta.function.static.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.play = () => {} -//^^^^^^^^^^^^^^^^ meta.function.static.arrow -//^^^ meta.function.static.arrow entity.name.class -//<- source.js -// ^ meta.function.static.arrow keyword.operator.accessor -// ^^^^ meta.function.static.arrow entity.name.function -// ^ meta.function.static.arrow keyword.operator.assignment -// ^ meta.function.static.arrow punctuation.definition.parameters.begin -// ^ meta.function.static.arrow punctuation.definition.parameters.end -// ^^ meta.function.static.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.play = (arg) => {} -//^^^^^^^^^^^^^^^^^^^ meta.function.static.arrow -//^^^ meta.function.static.arrow entity.name.class -//<- source.js -// ^ meta.function.static.arrow keyword.operator.accessor -// ^^^^ meta.function.static.arrow entity.name.function -// ^ meta.function.static.arrow keyword.operator.assignment -// ^ meta.function.static.arrow punctuation.definition.parameters.begin -// ^^^ meta.function.static.arrow variable.parameter.function -// ^ meta.function.static.arrow punctuation.definition.parameters.end -// ^^ meta.function.static.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.play = arg => {} -//^^^^^^^^^^^^^^^^^ meta.function.static.arrow -//^^^ meta.function.static.arrow entity.name.class -//<- source.js -// ^ meta.function.static.arrow keyword.operator.accessor -// ^^^^ meta.function.static.arrow entity.name.function -// ^ meta.function.static.arrow keyword.operator.assignment -// ^^^ meta.function.static.arrow variable.parameter.function -// ^^ meta.function.static.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -play = function() {} -//^^^^^^^^^^^^^^^ meta.function -//^^ meta.function entity.name.function -//<- source.js -// ^ meta.function keyword.operator.assignment -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -play = function(arg) {} -//^^^^^^^^^^^^^^^^^^ meta.function -//^^ meta.function entity.name.function -//<- source.js -// ^ meta.function keyword.operator.assignment -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function punctuation.definition.parameters.begin -// ^^^ meta.function variable.parameter.function -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -play = function*() {} -//^^^^^^^^^^^^^^^^ meta.function -//^^ meta.function entity.name.function -//<- source.js -// ^ meta.function keyword.operator.assignment -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function keyword.generator.asterisk -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -play = function*(arg) {} -//^^^^^^^^^^^^^^^^^^^ meta.function -//^^ meta.function entity.name.function -//<- source.js -// ^ meta.function keyword.operator.assignment -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function keyword.generator.asterisk -// ^ meta.function punctuation.definition.parameters.begin -// ^^^ meta.function variable.parameter.function -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -play = async function() {} -//^^^^^^^^^^^^^^^^^^^^^ meta.function -//^^ meta.function entity.name.function -//<- source.js -// ^ meta.function keyword.operator.assignment -// ^^^^^ meta.function storage.type -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -play = async function(arg) {} -//^^^^^^^^^^^^^^^^^^^^^^^^ meta.function -//^^ meta.function entity.name.function -//<- source.js -// ^ meta.function keyword.operator.assignment -// ^^^^^ meta.function storage.type -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function punctuation.definition.parameters.begin -// ^^^ meta.function variable.parameter.function -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -play = async function*() {} -//^^^^^^^^^^^^^^^^^^^^^^ meta.function -//^^ meta.function entity.name.function -//<- source.js -// ^ meta.function keyword.operator.assignment -// ^^^^^ meta.function storage.type -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function keyword.generator.asterisk -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -play = async function*(arg) {} -//^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function -//^^ meta.function entity.name.function -//<- source.js -// ^ meta.function keyword.operator.assignment -// ^^^^^ meta.function storage.type -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function keyword.generator.asterisk -// ^ meta.function punctuation.definition.parameters.begin -// ^^^ meta.function variable.parameter.function -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -play = async () => {} -//^^^^^^^^^^^^^^^^ meta.function.arrow -//^^ meta.function.arrow entity.name.function -//<- source.js -// ^ meta.function.arrow keyword.operator.assignment -// ^^^^^ meta.function.arrow storage.type -// ^ meta.function.arrow punctuation.definition.parameters.begin -// ^ meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -play = async (arg) => {} -//^^^^^^^^^^^^^^^^^^^ meta.function.arrow -//^^ meta.function.arrow entity.name.function -//<- source.js -// ^ meta.function.arrow keyword.operator.assignment -// ^^^^^ meta.function.arrow storage.type -// ^ meta.function.arrow punctuation.definition.parameters.begin -// ^^^ meta.function.arrow variable.parameter.function -// ^ meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -play = async arg => {} -//^^^^^^^^^^^^^^^^^ meta.function.arrow -//^^ meta.function.arrow entity.name.function -//<- source.js -// ^ meta.function.arrow keyword.operator.assignment -// ^^^^^ meta.function.arrow storage.type -// ^^^ meta.function.arrow variable.parameter.function -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -play = () => {} -//^^^^^^^^^^ meta.function.arrow -//^^ meta.function.arrow entity.name.function -//<- source.js -// ^ meta.function.arrow keyword.operator.assignment -// ^ meta.function.arrow punctuation.definition.parameters.begin -// ^ meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -play = (arg) => {} -//^^^^^^^^^^^^^ meta.function.arrow -//^^ meta.function.arrow entity.name.function -//<- source.js -// ^ meta.function.arrow keyword.operator.assignment -// ^ meta.function.arrow punctuation.definition.parameters.begin -// ^^^ meta.function.arrow variable.parameter.function -// ^ meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -play = arg => {} -//^^^^^^^^^^^ meta.function.arrow -//^^ meta.function.arrow entity.name.function -//<- source.js -// ^ meta.function.arrow keyword.operator.assignment -// ^^^ meta.function.arrow variable.parameter.function -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - - -return function() {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return function(arg) {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function punctuation.definition.parameters.begin -// ^^^ meta.function variable.parameter.function -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return function*() {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function keyword.generator.asterisk -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return function*(arg) {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function keyword.generator.asterisk -// ^ meta.function punctuation.definition.parameters.begin -// ^^^ meta.function variable.parameter.function -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return async function() {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^^^^^^^^^ meta.function -// ^^^^^ meta.function storage.type -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return async function(arg) {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^^^^^^^^^^^^ meta.function -// ^^^^^ meta.function storage.type -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function punctuation.definition.parameters.begin -// ^^^ meta.function variable.parameter.function -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return async function*() {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^^^^^^^^^^ meta.function -// ^^^^^ meta.function storage.type -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function keyword.generator.asterisk -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return async function*(arg) {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^^^^^^^^^^^^^ meta.function -// ^^^^^ meta.function storage.type -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function keyword.generator.asterisk -// ^ meta.function punctuation.definition.parameters.begin -// ^^^ meta.function variable.parameter.function -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return async () => {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^^^^ meta.function.arrow -// ^^^^^ meta.function.arrow storage.type -// ^ meta.function.arrow punctuation.definition.parameters.begin -// ^ meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return async (arg) => {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^^^^^^^ meta.function.arrow -// ^^^^^ meta.function.arrow storage.type -// ^ meta.function.arrow punctuation.definition.parameters.begin -// ^^^ meta.function.arrow variable.parameter.function -// ^ meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return async arg => {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^^^^^ meta.function.arrow -// ^^^^^ meta.function.arrow storage.type -// ^^^ meta.function.arrow variable.parameter.function -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return () => {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^ meta.function.arrow -// ^ meta.function.arrow punctuation.definition.parameters.begin -// ^ meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return (arg) => {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^ meta.function.arrow -// ^ meta.function.arrow punctuation.definition.parameters.begin -// ^^^ meta.function.arrow variable.parameter.function -// ^ meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return arg => {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^ meta.function.arrow -// ^^^ meta.function.arrow variable.parameter.function -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -return function play() {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^^^^^^^^ meta.function -// ^^^^^^^^ meta.function storage.type.function -// ^^^^ meta.function entity.name.function -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return function play(arg) {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^^^^^^^^^^^ meta.function -// ^^^^^^^^ meta.function storage.type.function -// ^^^^ meta.function entity.name.function -// ^ meta.function punctuation.definition.parameters.begin -// ^^^ meta.function variable.parameter.function -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return function* play() {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^^^^^^^^^ meta.function -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function keyword.generator.asterisk -// ^^^^ meta.function entity.name.function -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return function* play(arg) {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^^^^^^^^^^^^ meta.function -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function keyword.generator.asterisk -// ^^^^ meta.function entity.name.function -// ^ meta.function punctuation.definition.parameters.begin -// ^^^ meta.function variable.parameter.function -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return async function play() {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^^^^^^^^^^^^^^ meta.function -// ^^^^^ meta.function storage.type -// ^^^^^^^^ meta.function storage.type.function -// ^^^^ meta.function entity.name.function -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return async function play(arg) {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^^^^^^^^^^^^^^^^^ meta.function -// ^^^^^ meta.function storage.type -// ^^^^^^^^ meta.function storage.type.function -// ^^^^ meta.function entity.name.function -// ^ meta.function punctuation.definition.parameters.begin -// ^^^ meta.function variable.parameter.function -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return async function* play() {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^^^^^^^^^^^^^^^ meta.function -// ^^^^^ meta.function storage.type -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function keyword.generator.asterisk -// ^^^^ meta.function entity.name.function -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -return async function* play(arg) {} -//^^^^ keyword.control.flow -//<- source.js -// ^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function -// ^^^^^ meta.function storage.type -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function keyword.generator.asterisk -// ^^^^ meta.function entity.name.function -// ^ meta.function punctuation.definition.parameters.begin -// ^^^ meta.function variable.parameter.function -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -yield genfunc; -//^^^ keyword.control.flow -//<- source.js -// ^^^^^^^ variable.other.readwrite -// ^ punctuation.terminator.statement -yield* genfunc; -//^^^ keyword.control.flow -//<- source.js -// ^ keyword.generator.asterisk -// ^^^^^^^ variable.other.readwrite -// ^ punctuation.terminator.statement - - -/** - * Not matched as function definitions - */ - -Sound[play] = function(){} -//^^^ variable.other.object variable.other.object -//<- source.js -// ^ meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.square meta.brace.square.end -// ^ keyword.operator.assignment -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -Sound.prototype.[play] = function(){} -//^^^ meta.prototype.access entity.name.class -//<- source.js -// ^ meta.prototype.access keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.access variable.language.prototype -// ^ keyword.operator.accessor -// ^ meta.group.braces.square meta.brace.square.begin -// ^^^^ meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.square meta.brace.square.end -// ^ keyword.operator.assignment -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - - -A = function() {} -//^^^^^^^^^^^^ meta.function -//^ meta.function keyword.operator.assignment -//<- source.js -//<- meta.function entity.name.function -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -B = function(z) {} -//^^^^^^^^^^^^^ meta.function -//^ meta.function keyword.operator.assignment -//<- source.js -//<- meta.function entity.name.function -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function variable.parameter.function -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -C = function c() {} -//^^^^^^^^^^^^^^ meta.function -//^ meta.function keyword.operator.assignment -//<- source.js -//<- meta.function entity.name.function -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function entity.name.function -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -D = function d(z) {} -//^^^^^^^^^^^^^^^ meta.function -//^ meta.function keyword.operator.assignment -//<- source.js -//<- meta.function entity.name.function -// ^^^^^^^^ meta.function storage.type.function -// ^ meta.function entity.name.function -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function variable.parameter.function -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -E = () => {} -//^^^^^^^ meta.function.arrow -//^ meta.function.arrow keyword.operator.assignment -//<- source.js -//<- meta.function.arrow entity.name.function -// ^ meta.function.arrow punctuation.definition.parameters.begin -// ^ meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -F = (z) => {} -//^^^^^^^^ meta.function.arrow -//^ meta.function.arrow keyword.operator.assignment -//<- source.js -//<- meta.function.arrow entity.name.function -// ^ meta.function.arrow punctuation.definition.parameters.begin -// ^ meta.function.arrow variable.parameter.function -// ^ meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -G = z => {} -//^^^^^^ meta.function.arrow -//^ meta.function.arrow keyword.operator.assignment -//<- source.js -//<- meta.function.arrow entity.name.function -// ^ meta.function.arrow variable.parameter.function -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -function() {} -//^^^^^^ meta.function storage.type.function -//<- source.js -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -function(z) {} -//^^^^^^ meta.function storage.type.function -//<- source.js -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function variable.parameter.function -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -function H() {} -//^^^^^^^^^^ meta.function -//^^^^^^ meta.function storage.type.function -//<- source.js -// ^ meta.function entity.name.function -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -function I(z) {} -//^^^^^^^^^^^ meta.function -//^^^^^^ meta.function storage.type.function -//<- source.js -// ^ meta.function entity.name.function -// ^ meta.function punctuation.definition.parameters.begin -// ^ meta.function variable.parameter.function -// ^ meta.function punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -() => {} -//^^^ meta.function.arrow -//<- source.js -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -(zzz) => {} -//^^^^^^ meta.function.arrow -//^ meta.function.arrow variable.parameter.function -//<- source.js -//<- meta.function.arrow punctuation.definition.parameters.begin -// ^ meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -JJJ.prototype.jjj = () => {} -//^^^^^^^^^^^^^^^^^^^^^^^ meta.prototype.function.arrow -//^ meta.prototype.function.arrow entity.name.class -//<- source.js -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.function.arrow variable.language.prototype -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^ meta.prototype.function.arrow entity.name.function -// ^ meta.prototype.function.arrow keyword.operator.assignment -// ^ meta.prototype.function.arrow punctuation.definition.parameters.begin -// ^ meta.prototype.function.arrow punctuation.definition.parameters.end -// ^^ meta.prototype.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -KKK.prototype.kkk = (z) => {} -//^^^^^^^^^^^^^^^^^^^^^^^^ meta.prototype.function.arrow -//^ meta.prototype.function.arrow entity.name.class -//<- source.js -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.function.arrow variable.language.prototype -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^ meta.prototype.function.arrow entity.name.function -// ^ meta.prototype.function.arrow keyword.operator.assignment -// ^ meta.prototype.function.arrow punctuation.definition.parameters.begin -// ^ meta.prototype.function.arrow variable.parameter.function -// ^ meta.prototype.function.arrow punctuation.definition.parameters.end -// ^^ meta.prototype.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -LLL.prototype.lll = z => {} -//^^^^^^^^^^^^^^^^^^^^^^ meta.prototype.function.arrow -//^ meta.prototype.function.arrow entity.name.class -//<- source.js -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^^^^^^^ meta.prototype.function.arrow variable.language.prototype -// ^ meta.prototype.function.arrow keyword.operator.accessor -// ^^^ meta.prototype.function.arrow entity.name.function -// ^ meta.prototype.function.arrow keyword.operator.assignment -// ^ meta.prototype.function.arrow variable.parameter.function -// ^^ meta.prototype.function.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -MMM.prototype.mmm = function() {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.prototype -//^ meta.function.prototype entity.name.class -//<- source.js -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^^^^^^ meta.function.prototype variable.language.prototype -// ^ meta.function.prototype keyword.operator.accessor -// ^^^ meta.function.prototype entity.name.function -// ^ meta.function.prototype keyword.operator.assignment -// ^^^^^^^^ meta.function.prototype storage.type.function -// ^ meta.function.prototype punctuation.definition.parameters.begin -// ^ meta.function.prototype punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -NNN.prototype.nnn = function(z) {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.prototype -//^ meta.function.prototype entity.name.class -//<- source.js -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^^^^^^ meta.function.prototype variable.language.prototype -// ^ meta.function.prototype keyword.operator.accessor -// ^^^ meta.function.prototype entity.name.function -// ^ meta.function.prototype keyword.operator.assignment -// ^^^^^^^^ meta.function.prototype storage.type.function -// ^ meta.function.prototype punctuation.definition.parameters.begin -// ^ meta.function.prototype variable.parameter.function -// ^ meta.function.prototype punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -OOO.prototype.ooo = function oo() {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.prototype -//^ meta.function.prototype entity.name.class -//<- source.js -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^^^^^^ meta.function.prototype variable.language.prototype -// ^ meta.function.prototype keyword.operator.accessor -// ^^^ meta.function.prototype entity.name.function -// ^ meta.function.prototype keyword.operator.assignment -// ^^^^^^^^ meta.function.prototype storage.type.function -// ^^ meta.function.prototype entity.name.function -// ^ meta.function.prototype punctuation.definition.parameters.begin -// ^ meta.function.prototype punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -PPP.prototype.ppp = function pp(z) {} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.prototype -//^ meta.function.prototype entity.name.class -//<- source.js -// ^ meta.function.prototype keyword.operator.accessor -// ^^^^^^^^^ meta.function.prototype variable.language.prototype -// ^ meta.function.prototype keyword.operator.accessor -// ^^^ meta.function.prototype entity.name.function -// ^ meta.function.prototype keyword.operator.assignment -// ^^^^^^^^ meta.function.prototype storage.type.function -// ^^ meta.function.prototype entity.name.function -// ^ meta.function.prototype punctuation.definition.parameters.begin -// ^ meta.function.prototype variable.parameter.function -// ^ meta.function.prototype punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -QQQ.qqq = () => {} -//^^^^^^^^^^^^^ meta.function.static.arrow -//^ meta.function.static.arrow entity.name.class -//<- source.js -// ^ meta.function.static.arrow keyword.operator.accessor -// ^^^ meta.function.static.arrow entity.name.function -// ^ meta.function.static.arrow keyword.operator.assignment -// ^ meta.function.static.arrow punctuation.definition.parameters.begin -// ^ meta.function.static.arrow punctuation.definition.parameters.end -// ^^ meta.function.static.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -RRR.rrr = (z) => {} -//^^^^^^^^^^^^^^ meta.function.static.arrow -//^ meta.function.static.arrow entity.name.class -//<- source.js -// ^ meta.function.static.arrow keyword.operator.accessor -// ^^^ meta.function.static.arrow entity.name.function -// ^ meta.function.static.arrow keyword.operator.assignment -// ^ meta.function.static.arrow punctuation.definition.parameters.begin -// ^ meta.function.static.arrow variable.parameter.function -// ^ meta.function.static.arrow punctuation.definition.parameters.end -// ^^ meta.function.static.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -SSS.sss = z => {} -//^^^^^^^^^^^^ meta.function.static.arrow -//^ meta.function.static.arrow entity.name.class -//<- source.js -// ^ meta.function.static.arrow keyword.operator.accessor -// ^^^ meta.function.static.arrow entity.name.function -// ^ meta.function.static.arrow keyword.operator.assignment -// ^ meta.function.static.arrow variable.parameter.function -// ^^ meta.function.static.arrow storage.type.function.arrow -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -TTT.ttt = function() {} -//^^^^^^^^^^^^^^^^^^ meta.function.static -//^ meta.function.static entity.name.class -//<- source.js -// ^ meta.function.static keyword.operator.accessor -// ^^^ meta.function.static entity.name.function -// ^ meta.function.static keyword.operator.assignment -// ^^^^^^^^ meta.function.static storage.type.function -// ^ meta.function.static punctuation.definition.parameters.begin -// ^ meta.function.static punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -UUU.uuu = function(z) {} -//^^^^^^^^^^^^^^^^^^^ meta.function.static -//^ meta.function.static entity.name.class -//<- source.js -// ^ meta.function.static keyword.operator.accessor -// ^^^ meta.function.static entity.name.function -// ^ meta.function.static keyword.operator.assignment -// ^^^^^^^^ meta.function.static storage.type.function -// ^ meta.function.static punctuation.definition.parameters.begin -// ^ meta.function.static variable.parameter.function -// ^ meta.function.static punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -VVV.vvv = function vv() {} -//^^^^^^^^^^^^^^^^^^^^^ meta.function.static -//^ meta.function.static entity.name.class -//<- source.js -// ^ meta.function.static keyword.operator.accessor -// ^^^ meta.function.static entity.name.function -// ^ meta.function.static keyword.operator.assignment -// ^^^^^^^^ meta.function.static storage.type.function -// ^^ meta.function.static entity.name.function -// ^ meta.function.static punctuation.definition.parameters.begin -// ^ meta.function.static punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - -WWW.www = function ww(z) {} -//^^^^^^^^^^^^^^^^^^^^^^ meta.function.static -//^ meta.function.static entity.name.class -//<- source.js -// ^ meta.function.static keyword.operator.accessor -// ^^^ meta.function.static entity.name.function -// ^ meta.function.static keyword.operator.assignment -// ^^^^^^^^ meta.function.static storage.type.function -// ^^ meta.function.static entity.name.function -// ^ meta.function.static punctuation.definition.parameters.begin -// ^ meta.function.static variable.parameter.function -// ^ meta.function.static punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end - - -class X extends XX {} -//^^^^^^^^^^^^^^^^^^^ meta.class -//^^^ meta.class storage.type.class -// ^ meta.class entity.name.class -// ^^^^^^^^^^^ meta.class meta.class.extends -// ^^^^^^^ meta.class meta.class.extends storage.type.extends -// ^^ meta.class meta.class.extends variable.other.constant -// ^ meta.class meta.brace.curly.begin -// ^ meta.class meta.brace.curly.end -class Y {} -//^^^^^^^^ meta.class -//^^^ meta.class storage.type.class -// ^ meta.class entity.name.class -// ^ meta.class meta.brace.curly.begin -// ^ meta.class meta.brace.curly.end - - -var node = Relay.QL`node(123) {${Relay.QL`User {address {${fragment}, }, } `} }`; -//^ storage.type -//<- source.js -// ^^^^ variable.other.readwrite -// ^ keyword.operator.assignment -// ^^^^^ meta.property.class variable.other.class -// ^ meta.property.class keyword.operator.accessor -// ^^ meta.property.class variable.other.property.static -// ^^^^^^^^^^^^ string.interpolated -// ^ string.interpolated keyword.other.template.begin -// ^^ keyword.other.substitution.begin -// ^^^^^ meta.property.class variable.other.class -// ^ meta.property.class keyword.operator.accessor -// ^^ meta.property.class variable.other.property.static -// ^^^^^^^^^^^^^^^^ string.interpolated -// ^ string.interpolated keyword.other.template.begin -// ^^ keyword.other.substitution.begin -// ^^^^^^^^ variable.other.readwrite -// ^ keyword.other.substitution.end -// ^^^^^^^^ string.interpolated -// ^ string.interpolated keyword.other.template.end -// ^ keyword.other.substitution.end -// ^^^ string.interpolated -// ^ string.interpolated keyword.other.template.end -// ^ punctuation.terminator.statement diff --git a/test/syntax_test_jsx_OLD.js b/test/syntax_test_jsx_OLD.js deleted file mode 100644 index 552de44..0000000 --- a/test/syntax_test_jsx_OLD.js +++ /dev/null @@ -1,767 +0,0 @@ -// SYNTAX TEST "Packages/babel-sublime/JavaScript (Babel).tmLanguage" - -
-//^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx meta.tag punctuation.definition.tag.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^ meta.jsx comment.block -// ^^ meta.jsx comment.block punctuation.definition.comment.begin -// ^^ meta.jsx comment.block punctuation.definition.comment.end -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^^^^^^^^ meta.jsx comment.block -// ^^ meta.jsx comment.block punctuation.definition.comment.begin -// ^^ meta.jsx comment.block punctuation.definition.comment.end -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx meta.tag punctuation.definition.tag.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^ meta.jsx comment.block -// ^^ meta.jsx comment.block punctuation.definition.comment.begin -// ^^ meta.jsx comment.block punctuation.definition.comment.end -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^^^^^^^^ meta.jsx comment.block -// ^^ meta.jsx comment.block punctuation.definition.comment.begin -// ^^ meta.jsx comment.block punctuation.definition.comment.end -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx meta.tag punctuation.definition.tag.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx meta.tag punctuation.definition.tag.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^ meta.jsx meta.embedded.expression constant.numeric -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^ meta.jsx meta.tag punctuation.definition.tag.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^ meta.jsx meta.embedded.expression constant.numeric -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^ meta.jsx meta.embedded.expression constant.numeric -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
this.setState({})} /> -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx meta.embedded.expression -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^^^^^ meta.jsx meta.embedded.expression meta.function.arrow -// ^ meta.jsx meta.embedded.expression meta.function.arrow punctuation.definition.parameters.begin -// ^ meta.jsx meta.embedded.expression meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.jsx meta.embedded.expression meta.function.arrow storage.type.function.arrow -// ^^^^ meta.jsx meta.embedded.expression variable.language.this -// ^ meta.jsx meta.embedded.expression keyword.operator.accessor -// ^^^^^^^^ meta.jsx meta.embedded.expression meta.function-call.method.with-arguments variable.function -// ^ meta.jsx meta.embedded.expression meta.group.braces.round meta.brace.round.begin -// ^ meta.jsx meta.embedded.expression meta.group.braces.round meta.brace.curly.begin -// ^ meta.jsx meta.embedded.expression meta.group.braces.round meta.brace.curly.end -// ^ meta.jsx meta.embedded.expression meta.group.braces.round meta.brace.round.end -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^ meta.jsx meta.embedded.expression constant.numeric -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^ meta.jsx meta.embedded.expression constant.numeric -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^ meta.jsx meta.embedded.expression constant.numeric -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^^^^^^ meta.jsx string.quoted -//^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^ meta.jsx meta.embedded.expression constant.numeric -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^^^^^^^^ meta.jsx comment.block -// ^^ meta.jsx comment.block punctuation.definition.comment.begin -// ^^ meta.jsx comment.block punctuation.definition.comment.end -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^ meta.jsx comment.block -// ^^ meta.jsx comment.block punctuation.definition.comment.begin -// ^^ meta.jsx comment.block punctuation.definition.comment.end -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^^^^^^^^ meta.jsx comment.block -// ^^ meta.jsx comment.block punctuation.definition.comment.begin -// ^^ meta.jsx comment.block punctuation.definition.comment.end -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^ meta.jsx comment.block -// ^^ meta.jsx comment.block punctuation.definition.comment.begin -// ^^ meta.jsx comment.block punctuation.definition.comment.end -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - - -// tight greater-/less-than operations. - -for (var i=1; i -//^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^ meta.jsx entity.other.attribute-name -// ^^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end -
-//^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end -
-//^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx keyword.operator.assignment -// ^^ meta.jsx meta.tag punctuation.definition.tag.end -
-//^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^ meta.jsx meta.tag punctuation.definition.tag.end -
-//^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^ meta.jsx meta.tag punctuation.definition.tag.end -
-//^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end -
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.end -
-//^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^^^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -// comments between attributes, -// namespaced components, and -// non-alpha chars in tag/attribute names - -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^^^^^ meta.jsx comment.block -// ^^ meta.jsx comment.block punctuation.definition.comment.begin -// ^^ meta.jsx comment.block punctuation.definition.comment.end -// ^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^^^^ meta.jsx meta.embedded.expression variable.language.this -// ^ meta.jsx meta.embedded.expression keyword.operator.accessor -// ^^^^^^^ meta.jsx meta.embedded.expression meta.property.object variable.other.property -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -//^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^^^^^^^^^^^^^^ meta.jsx meta.tag entity.name.tag -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -//^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^^^^^^^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end -
-//^^^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx meta.tag punctuation.definition.tag.end - - -/** - * These have always work - */ -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx meta.tag punctuation.definition.tag.end - {'it\'s with text inside'} -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx meta.embedded.expression string.quoted -// ^ meta.jsx meta.embedded.expression string.quoted punctuation.definition.string.begin -// ^^ meta.jsx meta.embedded.expression string.quoted constant.character.escape -// ^ meta.jsx meta.embedded.expression string.quoted punctuation.definition.string.end -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -
-//^^^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
{'it\'s with text inside'}
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx meta.tag punctuation.definition.tag.end -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx meta.embedded.expression string.quoted -// ^ meta.jsx meta.embedded.expression string.quoted punctuation.definition.string.begin -// ^^ meta.jsx meta.embedded.expression string.quoted constant.character.escape -// ^ meta.jsx meta.embedded.expression string.quoted punctuation.definition.string.end -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^ meta.jsx meta.tag punctuation.definition.tag.end - {'it\'s with text inside'} -//^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx meta.embedded.expression string.quoted -// ^ meta.jsx meta.embedded.expression string.quoted punctuation.definition.string.begin -// ^^ meta.jsx meta.embedded.expression string.quoted constant.character.escape -// ^ meta.jsx meta.embedded.expression string.quoted punctuation.definition.string.end -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -
-//^^^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
{'it\'s with text inside'}
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^ meta.jsx meta.tag punctuation.definition.tag.end -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx meta.embedded.expression string.quoted -// ^ meta.jsx meta.embedded.expression string.quoted punctuation.definition.string.begin -// ^^ meta.jsx meta.embedded.expression string.quoted constant.character.escape -// ^ meta.jsx meta.embedded.expression string.quoted punctuation.definition.string.end -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end -
-//^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^ meta.jsx meta.tag punctuation.definition.tag.end - {"it's with text inside"} -//^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx meta.embedded.expression string.quoted -// ^ meta.jsx meta.embedded.expression string.quoted punctuation.definition.string.begin -// ^ meta.jsx meta.embedded.expression string.quoted punctuation.definition.string.end -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -
-//^^^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
{"it's with text inside"}
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^ meta.jsx meta.tag punctuation.definition.tag.end -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx meta.embedded.expression string.quoted -// ^ meta.jsx meta.embedded.expression string.quoted punctuation.definition.string.begin -// ^ meta.jsx meta.embedded.expression string.quoted punctuation.definition.string.end -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^ meta.jsx meta.tag punctuation.definition.tag.end - {"it's with text inside"} -//^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx meta.embedded.expression string.quoted -// ^ meta.jsx meta.embedded.expression string.quoted punctuation.definition.string.begin -// ^ meta.jsx meta.embedded.expression string.quoted punctuation.definition.string.end -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -
-//^^^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx meta.tag punctuation.definition.tag.end - - - -/** - * Fixed - */ -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx meta.tag punctuation.definition.tag.end - it's with text inside -
-//^^^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
it's with text inside
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx meta.tag punctuation.definition.tag.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^ meta.jsx meta.tag punctuation.definition.tag.end - it's with text inside -
-//^^^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
it's with text inside
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^ meta.jsx meta.tag punctuation.definition.tag.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end -
-//^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^ meta.jsx meta.tag punctuation.definition.tag.end - it's with text inside -
-//^^^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
it's with text inside
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^ meta.jsx meta.tag punctuation.definition.tag.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end -
-//^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^ meta.jsx meta.tag punctuation.definition.tag.end - it's with text inside -
-//^^^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
it's with text inside
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx -//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx meta.tag punctuation.definition.tag.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
it's with text inside
-//^ meta.jsx meta.tag punctuation.definition.tag.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
it's with text inside
-//^ meta.jsx meta.tag punctuation.definition.tag.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end diff --git a/test/syntax_test_jsx_invalid_OLD.js b/test/syntax_test_jsx_invalid_OLD.js deleted file mode 100644 index 47a719b..0000000 --- a/test/syntax_test_jsx_invalid_OLD.js +++ /dev/null @@ -1,231 +0,0 @@ -// SYNTAX TEST "Packages/babel-sublime/JavaScript (Babel).tmLanguage" - -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^ meta.jsx meta.embedded.expression constant.numeric -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^ meta.jsx meta.embedded.expression constant.numeric -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^ meta.jsx entity.other.attribute-name -// ^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^ meta.jsx entity.other.attribute-name -// ^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^ meta.jsx meta.embedded.expression constant.numeric -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx keyword.operator.assignment -// ^^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx keyword.operator.assignment -// ^^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx entity.other.attribute-name -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^ meta.jsx keyword.operator.assignment -// ^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx keyword.operator.assignment -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^^^^^ meta.jsx string.quoted -//^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -< > -//<- meta.jsx invalid.illegal.tag.incomplete - -
-//^ meta.jsx meta.tag entity.name.tag -//<- meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^^^^ meta.jsx entity.other.attribute-name -// ^^^^^^^^^ meta.jsx string.quoted -// ^ meta.jsx string.quoted punctuation.definition.string.begin -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^^^^ meta.jsx entity.other.attribute-name -// ^^ meta.jsx meta.tag punctuation.definition.tag.end - -
-//^^^^ keyword.operator.module -//<- source.js -// ^^^^^^^ keyword.control.loop -// ^^^^^^^^^^^^^^^^^^^^ meta.jsx -// ^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end -// ^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^ meta.jsx meta.tag entity.name.tag -// ^^ meta.jsx meta.tag punctuation.definition.tag.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end - -export default React.createClass({ -//^^^^ keyword.operator.module -//<- source.js -// ^^^^^^^ keyword.control.loop -// ^^^^^ meta.function-call.static.with-arguments variable.other.class -// ^ meta.function-call.static.with-arguments keyword.operator.accessor -// ^^^^^^^^^^^ meta.function-call.static.with-arguments variable.function -// ^ meta.group.braces.round meta.brace.round.begin -// ^ meta.brace.curly.begin - - mixins: [InputsMixin], -//^^^^^^ constant.other.object.key string.unquoted.label -// ^ constant.other.object.key punctuation.separator.key-value -// ^ meta.group.braces.square meta.brace.square.begin -// ^^^^^^^^^^^ meta.group.braces.square variable.other.readwrite -// ^ meta.group.braces.square meta.brace.square.end -// ^ meta.delimiter.comma - - submit() { -//^^^^^^ meta.method string.unquoted entity.name.function -// ^ meta.method punctuation.definition.parameters.begin -// ^ meta.method punctuation.definition.parameters.end -// ^ meta.brace.curly.begin - - var {email, question} = this.state; -// ^^^ storage.type -// ^^^^^^^^^^^^^^^^^ meta.group.braces.curly -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^^^^^ meta.group.braces.curly variable.other.readwrite -// ^ meta.group.braces.curly meta.delimiter.comma -// ^^^^^^^^ meta.group.braces.curly variable.other.readwrite -// ^ meta.group.braces.curly meta.brace.curly.end -// ^ keyword.operator.assignment -// ^^^^ variable.language.this -// ^ keyword.operator.accessor -// ^^^^^ meta.property.object variable.other.property -// ^ punctuation.terminator.statement - request -// ^^^^^^^ variable.other.readwrite - - .post(`${API_BASE}/askform`) -// ^ keyword.operator.accessor -// ^^^^ meta.function-call.method.with-arguments variable.function -// ^ meta.group.braces.round meta.brace.round.begin -// ^ meta.group.braces.round string.interpolated keyword.other.template.begin -// ^^ meta.group.braces.round keyword.other.substitution.begin -// ^^^^^^^^ meta.group.braces.round variable.other.constant -// ^ meta.group.braces.round keyword.other.substitution.end -// ^^^^^^^^^ meta.group.braces.round string.interpolated -// ^ meta.group.braces.round string.interpolated keyword.other.template.end -// ^ meta.group.braces.round meta.brace.round.end - .send({email, question}) -// ^ keyword.operator.accessor -// ^^^^ meta.function-call.method.with-arguments variable.function -// ^ meta.group.braces.round meta.brace.round.begin -// ^^^^^^^^^^^^^^^^^ -// ^ meta.brace.curly.begin -// ^^^^^ variable.other.readwrite -// ^ meta.delimiter.comma -// ^^^^^^^^ variable.other.readwrite -// ^ meta.brace.curly.end -// ^ meta.group.braces.round meta.brace.round.end - .end((err, res) => -// ^ keyword.operator.accessor -// ^^^ meta.function-call.method.with-arguments variable.function -// ^ meta.group.braces.round meta.brace.round.begin -// ^^^^^^^^^^^^^ meta.group.braces.round meta.function.arrow -// ^ meta.group.braces.round meta.function.arrow punctuation.definition.parameters.begin -// ^^^ meta.group.braces.round meta.function.arrow variable.parameter.function -// ^ meta.group.braces.round meta.function.arrow punctuation.separator.parameter.function -// ^^^ meta.group.braces.round meta.function.arrow variable.parameter.function -// ^ meta.group.braces.round meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.group.braces.round meta.function.arrow storage.type.function.arrow - this.setState({isValid: !err})); -// ^^^^ meta.group.braces.round variable.language.this -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.group.braces.round -// ^ meta.group.braces.round keyword.operator.accessor -// ^^^^^^^^ meta.group.braces.round meta.function-call.method.with-arguments variable.function -// ^ meta.group.braces.round meta.group.braces.round meta.brace.round.begin -// ^^^^^^^^^^^^^^^ meta.group.braces.round -// ^ meta.group.braces.round meta.brace.curly.begin -// ^^^^^^^ meta.group.braces.round constant.other.object.key string.unquoted.label -// ^ meta.group.braces.round constant.other.object.key punctuation.separator.key-value -// ^ meta.group.braces.round keyword.operator.logical -// ^^^ meta.group.braces.round variable.other.readwrite -// ^ meta.group.braces.round meta.brace.curly.end -// ^^ meta.group.braces.round meta.brace.round.end -// ^ meta.group.braces.round meta.group.braces.round meta.brace.round.end -// ^ punctuation.terminator.statement - }, -//^ meta.brace.curly.end -// ^ meta.delimiter.comma - - - 'key//1': function() {}, -//^^^^^^^^^^^^^^^^^^^^ meta.function.json -//^ meta.function.json string.quoted punctuation.definition.string.begin -// ^^^^^^ meta.function.json string.quoted entity.name.function -// ^ meta.function.json string.quoted punctuation.definition.string.end -// ^ meta.function.json punctuation.separator.key-value -// ^^^^^^^^ meta.function.json storage.type.function -// ^ meta.function.json punctuation.definition.parameters.begin -// ^ meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -// ^ meta.delimiter.comma - - 'key/***/1': function() {}, -//^^^^^^^^^^^^^^^^^^^^^^^ meta.function.json -//^ meta.function.json string.quoted punctuation.definition.string.begin -// ^^^^^^^^^ meta.function.json string.quoted entity.name.function -// ^ meta.function.json string.quoted punctuation.definition.string.end -// ^ meta.function.json punctuation.separator.key-value -// ^^^^^^^^ meta.function.json storage.type.function -// ^ meta.function.json punctuation.definition.parameters.begin -// ^ meta.function.json punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin -// ^ meta.group.braces.curly meta.brace.curly.end -// ^ meta.delimiter.comma - - - render() { -//^^^^^^ meta.method string.unquoted entity.name.function -// ^ meta.method punctuation.definition.parameters.begin -// ^ meta.method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin - var {email} = this.state; -// ^^^ meta.group.braces.curly storage.type -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin -// ^^^^^ meta.group.braces.curly meta.group.braces.curly variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly keyword.operator.assignment -// ^^^^ meta.group.braces.curly variable.language.this -// ^ meta.group.braces.curly keyword.operator.accessor -// ^^^^^ meta.group.braces.curly meta.property.object variable.other.property -// ^ meta.group.braces.curly punctuation.terminator.statement - var list = this.props.secondary.map(pic => )} -// ^^^ meta.group.braces.curly storage.type -// ^^^^ meta.group.braces.curly variable.other.readwrite -// ^ meta.group.braces.curly keyword.operator.assignment -// ^^^^ meta.group.braces.curly variable.language.this -// ^ meta.group.braces.curly keyword.operator.accessor -// ^^^^^ meta.group.braces.curly meta.property.object variable.other.property -// ^ meta.group.braces.curly keyword.operator.accessor -// ^^^^^^^^^ meta.group.braces.curly meta.property.object variable.other.property -// ^ meta.group.braces.curly keyword.operator.accessor -// ^^^ meta.group.braces.curly meta.function-call.method.with-arguments variable.function -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.begin -// ^^^^^^ meta.group.braces.curly meta.group.braces.round meta.function.arrow -// ^^^ meta.group.braces.curly meta.group.braces.round meta.function.arrow variable.parameter.function -// ^^ meta.group.braces.curly meta.group.braces.round meta.function.arrow storage.type.function.arrow -// ^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.group.braces.round meta.jsx -// ^ meta.group.braces.curly meta.group.braces.round meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.group.braces.curly meta.group.braces.round meta.jsx meta.tag entity.name.tag -// ^^^ meta.group.braces.curly meta.group.braces.round meta.jsx entity.other.attribute-name -// ^ meta.group.braces.curly meta.group.braces.round meta.jsx keyword.operator.assignment -// ^ meta.group.braces.curly meta.group.braces.round meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^^^ meta.group.braces.curly meta.group.braces.round meta.jsx meta.embedded.expression variable.other.readwrite -// ^ meta.group.braces.curly meta.group.braces.round meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^^ meta.group.braces.curly meta.group.braces.round meta.jsx meta.tag punctuation.definition.tag.end -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.end -// ^ meta.group.braces.curly meta.brace.curly.end - var multilineAttr = -// ^ meta.jsx string.quoted punctuation.definition.string.end -// ^ meta.jsx meta.tag punctuation.definition.tag.end -// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end - - return ( -// ^^^^^^ keyword.control.flow -// ^ meta.group.braces.round meta.brace.round.begin -
test
}> -// ^ meta.group.braces.round meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.group.braces.round meta.jsx meta.tag entity.name.tag -// ^ meta.group.braces.round meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^^^ meta.group.braces.round meta.jsx meta.embedded.expression keyword.operator.spread -// ^^^^ meta.group.braces.round meta.jsx meta.embedded.expression variable.language.this -// ^ meta.group.braces.round meta.jsx meta.embedded.expression keyword.operator.accessor -// ^^^^^ meta.group.braces.round meta.jsx meta.embedded.expression meta.property.object variable.other.property -// ^ meta.group.braces.round meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^^^^^^^ meta.group.braces.round meta.jsx entity.other.attribute-name -// ^ meta.group.braces.round meta.jsx keyword.operator.assignment -// ^ meta.group.braces.round meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^^^^^^^^^^^^^^^ meta.group.braces.round meta.jsx meta.embedded.expression meta.jsx -// ^ meta.group.braces.round meta.jsx meta.embedded.expression meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.group.braces.round meta.jsx meta.embedded.expression meta.jsx meta.tag entity.name.tag -// ^ meta.group.braces.round meta.jsx meta.embedded.expression meta.jsx meta.tag punctuation.definition.tag.end -// ^^ meta.group.braces.round meta.jsx meta.embedded.expression meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.group.braces.round meta.jsx meta.embedded.expression meta.jsx meta.tag entity.name.tag -// ^ meta.group.braces.round meta.jsx meta.embedded.expression meta.jsx meta.tag punctuation.definition.tag.end -// ^ meta.group.braces.round meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^ meta.group.braces.round meta.jsx meta.tag punctuation.definition.tag.end - -// ^ meta.group.braces.round meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^ meta.group.braces.round meta.jsx meta.tag entity.name.tag -// ^ meta.group.braces.round meta.jsx meta.tag punctuation.definition.tag.end -// ^^ meta.group.braces.round meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^^^ meta.group.braces.round meta.jsx meta.tag entity.name.tag -// ^ meta.group.braces.round meta.jsx meta.tag punctuation.definition.tag.end - - {list} -// ^ meta.group.braces.round meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^^^^ meta.group.braces.round meta.jsx meta.embedded.expression variable.other.readwrite -// ^ meta.group.braces.round meta.jsx meta.embedded.expression punctuation.section.embedded.end - {[in an array]} -// ^ meta.group.braces.round meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^ meta.group.braces.round meta.jsx meta.embedded.expression meta.group.braces.square meta.brace.square.begin -// ^^^^^^^^^^^^^^^^^^^^^^^^ meta.group.braces.round meta.jsx meta.embedded.expression meta.group.braces.square meta.jsx -// ^ meta.group.braces.round meta.jsx meta.embedded.expression meta.group.braces.square meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^ meta.group.braces.round meta.jsx meta.embedded.expression meta.group.braces.square meta.jsx meta.tag entity.name.tag -// ^ meta.group.braces.round meta.jsx meta.embedded.expression meta.group.braces.square meta.jsx meta.tag punctuation.definition.tag.end -// ^^ meta.group.braces.round meta.jsx meta.embedded.expression meta.group.braces.square meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^^ meta.group.braces.round meta.jsx meta.embedded.expression meta.group.braces.square meta.jsx meta.tag entity.name.tag -// ^ meta.group.braces.round meta.jsx meta.embedded.expression meta.group.braces.square meta.jsx meta.tag punctuation.definition.tag.end -// ^ meta.group.braces.round meta.jsx meta.embedded.expression meta.group.braces.square meta.brace.square.end -// ^ meta.group.braces.round meta.jsx meta.embedded.expression punctuation.section.embedded.end - - -// ^^^^^^^^ meta.group.braces.round meta.jsx entity.other.attribute-name -// ^^^^^^^ meta.group.braces.round meta.jsx comment.block -// ^^ meta.group.braces.round meta.jsx comment.block punctuation.definition.comment.begin -// ^^ meta.group.braces.round meta.jsx comment.block punctuation.definition.comment.end -// ^^ meta.group.braces.round meta.jsx meta.tag punctuation.definition.tag.end - -
- ); - } -}); - - -export class Counter extends React.Component { -//^^^^ keyword.operator.module -//<- source.js -// ^^^^^ storage.type.class -// ^^^^^^^ entity.name.class -// ^^^^^^^^^^^^^^^^^^^^^^^^ meta.class.extends -// ^^^^^^^ meta.class.extends storage.type.extends -// ^^^^^ meta.class.extends meta.property.class variable.other.class -// ^ meta.class.extends meta.property.class keyword.operator.accessor -// ^^^^^^^^^ meta.class.extends meta.property.class variable.other.property.static -// ^ meta.brace.curly.begin - static propTypes = { initialCount: React.PropTypes.number }; -//^^^^^^ storage.modifier -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class.property -// ^^^^^^^^^ meta.class.property variable.other.property -// ^ meta.class.property keyword.operator.assignment -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class.property meta.group.braces.curly -// ^ meta.class.property meta.group.braces.curly meta.brace.curly.begin -// ^^^^^^^^^^^^ meta.class.property meta.group.braces.curly constant.other.object.key string.unquoted.label -// ^ meta.class.property meta.group.braces.curly constant.other.object.key punctuation.separator.key-value -// ^^^^^ meta.class.property meta.group.braces.curly meta.property.class variable.other.class -// ^ meta.class.property meta.group.braces.curly meta.property.class keyword.operator.accessor -// ^^^^^^^^^ meta.class.property meta.group.braces.curly meta.property.class variable.other.property.static -// ^ meta.class.property meta.group.braces.curly keyword.operator.accessor -// ^^^^^^ meta.class.property meta.group.braces.curly meta.property.object variable.other.property -// ^ meta.class.property meta.group.braces.curly meta.brace.curly.end - static defaultProps = { initialCount: 0 }; -//^^^^^^ storage.modifier -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class.property -// ^^^^^^^^^^^^ meta.class.property variable.other.property -// ^ meta.class.property keyword.operator.assignment -// ^^^^^^^^^^^^^^^^^^^ meta.class.property meta.group.braces.curly -// ^ meta.class.property meta.group.braces.curly meta.brace.curly.begin -// ^^^^^^^^^^^^ meta.class.property meta.group.braces.curly constant.other.object.key string.unquoted.label -// ^ meta.class.property meta.group.braces.curly constant.other.object.key punctuation.separator.key-value -// ^ meta.class.property meta.group.braces.curly constant.numeric -// ^ meta.class.property meta.group.braces.curly meta.brace.curly.end - static childContextTypes = () => { -//^^^^^^ storage.modifier -// ^^^^^^^^^^^^^^^^^ meta.class.property variable.other.property -// ^ meta.class.property keyword.operator.assignment -// ^^^^^ meta.class.property meta.function.arrow -// ^ meta.class.property meta.function.arrow punctuation.definition.parameters.begin -// ^ meta.class.property meta.function.arrow punctuation.definition.parameters.end -// ^^ meta.class.property meta.function.arrow storage.type.function.arrow -// ^ meta.class.property meta.group.braces.curly meta.brace.curly.begin - return { -// ^^^^^^ meta.class.property meta.group.braces.curly keyword.control.flow -// ^ meta.class.property meta.group.braces.curly meta.group.braces.curly meta.brace.curly.begin - - app: React.PropTypes.instanceOf(App).isRequired -// ^^^ meta.class.property meta.group.braces.curly meta.group.braces.curly constant.other.object.key string.unquoted.label -// ^ meta.class.property meta.group.braces.curly meta.group.braces.curly constant.other.object.key punctuation.separator.key-value -// ^^^^^ meta.class.property meta.group.braces.curly meta.group.braces.curly meta.property.class variable.other.class -// ^ meta.class.property meta.group.braces.curly meta.group.braces.curly meta.property.class keyword.operator.accessor -// ^^^^^^^^^ meta.class.property meta.group.braces.curly meta.group.braces.curly meta.property.class variable.other.property.static -// ^ meta.class.property meta.group.braces.curly meta.group.braces.curly keyword.operator.accessor -// ^^^^^^^^^^ meta.class.property meta.group.braces.curly meta.group.braces.curly meta.function-call.method.with-arguments variable.function -// ^ meta.class.property meta.group.braces.curly meta.group.braces.curly meta.group.braces.round meta.brace.round.begin -// ^^^ meta.class.property meta.group.braces.curly meta.group.braces.curly meta.group.braces.round variable.other.readwrite -// ^ meta.class.property meta.group.braces.curly meta.group.braces.curly meta.group.braces.round meta.brace.round.end -// ^ meta.class.property meta.group.braces.curly meta.group.braces.curly keyword.operator.accessor -// ^^^^^^^^^^ meta.class.property meta.group.braces.curly meta.group.braces.curly meta.property.object variable.other.property - } -// ^ meta.class.property meta.group.braces.curly meta.group.braces.curly meta.brace.curly.end - }; -//^ meta.class.property meta.group.braces.curly meta.brace.curly.end - getChildContext = makeGetChildContext(); -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class.property -//^^^^^^^^^^^^^^^ meta.class.property variable.other.property -// ^ meta.class.property keyword.operator.assignment -// ^^^^^^^^^^^^^^^^^^^ meta.class.property meta.function-call.without-arguments variable.function -// ^^ meta.class.property meta.function-call.without-arguments meta.group.braces.round.function.arguments - state = { count: this.props.initialCount }; -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class.property -//^^^^^ meta.class.property variable.other.property -// ^ meta.class.property keyword.operator.assignment -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class.property meta.group.braces.curly -// ^ meta.class.property meta.group.braces.curly meta.brace.curly.begin -// ^^^^^ meta.class.property meta.group.braces.curly constant.other.object.key string.unquoted.label -// ^ meta.class.property meta.group.braces.curly constant.other.object.key punctuation.separator.key-value -// ^^^^ meta.class.property meta.group.braces.curly variable.language.this -// ^ meta.class.property meta.group.braces.curly keyword.operator.accessor -// ^^^^^ meta.class.property meta.group.braces.curly meta.property.object variable.other.property -// ^ meta.class.property meta.group.braces.curly keyword.operator.accessor -// ^^^^^^^^^^^^ meta.class.property meta.group.braces.curly meta.property.object variable.other.property -// ^ meta.class.property meta.group.braces.curly meta.brace.curly.end - tick() { -//^^^^ meta.class-method string.unquoted entity.name.function -// ^ meta.class-method punctuation.definition.parameters.begin -// ^ meta.class-method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin - this.setState({ count: this.state.count + 1 }); -// ^^^^ meta.group.braces.curly variable.language.this -// ^ meta.group.braces.curly keyword.operator.accessor -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly -// ^^^^^^^^ meta.group.braces.curly meta.function-call.method.with-arguments variable.function -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.begin -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.group.braces.curly meta.group.braces.round meta.group.braces.curly -// ^ meta.group.braces.curly meta.group.braces.round meta.group.braces.curly meta.brace.curly.begin -// ^^^^^ meta.group.braces.curly meta.group.braces.round meta.group.braces.curly constant.other.object.key string.unquoted.label -// ^ meta.group.braces.curly meta.group.braces.round meta.group.braces.curly constant.other.object.key punctuation.separator.key-value -// ^^^^ meta.group.braces.curly meta.group.braces.round meta.group.braces.curly variable.language.this -// ^ meta.group.braces.curly meta.group.braces.round meta.group.braces.curly keyword.operator.accessor -// ^^^^^ meta.group.braces.curly meta.group.braces.round meta.group.braces.curly meta.property.object variable.other.property -// ^ meta.group.braces.curly meta.group.braces.round meta.group.braces.curly keyword.operator.accessor -// ^^^^^ meta.group.braces.curly meta.group.braces.round meta.group.braces.curly meta.property.object variable.other.property -// ^ meta.group.braces.curly meta.group.braces.round meta.group.braces.curly keyword.operator.arithmetic -// ^ meta.group.braces.curly meta.group.braces.round meta.group.braces.curly constant.numeric -// ^ meta.group.braces.curly meta.group.braces.round meta.group.braces.curly meta.brace.curly.end -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.end -// ^ meta.group.braces.curly punctuation.terminator.statement - } -//^ meta.group.braces.curly meta.brace.curly.end - render() { -//^^^^^^ meta.class-method string.unquoted entity.name.function -// ^ meta.class-method punctuation.definition.parameters.begin -// ^ meta.class-method punctuation.definition.parameters.end -// ^ meta.group.braces.curly meta.brace.curly.begin - return ( -// ^^^^^^ meta.group.braces.curly keyword.control.flow -// ^ meta.group.braces.curly meta.group.braces.round meta.brace.round.begin -
-// ^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^^^^^^^ meta.jsx entity.other.attribute-name -// ^ meta.jsx keyword.operator.assignment -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^^^^ meta.jsx meta.embedded.expression variable.language.this -// ^ meta.jsx meta.embedded.expression keyword.operator.accessor -// ^^^^ meta.jsx meta.embedded.expression meta.property.object variable.other.property -// ^ meta.jsx meta.embedded.expression keyword.operator.accessor -// ^^^^ meta.jsx meta.embedded.expression meta.function-call.method.with-arguments variable.function -// ^ meta.jsx meta.embedded.expression meta.group.braces.round meta.brace.round.begin -// ^^^^ meta.jsx meta.embedded.expression meta.group.braces.round variable.language.this -// ^ meta.jsx meta.embedded.expression meta.group.braces.round meta.brace.round.end -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -// ^ meta.jsx meta.tag punctuation.definition.tag.end - Clicks: {this.state.count} -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.begin -// ^^^^ meta.jsx meta.embedded.expression variable.language.this -// ^ meta.jsx meta.embedded.expression keyword.operator.accessor -// ^^^^^ meta.jsx meta.embedded.expression meta.property.object variable.other.property -// ^ meta.jsx meta.embedded.expression keyword.operator.accessor -// ^^^^^ meta.jsx meta.embedded.expression meta.property.object variable.other.property -// ^ meta.jsx meta.embedded.expression punctuation.section.embedded.end -
-// ^^ meta.jsx meta.tag punctuation.definition.tag.begin -// ^^^ meta.jsx meta.tag entity.name.tag -// ^ meta.jsx meta.tag punctuation.definition.tag.end - ); -// ^ meta.brace.round.end -// ^ meta.group.braces.curly punctuation.terminator.statement - } -//^ meta.group.braces.curly meta.brace.curly.end -} -//<- meta.class meta.brace.curly.end diff --git a/test/syntax_test_relational_OLD.js b/test/syntax_test_relational_OLD.js deleted file mode 100644 index 287954a..0000000 --- a/test/syntax_test_relational_OLD.js +++ /dev/null @@ -1,289 +0,0 @@ -// SYNTAX TEST "Packages/babel-sublime/JavaScript (Babel).tmLanguage" - -var a = b -//^ storage.type -//<- source.js -// ^ variable.other.readwrite -// ^ keyword.operator.assignment -// ^ variable.other.readwrite -// ^ keyword.operator.relational -// ^^^ variable.other.readwrite -// ^^^^^^^^^^^ comment.block -// ^^ comment.block punctuation.definition.comment.begin -// ^^ comment.block punctuation.definition.comment.end -// ^^^^^ string.regexp -// ^ string.regexp punctuation.definition.string.begin - -/ -//<- string.regexp punctuation.definition.string.end - -var a = b -//^ storage.type -//<- source.js -// ^ variable.other.readwrite -// ^ keyword.operator.assignment -// ^ variable.other.readwrite -// ^ keyword.operator.relational -// ^^^ variable.other.readwrite -// ^ keyword.operator.arithmetic -// ^ keyword.operator.relational - -var a = b -//^ storage.type -//<- source.js -// ^ variable.other.readwrite -// ^ keyword.operator.assignment -// ^ variable.other.readwrite -// ^ keyword.operator.relational -// ^^^ variable.other.readwrite -// ^ keyword.operator.arithmetic -// ^ keyword.operator.relational - -var a = b -//^ storage.type -//<- source.js -// ^ variable.other.readwrite -// ^ keyword.operator.assignment -// ^ variable.other.readwrite -// ^ keyword.operator.relational -// ^^^ variable.other.readwrite -// ^ keyword.operator.arithmetic -// ^^^ variable.other.readwrite -// ^ keyword.operator.arithmetic -// ^ keyword.operator.relational - -var a = b -//^ storage.type -//<- source.js -// ^ variable.other.readwrite -// ^ keyword.operator.assignment -// ^ variable.other.readwrite -// ^ keyword.operator.relational -// ^^^ variable.other.readwrite -// ^ keyword.operator.arithmetic -// ^^^ variable.other.readwrite -// ^ keyword.operator.arithmetic -// ^ keyword.operator.relational - -var a = b -//^ storage.type -//<- source.js -// ^ variable.other.readwrite -// ^ keyword.operator.assignment -// ^ variable.other.readwrite -// ^ keyword.operator.relational -// ^^^^^^^ variable.other.readwrite -// ^ keyword.operator.arithmetic -// ^ keyword.operator.relational - -var a = b -//^ storage.type -//<- source.js -// ^ variable.other.readwrite -// ^ keyword.operator.assignment -// ^ variable.other.readwrite -// ^ keyword.operator.relational -// ^^^ variable.other.readwrite -// ^ keyword.operator.arithmetic -// ^^^ variable.other.readwrite -// ^ keyword.operator.arithmetic -// ^ keyword.operator.relational - -var a = b -//^ storage.type -//<- source.js -// ^ variable.other.readwrite -// ^ keyword.operator.assignment -// ^ variable.other.readwrite -// ^ keyword.operator.relational -// ^^^ variable.other.object variable.other.object -// ^ keyword.operator.accessor -// ^^^ meta.property.object variable.other.property -// ^ keyword.operator.arithmetic -// ^ keyword.operator.relational - -var a = b -//^ storage.type -//<- source.js -// ^ variable.other.readwrite -// ^ keyword.operator.assignment -// ^ variable.other.readwrite -// ^ keyword.operator.relational -// ^^^ variable.other.object variable.other.object -// ^ keyword.operator.accessor -// ^^^ meta.property.object variable.other.property -// ^^^^^^^^^^^ comment.block -// ^^ comment.block punctuation.definition.comment.begin -// ^^ comment.block punctuation.definition.comment.end -// ^^^^^ string.regexp -// ^ string.regexp punctuation.definition.string.begin - -/ -//<- string.regexp punctuation.definition.string.end - -var a = b -//^ storage.type -//<- source.js -// ^ variable.other.readwrite -// ^ keyword.operator.assignment -// ^ variable.other.readwrite -// ^ keyword.operator.relational -// ^^^ variable.other.readwrite -// ^ keyword.operator.arithmetic -// ^^^^^ string.regexp -// ^ string.regexp punctuation.definition.string.begin - -/ -//<- string.regexp punctuation.definition.string.end - -var a = b -//^ storage.type -//<- source.js -// ^ variable.other.readwrite -// ^ keyword.operator.assignment -// ^ variable.other.readwrite -// ^ keyword.operator.relational -// ^^^ variable.other.object variable.other.object -// ^ keyword.operator.accessor -// ^^^^ string.regexp -// ^ string.regexp punctuation.definition.string.begin diff --git a/test/syntax_test_styles.js b/test/syntax_test_styles.js deleted file mode 100644 index 53728aa..0000000 --- a/test/syntax_test_styles.js +++ /dev/null @@ -1,96 +0,0 @@ -// SYNTAX TEST "JavaScript (Babel).tmLanguage" - -styled.h1`color: #ffcc00;` -//^^^^^^^^^^^^^^^^^^^^^^^^ meta.styled-components -//^^^^ variable.other.object -// ^ punctuation.accessor -// ^^ variable.function.tagged-template -// ^ punctuation.definition.string.template.begin -// ^^^^^^^^^^^^^^^ source.css.embedded -// ^^^^^^^^^^^^^^^ meta.property-list.css -// ^ punctuation.definition.string.template.end - - styled.h1`` -// ^^^^^^^^^^^ meta.styled-components -//^^ -meta.styled-components -// ^^ -meta.styled-components - -styled(Foo)`color: #ffcc00;` -//^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.styled-components -//^^^^^^^^^ meta.function-call.with-arguments -// ^^^^^^^^^^^^^^^^^ -meta.function-call.with-arguments -//^^^^ variable.function -// ^^^^^ meta.group -// ^ punctuation.definition.group.begin -// ^^^ variable.other.readwrite -// ^ punctuation.definition.group.end -// ^ punctuation.definition.string.template.begin -// ^^^^^^^^^^^^^^^ source.css.embedded -// ^^^^^^^^^^^^^^^ meta.property-list.css -// ^ punctuation.definition.string.template.end - - styled(Foo)`` -// ^^^^^^^^^^^^^ meta.styled-components -//^^ -meta.styled-components -// ^^ -meta.styled-components - -styled(Foo.bar())`color: #ffcc00;` -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.styled-components -//^^^^^^^^^^^^^^^ meta.function-call.with-arguments -// ^^^^^^^^^^^^^^^^^ -meta.function-call.with-arguments -//^^^^ variable.function -// ^^^^^^^^^^^ meta.group -// ^ punctuation.definition.group.begin -// ^^^ variable.other.class -// ^ keyword.operator.accessor -// ^^^ variable.function -// ^ punctuation.definition.group.end -// ^ punctuation.definition.string.template.begin -// ^^^^^^^^^^^^^^^ source.css.embedded -// ^^^^^^^^^^^^^^^ meta.property-list.css -// ^ punctuation.definition.string.template.end - - styled(Foo.bar())`` -// ^^^^^^^^^^^^^^^^^^^ meta.styled-components -//^^ -meta.styled-components -// ^^ -meta.styled-components - -styled('div')`color: #ffcc00;` -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.styled-components -//^^^^^^^^^^^ meta.function-call.with-arguments -// ^^^^^^^^^^^^^^^^^ -meta.function-call.with-arguments -//^^^^ variable.function -// ^^^^^^^ meta.group -// ^ punctuation.definition.group.begin -// ^^^^^ string.quoted -// ^ punctuation.definition.group.end -// ^ punctuation.definition.string.template.begin -// ^^^^^^^^^^^^^^^ source.css.embedded -// ^^^^^^^^^^^^^^^ meta.property-list.css -// ^ punctuation.definition.string.template.end - -injectGlobal`color: #ffcc00;` -//^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.styled-components -//^^^^^^^^^ variable.function.tagged-template -// ^ punctuation.definition.string.template.begin -// ^^^^^^^^^^^^^^^ source.css.embedded -// ^^^^^^^^^^^^^^^ meta.property-list.css -// ^ punctuation.definition.string.template.end - - injectGlobal`` -// ^^^^^^^^^^^^^^ meta.styled-components -//^^ -meta.styled-components -// ^^ -meta.styled-components - -keyframes`0%{color: red;} 50%{color: blue;}` -//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.styled-components -//^^^^^^^ variable.function.tagged-template -// ^ punctuation.definition.string.template.begin -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.css.embedded -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.property-list.css -// ^ punctuation.definition.string.template.end - - keyframes`` -// ^^^^^^^^^^^ meta.styled-components -//^^ -meta.styled-components -// ^^ -meta.styled-components diff --git a/tests/syntax_test_flow.js b/tests/syntax_test_flow.js new file mode 100644 index 0000000..bdb7dbf --- /dev/null +++ b/tests/syntax_test_flow.js @@ -0,0 +1,415 @@ +// SYNTAX TEST "Packages/Babel/JavaScript (Babel).sublime-syntax" +/* Built-in types */ + + const x:boolean; +// ^^^^^^^ support.type.primitive.boolean + + const x:number; +// ^^^^^^ support.type.primitive.number + + const x:string; +// ^^^^^^ support.type.primitive.string + + const x:null; +// ^^^^ support.type.primitive.null + + const x:void; +// ^^^^ support.type.primitive.void + + const x:mixed; +// ^^^^^ support.type.mixed + + const x:any; +// ^^^ support.type.any + + const x:*; +// ^ constant.language.type.existential + + const x:$Keys<>; +// ^^^^^ support.type.utility + +/* Literal types */ + + const x:true; +// ^^^^^ storage.type +// ^ meta.binding.name variable.other.readwrite +// ^^^^^ meta.flow-type +// ^ punctuation.separator.type +// ^^^^ constant.language.boolean.true + + const x:42; +// ^^^^^ storage.type +// ^ meta.binding.name variable.other.readwrite +// ^^^ meta.flow-type +// ^ punctuation.separator.type +// ^^ constant.numeric.integer.decimal + + const x:"foo"; +// ^^^^^ storage.type +// ^ meta.binding.name variable.other.readwrite +// ^^^^^^ meta.flow-type +// ^ punctuation.separator.type +// ^^^^^ string.quoted.double + + const x:'bar'; +// ^^^^^ storage.type +// ^ meta.binding.name variable.other.readwrite +// ^^^^^^ meta.flow-type +// ^ punctuation.separator.type +// ^^^^^ string.quoted.single + +/* Utility types */ + +/* Named types */ + + const x:foo; +// ^^^ variable.other.class + +/* Modifiers */ + + const x: ?number; +// ^^^^^^^^^ meta.flow-type +// ^ storage.modifier.maybe +// ^^^^^^ support.type.primitive.number + + const x: number[]; +// ^^^^^^^^^^ meta.flow-type +// ^^^^^^ support.type.primitive.number +// ^^ storage.modifier.array + + const x: Array ; +// ^^^^^^^^^^^^^^^^ meta.flow-type +// ^^^^^ variable.other.class +// ^ punctuation.section.generic.begin +// ^^^^^^ support.type.primitive.number +// ^ punctuation.section.generic.end + + const x: number | string; +// ^^^^^^^^^^^^^^^^^ meta.flow-type +// ^^^^^^ support.type.primitive.number +// ^ keyword.operator.type.union +// ^^^^^^ support.type.primitive.string + + const x: number & string; +// ^^^^^^^^^^^^^^^^^ meta.flow-type +// ^^^^^^ support.type.primitive.number +// ^ keyword.operator.type.intersection +// ^^^^^^ support.type.primitive.string + + const x: typeof 42; +// ^^^^^^^^^^^ meta.flow-type +// ^^^^^^ keyword.operator +// ^^ constant.numeric.integer.decimal + + const x: number %checks; +// ^^^^^^^^^^^^^^^^ meta.flow-type +// ^^^^^^ support.type.primitive.number +// ^^^^^^^ storage.modifier.checks + + +/* Object types */ + + const x: { foo: number }; +// ^^^^^^^^^^^^^^^^^ meta.flow-type +// ^^^^^^^^^^^^^^^ meta.type.object +// ^^^ meta.object-literal.key +// ^ punctuation.separator.key-value +// ^^^^^^ support.type.primitive.number + + const x: { + + foo : number, +// ^^^ meta.object-literal.key +// ^ punctuation.separator.key-value +// ^^^^^^ support.type.primitive.number +// ^ punctuation.separator.comma + + bar ?: number, +// ^^^ meta.object-literal.key +// ^ storage.modifier.optional +// ^ punctuation.separator.key-value +// ^^^^^^ support.type.primitive.number +// ^ punctuation.separator.comma + + [baz : string] : number, +// ^ punctuation.section.brackets.begin +// ^^^ meta.object-literal.key +// ^ punctuation.separator.key-value +// ^^^^^^ support.type.primitive.string +// ^ punctuation.section.brackets.end +// ^ punctuation.separator.key-value +// ^^^^^^ support.type.primitive.number +// ^ punctuation.separator.comma + }; + + const x: {| foo: number |}; +// ^^^^^^^^^^^^^^^^^^^ meta.flow-type +// ^^^^^^^^^^^^^^^^^ meta.type.object.exact +// ^^^ meta.object-literal.key +// ^ punctuation.separator.key-value +// ^^^^^^ support.type.primitive.number + + const x: {| + + foo : number, +// ^^^ meta.object-literal.key +// ^ punctuation.separator.key-value +// ^^^^^^ support.type.primitive.number +// ^ punctuation.separator.comma + + bar ?: number, +// ^^^ meta.object-literal.key +// ^ storage.modifier.optional +// ^ punctuation.separator.key-value +// ^^^^^^ support.type.primitive.number +// ^ punctuation.separator.comma + + [baz : string] : number, +// ^ punctuation.section.brackets.begin +// ^^^ meta.object-literal.key +// ^ punctuation.separator.key-value +// ^^^^^^ support.type.primitive.string +// ^ punctuation.section.brackets.end +// ^ punctuation.separator.key-value +// ^^^^^^ support.type.primitive.number +// ^ punctuation.separator.comma + |}; + +/* Tuple types */ + + const x : [ number, boolean, string ]; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.flow-type meta.sequence +// ^ punctuation.section.brackets.begin +// ^^^^^^ support.type.primitive.number +// ^ punctuation.separator.comma +// ^^^^^^^ support.type.primitive.boolean +// ^ punctuation.separator.comma +// ^^^^^^ support.type.primitive.string +// ^ punctuation.section.brackets.end + +/* Variables */ + + var x : number; +// ^^^ storage.type +// ^ meta.binding.name variable.other.readwrite +// ^^^^^^^^ meta.flow-type +// ^ punctuation.separator.type +// ^^^^^^ support.type.primitive.number +// ^ punctuation.terminator.statement + + let x : number; +// ^^^ storage.type +// ^ meta.binding.name variable.other.readwrite +// ^^^^^^^^ meta.flow-type +// ^ punctuation.separator.type +// ^^^^^^ support.type.primitive.number +// ^ punctuation.terminator.statement + + const x : number; +// ^^^^^ storage.type +// ^ meta.binding.name variable.other.readwrite +// ^^^^^^^^ meta.flow-type +// ^ punctuation.separator.type +// ^^^^^^ support.type.primitive.number +// ^ punctuation.terminator.statement + + const x: typeof 42, y: number; +// ^^^^^^^^^^^ meta.flow-type +// ^ punctuation.separator.comma - meta.flow-type +// ^^^^^^^^ meta.flow-type + +/* Functions */ + + function f() : number {} +// ^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^ entity.name.function +// ^^^^^^^^ meta.flow-type +// ^^ meta.block + + function f() : number {} +// ^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^ entity.name.function +// ^^^^^^ meta.generic.declaration +// ^ punctuation.section.generic.begin +// ^ variable.parameter.type +// ^ punctuation.separator.comma +// ^ variable.parameter.type +// ^ punctuation.section.generic.end +// ^^^^^^^^ meta.flow-type +// ^^ meta.block + +function f( + a : number, +// ^ meta.binding.name variable.parameter.function +// ^^^^^^^^ meta.flow-type +// ^ punctuation.separator.type +// ^^^^^^ support.type.primitive.number + + b ?: number, +// ^ meta.binding.name variable.parameter.function +// ^ storage.modifier.optional +// ^^^^^^^^ meta.flow-type +// ^ punctuation.separator.type +// ^^^^^^ support.type.primitive.number + + ...c : Array +// ^^^^^^^^^^^^^^^ meta.flow-type +) {} + +/* Classes */ + +class MyClass { + foo() : number {} +// ^^^^^^^^^^^^^^ meta.function.declaration +// ^^^^^^^^ meta.flow-type +// ^ punctuation.separator.type +// ^^^^^^ support.type.primitive.number + + foo( + a : number, + // ^ meta.binding.name variable.parameter.function + // ^^^^^^^^ meta.flow-type + // ^ punctuation.separator.type + // ^^^^^^ support.type.primitive.number + + b ?: number, + // ^ meta.binding.name variable.parameter.function + // ^ storage.modifier.optional + // ^^^^^^^^ meta.flow-type + // ^ punctuation.separator.type + // ^^^^^^ support.type.primitive.number + + ...c : Array + // ^^^^^^^^^^^^^^^ meta.flow-type + ) {} + + bar: number; +// ^^^^^^^^ meta.flow-type +// ^ punctuation.separator.type +// ^^^^^^ support.type.primitive.number + + bar: number = 42; +// ^^^^^^^^ meta.flow-type +// ^ punctuation.separator.type +// ^^^^^^ support.type.primitive.number +// ^ keyword.operator.assignment +// ^^ constant.numeric.integer.decimal +} + + class MyClass {} +// ^^^^^^^^^^^^^^^^^^^^^^^ meta.class +// ^^^^^ storage.type.class +// ^^^^^^^ entity.name.class +// ^^^^^^ meta.generic.declaration +// ^ punctuation.section.generic.begin +// ^ variable.parameter.type +// ^ punctuation.separator.comma +// ^ variable.parameter.type +// ^ punctuation.section.generic.end + + class MyClass extends Parent {} +// ^^^^^^^ storage.modifier.extends +// ^^^^^^ entity.other.inherited-class +// ^^^^^^ meta.generic + +/* Type aliases */ + + type MyType = number; +// ^^^^^^^^^^^^^^^^^^^^ meta.declaration.type - meta.declaration.type meta.declaration.type +// ^^^^ storage.type +// ^^^^^^ entity.name.type +// ^ keyword.operator.assignment +// ^^^^^^ support.type.primitive.number + + type MyType = number; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.declaration.type +// ^^^^ storage.type +// ^^^^^^ entity.name.type +// ^^^^^^ meta.generic.declaration +// ^ punctuation.section.generic.begin +// ^ variable.parameter.type +// ^ punctuation.separator.comma +// ^ variable.parameter.type +// ^ punctuation.section.generic.end +// ^ keyword.operator.assignment +// ^^^^^^ support.type.primitive.number + + type; +// ^^^^ variable.other.readwrite - storage + + type = function() {}; +// ^^^^^^^^^^^^^^^^^^^^ meta.function +// ^^^^ entity.name.function variable.other.readwrite - storage + + type +// ^^^^ storage.type + /foo/g; +// ^ keyword.operator.arithmetic - string + + type +// ^^^^ storage.type + foo; +// ^^^ meta.declaration.type entity.name.type + + type /**/ foo; +// ^^^ meta.declaration.type entity.name.type + +/* Type casting expressions */ + + (42 : number); +// ^^^^^^^^^^^^^ meta.group +// ^ punctuation.section.group +// ^^ constant.numeric.integer.decimal +// ^^^^^^^^ meta.flow-type +// ^ punctuation.separator.type +// ^^^^^^ support.type.primitive.number +// ^ punctuation.section.group + +// Opaque aliases +// Interface types +// Arrow functions +// Module Types +// Special comments + +/* Imports/exports */ + + import { type Foo } from 'bar'; +// ^^^^ storage.type +// ^^^ variable.other.readwrite + + import type Foo from 'bar'; +// ^^^^ storage.type +// ^^^ variable.other.readwrite + + export type { Foo }; +// ^^^^ storage.type +// ^^^ variable.other.readwrite + + export type Foo = bar; +// ^^^^ storage.type +// ^^^ entity.name.type + + import typeof React from 'React'; +// ^^^^^^ keyword.operator +// ^^^^^ variable.other.readwrite +// ^^^^ keyword.control.import-export + + import {typeof useState} from 'React'; +// ^^^^^^ keyword.operator +// ^^^^^^^^ variable.other.readwrite +// ^^^^ keyword.control.import-export + + import typeof {useState} from 'React'; +// ^^^^^^ keyword.operator +// ^^^^^^^^ variable.other.readwrite +// ^^^^ keyword.control.import-export + + import {typeof useState as UseState} from 'React'; +// ^^^^^^ keyword.operator +// ^^^^^^^^ variable.other.readwrite +// ^^ keyword.control.import-export + + import typeof {useState as UseState} from 'React'; +// ^^^^^^ keyword.operator +// ^^^^^^^^ variable.other.readwrite +// ^^ keyword.control.import-export diff --git a/tests/syntax_test_js.js b/tests/syntax_test_js.js new file mode 100644 index 0000000..da5af8b --- /dev/null +++ b/tests/syntax_test_js.js @@ -0,0 +1,1999 @@ +// SYNTAX TEST "Packages/Babel/JavaScript (Babel).sublime-syntax" + +import TheirClass from "./mypath"; +//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.import.js +// ^ keyword.control.import-export +// ^ keyword.control.import-export + +import {identifier, otherIdentifier} from "somewhere"; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.import +// ^ keyword.control.import-export +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block +// ^ punctuation.section.block.begin +// ^ punctuation.section.block.end +// ^ meta.import meta.block variable.other.readwrite + +import thing, {identifier as otherIdentifier}, * as otherName from "otherplace"; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.import +// ^ keyword.control.import-export +// ^ variable.other.readwrite +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block +// ^ variable.other.readwrite +// ^ keyword.control.import-export +// ^ variable.other.readwrite +// ^ constant.other.js +// ^ keyword.control.import-export + +import 'module'; +// ^^^^^^^^^^^^^ meta.import + +// Better highlighting while typing. +import +import; +// <- keyword.control.import-export + +import;/**/ +// ^ - meta.import + +export { name1, name2 as name3 }; +//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.export +//^ keyword.control.import-export +// ^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block +// ^ punctuation.separator.comma +// ^^ keyword.control.import-export + +export let name1, name2; +//^^^^^^^^^^^^^^^^^^^^^^ meta.export +//^ keyword.control.import-export +// ^^^ storage.type +// ^ punctuation.separator.comma + +export var name3; +//^^^^^^^^^^^^^^^ meta.export +//^ keyword.control.import-export +// ^^^ storage.type + +export const name1 = 5; +//^^^^^^^^^^^^^^^^^^^^^ meta.export +//^ keyword.control.import-export +// ^^^^^ storage.type +// ^ keyword.operator.assignment + +export let foo = 123 // No semicolon +export function bar() {} +// <- keyword.control.import-export + +export function foo() {}; +//^^^^^^^^^^^^^^^^^^^^^^ meta.export +//^^^^ keyword.control.import-export +// ^^^^^^^^^^^^^^ meta.function.declaration +// ^ punctuation.terminator.statement.empty + +export function* foo() {}; +//^^^^^^^^^^^^^^^^^^^^^^^ meta.export +//^^^^ keyword.control.import-export +// ^^^^^^^^^^^^^^^ meta.function.declaration +// ^ punctuation.terminator.statement.empty + +export async function foo() {}; +//^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.export +//^^^^ keyword.control.import-export +// ^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^ punctuation.terminator.statement.empty + +export class Foo {}; +//^^^^^^^^^^^^^^^^^ meta.export +//^^^^ keyword.control.import-export +// ^^^^^^^^^^^^ meta.class +// ^ punctuation.terminator.statement.empty + +export default expression; +//^^^^^^^^^^^^^^^^^^^^^^^^ meta.export +//^ keyword.control.import-export +// ^ keyword.control.import-export + +export default function (a) { }; +//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.export +//^^^^ keyword.control.import-export +// ^^^^^^^ keyword.control.import-export +// ^^^^^^^^^^^^ meta.function.declaration.js +// ^ punctuation.terminator.statement.empty - meta.export + +export default function* (a) { }; +//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.export +//^^^^ keyword.control.import-export +// ^^^^^^^ keyword.control.import-export +// ^^^^^^^^^^^^^ meta.function.declaration.js +// ^ punctuation.terminator.statement.empty - meta.export + +export default function name1(b) { } +//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.export +//^ keyword.control.import-export +// ^ keyword.control.import-export +// ^ storage.type +// ^ entity.name.function + +export default class Foo {}; +//^^^^^^^^^^^^^^^^^ meta.export +//^^^^ keyword.control.import-export +// ^^^^^^^ keyword.control.import-export +// ^^^^^^^^^^^^ meta.class +// ^ punctuation.terminator.statement.empty + +export default +function (a) { }; +//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.export +//^^^^ keyword.control.import-export +// ^^^^^^^ keyword.control.import-export +// ^^^^^^^^^^^^ meta.function.declaration.js + +export { name1 as default }; +//^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.export +//^ keyword.control.import-export +// ^^^^^^^^^^^^^^^^^^^^ meta.block +// ^ keyword.control.import-export +// ^ keyword.control.import-export + +export * from "./othermod"; +//^^^^^^^^^^^^^^^^^^^^^^^^^ meta.export +//^ keyword.control.import-export +// ^ constant.other +// ^ keyword.control.import-export + +export { name1, name2 } from "./othermod"; +//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.export +//^ keyword.control.import-export +// ^^^^^^^^^^^^^^^^ meta.block +// ^ punctuation.section.block.begin +// ^ punctuation.section.block.end +// ^ keyword.control.import-export + +export { import1 as name1, import2 as name2, nameN } from "./othermod"; +//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.export +//^ keyword.control.import-export +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block +// ^ keyword.control.import-export +// ^ keyword.control.import-export +// ^ keyword.control.import-export + +// Better highlighting while typing. +export +export; +// <- keyword.control.import-export + +export;/**/ +// ^ - meta.export + +import * as + alias from "module"; +// ^^^^^^^^^^^^^^^^^^^^^ meta.import.js + +import { member as + alias } from "module"; +// ^^^^^^^^^^^^^^^^^^^^^^^ meta.import.js + +import { * as + alias } from "module"; +// ^^^^^^^^^^^^^^^^^^^^^^^ meta.import.js + +export { member as + alias } from "module"; +// ^^^^^^^^^^^^^^^^^^^^^^^ meta.export.js + +export { member as + default } from "module"; +// ^^^^^^^^^^^^^^^^^^^^^^^^^ meta.export.js + +let from; +// ^^^^ variable.other.readwrite.js + +import from from "./othermod"; +// ^^^^ variable.other.readwrite.js + +import { from } from "./othermod"; +// ^^^^ variable.other.readwrite.js + +export from from "./othermod"; +// ^^^^ variable.other.readwrite.js + +export { from } from "./othermod"; +// ^^^^ variable.other.readwrite.js + +export default$ +// ^^^^^^^^ - keyword +; + +let x = import.meta; +// ^^^^^^^^^^^ - meta.import +// ^^^^^^ keyword.import +// ^ punctuation.accessor +// ^^^^ variable.language.import + + import.meta; +// ^^^^^^^^^^^ - meta.import +// ^^^^^^ keyword.import +// ^ punctuation.accessor +// ^^^^ variable.language.import + + import + .meta; +// ^^^^^ - meta.import +// ^ punctuation.accessor +// ^^^^ variable.language.import + + import('foo'); +// ^^^^^^ keyword.import +// ^^^^^^^ meta.group + + import + ('foo'); +// ^^^^^^^ meta.group + +// This object literal is technically broken since foo() does not have a +// method body, but we include it here to ensure that highlighting is not +// broken as the user is typing +let a = { otherIdentifier, foo(), baz: 1 } +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.mapping +// ^^^^^^^^^^^^^^^ variable.other.readwrite +// ^^^ entity.name.function +// ^^^ meta.mapping.key + +someFunction({ + prop1, prop2, prop3 +// ^ variable.other.readwrite +// ^ variable.other.readwrite +// ^ variable.other.readwrite +}); + + function foo() { +// ^^^^^^^^^^^^^^^^ meta.function - meta.function meta.function +// ^^^^^^^^^^^^^^ meta.function.declaration +// ^^^^^^^^ storage.type.function +// ^^^ entity.name.function +// ^^ - meta.function.declaration + } +// ^ meta.function meta.block + + var bar = function() { +// ^^^ storage.type +// ^^^^^^^^^^^^^^^^^^ meta.function - meta.function meta.function +// ^^^^^^^^^^^^^^^^ meta.function.declaration +// ^^^ entity.name.function variable.other.readwrite +// ^^^^^^^^ storage.type.function + } + + baz = function*() +// ^^^^^^^^^^^^^^^^^ meta.function.declaration - meta.function meta.function +// ^^^ entity.name.function variable.other.readwrite +// ^^^^^^^^ storage.type.function +// ^ keyword.generator.asterisk + { + + } + + async /**//**//**/ function foo() {} +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function + +// Better highlighting when typing +function +function() {} +// <- storage.type.function - entity.name.function + +function foo(){}/**/ +// ^ - meta.function + +if (true) +// <- keyword.control.conditional.if +{ + bar() +} + +// This is a comment function() { } +// <- punctuation.definition.comment +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ comment.line.double-slash + +/** +// <- comment.block.documentation punctuation.definition.comment.begin +*/ +// <- comment.block.documentation punctuation.definition.comment.end + +/** + * +// ^ comment.block.documentation.js punctuation.definition.comment.js +*/ + +/* +// <- comment.block punctuation.definition.comment +*/ + +x --> y; +//^^ keyword.operator.arithmetic.js +// ^ keyword.operator.relational.js + +#! /usr/bin/env node +// <- comment.line.shebang punctuation.definition.comment + + #! /usr/bin/env node +//^^^^^^^^^^^^^^^^^^^ - comment.line.shebang + +/*@if /*/ +// ^^ punctuation.definition.comment.end + +// /* +not_a_comment; +// <- -comment + +/* // */ +not_a_comment; +// <- -comment + +/* /* */ +not_a_comment; +// <- -comment + +'// /* not a comment'; +// ^^^^^^^^^^^^^^^^^^^ -comment + +"// /* not a comment"; +// ^^^^^^^^^^^^^^^^^^^ -comment + +`// /* not a comment`; +// ^^^^^^^^^^^^^^^^^^^ -comment + +({ + '// /* not a comment': x => x, +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -comment + + "// /* not a comment": x => x, +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -comment + + '// /* not a comment'() {}, +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -comment() {} + + "// /* not a comment"() {}, +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -comment() {} +// ^ - meta.function.declaration meta.function.declaration +}); + +{ + let _$Foobar1Ù𝓩ʷªאξ‿ᛮↂ〩; +// ^^^^^^^^^^^^^^^^^^^ variable.other.readwrite + + let ಠ_ಠ; +// ^^^ variable.other.readwrite + + function \u004axyz () {}; // Letter J +// ^^^^^^^^^ entity.name.function + + function xyz\u004axyz () {}; +// ^^^^^^^^^^^^ entity.name.function + + function xyz\u{0ca0}xyz () {}; // Letter ಠ +// ^^^^^^^^^^^^^^ entity.name.function + + import$;export$;class$;throw$;break$;continue$;goto$;return$;debugger$;let$;const$;var$; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - keyword + + switch$;do$;while$;for$;if$;with$:try$;catch$;finally$;new$;delete$;typeof$;void$; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - keyword + + true$;false$;null$;undefined$;NaN$;Infinity$;this$; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - constant.language + + x + instanceof$; +// ^^^^^^^^^^^ - keyword + + x + in$; +// ^^^ - keyword + + await$ []; +// ^^^^^^ variable.other +// ^^ meta.brackets - meta.sequence + + yield$ []; +// ^^^^^^ variable.other +// ^^ meta.brackets - meta.sequence + +}; + +var str = '\':'; +var str2 = NaN; +// <- storage.type +// ^ variable.other.readwrite +// ^ keyword.operator.assignment +// ^^^ constant.language.nan + +tag`Hello ${ a + b } world\nanother ${expression}.`; +// <- variable.function.tagged-template +// ^ punctuation.definition.string.begin +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.string +// ^^^^^^^ string.quoted.other +// ^^^^^^^^^^ meta.interpolation - string +// ^ punctuation.section.interpolation.begin +// ^ variable.other.readwrite +// ^ keyword.operator.arithmetic +// ^ source.js.embedded +// ^ punctuation.section.interpolation.end +// ^^^^^^^^^^^^^^^^ string.quoted.other +// ^ constant.character.escape +// ^^^^^^^^^^^^^ meta.interpolation - string +// ^^ punctuation.section.interpolation.begin +// ^ punctuation.section.interpolation.end +// ^^ string.quoted.other +// ^ punctuation.definition.string.end + +tag `template`; +// <- variable.function.tagged-template +// ^^^^^^^^^^ meta.string string.quoted.other + +x ? y // y is a template tag! +`template` : z; +// ^ keyword.operator.ternary + + 1`` + /a/; +// ^^^ - string +// ^ keyword.operator.arithmetic +// ^ keyword.operator.arithmetic + +mylabel: +// ^ entity.name.label +// ^ punctuation.separator + +// Ensure a ternary identifier isn't recognized as a label +true ? str : str2 +// ^ - entity.name.label + +a = test ? a + b : c; +// ^ variable.other.readwrite +// ^ variable.other.readwrite + +{{foo}} +// ^ meta.block meta.block variable.other.readwrite + +var obj = { +// ^ meta.mapping punctuation.section.block.begin - meta.block + key: bar, + // <- meta.mapping.key + $key2: "string value", + // ^ meta.mapping.key + // ^ - constant.other + // ^^^^^^^^^^^^^^ meta.string string.quoted.double + + $keyFunc: function() { +// ^^^^^^^^^^^^^^^^^^^^ meta.function.declaration + // <- meta.mapping.key.dollar entity.name.function punctuation.dollar + // <- meta.mapping.key.dollar entity.name.function - punctuation.dollar + }, + + [true==false ? 'one' : 'two']: false, +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.mapping.key +// ^ punctuation.section.brackets.begin +// ^^^^ constant.language +// ^^^^ constant.language +// ^ keyword.operator +// ^ keyword.operator +// ^ punctuation.section.brackets.end +// ^ punctuation.separator.key-value + + "": true, + // <- meta.mapping.key + + "key4": true, +// ^^^^^^ meta.mapping.key meta.string string.quoted.double +// ^ punctuation.separator.key-value - string + 'key5': false, +// ^^^^^^meta.mapping.key meta.string string.quoted.single +// ^ punctuation.separator.key-value - string +// ^^^^^ constant.language.boolean.false + + objKey: new function() { +// ^^^^^^^^ storage.type.function + this.foo = baz; +// ^^^^ variable.language.this +// ^ punctuation.accessor +// ^^^ meta.property + }(), + + objKey: new class Foo { +// ^^^^^ storage.type.class + get baz() {} +// ^^^ storage.type.accessor +// ^^^ entity.name.function + }(), + + funcKey: function() { +// ^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^^^^^^^ meta.mapping.key entity.name.function + }, + + func2Key: function func2Key() { +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^^^^^^^^ meta.mapping.key entity.name.function + }, + + funcKeyArrow: () => { +// ^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^^^^^^^^^^^^ meta.mapping.key entity.name.function + }, + + "funcStringKey": function funcStringKey() +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^^^^^^^^^^^^^^^ meta.mapping.key meta.string string.quoted.double +// ^^^^^^^^^^^^^ entity.name.function + { }, + + 'funcStringKey': function() { +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^^^^^^^^^^^^^^^ meta.mapping.key meta.string string.quoted.single +// ^^^^^^^^^^^^^ entity.name.function + }, + + 'funcStringKeyArrow': () => { +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^^^^^^^^^^^^^^^^^^^^ meta.mapping.key meta.string string.quoted.single +// ^^^^^^^^^^^^^^^^^^ entity.name.function + }, + + "func\\String2KeyArrow": (foo) => { +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^^^^^^^^^^^^^^^^^^^^^^^ meta.mapping.key meta.string string.quoted.double +// ^^^^^^^^^^^^^^^^^^^^^ entity.name.function +// ^^ constant.character.escape + }, + + key: 'str' + (true ? 'true' : 'false'), +// ^^^^ constant.language.boolean.true + + qux() +// ^^^^^ meta.function.declaration +// ^^^ entity.name.function + {}, + + 'funcStringMethod'() { +// ^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^^^^^^^^^^^^^^^^ entity.name.function + }, + + 'funcStringMethodWithSameLineColon'() { var foo = { name: 'jeff' }; }, +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ entity.name.function + + "key (": true, +// ^^^^^^^ meta.mapping.key + + "key \"(": true, +// ^^^^^^^^^ meta.mapping.key + + "key '(": true, +// ^^^^^^^^ meta.mapping.key + + static, +// ^^^^^^ variable.other.readwrite + + *baz(){ +// ^^^^^^ meta.function.declaration +// ^ keyword.generator.asterisk +// ^^^ entity.name.function + } + + ...foo, +// ^^^ keyword.operator.spread +// ^^^ variable.other.readwrite +// ^ punctuation.separator.comma + + ...bar(baz), +// ^^^ keyword.operator.spread +// ^^^^^^^^ meta.function-call +// ^^^ variable.function +// ^ punctuation.separator.comma + + get foo() {}, +// ^^^^^^^^^^^^ meta.function +// ^^^ storage.type.accessor +// ^^^ entity.name.function + + get() {}, +// ^^^^^^^^ meta.function +// ^^^ entity.name.function + + get: 42, +// ^^^ meta.mapping.key +} +// <- meta.mapping - meta.block + ++{ +// <- keyword.operator + '': +{1:} / undefined +//^^ meta.string string.quoted +// ^ punctuation.separator.key-value +// ^ keyword.operator +// ^ constant.numeric +// ^ keyword.operator +// ^ constant.language +}; +// <- meta.mapping punctuation.section.block.end + +({ + // <- meta.mapping + 0.: {0.e+0: 0} +//^^ meta.mapping.key constant.numeric +// ^ punctuation.separator.key-value +// ^^^^^ meta.mapping.key constant.numeric +// ^ constant.numeric +}); + +[ a, b, c ]; +// <- meta.sequence punctuation.section.brackets.begin +// ^ meta.sequence punctuation.separator.comma +// ^^^^^^^^ meta.sequence +// ^ meta.sequence punctuation.section.brackets.end + +function x() {} +[ a, b, c ]; +// <- meta.sequence.js + ++ +function x() {} +[ a, b, c ]; +// <- meta.brackets.js + +var $ = function(baz) { +// ^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^ entity.name.function variable.other.dollar.only punctuation.dollar +} + +$() +// <- variable.other.dollar.only punctuation.dollar + +$foo = null; +// <- variable.other.dollar punctuation.dollar +// ^ variable.other.dollar - punctuation.dollar +// ^^^^ constant.language.null + +baz = ""; +// <- variable.other.readwrite +// ^^ meta.string string.quoted.double + +var qux = 100; +// <- storage.type +// ^ variable.other.readwrite +// ^ constant.numeric + +{}/**/ +//^ - meta.block + +if (Infinity > qux) { +// <- meta.conditional.js keyword.control.conditional.if +// ^^^^^^^^^^^^^^^ meta.conditional +// ^^^^^^^^ constant.language.infinity + a; +// ^ meta.conditional meta.block +} +// <- meta.conditional meta.block + +if (foo bar) + baz = "test" + +if(false){}/**/ +// ^ - meta.conditional + +do { +// <- meta.do-while keyword.control.loop.do-while +// ^ meta.block + qux += 1 +// ^^^^^^^^ meta.do-while meta.block +} while(qux < 20); +// <- meta.block +// ^^^^^^^^^^^^^^ meta.do-while - meta.block +// ^^^^ keyword.control.loop.while +// ^^^^^^^^ meta.group + +do // Incomplete statement + 42; +// ^^ constant.numeric - meta.do-while + +do {} while (false)/**/ +// <- meta.do-while keyword.control.loop.do-while +//^^^^^^^^^^^^^^^^^ meta.do-while.js +// ^^ - meta.do-while +// ^^^^^ keyword.control.loop.while.js + +for (var i = 0; i < 10; i++) { +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.for +// ^^^^^^^^^^^^^^^^^^^^^^ meta.group +// ^^^ storage.type.js +// ^ meta.block + i += 1; +// ^^^^^^^ meta.for meta.block +} +// <- meta.block + + for (; x in list;) {} +// ^^^^^^^^^^^^^^^^^^^^^ meta.for +// ^^^ keyword.control.loop.for +// ^^^^^^^^^^^^^^ meta.group +// ^ punctuation.separator.expression +// ^^ keyword.operator +// ^ punctuation.separator.expression + + for (a[x in list];;) {} +// ^^^^^^^^^^^^^^^^^^^^^^^ meta.for +// ^^^ keyword.control.loop.for +// ^^^^^^^^^^^^^^^^ meta.group +// ^^^^^^^^^^^ meta.brackets +// ^^ keyword.operator +// ^ punctuation.separator.expression +// ^ punctuation.separator.expression + + for (;function () {}/a/g;) {} +// ^ keyword.operator + + for (const x in list) {} +// ^^^^^^^^^^^^^^^^^^^^^^^^ meta.for +// ^^^ keyword.control.loop.for +// ^^^^^^^^^^^^^^^^^ meta.group +// ^^^^^ storage.type +// ^^ keyword.operator.word + + for (const x of list) {} +// ^^^^^^^^^^^^^^^^^^^^^^^^ meta.for +// ^^^ keyword.control.loop.for +// ^^^^^^^^^^^^^^^^^ meta.group +// ^^^^^ storage.type +// ^^ keyword.operator.word + + for (x in list) {} +// ^^^^^^^^^^^^^^^^^^ meta.for +// ^^^ keyword.control.loop.for +// ^^^^^^^^^^^ meta.group +// ^^ keyword.operator.word + + for (x of list) {} +// ^^^^^^^^^^^^^^^^^^ meta.for +// ^^^ keyword.control.loop.for +// ^^^^^^^^^^^ meta.group +// ^^ keyword.operator.word + + for await (const x of list) {} +// ^^^ keyword.control.loop.for +// ^^^^^ keyword.control.flow.await + +for + 42; +// ^^ constant.numeric - meta.for + +for(;;){}/**/ +// ^ - meta.for + +while (true) +// ^^^^^^^^^ meta.while +// ^^^^ meta.group +{ +// <- meta.block + x = yield; +// ^^^^^ keyword.control.flow.yield + + x = yield * 42; +// ^^^^^ keyword.control.flow.yield +// ^ keyword.generator.asterisk + + x = yield + function f() {} + []; +// ^^ meta.sequence - meta.brackets + + + x = yield* + function f() {} + []; +// ^^ meta.brackets - meta.sequence + + y = await 42; +// ^^^^^ keyword.control.flow.await + + y = yield await 42; +// ^^^^^ keyword.control.flow.yield +// ^^^^^ keyword.control.flow.await + + yield (parenthesized_expression); +// ^^^^^ keyword.control.flow.yield + + yield `template`; +// ^^^^^ keyword.control.flow.yield + + break; +// ^^^^^ keyword.control.flow.break + + break foo; +// ^^^^^ keyword.control.flow.break +// ^^^ variable.label + + break + foo; +// ^^^ variable.other.readwrite - variable.label + + break/**/foo; +// ^^^ variable.label - variable.other.readwrite + + break/* + */foo; +// ^^^ variable.other.readwrite - variable.label + + break function; +// ^^^^^^^^ invalid.illegal.identifier variable.label + + continue; +// ^^^^^^^^ keyword.control.flow.continue + + continue foo; +// ^^^^^^^^ keyword.control.flow.continue +// ^^^ variable.label + + continue + foo; +// ^^^ variable.other.readwrite - variable.label + + continue/**/foo; +// ^^^ variable.label - variable.other.readwrite + + continue/* + */ foo; +// ^^^ variable.other.readwrite - variable.label + + goto; +// ^^^^ variable.other.readwrite - keyword +} +// <- meta.block + +while // Incomplete statement + 42; +// ^^ constant.numeric - meta.while + +while(false){}/**/ +// ^ - meta.while + +with (undefined) { +// <- keyword.control.import.with +//^^^^^^^^^^ meta.with +// ^^^^^^^^^ constant.language.undefined + return; +// ^^^^^^ meta.with.js meta.block.js keyword.control.flow.return +} + +with // Incomplete statement + 42; +// ^^ constant.numeric - meta.while + +with(false){}/**/ +// ^ - meta.with + +switch ($foo) { +// <- meta.switch.js keyword.control.conditional.switch +// ^^^^^^^^^^^^ meta.switch +//^^^^ keyword.control.conditional.switch +// ^^^^ meta.group +// ^ meta.block punctuation.section.block.begin + case foo: + // ^ meta.switch meta.block keyword.control.conditional.case + // ^ - punctuation.separator.key-value + qux = 1; + break; + // ^ keyword.control.flow.break + case "baz": + // ^ keyword.control.conditional.case + // ^ - punctuation.separator.key-value string + qux = 2; + break; + // ^ keyword.control.flow.break + default: + // ^ meta.switch meta.block keyword.control.conditional.default + // ^ - punctuation.separator.key-value + qux = 3; + + case$ +// ^^^^^ - keyword + ; + + default$ +// ^^^^^^^^ - keyword + ; + + case 0: {} + case 1: +// ^^^^ keyword.control.conditional.case +} +// <- meta.block punctuation.section.block.end + +try { +// <- meta.try keyword.control.exception.try +// ^^ meta.try +// ^ meta.block + foobar = qux.bar(); +// ^^^^^^^^^^^^^^^^^^^ meta.try meta.block +} catch (e) { +// <- meta.block +//^^^^^^^^^^^^ meta.catch +//^^^^^ keyword.control.exception.catch +// ^ meta.group +// ^ meta.block + foobar = 0 +// ^^^^^^^^^^ meta.catch meta.block +} finally { +// <- meta.block +//^^^^^^^^^^ meta.finally +//^^^^^^^ keyword.control.exception.finally +// ^ meta.block + foobar += 1 +// ^^^^^^^^^^^ meta.finally meta.block +} +// <- meta.block + +switch // Incomplete statement + 42; +// ^^ constant.numeric - meta.switch + +switch(x){}/**/ +// ^^ - meta.switch + +try{}/**/ +// ^ - meta.try +catch{}/**/ +// ^ - meta.catch +finally{}/**/ +// ^ - meta.finally + +class MyClass extends TheirClass { +// <- storage.type.class +// ^^^^^^^ entity.name.class +// ^^^^^^^ storage.modifier.extends +// ^^^^^^^^^^ entity.other.inherited-class +// ^ meta.block punctuation.section.block.begin + + x = 42; +// ^ variable.other.readwrite +// ^ keyword.operator.assignment +// ^^ constant.numeric + + 'y' = 42; +// ^^^ meta.string string.quoted.single +// ^ variable.other.readwrite +// ^ keyword.operator.assignment +// ^^ constant.numeric + + "z" = 42; +// ^^^ meta.string string.quoted.double +// ^ variable.other.readwrite +// ^ keyword.operator.assignment +// ^^ constant.numeric + + [w] = 42; +// ^ punctuation.section.brackets.begin +// ^ variable.other.readwrite +// ^ punctuation.section.brackets.end +// ^ keyword.operator.assignment +// ^^ constant.numeric + + #v = 42; +// ^ punctuation.definition.variable +// ^ variable.other.readwrite +// ^ keyword.operator.assignment +// ^^ constant.numeric + + f = a => b; +// ^^^^^^^^ meta.function.declaration +// ^ entity.name.function variable.other.readwrite +// ^ variable.parameter.function + + g = function() {}; +// ^^^^^^^^^^^^^^^^^ meta.function +// ^ entity.name.function variable.other.readwrite + + #h = function() {}; +// ^^^^^^^^^^^^^^^^^^ meta.function +// ^ punctuation.definition.variable +// ^ entity.name.function variable.other.readwrite + + static x = 42; +// ^^^^^^ storage.modifier.js +// ^ variable.other.readwrite +// ^ keyword.operator.assignment +// ^^ constant.numeric + + static 'y' = 42; +// ^^^^^^ storage.modifier.js +// ^^^ meta.string string.quoted.single +// ^ variable.other.readwrite +// ^ keyword.operator.assignment +// ^^ constant.numeric + + static "z" = 42; +// ^^^^^^ storage.modifier.js +// ^^^ meta.string string.quoted.double +// ^ variable.other.readwrite +// ^ keyword.operator.assignment +// ^^ constant.numeric + + static [w] = 42; +// ^^^^^^ storage.modifier.js +// ^ punctuation.section.brackets.begin +// ^ variable.other.readwrite +// ^ punctuation.section.brackets.end +// ^ keyword.operator.assignment +// ^^ constant.numeric + + static #v = 42; +// ^ punctuation.definition.variable +// ^ variable.other.readwrite +// ^ keyword.operator.assignment +// ^^ constant.numeric + + static f = a => b; +// ^^^^^^^^ meta.function.declaration +// ^ entity.name.function variable.other.readwrite +// ^ variable.parameter.function + + static g = function() {}; +// ^^^^^^^^^^^^^^^^^ meta.function +// ^ entity.name.function variable.other.readwrite + + a, 'b' = 50, "c", [d] = 100, #e; +// ^ variable.other.readwrite +// ^ variable.other.readwrite +// ^ variable.other.readwrite +// ^ variable.other.readwrite +// ^ variable.other.readwrite + + static a, 'b' = 50, "c", [d] = 100, #e; +// ^^^^^^ storage.modifier.js +// ^ variable.other.readwrite +// ^ variable.other.readwrite +// ^ variable.other.readwrite +// ^ variable.other.readwrite +// ^ variable.other.readwrite + + foo // You thought I was a field... + () { return '...but was a method all along!'; } +// ^^ meta.class.js meta.block.js meta.function.declaration.js + + someMethod() { + return #e * 2; +// ^ punctuation.definition.variable +// ^ variable.other.readwrite +// ^ keyword.operator.arithmetic + + for (const param of this.#data.get('value')) {} +// ^ punctuation.definition.variable +// ^^^^ meta.property.object + } + + constructor(el) +// ^^^^^^^^^^^^^^^ meta.function.declaration + // ^ entity.name.function.constructor + { +// ^ meta.class meta.block meta.function meta.block punctuation.section.block + $.foo = ""; + super(el); + } +// ^ meta.class meta.block meta.function meta.block punctuation.section.block + + get foo() +// ^^^^^^^^^ meta.function.declaration + // <- storage.type.accessor + // ^ entity.name.function + { + return this._foo; + } + + static foo(baz) { +// ^^^^^^ storage.modifier +// ^^^^^^^^ meta.function.declaration + // ^^^ entity.name.function + + } + + qux() +// ^^^^^ meta.function.declaration + { } +// ^ meta.class meta.block meta.block punctuation.section.block.begin + + get bar () { +// ^^^^^^^^^^ meta.function.declaration +// ^ meta.class meta.block meta.block punctuation.section.block.begin + // <- storage.type.accessor + // ^ entity.name.function + return false; + } + + baz() { return null } +// ^^^^^ meta.function.declaration + // <- entity.name.function + + get() { return "foobar"; } +// ^^^^^ meta.function.declaration.js +// ^^^ entity.name.function.js - storage.type.accessor + + set (value) { return value; } +// ^^^^^^^^^^^ meta.function.declaration.js +// ^^^^^ variable.parameter.function.js +// ^^^ entity.name.function.js - storage.type.accessor + + set abc(value1, value2) { return value1 + value2; } +// ^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.declaration.js +// ^^^ storage.type.accessor - entity.name.function.js +// ^^^ entity.name.function.js +// ^^^^^^ variable.parameter.function.js +// ^ punctuation.separator.parameter.function.js +// ^^^^^^ variable.parameter.function.js + + static$ +// ^^^^^^^ - storage + () {}; + + constructor$() {} +// ^^^^^^^^^^^^ entity.name.function - entity.name.function.constructor + + @foo bar() {} +// ^^^^ meta.annotation +// ^ punctuation.definition.annotation +// ^^^ variable.annotation +// ^^^ entity.name.function + + @foo.bar bar() {} +// ^^^^^^^^ meta.annotation +// ^ punctuation.definition.annotation +// ^^^ variable.other.readwrite - variable.annotation +// ^^^ variable.annotation +// ^^^ entity.name.function + + @(whatever) bar() {} +// ^^^^^^^^^^^ meta.annotation +// ^ punctuation.definition.annotation +// ^^^^^^^^^^ meta.group +// ^^^ entity.name.function + + ['foo']() {} +// ^^^^^^^^^ meta.function.declaration + + static ['foo']() {} +// ^^^^^^^^^ meta.function.declaration + + async foo() {} +// ^^^^^ storage.type + + *foo() {} +// ^ keyword.generator.asterisk + + static async foo() {} +// ^^^^^ storage.type +} +// <- meta.block punctuation.section.block.end + +class Foo extends React.Component { +// ^^^^^ - entity.other.inherited-class +// ^^^^^^^^^ entity.other.inherited-class + constructor() + {} + + [foo.bar](arg) { +// ^^^ variable.other +// ^^^ meta.property +// ^^^ variable.parameter + return this.a; + } +} + +class Foo extends (Foo).Bar {} +// ^^^ entity.other.inherited-class + +class Foo extends Bar +// ^^^ entity.other.inherited-class + .baz {} +// ^^^^^^^ meta.class +// ^ punctuation.accessor +// ^^^ entity.other.inherited-class + +class Foo extends +// ^^^^^^^ storage.modifier.extends +Bar {} + +class Foo extends getSomeClass() {} +// ^^^^^^^^^^^^ meta.function-call variable.function - entity.other.inherited-class + + (class extends Bar {}); +// ^^^^^^^ storage.modifier.extends - entity.name.class + + (class extends class {} {}); +// ^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class +// ^^^^^^^ storage.modifier.extends +// ^^^^^^^^ meta.class meta.class +// ^^^^^ storage.type.class + +// Better highlighting while typing. +class +class +// <- storage.type.class - entity.name.class + +class{}/**/ +// ^ - meta.class + + () => {} +// ^^^^^^^^ meta.function - meta.function meta.function +// ^^^^^ meta.function.declaration +// ^ punctuation.section.group.begin +// ^ punctuation.section.group.end +// ^^ storage.type.function.arrow +// ^^ meta.block +// ^ punctuation.section.block +// ^ punctuation.section.block + + @foo class Foo {} +// ^^^^ meta.annotation +// ^ punctuation.definition.annotation +// ^^^ variable.annotation +// ^^^^^ storage.type.class + + @foo.bar class Foo {} +// ^^^^^^^^ meta.annotation +// ^ punctuation.definition.annotation +// ^^^ variable.other.readwrite - variable.annotation +// ^^^ variable.annotation +// ^^^^^ storage.type.class + + @(whatever) class Foo {} +// ^^^^^^^^^^^ meta.annotation +// ^ punctuation.definition.annotation +// ^^^^^^^^^^ meta.group +// ^^^^^ storage.type.class + +() => {} +// <- meta.function.declaration punctuation.section.group.begin + // <- meta.function.declaration punctuation.section.group.end +//^^^ meta.function.declaration +// ^ meta.block punctuation.section.block.begin +// ^ meta.block punctuation.section.block.end + +const test = ({a, b, c=()=>({active:false}) }) => {}; +// ^ entity.name.function +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.binding.destructuring +// ^ punctuation.section.block.begin +// ^ variable.parameter +// ^ variable.parameter +// ^ variable.parameter +// ^^^^ meta.function.declaration meta.function.declaration +// ^ punctuation.section.group.begin +// ^ punctuation.section.group.end +// ^^^^^^^^^^^^^^^^ meta.group +// ^ constant.language +// ^ punctuation.section.block.end + +// We can't currently detect this properly, but we need to consume => properly +([a, + b]) => { return x; } +// ^^^^^^^^^^^^^^^^ meta.function +// ^^ storage.type.function.arrow +// ^^^^^^ meta.block keyword.control.flow + +( + () + => { return; } +// ^^ storage.type.function.arrow +// ^^^^^^^^^^^ meta.block - meta.mapping +// ^^^^^^ keyword.control.flow +); + +({ + a = {}, +// ^ keyword.operator.assignment +// ^^ punctuation.section.block +// ^ punctuation.separator.comma - keyword.operator.comma + b, +// ^ punctuation.separator.comma - keyword.operator.comma +}) => null; +// ^^ storage.type.function.arrow + +MyClass.foo = function() {} +// ^^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^ support.class +// ^ entity.name.function + +MyClass.foo = () => {} +// ^^^^^^^^^^^^^^^^ meta.function.declaration +// ^ support.class +// ^ entity.name.function + +xhr.onload = function() {} +// ^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// <- support.class.js +// ^ entity.name.function + +xhr.onload = () => {} +// ^^^^^^^^^^^^^^^ meta.function.declaration +// <- support.class.js +// ^ entity.name.function + +var simpleArrow = foo => bar; +// ^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^ entity.name.function +// ^ variable.parameter.function +// ^ storage.type.function.arrow + +var Proto = () => { +// ^^^^^^^^^^^^^ meta.function.declaration +// ^ entity.name.function +// ^ storage.type.function.arrow + this._var = 1; +} + +var notAFunc = function$; +// ^^^^^^^^ - entity.name.function + +Proto.prototype.getVar = () => this._var; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^ support.class +// ^ support.constant.prototype +// ^ entity.name.function +// ^ storage.type.function.arrow + +Class3.prototype = function() { +// ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^ support.class +// ^ support.constant.prototype +} + +Proto.prototype.attr +// ^ support.class +// ^ support.constant.prototype +// ^ meta.property.object + +Proto.prototype = { + funcName: function() { +// ^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^^^^^^^^ entity.name.function +// ^ punctuation.separator.key-value + } +} + +sources.DOM.status() +sources.DOM +// <- variable.other.readwrite + .status() + // ^ meta.function-call.method variable.function + +return new Promise(resolve => preferenceObject.set({value}, resolve)); +// ^ meta.function-call.constructor punctuation.section.group.end + +var anotherSingle = function(){a = param => param; return param2 => param2 * a} +// ^ meta.function.declaration variable.parameter.function +// ^ meta.block meta.block variable.other.readwrite +// ^ meta.block punctuation.terminator.statement +// ^ meta.function.declaration variable.parameter.function +// ^ meta.block meta.block variable.other.readwrite +// ^ meta.block punctuation.section.block.end + +var foo = ~{a:function(){}.a()} +// ^^^ meta.binding.name +// ^^^ variable.other.readwrite +// ^ keyword.operator.assignment +// ^ keyword.operator.bitwise +// ^ punctuation.section.block.begin +// ^^^^^^^^^^^^^^^^^^^^ meta.mapping +// ^^^^^^^^^^^^ meta.function.declaration +// ^ entity.name.function +// ^ punctuation.separator.key-value +// ^^^^^^^^ storage.type.function +// ^ punctuation.section.group.begin +// ^ punctuation.section.group.end +// ^ meta.block punctuation.section.block.begin +// ^ meta.block punctuation.section.block.end +// ^ meta.mapping +// ^^^ meta.function.declaration +// ^ entity.name.function +// ^ punctuation.section.group.begin +// ^ punctuation.section.group.end +// ^ punctuation.section.block.end +// ^ - meta + +baz(foo(x => x('bar'))); +// ^ meta.function-call meta.function-call punctuation.section.group.end +// ^ meta.function-call punctuation.section.group.end + +func(a, b); +//^^^^^^^^ meta.function-call +// ^ variable.function +// ^^^^^^ meta.group +// ^ punctuation.section.group.begin +// ^ variable.other.readwrite +// ^ punctuation.separator.comma +// ^ variable.other.readwrite +// ^ punctuation.section.group.end + +var instance = new Constructor(param1, param2) +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.constructor +// ^^^^^^^^^^^ variable.type +// ^^^^^^^^^^^^^^^^ meta.group +// ^ punctuation.section.group.begin +// ^ variable.other.readwrite +// ^ punctuation.section.group.end + +var obj = new function() {}(); +// ^^^^^^^^ storage.type + +var obj2 = new class Foo{}(); +// ^^^^^ storage.type.class + +this.func() +// <- variable.language.this +arguments; +// <- variable.language.arguments +super.func(); +// <- variable.language.super +globalThis; +// <- variable.language.global + +foo[bar]; +// ^^^^^ meta.brackets +// ^ punctuation.section.brackets.begin +// ^ punctuation.section.brackets.end + +var Constructor = function() { + this._var = 1; + // ^ variable.language.this + this._method = function() {} + // ^ variable.language.this + // ^ entity.name.function +} + +// Tests to ensure the new keyword is highlighted properly even when the +// following element is not an identifier +var abc = new ABC( +// ^^^ keyword.operator.word.new +// ^^^^ meta.function-call.constructor +// ^^^^^^^^ - meta.instance.constructor + 'my-name-is-abc', + new (function () { +// ^^^ keyword.operator.word.new +// ^^^^^^^^^^^^^^^^^^ - meta.instance.constructor +// ^^^^^^^^^^^^^^ meta.function-call.constructor meta.function-call.constructor meta.group + var foo = 1; +// ^^^^^^^^^^^^ meta.function-call.constructor meta.function-call.constructor meta.group meta.block + }) +); + +new foo()/**/; +// ^ - meta.function-call.constructor + +function f() { + new.target; +// ^^^ keyword.operator.word.new +// ^ punctuation.accessor.dot.js +// ^^^^^^ variable.language.target + + new +// ^^^ keyword.operator.word.new + .target; +// ^ punctuation.accessor.dot.js +// ^^^^^^ variable.language.target +} + +new Date().getTime() +// ^^^^^^ meta.function-call.constructor +// ^^^^ support.class +//^^^^^^^^^^^^^^^^^^ - meta.instance.constructor + +new $(); +// ^ variable.type.dollar.only punctuation.dollar + +new $Dollar(); +// ^ variable.type.dollar punctuation.dollar + +void { + 'test1': [], + 'test2': new SomeObjectHash["default"], +// ^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.constructor +// ^ meta.brackets + 'test3': "asdf" +} +// <- meta.mapping punctuation.section.block.end + +// This tests parsing semi-broken object literals, which should help while a +// user is in the middle of typing code +void { + key1: true +// ^^^^ meta.mapping.key.js + key2: 0 +// ^^^^ meta.mapping.key.js + key3: function() +// ^^^^ meta.mapping.key.js entity.name.function + { + + } +} + +a = b.c +d = e.f +// <- variable.other.readwrite + +foo.bar().baz +// ^ punctuation.accessor +// ^ punctuation.accessor + +width/2 + lineStart * Math.sin(i * 30 * π/180) +// ^ keyword.operator.arithmetic +// ^ keyword.operator.arithmetic +// ^^^^^^^^^^^^^^^^^^^ meta.function-call.method + +var reg = /a+/gimy.exec('aabb') +// ^^^^^^^^ meta.string string.regexp +// ^^^^ keyword.other +// ^ punctuation.accessor + +'aabbcc'.replace(/b+/, 'd'); +// ^^^^ meta.string string.regexp +// ^ keyword.operator.quantifier.regexp + +/a+(?:bc)/; +// <- meta.string string.regexp +// ^^ punctuation.definition.group.no-capture.regexp + +'str'.match(/[" ]+/g); +// ^^^^^^^^ meta.string string.regexp.js + +myvar = myvar.replace(/RTP\/SAVPF .*/, 'RTP/SAVPF ' + suffix); +// ^^^^^^^^^^^^^^^ meta.string string.regexp.js + +'foo'.bar() / baz +// ^ variable.other.readwrite + +var g = 50 + +g / 20 + 30 /g +//^ keyword.operator.arithmetic +// ^ keyword.operator.arithmetic + +var h = foo() / 20 + 30 /g +// ^ keyword.operator.arithmetic +// ^ keyword.operator.arithmetic + +foo['bar']/ 20 + 30 /g +// ^ keyword.operator.arithmetic +// ^ keyword.operator.arithmetic + +foo.bar/ 20 + 30 /g +// ^ keyword.operator.arithmetic +// ^ keyword.operator.arithmetic + +var result = 200 / 400 + 500 / +// ^ keyword.operator.arithmetic +// ^ keyword.operator.arithmetic +100; + +var re = / +[a-z] +/g +// <- meta.string string.regexp.js punctuation.definition.string.end + // <- keyword.other + +const a = 1 / /This is regex./ / 'This should be a string, not a regex.'; +// ^ keyword.operator +// ^^^^^^^^^^^^^^^^ meta.string string.regexp +// ^ keyword.operator +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.string string.quoted + +a = /\//u + 0; +// ^^^^ meta.string string.regexp +// ^ keyword.other +// ^ keyword.operator +// ^ constant.numeric + +1 /**/ / 2 / /**/ 3; +// ^ keyword.operator +// ^ constant.numeric +// ^ keyword.operator + + x + in y; +// ^^ keyword.operator + + x + instanceof y; +// ^^^^^^^^^^ keyword.operator + +var π = 3.141592653 +// ^ variable.other.readwrite + +var angle = 2*π / count // angle between circles +// ^ keyword.operator.arithmetic + +var angle = 2*π / count /* angle between circles */ +// ^ keyword.operator.arithmetic + +undefined / (8 * 5) / "1" +// ^ keyword.operator.arithmetic +// ^ keyword.operator.arithmetic + +'5' / 8 / '1' +// ^ keyword.operator.arithmetic +// ^ keyword.operator.arithmetic + +"5" / 8 / "1" +// ^ keyword.operator.arithmetic +// ^ keyword.operator.arithmetic + +`5` / 8 / `1` +// ^ keyword.operator.arithmetic +// ^ keyword.operator.arithmetic + +a = /foo\/bar/g // Ensure handling of escape / in regex detection +// ^^^^^^^^^^^ meta.string string.regexp +// ^ constant.character.escape + +var re = /^\/[^/]+/; +// ^ constant.other.character-class.set.regexp +// ^ keyword.operator.quantifier + +(y - 1) / ((x - 1) / -2); +// ^ keyword.operator.arithmetic +// ^ punctuation.section.group.begin +(y - 1) / ((x - 1) / 2); +// ^ punctuation.section.group.end +// ^ keyword.operator.arithmetic + y / ((x - 1) / -2); + + 1, 2; +// ^ keyword.operator.comma - punctuation + + a; + [1, 2]; +// ^ meta.sequence punctuation.separator.comma - meta.brackets - keyword + + a + [1, 2]; +// ^ meta.brackets keyword.operator.comma - meta.sequence - punctuation + +define(['common'], function(common) { +// ^ meta.function.declaration + var namedFunc = function() { +// ^ meta.function.declaration + } +}); + +new FooBar(function(){ +// ^ meta.function.declaration + var namedFunc2 = function() { +// ^ meta.function.declaration + } +}) + +['foo'].bar = function() { +// ^^^ entity.name.function meta.property.object +} + +['foo'].$ = function() { +// ^ entity.name.function meta.property.object.dollar.only punctuation.dollar +} + +['foo'].$bar = function() { +// ^^^^ entity.name.function meta.property.object.dollar +// ^ punctuation.dollar +} + +{ +// <- meta.block punctuation.section.block.begin + let foo = 1; +// ^^^ meta.block storage.type +// ^^^ variable.other.readwrite +} +// <- meta.block punctuation.section.block.end + +var test = +{a: 1} +// <- meta.mapping punctuation.section.block.begin + +var arrowFuncBraceNextLine = () => /* comments! */ +// ^ entity.name.function +// ^^ storage.type.function +// ^^^^^^^^^^^^^^^ comment +{ + foo.bar(); +// ^ - entity.name.function +} + +// Handle multi-line "concise" arrow function bodies +var conciseFunc = () => + foo +//^^^ meta.block variable.other.readwrite + .bar(); +//^^^^^^ meta.block + +// Handle an arrow function in a parenthetical group +(myFunc = (a) => a*2) +// <- meta.group punctuation.section.group.begin +// ^^^^ entity.name.function +// ^ meta.group punctuation.section.group.end - meta.block + +var o = { a: i => i * 2, b: i => i * 3 } +// ^ entity.name.function +// ^ - meta.block +// ^ entity.name.function + +function test() { + return {a: 1}; +// ^^^^^^ meta.mapping +// ^ meta.mapping.key +// ^ constant.numeric +} + +$.each({}) +// <- variable.other.dollar.only punctuation.dollar +// ^ meta.mapping + +$varname.method() +// <- variable.other.dollar punctuation.dollar - variable.object.dollar.only +// ^ variable.other.dollar + +$.fn.new_plugin = function() {} +// <- support.class.dollar.only punctuation.dollar + +$var.fn.name = () => {} +// <- support.class.dollar punctuation.dollar - support.class.dollar.only +// ^ support.class.dollar - punctuation.dollar + +someFunction(() => [() => 'X']); +// ^ punctuation.section.brackets.end + +string = 'invalid +// ^ invalid.illegal.newline + +string = 'invalid\ +// ^ invalid.illegal.newline + +hex = 0xFA.5; +// ^ invalid.illegal - constant.numeric + +hex = 0xFA.toString; + +octal = 079.0; +// ^ invalid.illegal - constant.numeric + +strayBracket = ()); +// ^ invalid.illegal.stray-bracket-end + +strayBracket = []]; +// ^ invalid.illegal.stray-bracket-end + +strayBracket = {}}; +// ^ invalid.illegal.stray-bracket-end + +(a +) + c; +// ^^^^ - meta.group + +(a =>) + c; +// ^^^^ - meta.group + +function optionalParam(b=0) {}; +// ^ punctuation.section.group.begin +// ^ keyword.operator.assignment +// ^ punctuation.section.group.end + + +var CONST; +// ^^^^^ variable.other.constant + +return; +{a: 1}; +// ^ meta.block - meta.mapping + +return/**/{a: 1} +// ^^^^^^ meta.mapping - meta.block + +return +{a: 1}; +// ^ meta.block - meta.mapping + +return/* +*/{a: 1} +//^^^^^^ meta.block - meta.mapping + +const abc = new Set +if (true) {}; +// <- keyword.control.conditional + +var o = { + a, + b, + c // comment +// ^ variable.other.readwrite - entity.name.function +// ^^ comment +} + +var query = { + type: type==undefined ? null : {$in: type.split(',')} +//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.mapping +// ^^^^^^^^^ constant.language.undefined +// ^ keyword.operator.ternary +// ^^^^ constant.language.null +// ^ keyword.operator.ternary +// ^ punctuation.section.block.begin +// ^^ meta.mapping.key.js +// ^ punctuation.separator.key-value.js +// ^ punctuation.section.block.end +}; + +var str = `Hello, ${name}!`; +// ^^^^^^^^^^^^^^^^^ meta.string +// ^^^^^^^^ string.quoted.other +// ^^^^^^^ meta.interpolation - string +// ^^ string.quoted.other +// ^^ punctuation.section.interpolation.begin +// ^^^^ source.js.embedded variable.other.readwrite +// ^ punctuation.section.interpolation.end + +function yy (a, b) { +// ^^^^^^^^^^^^^^^^^ meta.function +// ^^^^^^^^^^^^^^^ meta.function.declaration +// ^^ entity.name.function +// ^ punctuation.section.group.begin +// ^ variable.parameter.function +// ^ punctuation.separator.parameter.function +// ^ variable.parameter.function +// ^ punctuation.section.group.end +// ^ meta.block punctuation.section.block.begin +} +// <- meta.function meta.block punctuation.section.block + +// Integers + + 123_456_789_0n; +// ^^^^^^^^^^^^^^ constant.numeric.integer.decimal +// ^ storage.type.numeric + + 0; +// ^ constant.numeric.integer.decimal + + 123 .foo; +// ^^^ constant.numeric.integer.decimal +// ^ punctuation.accessor +// ^^^ meta.property.object + + +123; +// ^ keyword.operator.arithmetic +// ^^^ constant.numeric.integer.decimal - keyword + + -123; +// ^ keyword.operator.arithmetic +// ^^^ constant.numeric.integer.decimal - keyword + + + 123; +// ^ keyword.operator.arithmetic + + 123xyz; +// ^^^^^^ invalid.illegal.numeric.decimal + + 0123456789; +// ^^^^^^^^^^ constant.numeric.integer.octal invalid.deprecated.numeric.octal + + 0123456789xyz; +// ^^^^^^^^^^^^^ invalid.illegal.numeric.octal + + 0123456789.xyz; +// ^^^^^^^^^^ invalid.deprecated.numeric.octal +// ^ punctuation.accessor +// ^^^ meta.property.object + + 0123456789.123; +// ^^^^^^^^^^ invalid.deprecated.numeric.octal +// ^ punctuation.accessor +// ^^^ invalid.illegal.illegal-identifier + + 0b0110_1001_1001_0110n; +// ^^^^^^^^^^^^^^^^^^^^^^ constant.numeric.integer.binary +// ^^ punctuation.definition.numeric.base +// ^ storage.type.numeric + + 0o0123_4567n; +// ^^^^^^^^^^^^ constant.numeric.integer.octal +// ^^ punctuation.definition.numeric.base +// ^ storage.type.numeric + + 0x01_23_45_67_89_ab_CD_efn; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^ constant.numeric.integer.hexadecimal +// ^^ punctuation.definition.numeric.base +// ^ storage.type.numeric + + 0B0; 0O0; 0X0; +// ^^^ constant.numeric.integer.binary +// ^^ punctuation.definition.numeric.base +// ^^^ constant.numeric.integer.octal +// ^^ punctuation.definition.numeric.base +// ^^^ constant.numeric.integer.hexadecimal +// ^^ punctuation.definition.numeric.base + + 0b1.foo; +// ^^^^^^^ - invalid +// ^^^ constant.numeric.integer.binary +// ^^ punctuation.definition.numeric.base +// ^ punctuation.accessor +// ^^^ meta.property.object + + 0b1.0; +// ^^^ constant.numeric.integer.binary +// ^^ punctuation.definition.numeric.base +// ^ punctuation.accessor +// ^ invalid.illegal.illegal-identifier + + 0b123; +// ^^^^^ invalid.illegal.numeric.binary + + +// Floats + + 1_234_567_890.123_456_789_0; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constant.numeric.float.decimal + + .123_456_789_0; +// ^^^^^^^^^^^^^^ constant.numeric.float.decimal +// ^ punctuation.separator.decimal + + 12345e6_7_8; +// ^^^^^^^^^^^ constant.numeric.float.decimal + + 123.456e+789; +// ^^^^^^^^^^^^ constant.numeric.float.decimal +// ^ punctuation.separator.decimal + + .123E-7_8_9; +// ^^^^^^^^^^^ constant.numeric.float.decimal +// ^ punctuation.separator.decimal + + 0123.45; +// ^^^^ constant.numeric.integer.octal invalid.deprecated.numeric.octal +// ^ punctuation.accessor +// ^^ invalid.illegal - constant.numeric + + 123.4foo; +// ^^^^^^^^ invalid.illegal.numeric.decimal + + 123.4e+foo; +// ^^^^^^ invalid.illegal.numeric.decimal + + 123..foo; +// ^^^^ constant.numeric.float.decimal +// ^ punctuation.accessor +// ^^^ meta.property.object + +debugger; +// <- keyword.control.flow.debugger.js + +debugger +[] +// <- meta.sequence + + a ?? b; +// ^^ keyword.operator.logical + + a.?b.?c; +// ^^ punctuation.accessor +// ^ meta.property.object +// ^^ punctuation.accessor +// ^ meta.property.object + + a.?[propName]; +// ^^^^^^^^^^^^ meta.brackets +// ^^ punctuation.accessor +// ^ punctuation.section.brackets.begin + + a.?(); +// ^^^^^ meta.function-call +// ^ variable.function +// ^^^^ meta.group +// ^^ punctuation.accessor +// ^ punctuation.section.group.begin + + a.b.?(); +// ^^^^^^^ meta.function-call.method +// ^ variable.function +// diff --git a/tests/syntax_test_js_bindings.js b/tests/syntax_test_js_bindings.js new file mode 100644 index 0000000..29c4c9f --- /dev/null +++ b/tests/syntax_test_js_bindings.js @@ -0,0 +1,206 @@ +// SYNTAX TEST "Packages/Babel/JavaScript (Babel).sublime-syntax" + + +// Variable declarations + +const x = value; +// ^ meta.binding.name variable.other.readwrite + + +const [ x, y, ...z, ] = value; +// ^^^^^^^^^^^^^^^ meta.binding.destructuring.sequence +// ^ meta.binding.name variable.other.readwrite +// ^ punctuation.separator.comma +// ^ meta.binding.name variable.other.readwrite +// ^ punctuation.separator.comma +// ^^^ keyword.operator.spread +// ^ meta.binding.name variable.other.readwrite +// ^ punctuation.separator.comma + +const [ x, [a, b], z] = value; +// ^^^^^^^^^^^^^^^ meta.binding.destructuring.sequence +// ^^^^^^ meta.binding.destructuring.sequence meta.binding.destructuring.sequence +// ^ meta.binding.name variable.other.readwrite +// ^ meta.binding.name variable.other.readwrite + +const [ x = 42, y = [a, b, c] ] = value; +// ^^^^^^^^^^^^^^^^^^^^^^^^^ meta.binding.destructuring.sequence +// ^ keyword.operator.assignment +// ^^ meta.binding.destructuring.sequence.js constant.numeric.integer.decimal.js +// ^ keyword.operator.assignment +// ^^^^^^^^^ meta.sequence +// ^ variable.other.readwrite - meta.binding.name + +const { a, b: c, ...d } = value; +// ^^^^^^^^^^^^^^^^^ meta.binding.destructuring.mapping +// ^ meta.mapping.key meta.binding.name variable.other.readwrite +// ^ punctuation.separator.comma +// ^ meta.mapping.key - variable +// ^ punctuation.separator.key-value +// ^^^ keyword.operator.spread +// ^ meta.binding.name variable.other.readwrite + +const { 'a': x, "b": y, [c]: z } = value; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.binding.destructuring.mapping +// ^^^ meta.mapping.key string.quoted.single +// ^ punctuation.separator.key-value +// ^ meta.binding.name variable.other.readwrite +// ^^^ meta.mapping.key string.quoted.double +// ^ punctuation.separator.key-value +// ^ meta.binding.name variable.other.readwrite +// ^^^ meta.mapping.key +// ^ variable.other.readwrite +// ^ punctuation.separator.key-value +// ^ meta.binding.name variable.other.readwrite + +const x; +// ^ meta.binding.name variable.other.readwrite + +let +// <- storage.type +w +// <- meta.binding.name variable.other.readwrite +, +// <- punctuation.separator.comma +x +// <- meta.binding.name variable.other.readwrite +y +// <- variable.other.readwrite - meta.binding.name +, +// <- keyword.operator.comma +z +// <- variable.other.readwrite - meta.binding.name + +// `let` is only reserved in strict mode, and we can't distinguish that yet. + +let let; +// ^^^ meta.binding.name variable.other.readwrite + +let +let; +// <- meta.binding.name variable.other.readwrite + +const +const x = 0; +// <- storage.type + +// Function parameters + +function f ([ x, y, ...z, ]) {} +// ^^^^^^^^^^^^^^^ meta.binding.destructuring.sequence +// ^ meta.binding.name variable.parameter.function +// ^ punctuation.separator.parameter +// ^ meta.binding.name variable.parameter.function +// ^ punctuation.separator.parameter +// ^^^ keyword.operator.spread +// ^ meta.binding.name variable.parameter.function +// ^ punctuation.separator.parameter + +function f ([ x, [a, b], z]) {} +// ^^^^^^^^^^^^^^^ meta.binding.destructuring.sequence +// ^^^^^^ meta.binding.destructuring.sequence meta.binding.destructuring.sequence +// ^ meta.binding.name variable.parameter.function +// ^ meta.binding.name variable.parameter.function + +function f ([ x = 42, y = [a, b, c] ]) {} +// ^^^^^^^^^^^^^^^^^^^^^^^^^ meta.binding.destructuring.sequence +// ^ keyword.operator.assignment +// ^^ meta.binding.destructuring.sequence.js constant.numeric.integer.decimal.js +// ^ keyword.operator.assignment +// ^^^^^^^^^ meta.sequence +// ^ variable.other.readwrite - meta.binding.name + +function f ({ a, b: c, ...d }) {} +// ^^^^^^^^^^^^^^^^^ meta.binding.destructuring.mapping +// ^ meta.mapping.key meta.binding.name variable.parameter.function +// ^ punctuation.separator.parameter +// ^ meta.mapping.key - variable +// ^ punctuation.separator.key-value +// ^^^ keyword.operator.spread +// ^ meta.binding.name variable.parameter.function + +function f ({ 'a': x, "b": y, [c]: z }) = value; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.binding.destructuring.mapping +// ^^^ meta.mapping.key string.quoted.single +// ^ punctuation.separator.key-value +// ^ meta.binding.name variable.parameter.function +// ^^^ meta.mapping.key string.quoted.double +// ^ punctuation.separator.key-value +// ^ meta.binding.name variable.parameter.function +// ^^^ meta.mapping.key +// ^ variable.other.readwrite +// ^ punctuation.separator.key-value +// ^ meta.binding.name variable.parameter.function + +function f (a, ...rest) {} +// ^ meta.binding.name variable.parameter.function +// ^^^ keyword.operator.spread +// ^^^^ variable.parameter.function + +function f (new) {} +// ^^^^^^^^^^^^^^^^ meta.function +// ^^^ invalid.illegal.identifier meta.binding.name variable.parameter.function + +let f = ([ x, y, ...z, ]) => {}; +// ^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^^^^^^^^^^^^^^^ meta.binding.destructuring.sequence +// ^ meta.binding.name variable.parameter.function +// ^ punctuation.separator.parameter +// ^ meta.binding.name variable.parameter.function +// ^ punctuation.separator.parameter +// ^^^ keyword.operator.spread +// ^ meta.binding.name variable.parameter.function +// ^ punctuation.separator.parameter + +let f = ([ x, [a, b], z]) => {}; +// ^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^ entity.name.function variable.other.readwrite +// ^^^^^^^^^^^^^^^ meta.binding.destructuring.sequence +// ^^^^^^ meta.binding.destructuring.sequence meta.binding.destructuring.sequence +// ^ meta.binding.name variable.parameter.function +// ^ meta.binding.name variable.parameter.function + +let f = ([ x = 42, y = [a, b, c] ]) => {}; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^ entity.name.function variable.other.readwrite +// ^^^^^^^^^^^^^^^^^^^^^^^^^ meta.binding.destructuring.sequence +// ^ keyword.operator.assignment +// ^^ meta.binding.destructuring.sequence.js constant.numeric.integer.decimal.js +// ^ keyword.operator.assignment +// ^^^^^^^^^ meta.sequence +// ^ variable.other.readwrite - meta.binding.name + +let f = ({ a, b: c, ...d }) => {}; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.declaration +// ^ entity.name.function variable.other.readwrite +// ^^^^^^^^^^^^^^^^^ meta.binding.destructuring.mapping +// ^ meta.mapping.key meta.binding.name variable.parameter.function +// ^ punctuation.separator.parameter +// ^ meta.mapping.key - variable +// ^ punctuation.separator.key-value +// ^^^ keyword.operator.spread +// ^ meta.binding.name variable.parameter.function + +let f = ({ 'a': x, "b": y, [c]: z }) => {}; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.binding.destructuring.mapping +// ^^^ meta.mapping.key string.quoted.single +// ^ punctuation.separator.key-value +// ^ meta.binding.name variable.parameter.function +// ^^^ meta.mapping.key string.quoted.double +// ^ punctuation.separator.key-value +// ^ meta.binding.name variable.parameter.function +// ^^^ meta.mapping.key +// ^ variable.other.readwrite +// ^ punctuation.separator.key-value +// ^ meta.binding.name variable.parameter.function + +let f = (a, ...rest) => {}; +// ^^^^^^^^^^^^^^^^ meta.function.declaration +// ^ entity.name.function variable.other.readwrite +// ^ meta.binding.name variable.parameter.function +// ^^^ keyword.operator.spread +// ^^^^ meta.binding.name variable.parameter.function + +let f = (new) => {}; +// ^^^^^^^^^^^^^^^ meta.function +// ^^^ invalid.illegal.identifier meta.binding.name variable.parameter.function diff --git a/tests/syntax_test_js_regexp.js b/tests/syntax_test_js_regexp.js new file mode 100644 index 0000000..48bb935 --- /dev/null +++ b/tests/syntax_test_js_regexp.js @@ -0,0 +1,241 @@ +// SYNTAX TEST "Packages/Babel/JavaScript (Babel).sublime-syntax" + +/* LITERAL */ + + // +// ^^ comment - string.regexp + + /abc/; +// ^^^^^ string.regexp +// ^ punctuation.definition.string.begin +// ^ punctuation.definition.string.end + + /ab\/c/; +// ^^^^^^^ string.regexp +// ^^ constant.character.escape.backslash + + /ab\//; +// ^^^^^^ string.regexp - comment +// ^^ constant.character.escape.backslash + + /ab\/*/; +// ^^^^^^^ string.regexp - comment +// ^^ constant.character.escape.backslash +// ^ keyword.operator.quantifier + + /abc/gimuys; +// ^^^^^^^^^^^ string.regexp +// ^^^^^^ keyword.other.js + + /abc/ + gimuys; +// ^^^^^^ variable.other.readwrite - string.regexp; + + /abc//* + */gimuys; +// ^^^^^^ variable.other.readwrite - string.regexp; + + /abc//i; +// ^^^^^ string.regexp +// ^^ - string.regexp +// ^ keyword.operator.arithmetic +// ^ variable.other.readwrite + + /abc/*i; +// ^^^^^ string.regexp +// ^^ - string.regexp +// ^ keyword.operator.arithmetic - string.regexp +// ^ variable.other.readwrite + + /abc/**i; +// ^^^^^ string.regexp +// ^^^ - string.regexp +// ^^ keyword.operator.arithmetic - string.regexp +// ^ variable.other.readwrite + + + /a|b/; +// ^ keyword.operator.or + +/* ESCAPES */ + + /a.c/; +// ^ constant.other.character-class.escape + + /\d\D\w\W\s\S/; +// ^^^^^^^^^^^^ constant.other.character-class.escape.backslash + + /\t\r\n\v\f\0/; +// ^^^^^^^^^^^^ constant.character.escape.backslash + + /\cAB/; +// ^^^ constant.character.escape.backslash +// ^ - constant.character.escape + + /\x0ff/; +// ^^^^ constant.character.escape.backslash +// ^ - constant.character.escape + + /\x0/; +// ^^ constant.character.escape.backslash +// ^ - constant.character.escape + + /\u12abc/; +// ^^^^^^ constant.character.escape.backslash +// ^ - constant.character.escape + + /\u12a/; +// ^^ constant.character.escape.backslash +// ^^^ - constant.character.escape + + /\b\B^$/; +// ^^^^^^ keyword.control.anchor + + /\p{General_Category=Letter} \P{Letter}/; +// ^^ constant.other.character-class.escape.unicode-property +// ^ punctuation.definition.unicode-property.begin +// ^^^^^^^^^^^^^^^^ support.constant.unicode-property +// ^ punctuation.separator.key-value.unicode-property +// ^^^^^^ support.constant.unicode-property +// ^ punctuation.definition.unicode-property.end +// ^^ constant.other.character-class.escape.unicode-property +// ^ punctuation.definition.unicode-property.begin +// ^^^^^^ support.constant.unicode-property +// ^ punctuation.definition.unicode-property.end + +/* QUANTIFIERS */ + + /a*b+c?/; +// ^ keyword.operator.quantifier.regexp +// ^ keyword.operator.quantifier.regexp +// ^ keyword.operator.quantifier.regexp + + /a*?b+?c??/; +// ^^ keyword.operator.quantifier.regexp +// ^^ keyword.operator.quantifier.regexp +// ^^ keyword.operator.quantifier.regexp + + /a{10}b{1,2}c{1,}d{,2}/; +// ^^^^ keyword.operator.quantifier +// ^^^^^ keyword.operator.quantifier +// ^^^^ keyword.operator.quantifier +// ^^^^ keyword.operator.quantifier + + + /a{10}?b{1,2}?c{1,}?d{,2}?/; +// ^^^^^ keyword.operator.quantifier +// ^^^^^^ keyword.operator.quantifier +// ^^^^^ keyword.operator.quantifier +// ^^^^^ keyword.operator.quantifier + + /a{b{}c{,}d{1, 2}/; +// ^^^^^^^^^^^^^^^^ - keyword.operator.quantifier + +/* GROUPING */ + + /a(bc)d/; +// ^^^^ meta.group +// ^ punctuation.definition.group +// ^ punctuation.definition.group + + /a(?:bc)d/; +// ^^^^^^ meta.group +// ^^^ punctuation.definition.group +// ^^ punctuation.definition.group.no-capture +// ^ punctuation.definition.group + + /a(b(c)d)e/; +// ^^^^^^^ meta.group +// ^^^ meta.group meta.group +// ^ punctuation.definition.group +// ^ punctuation.definition.group +// ^ punctuation.definition.group +// ^ punctuation.definition.group + + /a(b)c\1/; +// ^^ keyword.other.back-reference + + /a(?bc)d\k/; +// ^^^^^^^^^^ meta.group +// ^^ punctuation.definition.group +// ^ punctuation.definition.group.named.begin +// ^^^ entity.name.other.group +// ^ punctuation.definition.group.named.end +// ^ punctuation.definition.group +// ^^ keyword.other.back-reference +// ^ punctuation.definition.group.named.begin +// ^^^ variable.other.group +// ^ punctuation.definition.group.named.end + +/* ASSERTIONS */ + + /(?=foo)/; +// ^^^^^^^ meta.group.assertion +// ^ punctuation.definition.group +// ^^ punctuation.definition.group.assertion meta.assertion.look-ahead +// ^ punctuation.definition.group + + /(?!foo)/; +// ^^^^^^^ meta.group.assertion +// ^ punctuation.definition.group +// ^^ punctuation.definition.group.assertion meta.assertion.negative-look-ahead +// ^ punctuation.definition.group + + /(?<=foo)/; +// ^^^^^^^^ meta.group.assertion +// ^ punctuation.definition.group +// ^^^ punctuation.definition.group.assertion meta.assertion.look-behind +// ^ punctuation.definition.group + + /(?; +// ^^^^^^^ meta.jsx meta.tag +// ^ punctuation.definition.tag.begin +// ^^^ meta.tag.name entity.name.tag +// ^^ punctuation.definition.tag.end + + Hello!; +// ^^^^^^^^^^^^^^^^^ meta.jsx +// ^^^^^ meta.tag +// ^ punctuation.definition.tag.begin +// ^^^ meta.tag.name entity.name.tag +// ^ punctuation.definition.tag.end +// ^^^^^^ - meta.tag +// ^^^^^^ meta.tag +// ^^ punctuation.definition.tag.begin +// ^^^ meta.tag.name entity.name.tag +// ^ punctuation.definition.tag.end + + Hello!; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx +// ^^^^^^^^^^^^^ meta.tag +// ^^^^^^^^^^^ meta.tag.name +// ^ punctuation.accessor +// ^ punctuation.accessor +// ^^^ entity.name.tag +// ^^^^^^ - meta.tag +// ^^^^^^^^^^^^^^ meta.tag +// ^^^^^^^^^^^ meta.tag.name +// ^ punctuation.accessor +// ^ punctuation.accessor +// ^^^ entity.name.tag + + Hello!World!; +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.jsx +// ^^^^^ meta.tag +// ^^^^^^ - meta.tag +// ^^^^^^ meta.tag +// ^^^^^^ - meta.tag +// ^^^^^^ meta.tag + + +// ^^^^^^^^^^^ meta.jsx +// ^^^^^ - meta.jsx +// ^ keyword.operator.relational +// ^^^ variable +// ^ keyword.operator.relational +0; + + <>Hello!; +// ^^^^^^^^^^^ meta.jsx +// ^^ meta.tag +// ^ punctuation.definition.tag.begin +// ^ punctuation.definition.tag.end +// ^^^^^^ - meta.tag +// ^^^ meta.tag +// ^^ punctuation.definition.tag.begin +// ^ punctuation.definition.tag.end + + + +// ^^^^^ - meta.jsx +// ^ keyword.operator.relational +// ^^^ variable +// ^ keyword.operator.relational +0; + + ; +// ^^^^ invalid.illegal.unmatched-tag + +; +// <- meta.jsx meta.tag punctuation.definition.tag.end + + + // test +// ^^^^^^^^ - comment + + /* test */ +// ^^^^^^^^^^ - comment + +     ; +// ^^^^^^ constant.character.escape +// ^ punctuation.definition.entity +// ^ punctuation.definition.entity +// ^^^^^^^ - constant.character.escape + + {xyzzy} +// ^^^^^^^ meta.interpolation +// ^^^^^ source.js.embedded.jsx variable.other.readwrite + + {{ xyzzy:42 }} +// ^^^^^^^^^^^^^^ meta.interpolation +// ^^^^^^^^^^^^ source.js.embedded.jsx +// ^^^^^^^^^^^^ meta.mapping +// ^^^^^ meta.mapping.key +// ^ punctuation.separator.key-value +// ^^ constant.numeric.integer.decimal +// ^ punctuation.definition.interpolation.end + + {//} +// ^ punctuation.definition.interpolation.begin +// ^^^ comment.line.double-slash +// ^^ punctuation.definition.comment +// ^ - punctuation + } +// ^ punctuation.definition.interpolation.end + diff --git a/tests/syntax_test_string_object_keys.js b/tests/syntax_test_string_object_keys.js new file mode 100644 index 0000000..a6803d3 --- /dev/null +++ b/tests/syntax_test_string_object_keys.js @@ -0,0 +1,5 @@ +// SYNTAX TEST "Packages/Babel/JavaScript (Babel).sublime-syntax" +({ + foo: 42 +// ^^^ meta.group meta.mapping meta.mapping.key string.unquoted +})