Skip to content

Commit ef418e5

Browse files
committed
Fix object literal detection after cast expression
Fixes microsoft/TypeScript#24410
1 parent b7358ce commit ef418e5

File tree

5 files changed

+113
-3
lines changed

5 files changed

+113
-3
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1089,7 +1089,7 @@ repository:
10891089
#object literals
10901090
after-operator-block-as-object-literal:
10911091
name: meta.objectliteral.ts
1092-
begin: (?<!\+\+|--)(?<=[:=(,\[?+!]|{{lookBehindAwait}}|{{lookBehindReturn}}|{{lookBehindYield}}|{{lookBehindThrow}}|{{lookBehindIn}}|{{lookBehindOf}}|{{lookBehindTypeof}}|&&|\|\||\*)\s*(\{)
1092+
begin: (?<!\+\+|--)(?<=[:=(,\[?+!>]|{{lookBehindAwait}}|{{lookBehindReturn}}|{{lookBehindYield}}|{{lookBehindThrow}}|{{lookBehindIn}}|{{lookBehindOf}}|{{lookBehindTypeof}}|&&|\|\||\*)\s*(\{)
10931093
beginCaptures:
10941094
'1': { name: punctuation.definition.block.ts }
10951095
end: \}

TypeScript.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3449,7 +3449,7 @@
34493449
<key>name</key>
34503450
<string>meta.objectliteral.ts</string>
34513451
<key>begin</key>
3452-
<string>(?&lt;!\+\+|--)(?&lt;=[:=(,\[?+!]|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^yield|[^\._$[:alnum:]]yield|^throw|[^\._$[:alnum:]]throw|^in|[^\._$[:alnum:]]in|^of|[^\._$[:alnum:]]of|^typeof|[^\._$[:alnum:]]typeof|&amp;&amp;|\|\||\*)\s*(\{)</string>
3452+
<string>(?&lt;!\+\+|--)(?&lt;=[:=(,\[?+!&gt;]|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^yield|[^\._$[:alnum:]]yield|^throw|[^\._$[:alnum:]]throw|^in|[^\._$[:alnum:]]in|^of|[^\._$[:alnum:]]of|^typeof|[^\._$[:alnum:]]typeof|&amp;&amp;|\|\||\*)\s*(\{)</string>
34533453
<key>beginCaptures</key>
34543454
<dict>
34553455
<key>1</key>

TypeScriptReact.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3453,7 +3453,7 @@
34533453
<key>name</key>
34543454
<string>meta.objectliteral.tsx</string>
34553455
<key>begin</key>
3456-
<string>(?&lt;!\+\+|--)(?&lt;=[:=(,\[?+!]|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^yield|[^\._$[:alnum:]]yield|^throw|[^\._$[:alnum:]]throw|^in|[^\._$[:alnum:]]in|^of|[^\._$[:alnum:]]of|^typeof|[^\._$[:alnum:]]typeof|&amp;&amp;|\|\||\*)\s*(\{)</string>
3456+
<string>(?&lt;!\+\+|--)(?&lt;=[:=(,\[?+!&gt;]|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^yield|[^\._$[:alnum:]]yield|^throw|[^\._$[:alnum:]]throw|^in|[^\._$[:alnum:]]in|^of|[^\._$[:alnum:]]of|^typeof|[^\._$[:alnum:]]typeof|&amp;&amp;|\|\||\*)\s*(\{)</string>
34573457
<key>beginCaptures</key>
34583458
<dict>
34593459
<key>1</key>
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
original file
2+
-----------------------------------
3+
// @onlyOwnGrammar - As this hasc cast
4+
// From Microsoft/TypeScript#24410
5+
a
6+
.map(b => {
7+
return <C>{
8+
c: { }
9+
};
10+
})
11+
12+
// comment
13+
-----------------------------------
14+
15+
Grammar: TypeScript.tmLanguage
16+
-----------------------------------
17+
>// @onlyOwnGrammar - As this hasc cast
18+
^^
19+
source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
20+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
21+
source.ts comment.line.double-slash.ts
22+
>// From Microsoft/TypeScript#24410
23+
^^
24+
source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
25+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
26+
source.ts comment.line.double-slash.ts
27+
>a
28+
^
29+
source.ts variable.other.readwrite.ts
30+
> .map(b => {
31+
^
32+
source.ts
33+
^
34+
source.ts meta.function-call.ts punctuation.accessor.ts
35+
^^^
36+
source.ts meta.function-call.ts entity.name.function.ts
37+
^
38+
source.ts meta.brace.round.ts
39+
^
40+
source.ts meta.arrow.ts variable.parameter.ts
41+
^
42+
source.ts meta.arrow.ts
43+
^^
44+
source.ts meta.arrow.ts storage.type.function.arrow.ts
45+
^
46+
source.ts meta.arrow.ts
47+
^
48+
source.ts meta.arrow.ts meta.block.ts punctuation.definition.block.ts
49+
> return <C>{
50+
^^
51+
source.ts meta.arrow.ts meta.block.ts
52+
^^^^^^
53+
source.ts meta.arrow.ts meta.block.ts keyword.control.flow.ts
54+
^
55+
source.ts meta.arrow.ts meta.block.ts cast.expr.ts
56+
^
57+
source.ts meta.arrow.ts meta.block.ts cast.expr.ts meta.brace.angle.ts
58+
^
59+
source.ts meta.arrow.ts meta.block.ts cast.expr.ts entity.name.type.ts
60+
^
61+
source.ts meta.arrow.ts meta.block.ts cast.expr.ts meta.brace.angle.ts
62+
^
63+
source.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts punctuation.definition.block.ts
64+
> c: { }
65+
^^^
66+
source.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts
67+
^
68+
source.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts
69+
^
70+
source.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts
71+
^
72+
source.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts meta.object.member.ts
73+
^
74+
source.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts meta.object.member.ts meta.objectliteral.ts punctuation.definition.block.ts
75+
^
76+
source.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts meta.object.member.ts meta.objectliteral.ts
77+
^
78+
source.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts meta.object.member.ts meta.objectliteral.ts punctuation.definition.block.ts
79+
> };
80+
^^
81+
source.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts meta.object.member.ts
82+
^
83+
source.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts punctuation.definition.block.ts
84+
^
85+
source.ts meta.arrow.ts meta.block.ts punctuation.terminator.statement.ts
86+
> })
87+
^
88+
source.ts meta.arrow.ts meta.block.ts
89+
^
90+
source.ts meta.arrow.ts meta.block.ts punctuation.definition.block.ts
91+
^
92+
source.ts meta.brace.round.ts
93+
>
94+
^
95+
source.ts
96+
>// comment
97+
^^
98+
source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
99+
^^^^^^^^^
100+
source.ts comment.line.double-slash.ts

tests/cases/objectLiteralWithCast.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// @onlyOwnGrammar - As this hasc cast
2+
// From Microsoft/TypeScript#24410
3+
a
4+
.map(b => {
5+
return <C>{
6+
c: { }
7+
};
8+
})
9+
10+
// comment

0 commit comments

Comments
 (0)