@@ -56,6 +56,8 @@ repository:
5656 (function\s*[(<]) |
5757 (function\s+) |
5858 ([_$[:alpha:]][_$[:alnum:]]*\s*=>) |
59+ ([(]\s*(([)]\s*:)|([_$[:alpha:]][_$[:alnum:]]*\s*:)|(\.\.\.) )) |
60+ ([<]\s*[_$[:alpha:]][_$[:alnum:]]*((\s+extends\s*[^=>])|(\s*[,]))) |
5961 ((<([^<>]|\<[^<>]+\>)+>\s*)?\(([^()]|\([^()]*\))*\)(\s*:\s*(.)*)?\s*=>))
6062 ) |
6163 (:\s*(
@@ -544,6 +546,8 @@ repository:
544546 (function\s*[(<]) |
545547 (function\s+) |
546548 ([_$[:alpha:]][_$[:alnum:]]*\s*=>) |
549+ ([(]\s*(([)]\s*:)|([_$[:alpha:]][_$[:alnum:]]*\s*:)|(\.\.\.) )) |
550+ ([<]\s*[_$[:alpha:]][_$[:alnum:]]*((\s+extends\s*[^=>])|(\s*[,]))) |
547551 ((<([^<>]|\<[^<>]+\>)+>\s*)?\(([^()]|\([^()]*\))*\)(\s*:\s*(.)*)?\s*=>))
548552 ) |
549553 (:\s*(
@@ -725,6 +729,8 @@ repository:
725729 (function\s*[(<]) |
726730 (function\s+) |
727731 ([_$[:alpha:]][_$[:alnum:]]*\s*=>) |
732+ ([(]\s*(([)]\s*:)|([_$[:alpha:]][_$[:alnum:]]*\s*:)|(\.\.\.) )) |
733+ ([<]\s*[_$[:alpha:]][_$[:alnum:]]*((\s+extends\s*[^=>])|(\s*[,]))) |
728734 ((<([^<>]|\<[^<>]+\>)+>\s*)?\(([^()]|\([^()]*\))*\)(\s*:\s*(.)*)?\s*=>))
729735 ) |
730736 (:\s*(
@@ -1406,6 +1412,8 @@ repository:
14061412 (?x)(?:(\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\s*=\s*(
14071413 (async\s+)|(function\s*[(<])|(function\s+)|
14081414 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)|
1415+ ([(]\s*(([)]\s*:)|([_$[:alpha:]][_$[:alnum:]]*\s*:)|(\.\.\.) )) |
1416+ ([<]\s*[_$[:alpha:]][_$[:alnum:]]*((\s+extends\s*[^=>])|(\s*[,]))) |
14091417 ((<([^<>]|\<[^<>]+\>)+>\s*)?\(([^()]|\([^()]*\))*\)(\s*:\s*(.)*)?\s*=>)))
14101418 captures:
14111419 '1': { name: punctuation.accessor.ts }
@@ -1484,6 +1492,8 @@ repository:
14841492 (?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(:)(?=\s*(
14851493 (async\s+)|(function\s*[(<])|(function\s+)|
14861494 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)|
1495+ ([(]\s*(([)]\s*:)|([_$[:alpha:]][_$[:alnum:]]*\s*:)|(\.\.\.) )) |
1496+ ([<]\s*[_$[:alpha:]][_$[:alnum:]]*((\s+extends\s*[^=>])|(\s*[,]))) |
14871497 ((<([^<>]|\<[^<>]+\>)+>\s*)?\(([^()]|\([^()]*\))*\)(\s*:\s*(.)*)?\s*=>))))
14881498 beginCaptures :
14891499 ' 0 ' : { name: meta.object-literal.key.ts }
@@ -1571,18 +1581,48 @@ repository:
15711581
15721582 arrow-function :
15731583 patterns :
1574- - name : meta.arrow.ts
1575- match : (?<!\.|\$)(\basync)(?=\s*[<(])
1576- captures :
1577- ' 1 ' : { name: storage.modifier.async.ts }
1578- # paramters of the arrow
1584+ # arrow with single parameter without parenthesis
15791585 - name : meta.arrow.ts
15801586 match : (?:(?<!\.|\$)(\basync)\s*)?([_$[:alpha:]][_$[:alnum:]]*)\s*(?==>)
15811587 captures :
15821588 ' 1 ' : { name: storage.modifier.async.ts }
15831589 ' 2 ' : { name: variable.parameter.ts }
1590+ # parenthesized arrow
15841591 - name : meta.arrow.ts
1585- begin : (?x)\s*(?=(<([^<>]|\<[^<>]+\>)+>\s*)?\(([^()]|\([^()]*\))*\)(\s*:\s*(.)*)?\s*=>)
1592+ begin : >-
1593+ (?x)
1594+ (?:
1595+ (?<!\.|\$)(\basync)(?=\s*[<(])
1596+ ) |
1597+ (\s*
1598+ (?=
1599+ # sure shot arrow functions even if => is on new line
1600+ (
1601+ [(]\s*
1602+ (
1603+ ([)]\s*:) | # ():
1604+ ([_$[:alpha:]][_$[:alnum:]]*\s*:) | # [(]param:
1605+ (\.\.\.) # [(]...
1606+ )
1607+ ) |
1608+ (
1609+ [<]\s*[_$[:alpha:]][_$[:alnum:]]*
1610+ (
1611+ (\s+extends\s*[^=>]) | # < typeparam extends
1612+ (\s*[,]) # < typeparam,
1613+ )
1614+ ) |
1615+ # arrow function possible to detect only with => on same line
1616+ (
1617+ (<([^<>]|\<[^<>]+\>)+>\s*)? # typeparameters
1618+ \(([^()]|\([^()]*\))*\) # parameteres
1619+ (\s*:\s*(.)*)? # return type
1620+ \s*=> # arrow operator
1621+ )
1622+ )
1623+ )
1624+ beginCaptures :
1625+ ' 1 ' : { name: storage.modifier.async.ts }
15861626 end : (?==>)
15871627 patterns :
15881628 - include : ' #comment'
0 commit comments