Skip to content

Commit 1e6da30

Browse files
committed
Pull out object literal method separately so that constructor and new syntax doesnt play into it.
Fixes #361
1 parent ea59fd1 commit 1e6da30

File tree

5 files changed

+275
-4
lines changed

5 files changed

+275
-4
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,34 @@ repository:
603603
match: '[_$[:alpha:]][_$[:alnum:]]*'
604604
- name: keyword.operator.optional.ts
605605
match: \?
606-
606+
607+
object-literal-method-declaration:
608+
name: meta.method.declaration.ts
609+
begin: (?<!\.|\$)(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]+\])+\]))\s*(\??))?\s*[\(\<])
610+
beginCaptures:
611+
'1': { name: storage.modifier.async.ts } # captures keyword (async)
612+
'2': { name: storage.type.property.ts } # captures keyword (get|set)
613+
'3': { name: keyword.generator.asterisk.ts } # captures keyword (*)
614+
end: '(?=\}|;|,)|(?<=\})'
615+
patterns:
616+
- include: '#method-declaration-name'
617+
- include: '#comment'
618+
- include: '#type-parameters'
619+
- include: '#function-parameters'
620+
- include: '#return-type'
621+
- include: '#method-overload-declaration'
622+
- include: '#decl-block'
623+
624+
object-literal-method-overload-declaration:
625+
begin: (?<!\.|\$)(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]+\])+\]))\s*(\??))?\s*[\(\<])
626+
beginCaptures:
627+
'1': { name: storage.modifier.async.ts } # captures keyword (async)
628+
'2': { name: storage.type.property.ts } # captures keyword (get|set)
629+
'3': { name: keyword.generator.asterisk.ts } # captures keyword (*)
630+
end: (?=\(|\<)
631+
patterns:
632+
- include: '#method-declaration-name'
633+
607634
indexer-declaration:
608635
name: meta.indexer.declaration.ts
609636
begin: (?:(?<!\.|\$)\b(readonly)\s*)?(\[)\s*([_$[:alpha:]][_$[:alnum:]]*)\s*(?=:)
@@ -1432,7 +1459,7 @@ repository:
14321459
object-member:
14331460
patterns:
14341461
- include: '#comment'
1435-
- include: '#method-declaration'
1462+
- include: '#object-literal-method-declaration'
14361463
- name: meta.object.member.ts
14371464
begin: (?=(?:(?:\'[^']*\')|(?:\"[^"]*\")|(?:\[([^\[\]]|\[[^\[\]]+\])+\]))\s*:)
14381465
end: (?=,|\})

TypeScript.tmLanguage

Lines changed: 91 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1861,6 +1861,96 @@
18611861
</dict>
18621862
</array>
18631863
</dict>
1864+
<key>object-literal-method-declaration</key>
1865+
<dict>
1866+
<key>name</key>
1867+
<string>meta.method.declaration.ts</string>
1868+
<key>begin</key>
1869+
<string>(?&lt;!\.|\$)(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]+\])+\]))\s*(\??))?\s*[\(\&lt;])</string>
1870+
<key>beginCaptures</key>
1871+
<dict>
1872+
<key>1</key>
1873+
<dict>
1874+
<key>name</key>
1875+
<string>storage.modifier.async.ts</string>
1876+
</dict>
1877+
<key>2</key>
1878+
<dict>
1879+
<key>name</key>
1880+
<string>storage.type.property.ts</string>
1881+
</dict>
1882+
<key>3</key>
1883+
<dict>
1884+
<key>name</key>
1885+
<string>keyword.generator.asterisk.ts</string>
1886+
</dict>
1887+
</dict>
1888+
<key>end</key>
1889+
<string>(?=\}|;|,)|(?&lt;=\})</string>
1890+
<key>patterns</key>
1891+
<array>
1892+
<dict>
1893+
<key>include</key>
1894+
<string>#method-declaration-name</string>
1895+
</dict>
1896+
<dict>
1897+
<key>include</key>
1898+
<string>#comment</string>
1899+
</dict>
1900+
<dict>
1901+
<key>include</key>
1902+
<string>#type-parameters</string>
1903+
</dict>
1904+
<dict>
1905+
<key>include</key>
1906+
<string>#function-parameters</string>
1907+
</dict>
1908+
<dict>
1909+
<key>include</key>
1910+
<string>#return-type</string>
1911+
</dict>
1912+
<dict>
1913+
<key>include</key>
1914+
<string>#method-overload-declaration</string>
1915+
</dict>
1916+
<dict>
1917+
<key>include</key>
1918+
<string>#decl-block</string>
1919+
</dict>
1920+
</array>
1921+
</dict>
1922+
<key>object-literal-method-overload-declaration</key>
1923+
<dict>
1924+
<key>begin</key>
1925+
<string>(?&lt;!\.|\$)(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]+\])+\]))\s*(\??))?\s*[\(\&lt;])</string>
1926+
<key>beginCaptures</key>
1927+
<dict>
1928+
<key>1</key>
1929+
<dict>
1930+
<key>name</key>
1931+
<string>storage.modifier.async.ts</string>
1932+
</dict>
1933+
<key>2</key>
1934+
<dict>
1935+
<key>name</key>
1936+
<string>storage.type.property.ts</string>
1937+
</dict>
1938+
<key>3</key>
1939+
<dict>
1940+
<key>name</key>
1941+
<string>keyword.generator.asterisk.ts</string>
1942+
</dict>
1943+
</dict>
1944+
<key>end</key>
1945+
<string>(?=\(|\&lt;)</string>
1946+
<key>patterns</key>
1947+
<array>
1948+
<dict>
1949+
<key>include</key>
1950+
<string>#method-declaration-name</string>
1951+
</dict>
1952+
</array>
1953+
</dict>
18641954
<key>indexer-declaration</key>
18651955
<dict>
18661956
<key>name</key>
@@ -3889,7 +3979,7 @@
38893979
</dict>
38903980
<dict>
38913981
<key>include</key>
3892-
<string>#method-declaration</string>
3982+
<string>#object-literal-method-declaration</string>
38933983
</dict>
38943984
<dict>
38953985
<key>name</key>

TypeScriptReact.tmLanguage

Lines changed: 91 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1865,6 +1865,96 @@
18651865
</dict>
18661866
</array>
18671867
</dict>
1868+
<key>object-literal-method-declaration</key>
1869+
<dict>
1870+
<key>name</key>
1871+
<string>meta.method.declaration.tsx</string>
1872+
<key>begin</key>
1873+
<string>(?&lt;!\.|\$)(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]+\])+\]))\s*(\??))?\s*[\(\&lt;])</string>
1874+
<key>beginCaptures</key>
1875+
<dict>
1876+
<key>1</key>
1877+
<dict>
1878+
<key>name</key>
1879+
<string>storage.modifier.async.tsx</string>
1880+
</dict>
1881+
<key>2</key>
1882+
<dict>
1883+
<key>name</key>
1884+
<string>storage.type.property.tsx</string>
1885+
</dict>
1886+
<key>3</key>
1887+
<dict>
1888+
<key>name</key>
1889+
<string>keyword.generator.asterisk.tsx</string>
1890+
</dict>
1891+
</dict>
1892+
<key>end</key>
1893+
<string>(?=\}|;|,)|(?&lt;=\})</string>
1894+
<key>patterns</key>
1895+
<array>
1896+
<dict>
1897+
<key>include</key>
1898+
<string>#method-declaration-name</string>
1899+
</dict>
1900+
<dict>
1901+
<key>include</key>
1902+
<string>#comment</string>
1903+
</dict>
1904+
<dict>
1905+
<key>include</key>
1906+
<string>#type-parameters</string>
1907+
</dict>
1908+
<dict>
1909+
<key>include</key>
1910+
<string>#function-parameters</string>
1911+
</dict>
1912+
<dict>
1913+
<key>include</key>
1914+
<string>#return-type</string>
1915+
</dict>
1916+
<dict>
1917+
<key>include</key>
1918+
<string>#method-overload-declaration</string>
1919+
</dict>
1920+
<dict>
1921+
<key>include</key>
1922+
<string>#decl-block</string>
1923+
</dict>
1924+
</array>
1925+
</dict>
1926+
<key>object-literal-method-overload-declaration</key>
1927+
<dict>
1928+
<key>begin</key>
1929+
<string>(?&lt;!\.|\$)(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]+\])+\]))\s*(\??))?\s*[\(\&lt;])</string>
1930+
<key>beginCaptures</key>
1931+
<dict>
1932+
<key>1</key>
1933+
<dict>
1934+
<key>name</key>
1935+
<string>storage.modifier.async.tsx</string>
1936+
</dict>
1937+
<key>2</key>
1938+
<dict>
1939+
<key>name</key>
1940+
<string>storage.type.property.tsx</string>
1941+
</dict>
1942+
<key>3</key>
1943+
<dict>
1944+
<key>name</key>
1945+
<string>keyword.generator.asterisk.tsx</string>
1946+
</dict>
1947+
</dict>
1948+
<key>end</key>
1949+
<string>(?=\(|\&lt;)</string>
1950+
<key>patterns</key>
1951+
<array>
1952+
<dict>
1953+
<key>include</key>
1954+
<string>#method-declaration-name</string>
1955+
</dict>
1956+
</array>
1957+
</dict>
18681958
<key>indexer-declaration</key>
18691959
<dict>
18701960
<key>name</key>
@@ -3871,7 +3961,7 @@
38713961
</dict>
38723962
<dict>
38733963
<key>include</key>
3874-
<string>#method-declaration</string>
3964+
<string>#object-literal-method-declaration</string>
38753965
</dict>
38763966
<dict>
38773967
<key>name</key>

tests/baselines/Issue361.baseline.txt

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
original file
2+
-----------------------------------
3+
const constructor = someObject.prototype.constructor;
4+
const objectLiteral = { constructor };
5+
-----------------------------------
6+
7+
Grammar: TypeScript.tmLanguage
8+
-----------------------------------
9+
>const constructor = someObject.prototype.constructor;
10+
^^^^^
11+
source.ts meta.var.expr.ts storage.type.ts
12+
^
13+
source.ts meta.var.expr.ts
14+
^^^^^^^^^^^
15+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
16+
^
17+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
18+
^
19+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
20+
^
21+
source.ts meta.var.expr.ts
22+
^^^^^^^^^^
23+
source.ts meta.var.expr.ts support.class.ts
24+
^
25+
source.ts meta.var.expr.ts punctuation.accessor.ts
26+
^^^^^^^^^
27+
source.ts meta.var.expr.ts support.variable.property.ts
28+
^
29+
source.ts meta.var.expr.ts punctuation.accessor.ts
30+
^^^^^^^^^^^
31+
source.ts meta.var.expr.ts support.variable.property.ts
32+
^
33+
source.ts punctuation.terminator.statement.ts
34+
^^
35+
source.ts
36+
> const objectLiteral = { constructor };
37+
^
38+
source.ts
39+
^^^^^
40+
source.ts meta.var.expr.ts storage.type.ts
41+
^
42+
source.ts meta.var.expr.ts
43+
^^^^^^^^^^^^^
44+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
45+
^
46+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
47+
^
48+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
49+
^
50+
source.ts meta.var.expr.ts
51+
^
52+
source.ts meta.var.expr.ts meta.objectliteral.ts punctuation.definition.block.ts
53+
^
54+
source.ts meta.var.expr.ts meta.objectliteral.ts
55+
^^^^^^^^^^^
56+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts variable.other.readwrite.ts
57+
^
58+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts
59+
^
60+
source.ts meta.var.expr.ts meta.objectliteral.ts punctuation.definition.block.ts
61+
^
62+
source.ts punctuation.terminator.statement.ts

tests/cases/Issue361.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
const constructor = someObject.prototype.constructor;
2+
const objectLiteral = { constructor };

0 commit comments

Comments
 (0)