Skip to content

Commit 8c967fe

Browse files
committed
Handle accessors separately so as to correctly tokenize method with name 'get/set'
Fixes #458
1 parent f6cbb70 commit 8c967fe

File tree

5 files changed

+391
-151
lines changed

5 files changed

+391
-151
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -586,24 +586,40 @@ repository:
586586
match: \?
587587

588588
method-declaration:
589-
name: meta.method.declaration.ts
590-
begin: (?<!\.|\$)(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(?:\b(?:(new)|(constructor))\b(?!\$|\.|:))|(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))?\s*[\(\<]))
591-
beginCaptures:
592-
'1': { name: storage.modifier.ts } # captures keyword (public or private or protected)
593-
'2': { name: storage.modifier.ts } # captures keyword (abstract)
594-
'3': { name: storage.modifier.async.ts } # captures keyword (async)
595-
'4': { name: storage.type.property.ts } # captures keyword (get|set)
596-
'5': { name: keyword.operator.new.ts } # captures keyword (new)
597-
'6': { name: storage.type.ts } # captures keyword (constructor)
598-
'7': { name: keyword.generator.asterisk.ts } # captures keyword (*)
599-
end: (?=\}|;|,|$)|(?<=\})
600589
patterns:
601-
- include: '#method-declaration-name'
602-
- include: '#comment'
603-
- include: '#type-parameters'
604-
- include: '#function-parameters'
605-
- include: '#return-type'
606-
- include: '#decl-block'
590+
- name: meta.method.declaration.ts
591+
begin: (?<!\.|\$)(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*[\(\<])
592+
beginCaptures:
593+
'1': { name: storage.modifier.ts } # captures keyword (public or private or protected)
594+
'2': { name: storage.modifier.ts } # captures keyword (abstract)
595+
'3': { name: storage.modifier.async.ts } # captures keyword (async)
596+
'4': { name: storage.type.property.ts } # captures keyword (get|set)
597+
'5': { name: keyword.generator.asterisk.ts } # captures keyword (*)
598+
end: (?=\}|;|,|$)|(?<=\})
599+
patterns:
600+
- include: '#method-declaration-name'
601+
- include: '#comment'
602+
- include: '#type-parameters'
603+
- include: '#function-parameters'
604+
- include: '#return-type'
605+
- include: '#decl-block'
606+
- name: meta.method.declaration.ts
607+
begin: (?<!\.|\$)(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:(?:\b(?:(new)|(constructor))\b(?!\$|\.|:))|(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))?\s*[\(\<]))
608+
beginCaptures:
609+
'1': { name: storage.modifier.ts } # captures keyword (public or private or protected)
610+
'2': { name: storage.modifier.ts } # captures keyword (abstract)
611+
'3': { name: storage.modifier.async.ts } # captures keyword (async)
612+
'4': { name: keyword.operator.new.ts } # captures keyword (new)
613+
'5': { name: storage.type.ts } # captures keyword (constructor)
614+
'6': { name: keyword.generator.asterisk.ts } # captures keyword (*)
615+
end: (?=\}|;|,|$)|(?<=\})
616+
patterns:
617+
- include: '#method-declaration-name'
618+
- include: '#comment'
619+
- include: '#type-parameters'
620+
- include: '#function-parameters'
621+
- include: '#return-type'
622+
- include: '#decl-block'
607623

608624
method-declaration-name:
609625
begin: (?=(([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??)\s*[\(\<])
@@ -618,7 +634,7 @@ repository:
618634

619635
object-literal-method-declaration:
620636
name: meta.method.declaration.ts
621-
begin: (?<!\.|\$)(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))?\s*[\(\<])
637+
begin: (?<!\.|\$)(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*[\(\<])
622638
beginCaptures:
623639
'1': { name: storage.modifier.async.ts } # captures keyword (async)
624640
'2': { name: storage.type.property.ts } # captures keyword (get|set)
@@ -634,7 +650,7 @@ repository:
634650
- include: '#decl-block'
635651

636652
object-literal-method-overload-declaration:
637-
begin: (?<!\.|\$)(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))?\s*[\(\<])
653+
begin: (?<!\.|\$)(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*[\(\<])
638654
beginCaptures:
639655
'1': { name: storage.modifier.async.ts } # captures keyword (async)
640656
'2': { name: storage.type.property.ts } # captures keyword (get|set)

TypeScript.tmLanguage

Lines changed: 129 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1803,75 +1803,138 @@
18031803
</dict>
18041804
<key>method-declaration</key>
18051805
<dict>
1806-
<key>name</key>
1807-
<string>meta.method.declaration.ts</string>
1808-
<key>begin</key>
1809-
<string>(?&lt;!\.|\$)(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(?:\b(?:(new)|(constructor))\b(?!\$|\.|:))|(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))?\s*[\(\&lt;]))</string>
1810-
<key>beginCaptures</key>
1811-
<dict>
1812-
<key>1</key>
1813-
<dict>
1814-
<key>name</key>
1815-
<string>storage.modifier.ts</string>
1816-
</dict>
1817-
<key>2</key>
1818-
<dict>
1819-
<key>name</key>
1820-
<string>storage.modifier.ts</string>
1821-
</dict>
1822-
<key>3</key>
1823-
<dict>
1824-
<key>name</key>
1825-
<string>storage.modifier.async.ts</string>
1826-
</dict>
1827-
<key>4</key>
1828-
<dict>
1829-
<key>name</key>
1830-
<string>storage.type.property.ts</string>
1831-
</dict>
1832-
<key>5</key>
1833-
<dict>
1834-
<key>name</key>
1835-
<string>keyword.operator.new.ts</string>
1836-
</dict>
1837-
<key>6</key>
1838-
<dict>
1839-
<key>name</key>
1840-
<string>storage.type.ts</string>
1841-
</dict>
1842-
<key>7</key>
1843-
<dict>
1844-
<key>name</key>
1845-
<string>keyword.generator.asterisk.ts</string>
1846-
</dict>
1847-
</dict>
1848-
<key>end</key>
1849-
<string>(?=\}|;|,|$)|(?&lt;=\})</string>
18501806
<key>patterns</key>
18511807
<array>
18521808
<dict>
1853-
<key>include</key>
1854-
<string>#method-declaration-name</string>
1855-
</dict>
1856-
<dict>
1857-
<key>include</key>
1858-
<string>#comment</string>
1859-
</dict>
1860-
<dict>
1861-
<key>include</key>
1862-
<string>#type-parameters</string>
1863-
</dict>
1864-
<dict>
1865-
<key>include</key>
1866-
<string>#function-parameters</string>
1867-
</dict>
1868-
<dict>
1869-
<key>include</key>
1870-
<string>#return-type</string>
1809+
<key>name</key>
1810+
<string>meta.method.declaration.ts</string>
1811+
<key>begin</key>
1812+
<string>(?&lt;!\.|\$)(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*[\(\&lt;])</string>
1813+
<key>beginCaptures</key>
1814+
<dict>
1815+
<key>1</key>
1816+
<dict>
1817+
<key>name</key>
1818+
<string>storage.modifier.ts</string>
1819+
</dict>
1820+
<key>2</key>
1821+
<dict>
1822+
<key>name</key>
1823+
<string>storage.modifier.ts</string>
1824+
</dict>
1825+
<key>3</key>
1826+
<dict>
1827+
<key>name</key>
1828+
<string>storage.modifier.async.ts</string>
1829+
</dict>
1830+
<key>4</key>
1831+
<dict>
1832+
<key>name</key>
1833+
<string>storage.type.property.ts</string>
1834+
</dict>
1835+
<key>5</key>
1836+
<dict>
1837+
<key>name</key>
1838+
<string>keyword.generator.asterisk.ts</string>
1839+
</dict>
1840+
</dict>
1841+
<key>end</key>
1842+
<string>(?=\}|;|,|$)|(?&lt;=\})</string>
1843+
<key>patterns</key>
1844+
<array>
1845+
<dict>
1846+
<key>include</key>
1847+
<string>#method-declaration-name</string>
1848+
</dict>
1849+
<dict>
1850+
<key>include</key>
1851+
<string>#comment</string>
1852+
</dict>
1853+
<dict>
1854+
<key>include</key>
1855+
<string>#type-parameters</string>
1856+
</dict>
1857+
<dict>
1858+
<key>include</key>
1859+
<string>#function-parameters</string>
1860+
</dict>
1861+
<dict>
1862+
<key>include</key>
1863+
<string>#return-type</string>
1864+
</dict>
1865+
<dict>
1866+
<key>include</key>
1867+
<string>#decl-block</string>
1868+
</dict>
1869+
</array>
18711870
</dict>
18721871
<dict>
1873-
<key>include</key>
1874-
<string>#decl-block</string>
1872+
<key>name</key>
1873+
<string>meta.method.declaration.ts</string>
1874+
<key>begin</key>
1875+
<string>(?&lt;!\.|\$)(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:(?:\b(?:(new)|(constructor))\b(?!\$|\.|:))|(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))?\s*[\(\&lt;]))</string>
1876+
<key>beginCaptures</key>
1877+
<dict>
1878+
<key>1</key>
1879+
<dict>
1880+
<key>name</key>
1881+
<string>storage.modifier.ts</string>
1882+
</dict>
1883+
<key>2</key>
1884+
<dict>
1885+
<key>name</key>
1886+
<string>storage.modifier.ts</string>
1887+
</dict>
1888+
<key>3</key>
1889+
<dict>
1890+
<key>name</key>
1891+
<string>storage.modifier.async.ts</string>
1892+
</dict>
1893+
<key>4</key>
1894+
<dict>
1895+
<key>name</key>
1896+
<string>keyword.operator.new.ts</string>
1897+
</dict>
1898+
<key>5</key>
1899+
<dict>
1900+
<key>name</key>
1901+
<string>storage.type.ts</string>
1902+
</dict>
1903+
<key>6</key>
1904+
<dict>
1905+
<key>name</key>
1906+
<string>keyword.generator.asterisk.ts</string>
1907+
</dict>
1908+
</dict>
1909+
<key>end</key>
1910+
<string>(?=\}|;|,|$)|(?&lt;=\})</string>
1911+
<key>patterns</key>
1912+
<array>
1913+
<dict>
1914+
<key>include</key>
1915+
<string>#method-declaration-name</string>
1916+
</dict>
1917+
<dict>
1918+
<key>include</key>
1919+
<string>#comment</string>
1920+
</dict>
1921+
<dict>
1922+
<key>include</key>
1923+
<string>#type-parameters</string>
1924+
</dict>
1925+
<dict>
1926+
<key>include</key>
1927+
<string>#function-parameters</string>
1928+
</dict>
1929+
<dict>
1930+
<key>include</key>
1931+
<string>#return-type</string>
1932+
</dict>
1933+
<dict>
1934+
<key>include</key>
1935+
<string>#decl-block</string>
1936+
</dict>
1937+
</array>
18751938
</dict>
18761939
</array>
18771940
</dict>
@@ -1910,7 +1973,7 @@
19101973
<key>name</key>
19111974
<string>meta.method.declaration.ts</string>
19121975
<key>begin</key>
1913-
<string>(?&lt;!\.|\$)(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))?\s*[\(\&lt;])</string>
1976+
<string>(?&lt;!\.|\$)(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*[\(\&lt;])</string>
19141977
<key>beginCaptures</key>
19151978
<dict>
19161979
<key>1</key>
@@ -1966,7 +2029,7 @@
19662029
<key>object-literal-method-overload-declaration</key>
19672030
<dict>
19682031
<key>begin</key>
1969-
<string>(?&lt;!\.|\$)(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))?\s*[\(\&lt;])</string>
2032+
<string>(?&lt;!\.|\$)(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*[\(\&lt;])</string>
19702033
<key>beginCaptures</key>
19712034
<dict>
19722035
<key>1</key>

0 commit comments

Comments
 (0)