diff --git a/TypeScript.YAML-tmLanguage b/TypeScript.YAML-tmLanguage index 801a5a61..4bb6e40f 100644 --- a/TypeScript.YAML-tmLanguage +++ b/TypeScript.YAML-tmLanguage @@ -46,6 +46,7 @@ variables: arrowLookup: |- # sure shot arrow functions even if => is on new line ( + {{typeParameters}}? [(]\s* ( ([)]\s*:) | # (): diff --git a/TypeScript.tmLanguage b/TypeScript.tmLanguage index fd675410..397d0877 100644 --- a/TypeScript.tmLanguage +++ b/TypeScript.tmLanguage @@ -425,6 +425,7 @@ ((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*$) | # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): @@ -465,6 +466,7 @@ ((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*$) | # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): @@ -842,6 +844,7 @@ ((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*$) | # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): @@ -882,6 +885,7 @@ ((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*$) | # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): @@ -1255,6 +1259,7 @@ ((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*$) | # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): @@ -1295,6 +1300,7 @@ ((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*$) | # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): @@ -1758,6 +1764,7 @@ (?= # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): @@ -3377,6 +3384,7 @@ ((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*$) | # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): @@ -4890,6 +4898,7 @@ ((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*$) | # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): diff --git a/TypeScriptReact.tmLanguage b/TypeScriptReact.tmLanguage index 209ae3da..d8600346 100644 --- a/TypeScriptReact.tmLanguage +++ b/TypeScriptReact.tmLanguage @@ -429,6 +429,7 @@ ([\(]\s*$) | # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): @@ -469,6 +470,7 @@ ([\(]\s*$) | # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): @@ -846,6 +848,7 @@ ([\(]\s*$) | # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): @@ -886,6 +889,7 @@ ([\(]\s*$) | # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): @@ -1259,6 +1263,7 @@ ([\(]\s*$) | # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): @@ -1299,6 +1304,7 @@ ([\(]\s*$) | # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): @@ -1762,6 +1768,7 @@ (?= # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): @@ -3381,6 +3388,7 @@ ([\(]\s*$) | # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): @@ -4836,6 +4844,7 @@ ([\(]\s*$) | # sure shot arrow functions even if => is on new line ( + (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? [(]\s* ( ([)]\s*:) | # (): diff --git a/tests/baselines/Issue601.baseline.txt b/tests/baselines/Issue601.baseline.txt new file mode 100644 index 00000000..cd20c683 --- /dev/null +++ b/tests/baselines/Issue601.baseline.txt @@ -0,0 +1,90 @@ +original file +----------------------------------- +const getByKind = async (): Promise[]> => { + return [] +} +----------------------------------- + +Grammar: TypeScript.tmLanguage +----------------------------------- +>const getByKind = async (): Promise[]> => { + ^^^^^ + 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 meta.definition.variable.ts entity.name.function.ts + ^ + source.ts meta.var.expr.ts meta.var-single-variable.expr.ts + ^ + source.ts meta.var.expr.ts keyword.operator.assignment.ts + ^ + source.ts meta.var.expr.ts + ^^^^^ + source.ts meta.var.expr.ts meta.arrow.ts storage.modifier.async.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.type.parameters.ts entity.name.type.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.type.parameters.ts punctuation.definition.typeparameters.end.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.definition.parameters.begin.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.definition.parameters.end.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts + ^^^^^^^ + source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts entity.name.type.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts + ^^^ + source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts meta.type.parameters.ts entity.name.type.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts meta.type.parameters.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts + ^^^^^^ + source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts meta.type.parameters.ts meta.type.parameters.ts support.type.primitive.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts meta.type.parameters.ts meta.type.parameters.ts punctuation.separator.comma.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts meta.type.parameters.ts meta.type.parameters.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts meta.type.parameters.ts meta.type.parameters.ts entity.name.type.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts meta.type.parameters.ts meta.type.parameters.ts punctuation.definition.typeparameters.end.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts meta.type.parameters.ts meta.type.tuple.ts meta.brace.square.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts meta.type.parameters.ts meta.type.tuple.ts meta.brace.square.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts meta.type.parameters.ts punctuation.definition.typeparameters.end.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts + ^^ + source.ts meta.var.expr.ts meta.arrow.ts storage.type.function.arrow.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts punctuation.definition.block.ts + ^^ + source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts +> return [] + ^^^^ + source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts + ^^^^^^ + source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts keyword.control.flow.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.array.literal.ts meta.brace.square.ts + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.array.literal.ts meta.brace.square.ts + ^^ + source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts +>} + ^ + source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts punctuation.definition.block.ts \ No newline at end of file diff --git a/tests/cases/Issue601.ts b/tests/cases/Issue601.ts new file mode 100644 index 00000000..f56d0b48 --- /dev/null +++ b/tests/cases/Issue601.ts @@ -0,0 +1,3 @@ +const getByKind = async (): Promise[]> => { + return [] +} \ No newline at end of file