diff --git a/TypeScript.YAML-tmLanguage b/TypeScript.YAML-tmLanguage index 534bb8ba..43de9f83 100644 --- a/TypeScript.YAML-tmLanguage +++ b/TypeScript.YAML-tmLanguage @@ -106,25 +106,29 @@ repository: - include: '#array-binding-pattern' - name: variable.other.readwrite.ts match: ([_$[:alpha:]][_$[:alnum:]]*) - - name: variable.other.readwrite.ts - match: ([_$[:alpha:]][_$[:alnum:]]*) - - name: meta.delimiter.object.comma.ts - match: ',' + - include: '#object-binding-pattern' + - include: '#destructuring-variable-rest' + - include: '#punctuation-comma' array-binding-element: patterns: - include: '#comment' - include: '#object-binding-pattern' - include: '#array-binding-pattern' - - name: variable.other.readwrite.ts - match: ([_$[:alpha:]][_$[:alnum:]]*) - - name: meta.delimiter.object.comma.ts - match: ',' + - include: '#destructuring-variable-rest' + - include: '#punctuation-comma' + + destructuring-variable-rest: + match: (?:(\.\.\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*) + captures: + '1': { name: keyword.operator.rest.ts } + '2': { name: variable.other.readwrite.ts } object-binding-pattern: - begin: \{ + begin: (?:(\.\.\.)\s*)?(\{) beginCaptures: - '0': { name: punctuation.definition.binding-pattern.object.ts } + '1': { name: keyword.operator.rest.ts } + '2': { name: punctuation.definition.binding-pattern.object.ts } end: \} endCaptures: '0': { name: punctuation.definition.binding-pattern.object.ts } @@ -132,9 +136,10 @@ repository: - include: '#object-binding-element' array-binding-pattern: - begin: \[ + begin: (?:(\.\.\.)\s*)?(\[) beginCaptures: - '0': { name: punctuation.definition.binding-pattern.array.ts } + '1': { name: keyword.operator.rest.ts } + '2': { name: punctuation.definition.binding-pattern.array.ts } end: \] endCaptures: '0': { name: punctuation.definition.binding-pattern.array.ts } @@ -173,8 +178,7 @@ repository: - include: '#ternary-expression' - include: '#new-expr' - include: '#object-literal' - - include: '#expression-operator' - - include: '#operators' + - include: '#expression-operators' - include: '#support-objects' - include: '#function-call' - include: '#identifiers' @@ -371,8 +375,7 @@ repository: '4': { name: keyword.control.as.ts } '5': { name: invalid.illegal.ts } '6': { name: variable.other.readwrite.alias.ts } - - name: meta.delimiter.object.comma.ts - match: ',' + - include: '#punctuation-comma' - name: constant.language.import-export-all.ts match: \* - name: keyword.control.default.ts @@ -460,6 +463,12 @@ repository: - include: '#method-declaration' - include: '#indexer-declaration' - include: '#type-annotation' + - begin: \.\.\. + beginCaptures: + '0': { name: keyword.operator.spread.ts } + end: '(?=\}|;|,|$)|(?<=\})' + patterns: + - include: '#type' - include: '#punctuation-comma' - include: '#punctuation-semicolon' @@ -612,7 +621,7 @@ repository: match: '(?:\s*\b(public|private|protected)\b\s+)?(\.\.\.)?\s*(? - name - variable.other.readwrite.ts - match - ([_$[:alpha:]][_$[:alnum:]]*) + include + #object-binding-pattern - name - meta.delimiter.object.comma.ts - match - , + include + #destructuring-variable-rest + + + include + #punctuation-comma @@ -367,27 +367,46 @@ include #array-binding-pattern + + include + #destructuring-variable-rest + + + include + #punctuation-comma + + + + destructuring-variable-rest + + match + (?:(\.\.\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*) + captures + + 1 name - variable.other.readwrite.ts - match - ([_$[:alpha:]][_$[:alnum:]]*) + keyword.operator.rest.ts + 2 name - meta.delimiter.object.comma.ts - match - , + variable.other.readwrite.ts - + object-binding-pattern begin - \{ + (?:(\.\.\.)\s*)?(\{) beginCaptures - 0 + 1 + + name + keyword.operator.rest.ts + + 2 name punctuation.definition.binding-pattern.object.ts @@ -414,10 +433,15 @@ array-binding-pattern begin - \[ + (?:(\.\.\.)\s*)?(\[) beginCaptures - 0 + 1 + + name + keyword.operator.rest.ts + + 2 name punctuation.definition.binding-pattern.array.ts @@ -545,11 +569,7 @@ include - #expression-operator - - - include - #operators + #expression-operators include @@ -1202,10 +1222,8 @@ - name - meta.delimiter.object.comma.ts - match - , + include + #punctuation-comma name @@ -1503,6 +1521,27 @@ include #type-annotation + + begin + \.\.\. + beginCaptures + + 0 + + name + keyword.operator.spread.ts + + + end + (?=\}|;|,|$)|(?<=\}) + patterns + + + include + #type + + + include #punctuation-comma @@ -2000,7 +2039,7 @@ 2 name - keyword.operator.spread.ts + keyword.operator.rest.ts 3 @@ -2127,16 +2166,16 @@ - name - variable.parameter.ts - match - ([_$[:alpha:]][_$[:alnum:]]*) + include + #parameter-object-binding-pattern - name - meta.delimiter.object.comma.ts - match - , + include + #destructuring-parameter-rest + + + include + #punctuation-comma @@ -2156,27 +2195,46 @@ include #parameter-array-binding-pattern + + include + #destructuring-parameter-rest + + + include + #punctuation-comma + + + + destructuring-parameter-rest + + match + (?:(\.\.\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*) + captures + + 1 name - variable.parameter.ts - match - ([_$[:alpha:]][_$[:alnum:]]*) + keyword.operator.rest.ts + 2 name - meta.delimiter.object.comma.ts - match - , + variable.parameter.ts - + parameter-object-binding-pattern begin - \{ + (?:(\.\.\.)\s*)?(\{) beginCaptures - 0 + 1 + + name + keyword.operator.rest.ts + + 2 name punctuation.definition.binding-pattern.object.ts @@ -2203,10 +2261,15 @@ parameter-array-binding-pattern begin - \[ + (?:(\.\.\.)\s*)?(\[) beginCaptures - 0 + 1 + + name + keyword.operator.rest.ts + + 2 name punctuation.definition.binding-pattern.array.ts @@ -2354,10 +2417,6 @@ include #type-builtin-literals - - include - #typeof-operator - include #type-parameters @@ -2372,7 +2431,7 @@ include - #type-operator + #type-operators include @@ -2573,12 +2632,21 @@ - type-operator + type-operators - name - keyword.operator.type.ts - match - [&|] + patterns + + + include + #typeof-operator + + + name + keyword.operator.type.ts + match + [&|] + + type-function-return-type @@ -3740,6 +3808,29 @@ + + name + meta.object.member.ts + begin + \.\.\. + beginCaptures + + 0 + + name + keyword.operator.spread.ts + + + end + (?=,|\}) + patterns + + + include + #expression + + + name meta.object.member.ts @@ -3760,7 +3851,7 @@ - expression-operator + expression-operators patterns @@ -3831,19 +3922,12 @@ - - - typeof-operator - - name - keyword.operator.typeof.ts - match - (?<!\.|\$)\btypeof\b(?!\$) - - operators - - patterns - + + name + keyword.operator.spread.ts + match + \.\.\. + name keyword.operator.assignment.compound.ts @@ -3906,6 +3990,13 @@ + typeof-operator + + name + keyword.operator.typeof.ts + match + (?<!\.|\$)\btypeof\b(?!\$) + arrow-function patterns diff --git a/TypeScriptReact.tmLanguage b/TypeScriptReact.tmLanguage index 516eff4f..c3d9aaac 100644 --- a/TypeScriptReact.tmLanguage +++ b/TypeScriptReact.tmLanguage @@ -338,16 +338,16 @@ - name - variable.other.readwrite.tsx - match - ([_$[:alpha:]][_$[:alnum:]]*) + include + #object-binding-pattern - name - meta.delimiter.object.comma.tsx - match - , + include + #destructuring-variable-rest + + + include + #punctuation-comma @@ -367,27 +367,46 @@ include #array-binding-pattern + + include + #destructuring-variable-rest + + + include + #punctuation-comma + + + + destructuring-variable-rest + + match + (?:(\.\.\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*) + captures + + 1 name - variable.other.readwrite.tsx - match - ([_$[:alpha:]][_$[:alnum:]]*) + keyword.operator.rest.tsx + 2 name - meta.delimiter.object.comma.tsx - match - , + variable.other.readwrite.tsx - + object-binding-pattern begin - \{ + (?:(\.\.\.)\s*)?(\{) beginCaptures - 0 + 1 + + name + keyword.operator.rest.tsx + + 2 name punctuation.definition.binding-pattern.object.tsx @@ -414,10 +433,15 @@ array-binding-pattern begin - \[ + (?:(\.\.\.)\s*)?(\[) beginCaptures - 0 + 1 + + name + keyword.operator.rest.tsx + + 2 name punctuation.definition.binding-pattern.array.tsx @@ -549,11 +573,7 @@ include - #expression-operator - - - include - #operators + #expression-operators include @@ -1206,10 +1226,8 @@ - name - meta.delimiter.object.comma.tsx - match - , + include + #punctuation-comma name @@ -1507,6 +1525,27 @@ include #type-annotation + + begin + \.\.\. + beginCaptures + + 0 + + name + keyword.operator.spread.tsx + + + end + (?=\}|;|,|$)|(?<=\}) + patterns + + + include + #type + + + include #punctuation-comma @@ -2004,7 +2043,7 @@ 2 name - keyword.operator.spread.tsx + keyword.operator.rest.tsx 3 @@ -2131,16 +2170,16 @@ - name - variable.parameter.tsx - match - ([_$[:alpha:]][_$[:alnum:]]*) + include + #parameter-object-binding-pattern - name - meta.delimiter.object.comma.tsx - match - , + include + #destructuring-parameter-rest + + + include + #punctuation-comma @@ -2160,27 +2199,46 @@ include #parameter-array-binding-pattern + + include + #destructuring-parameter-rest + + + include + #punctuation-comma + + + + destructuring-parameter-rest + + match + (?:(\.\.\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*) + captures + + 1 name - variable.parameter.tsx - match - ([_$[:alpha:]][_$[:alnum:]]*) + keyword.operator.rest.tsx + 2 name - meta.delimiter.object.comma.tsx - match - , + variable.parameter.tsx - + parameter-object-binding-pattern begin - \{ + (?:(\.\.\.)\s*)?(\{) beginCaptures - 0 + 1 + + name + keyword.operator.rest.tsx + + 2 name punctuation.definition.binding-pattern.object.tsx @@ -2207,10 +2265,15 @@ parameter-array-binding-pattern begin - \[ + (?:(\.\.\.)\s*)?(\[) beginCaptures - 0 + 1 + + name + keyword.operator.rest.tsx + + 2 name punctuation.definition.binding-pattern.array.tsx @@ -2358,10 +2421,6 @@ include #type-builtin-literals - - include - #typeof-operator - include #type-parameters @@ -2376,7 +2435,7 @@ include - #type-operator + #type-operators include @@ -2577,12 +2636,21 @@ - type-operator + type-operators - name - keyword.operator.type.tsx - match - [&|] + patterns + + + include + #typeof-operator + + + name + keyword.operator.type.tsx + match + [&|] + + type-function-return-type @@ -3722,6 +3790,29 @@ + + name + meta.object.member.tsx + begin + \.\.\. + beginCaptures + + 0 + + name + keyword.operator.spread.tsx + + + end + (?=,|\}) + patterns + + + include + #expression + + + name meta.object.member.tsx @@ -3742,7 +3833,7 @@ - expression-operator + expression-operators patterns @@ -3813,19 +3904,12 @@ - - - typeof-operator - - name - keyword.operator.typeof.tsx - match - (?<!\.|\$)\btypeof\b(?!\$) - - operators - - patterns - + + name + keyword.operator.spread.tsx + match + \.\.\. + name keyword.operator.assignment.compound.tsx @@ -3888,6 +3972,13 @@ + typeof-operator + + name + keyword.operator.typeof.tsx + match + (?<!\.|\$)\btypeof\b(?!\$) + arrow-function patterns diff --git a/tests/baselines/Issue143.baseline.txt b/tests/baselines/Issue143.baseline.txt index c5d67d05..4bdbbf16 100644 --- a/tests/baselines/Issue143.baseline.txt +++ b/tests/baselines/Issue143.baseline.txt @@ -31,13 +31,13 @@ Grammar: TypeScript.tmLanguage ^^^^^^^^^ source.ts meta.import.ts meta.block.ts variable.other.readwrite.alias.ts ^ - source.ts meta.import.ts meta.block.ts meta.delimiter.object.comma.ts + source.ts meta.import.ts meta.block.ts punctuation.separator.comma.ts ^ source.ts meta.import.ts meta.block.ts ^^^^^^^^^^^^ source.ts meta.import.ts meta.block.ts variable.other.readwrite.alias.ts ^ - source.ts meta.import.ts meta.block.ts meta.delimiter.object.comma.ts + source.ts meta.import.ts meta.block.ts punctuation.separator.comma.ts ^ source.ts meta.import.ts meta.block.ts ^^^^^^^^^ diff --git a/tests/baselines/Issue153.baseline.txt b/tests/baselines/Issue153.baseline.txt index 0fad4fa3..eccb70af 100644 --- a/tests/baselines/Issue153.baseline.txt +++ b/tests/baselines/Issue153.baseline.txt @@ -71,7 +71,7 @@ Grammar: TypeScript.tmLanguage ^^^^^^^ source.ts meta.import.ts meta.block.ts variable.other.readwrite.alias.ts ^ - source.ts meta.import.ts meta.block.ts meta.delimiter.object.comma.ts + source.ts meta.import.ts meta.block.ts punctuation.separator.comma.ts ^ source.ts meta.import.ts meta.block.ts ^^^^^^ diff --git a/tests/baselines/Issue219.baseline.txt b/tests/baselines/Issue219.baseline.txt index 177e6dbe..60adc98d 100644 --- a/tests/baselines/Issue219.baseline.txt +++ b/tests/baselines/Issue219.baseline.txt @@ -25,7 +25,7 @@ Grammar: TypeScript.tmLanguage ^^^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts variable.other.readwrite.ts ^ - source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.delimiter.object.comma.ts + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.separator.comma.ts ^^^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts > coordinate diff --git a/tests/baselines/Issue232.baseline.txt b/tests/baselines/Issue232.baseline.txt index 3e82771b..d6beb602 100644 --- a/tests/baselines/Issue232.baseline.txt +++ b/tests/baselines/Issue232.baseline.txt @@ -23,7 +23,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts variable.other.readwrite.ts ^ - source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.delimiter.object.comma.ts + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts punctuation.separator.comma.ts ^ source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts ^^^^^^^^^ diff --git a/tests/baselines/TsxSamples.baseline.txt b/tests/baselines/TsxSamples.baseline.txt index c4ee8ecc..61a3c6b7 100644 --- a/tests/baselines/TsxSamples.baseline.txt +++ b/tests/baselines/TsxSamples.baseline.txt @@ -572,14 +572,10 @@ Grammar: TypeScriptReact.tmLanguage source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx ^ source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.section.embedded.begin.tsx - ^ - source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.accessor.tsx - ^ - source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.accessor.tsx - ^ - source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.accessor.tsx + ^^^ + source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx keyword.operator.spread.tsx ^^^^^ - source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx variable.other.property.tsx + source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx variable.other.readwrite.tsx ^ source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.section.embedded.end.tsx ^ @@ -645,14 +641,10 @@ Grammar: TypeScriptReact.tmLanguage source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx ^ source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.section.embedded.begin.tsx - ^ - source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.accessor.tsx - ^ - source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.accessor.tsx - ^ - source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.accessor.tsx + ^^^ + source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx keyword.operator.spread.tsx ^^^^^ - source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx variable.other.property.tsx + source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx variable.other.readwrite.tsx ^ source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.section.embedded.end.tsx ^ diff --git a/tests/baselines/TsxSamples.txt b/tests/baselines/TsxSamples.txt index ad4ebea7..4a3f4224 100644 --- a/tests/baselines/TsxSamples.txt +++ b/tests/baselines/TsxSamples.txt @@ -194,8 +194,8 @@ Grammar: TypeScriptReact.tmLanguage [42, 17]: source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx punctuation.definition.tag.begin.tsx ^^^^^^^^^ [42, 18]: source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx entity.name.tag.tsx - ^ - [42, 29]: source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.accessor.tsx + ^^^ + [42, 29]: source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx keyword.operator.spread.tsx ^^ [42, 39]: source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx punctuation.definition.tag.end.tsx > @@ -205,8 +205,8 @@ Grammar: TypeScriptReact.tmLanguage [45, 18]: source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx punctuation.definition.tag.begin.tsx ^^^^^^^^^ [45, 19]: source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx entity.name.tag.tsx - ^ - [45, 30]: source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.accessor.tsx + ^^^ + [45, 30]: source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx meta.embedded.expression.tsx keyword.operator.spread.tsx ^^ [45, 57]: source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.tag.tsx punctuation.definition.tag.end.tsx > diff --git a/tests/baselines/exportDeclarations.baseline.txt b/tests/baselines/exportDeclarations.baseline.txt index 1a32be98..cee82f08 100644 --- a/tests/baselines/exportDeclarations.baseline.txt +++ b/tests/baselines/exportDeclarations.baseline.txt @@ -27,7 +27,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.export.ts meta.block.ts variable.other.readwrite.alias.ts ^ - source.ts meta.export.ts meta.block.ts meta.delimiter.object.comma.ts + source.ts meta.export.ts meta.block.ts punctuation.separator.comma.ts ^ source.ts meta.export.ts meta.block.ts ^ @@ -83,7 +83,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.export.ts meta.block.ts variable.other.readwrite.alias.ts ^ - source.ts meta.export.ts meta.block.ts meta.delimiter.object.comma.ts + source.ts meta.export.ts meta.block.ts punctuation.separator.comma.ts ^ source.ts meta.export.ts meta.block.ts ^ diff --git a/tests/baselines/parameterBindingPattern.baseline.txt b/tests/baselines/parameterBindingPattern.baseline.txt index abb2636e..d6d843bd 100644 --- a/tests/baselines/parameterBindingPattern.baseline.txt +++ b/tests/baselines/parameterBindingPattern.baseline.txt @@ -293,7 +293,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts variable.parameter.ts ^ - source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts meta.delimiter.object.comma.ts + source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts punctuation.separator.comma.ts ^ source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts ^ @@ -317,7 +317,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts punctuation.definition.binding-pattern.object.ts ^ - source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts meta.delimiter.object.comma.ts + source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts punctuation.separator.comma.ts ^ source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts ^ @@ -331,7 +331,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts variable.parameter.ts ^ - source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts meta.delimiter.object.comma.ts + source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts punctuation.separator.comma.ts ^ source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts ^ @@ -347,7 +347,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts punctuation.definition.binding-pattern.array.ts ^ - source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts meta.delimiter.object.comma.ts + source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts punctuation.separator.comma.ts ^ source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts ^ @@ -401,7 +401,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts variable.parameter.ts ^ - source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts meta.delimiter.object.comma.ts + source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts punctuation.separator.comma.ts ^ source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts ^ @@ -425,7 +425,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts punctuation.definition.binding-pattern.object.ts ^ - source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts meta.delimiter.object.comma.ts + source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts punctuation.separator.comma.ts ^ source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts ^ @@ -439,7 +439,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts variable.parameter.ts ^ - source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts meta.delimiter.object.comma.ts + source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts punctuation.separator.comma.ts ^ source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts ^ @@ -455,7 +455,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts punctuation.definition.binding-pattern.array.ts ^ - source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts meta.delimiter.object.comma.ts + source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts punctuation.separator.comma.ts ^ source.ts meta.function.ts meta.parameters.ts meta.parameter.object-binding-pattern.ts ^ @@ -770,7 +770,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.function.ts meta.parameters.ts meta.paramter.array-binding-pattern.ts punctuation.definition.binding-pattern.object.ts ^ - source.ts meta.function.ts meta.parameters.ts meta.paramter.array-binding-pattern.ts meta.delimiter.object.comma.ts + source.ts meta.function.ts meta.parameters.ts meta.paramter.array-binding-pattern.ts punctuation.separator.comma.ts ^ source.ts meta.function.ts meta.parameters.ts meta.paramter.array-binding-pattern.ts ^^^^^ @@ -820,7 +820,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.function.ts meta.parameters.ts meta.paramter.array-binding-pattern.ts punctuation.definition.binding-pattern.object.ts ^ - source.ts meta.function.ts meta.parameters.ts meta.paramter.array-binding-pattern.ts meta.delimiter.object.comma.ts + source.ts meta.function.ts meta.parameters.ts meta.paramter.array-binding-pattern.ts punctuation.separator.comma.ts ^ source.ts meta.function.ts meta.parameters.ts meta.paramter.array-binding-pattern.ts ^^^^^ diff --git a/tests/baselines/restAndSpreadExpression.baseline.txt b/tests/baselines/restAndSpreadExpression.baseline.txt new file mode 100644 index 00000000..c3aa7723 --- /dev/null +++ b/tests/baselines/restAndSpreadExpression.baseline.txt @@ -0,0 +1,714 @@ +original file +----------------------------------- +function foo(...rest) { +} +// rest +let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }; +[a, b, ...rest] = [1, 2, 3, 4, 5]; +var { x, ...{ y, z } } = o; +const [x, ...[y, z]] = ['a', 'b', 'c']; +// spread +let n = { x, y, ...z }; +function f(t: T, u: U): { id: string, ...T, ...U } { + return { id: 'id', ...t, ...u }; +} +function myFunction(v, w, x, y, z) { } +var args = [0, 1]; +myFunction(-1, ...args, 2, ...[3]); +var parts = ['shoulders', 'knees']; +var lyrics = ['head', ...parts, 'and', 'toes']; +----------------------------------- + +Grammar: TypeScript.tmLanguage +----------------------------------- +>function foo(...rest) { + ^^^^^^^^ + source.ts meta.function.ts storage.type.function.ts + ^ + source.ts meta.function.ts + ^^^ + source.ts meta.function.ts entity.name.function.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts + ^^^ + source.ts meta.function.ts meta.parameters.ts keyword.operator.rest.ts + ^^^^ + source.ts meta.function.ts meta.parameters.ts variable.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts + ^ + source.ts meta.function.ts + ^ + source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts + ^^ + source.ts meta.function.ts meta.block.ts +>} + ^ + source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts + ^^ + source.ts +>// rest + ^^ + source.ts comment.line.double-slash.ts punctuation.definition.comment.ts + ^^^^^^ + source.ts comment.line.double-slash.ts +>let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }; + ^^^ + source.ts meta.var.expr.ts storage.type.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.definition.binding-pattern.object.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts + ^^^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts keyword.operator.rest.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.definition.binding-pattern.object.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts keyword.operator.assignment.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts punctuation.definition.block.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts meta.object-literal.key.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts constant.numeric.decimal.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts meta.object-literal.key.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts constant.numeric.decimal.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts meta.object-literal.key.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts constant.numeric.decimal.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts meta.object-literal.key.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts constant.numeric.decimal.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts meta.object.member.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.object-literal.ts punctuation.definition.block.ts + ^ + source.ts punctuation.terminator.statement.ts + ^^ + source.ts +>[a, b, ...rest] = [1, 2, 3, 4, 5]; + ^ + source.ts meta.array.literal.ts meta.brace.square.ts + ^ + source.ts meta.array.literal.ts variable.other.readwrite.ts + ^ + source.ts meta.array.literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.array.literal.ts + ^ + source.ts meta.array.literal.ts variable.other.readwrite.ts + ^ + source.ts meta.array.literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.array.literal.ts + ^^^ + source.ts meta.array.literal.ts keyword.operator.spread.ts + ^^^^ + source.ts meta.array.literal.ts variable.other.readwrite.ts + ^ + source.ts meta.array.literal.ts meta.brace.square.ts + ^ + source.ts + ^ + source.ts keyword.operator.assignment.ts + ^ + source.ts + ^ + source.ts meta.array.literal.ts meta.brace.square.ts + ^ + source.ts meta.array.literal.ts constant.numeric.decimal.ts + ^ + source.ts meta.array.literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.array.literal.ts + ^ + source.ts meta.array.literal.ts constant.numeric.decimal.ts + ^ + source.ts meta.array.literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.array.literal.ts + ^ + source.ts meta.array.literal.ts constant.numeric.decimal.ts + ^ + source.ts meta.array.literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.array.literal.ts + ^ + source.ts meta.array.literal.ts constant.numeric.decimal.ts + ^ + source.ts meta.array.literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.array.literal.ts + ^ + source.ts meta.array.literal.ts constant.numeric.decimal.ts + ^ + source.ts meta.array.literal.ts meta.brace.square.ts + ^ + source.ts punctuation.terminator.statement.ts + ^^ + source.ts +>var { x, ...{ y, z } } = o; + ^^^ + source.ts meta.var.expr.ts storage.type.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.definition.binding-pattern.object.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts + ^^^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts keyword.operator.rest.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.definition.binding-pattern.object.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.definition.binding-pattern.object.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.definition.binding-pattern.object.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts keyword.operator.assignment.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts variable.other.readwrite.ts + ^ + source.ts punctuation.terminator.statement.ts + ^^ + source.ts +>const [x, ...[y, z]] = ['a', 'b', 'c']; + ^^^^^ + source.ts meta.var.expr.ts storage.type.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts punctuation.definition.binding-pattern.array.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts + ^^^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts keyword.operator.rest.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts punctuation.definition.binding-pattern.array.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts punctuation.definition.binding-pattern.array.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts punctuation.definition.binding-pattern.array.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts keyword.operator.assignment.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.array.literal.ts meta.brace.square.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.array.literal.ts string.quoted.single.ts punctuation.definition.string.begin.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.array.literal.ts string.quoted.single.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.array.literal.ts string.quoted.single.ts punctuation.definition.string.end.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.array.literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.array.literal.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.array.literal.ts string.quoted.single.ts punctuation.definition.string.begin.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.array.literal.ts string.quoted.single.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.array.literal.ts string.quoted.single.ts punctuation.definition.string.end.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.array.literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.array.literal.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.array.literal.ts string.quoted.single.ts punctuation.definition.string.begin.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.array.literal.ts string.quoted.single.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.array.literal.ts string.quoted.single.ts punctuation.definition.string.end.ts + ^ + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.array.literal.ts meta.brace.square.ts + ^ + source.ts punctuation.terminator.statement.ts + ^^ + source.ts +>// spread + ^^ + source.ts comment.line.double-slash.ts punctuation.definition.comment.ts + ^^^^^^^^ + source.ts comment.line.double-slash.ts +>let n = { x, y, ...z }; + ^^^ + source.ts meta.var.expr.ts storage.type.ts + ^ + source.ts meta.var.expr.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts keyword.operator.assignment.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.object-literal.ts punctuation.definition.block.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.object-literal.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.object-literal.ts meta.object.member.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.object-literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.object-literal.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.object-literal.ts meta.object.member.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.object-literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.object-literal.ts + ^^^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.object-literal.ts meta.object.member.ts keyword.operator.spread.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.object-literal.ts meta.object.member.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.object-literal.ts meta.object.member.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.object-literal.ts punctuation.definition.block.ts + ^ + source.ts punctuation.terminator.statement.ts + ^^ + source.ts +>function f(t: T, u: U): { id: string, ...T, ...U } { + ^^^^^^^^ + source.ts meta.function.ts storage.type.function.ts + ^ + source.ts meta.function.ts + ^ + source.ts meta.function.ts entity.name.function.ts + ^ + source.ts meta.function.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts + ^ + source.ts meta.function.ts meta.type.parameters.ts entity.name.type.ts + ^ + source.ts meta.function.ts meta.type.parameters.ts punctuation.separator.comma.ts + ^ + source.ts meta.function.ts meta.type.parameters.ts + ^ + source.ts meta.function.ts meta.type.parameters.ts entity.name.type.ts + ^ + source.ts meta.function.ts meta.type.parameters.ts punctuation.definition.typeparameters.end.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts + ^ + source.ts meta.function.ts meta.parameters.ts variable.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts entity.name.type.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.separator.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts + ^ + source.ts meta.function.ts meta.parameters.ts variable.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts entity.name.type.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts + ^ + source.ts meta.function.ts meta.return.type.ts keyword.operator.type.annotation.ts + ^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts + ^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts punctuation.definition.block.ts + ^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts meta.field.declaration.ts + ^^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts meta.field.declaration.ts variable.object.property.ts + ^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts meta.field.declaration.ts meta.type.annotation.ts keyword.operator.type.annotation.ts + ^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts meta.field.declaration.ts meta.type.annotation.ts + ^^^^^^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts meta.field.declaration.ts meta.type.annotation.ts support.type.primitive.ts + ^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts punctuation.separator.comma.ts + ^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts + ^^^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts keyword.operator.spread.ts + ^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts entity.name.type.ts + ^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts punctuation.separator.comma.ts + ^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts + ^^^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts keyword.operator.spread.ts + ^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts entity.name.type.ts + ^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts + ^ + source.ts meta.function.ts meta.return.type.ts meta.object.type.ts punctuation.definition.block.ts + ^ + source.ts meta.function.ts meta.return.type.ts + ^ + source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts + ^^ + source.ts meta.function.ts meta.block.ts +> return { id: 'id', ...t, ...u }; + ^^^^ + source.ts meta.function.ts meta.block.ts + ^^^^^^ + source.ts meta.function.ts meta.block.ts keyword.control.flow.ts + ^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts + ^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts punctuation.definition.block.ts + ^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts + ^^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts meta.object.member.ts meta.object-literal.key.ts + ^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts + ^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts meta.object.member.ts + ^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts meta.object.member.ts string.quoted.single.ts punctuation.definition.string.begin.ts + ^^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts meta.object.member.ts string.quoted.single.ts + ^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts meta.object.member.ts string.quoted.single.ts punctuation.definition.string.end.ts + ^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts + ^^^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts meta.object.member.ts keyword.operator.spread.ts + ^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts meta.object.member.ts variable.other.readwrite.ts + ^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts + ^^^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts meta.object.member.ts keyword.operator.spread.ts + ^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts meta.object.member.ts variable.other.readwrite.ts + ^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts meta.object.member.ts + ^ + source.ts meta.function.ts meta.block.ts meta.object-literal.ts punctuation.definition.block.ts + ^ + source.ts meta.function.ts meta.block.ts punctuation.terminator.statement.ts + ^^ + source.ts meta.function.ts meta.block.ts +>} + ^ + source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts + ^^ + source.ts +>function myFunction(v, w, x, y, z) { } + ^^^^^^^^ + source.ts meta.function.ts storage.type.function.ts + ^ + source.ts meta.function.ts + ^^^^^^^^^^ + source.ts meta.function.ts entity.name.function.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts + ^ + source.ts meta.function.ts meta.parameters.ts variable.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.separator.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts + ^ + source.ts meta.function.ts meta.parameters.ts variable.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.separator.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts + ^ + source.ts meta.function.ts meta.parameters.ts variable.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.separator.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts + ^ + source.ts meta.function.ts meta.parameters.ts variable.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.separator.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts + ^ + source.ts meta.function.ts meta.parameters.ts variable.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts + ^ + source.ts meta.function.ts + ^ + source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.function.ts meta.block.ts + ^ + source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts + ^^ + source.ts +>var args = [0, 1]; + ^^^ + source.ts meta.var.expr.ts storage.type.ts + ^ + source.ts meta.var.expr.ts + ^^^^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts keyword.operator.assignment.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts meta.brace.square.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts constant.numeric.decimal.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts constant.numeric.decimal.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts meta.brace.square.ts + ^ + source.ts punctuation.terminator.statement.ts + ^^ + source.ts +>myFunction(-1, ...args, 2, ...[3]); + ^^^^^^^^^^ + source.ts entity.name.function.ts + ^ + source.ts meta.brace.round.ts + ^ + source.ts keyword.operator.arithmetic.ts + ^ + source.ts constant.numeric.decimal.ts + ^ + source.ts punctuation.separator.comma.ts + ^ + source.ts + ^^^ + source.ts keyword.operator.spread.ts + ^^^^ + source.ts variable.other.readwrite.ts + ^ + source.ts punctuation.separator.comma.ts + ^ + source.ts + ^ + source.ts constant.numeric.decimal.ts + ^ + source.ts punctuation.separator.comma.ts + ^ + source.ts + ^^^ + source.ts keyword.operator.spread.ts + ^ + source.ts meta.array.literal.ts meta.brace.square.ts + ^ + source.ts meta.array.literal.ts constant.numeric.decimal.ts + ^ + source.ts meta.array.literal.ts meta.brace.square.ts + ^ + source.ts meta.brace.round.ts + ^ + source.ts punctuation.terminator.statement.ts + ^^ + source.ts +>var parts = ['shoulders', 'knees']; + ^^^ + source.ts meta.var.expr.ts storage.type.ts + ^ + source.ts meta.var.expr.ts + ^^^^^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts keyword.operator.assignment.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts meta.brace.square.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts string.quoted.single.ts punctuation.definition.string.begin.ts + ^^^^^^^^^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts string.quoted.single.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts string.quoted.single.ts punctuation.definition.string.end.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts string.quoted.single.ts punctuation.definition.string.begin.ts + ^^^^^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts string.quoted.single.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts string.quoted.single.ts punctuation.definition.string.end.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts meta.brace.square.ts + ^ + source.ts punctuation.terminator.statement.ts + ^^ + source.ts +>var lyrics = ['head', ...parts, 'and', 'toes']; + ^^^ + source.ts meta.var.expr.ts storage.type.ts + ^ + source.ts meta.var.expr.ts + ^^^^^^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts keyword.operator.assignment.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts meta.brace.square.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts string.quoted.single.ts punctuation.definition.string.begin.ts + ^^^^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts string.quoted.single.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts string.quoted.single.ts punctuation.definition.string.end.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts + ^^^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts keyword.operator.spread.ts + ^^^^^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts variable.other.readwrite.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts string.quoted.single.ts punctuation.definition.string.begin.ts + ^^^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts string.quoted.single.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts string.quoted.single.ts punctuation.definition.string.end.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts string.quoted.single.ts punctuation.definition.string.begin.ts + ^^^^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts string.quoted.single.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts string.quoted.single.ts punctuation.definition.string.end.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.array.literal.ts meta.brace.square.ts + ^ + source.ts punctuation.terminator.statement.ts \ No newline at end of file diff --git a/tests/baselines/variableBindingPattern.baseline.txt b/tests/baselines/variableBindingPattern.baseline.txt index 7db69370..20904639 100644 --- a/tests/baselines/variableBindingPattern.baseline.txt +++ b/tests/baselines/variableBindingPattern.baseline.txt @@ -285,7 +285,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts variable.other.readwrite.ts ^ - source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.delimiter.object.comma.ts + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.separator.comma.ts ^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts ^ @@ -309,7 +309,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.definition.binding-pattern.object.ts ^ - source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.delimiter.object.comma.ts + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.separator.comma.ts ^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts ^ @@ -323,7 +323,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts variable.other.readwrite.ts ^ - source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.delimiter.object.comma.ts + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.separator.comma.ts ^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts ^ @@ -339,7 +339,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.definition.binding-pattern.array.ts ^ - source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.delimiter.object.comma.ts + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.separator.comma.ts ^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts ^ @@ -380,7 +380,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts variable.other.readwrite.ts ^ - source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.delimiter.object.comma.ts + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.separator.comma.ts ^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts ^ @@ -404,7 +404,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.definition.binding-pattern.object.ts ^ - source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.delimiter.object.comma.ts + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.separator.comma.ts ^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts ^ @@ -418,7 +418,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts variable.other.readwrite.ts ^ - source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.delimiter.object.comma.ts + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.separator.comma.ts ^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts ^ @@ -434,7 +434,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.definition.binding-pattern.array.ts ^ - source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts meta.delimiter.object.comma.ts + source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts punctuation.separator.comma.ts ^ source.ts meta.var.expr.ts meta.object-binding-pattern-variable.ts ^ @@ -736,7 +736,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts punctuation.definition.binding-pattern.object.ts ^ - source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.delimiter.object.comma.ts + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts punctuation.separator.comma.ts ^ source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts ^^^^^ @@ -773,7 +773,7 @@ Grammar: TypeScript.tmLanguage ^ source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts punctuation.definition.binding-pattern.object.ts ^ - source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts meta.delimiter.object.comma.ts + source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts punctuation.separator.comma.ts ^ source.ts meta.var.expr.ts meta.array-binding-pattern-variable.ts ^^^^^ diff --git a/tests/cases/restAndSpreadExpression.ts b/tests/cases/restAndSpreadExpression.ts new file mode 100644 index 00000000..520c99e3 --- /dev/null +++ b/tests/cases/restAndSpreadExpression.ts @@ -0,0 +1,17 @@ +function foo(...rest) { +} +// rest +let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }; +[a, b, ...rest] = [1, 2, 3, 4, 5]; +var { x, ...{ y, z } } = o; +const [x, ...[y, z]] = ['a', 'b', 'c']; +// spread +let n = { x, y, ...z }; +function f(t: T, u: U): { id: string, ...T, ...U } { + return { id: 'id', ...t, ...u }; +} +function myFunction(v, w, x, y, z) { } +var args = [0, 1]; +myFunction(-1, ...args, 2, ...[3]); +var parts = ['shoulders', 'knees']; +var lyrics = ['head', ...parts, 'and', 'toes']; \ No newline at end of file