Skip to content

Commit c12da5a

Browse files
committed
Merge pull request microsoft#4406 from RyanCavanaugh/fix4404
Correctly identify JSX Expressions as Expression parent nodes
2 parents dec947a + b6f3889 commit c12da5a

21 files changed

Lines changed: 81 additions & 5 deletions

src/compiler/utilities.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -978,6 +978,7 @@ namespace ts {
978978
case SyntaxKind.ComputedPropertyName:
979979
return node === (<ComputedPropertyName>parent).expression;
980980
case SyntaxKind.Decorator:
981+
case SyntaxKind.JsxExpression:
981982
return true;
982983
case SyntaxKind.ExpressionWithTypeArguments:
983984
return (<ExpressionWithTypeArguments>parent).expression === node && isExpressionWithTypeArgumentsInClassExtendsClause(parent);

tests/baselines/reference/jsxHash.types

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,21 @@ var t02 = <a>{0}#</a>;
33
>t02 : any
44
><a>{0}#</a> : any
55
>a : any
6+
>0 : number
67
>a : any
78

89
var t03 = <a>#{0}</a>;
910
>t03 : any
1011
><a>#{0}</a> : any
1112
>a : any
13+
>0 : number
1214
>a : any
1315

1416
var t04 = <a>#{0}#</a>;
1517
>t04 : any
1618
><a>#{0}#</a> : any
1719
>a : any
20+
>0 : number
1821
>a : any
1922

2023
var t05 = <a>#<i></i></a>;

tests/baselines/reference/jsxImportInAttribute.symbols

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ let x = Test; // emit test_1.default
99

1010
<anything attr={Test} />; // ?
1111
>attr : Symbol(unknown)
12+
>Test : Symbol(Test, Decl(consumer.tsx, 1, 6))
1213

1314
=== tests/cases/compiler/component.d.ts ===
1415

tests/baselines/reference/jsxImportInAttribute.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ let x = Test; // emit test_1.default
1111
><anything attr={Test} /> : any
1212
>anything : any
1313
>attr : any
14-
>Test : any
14+
>Test : typeof Test
1515

1616
=== tests/cases/compiler/component.d.ts ===
1717

tests/baselines/reference/jsxReactTestSuite.symbols

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ declare var hasOwnProperty:any;
4646
<div><br /></div>
4747
<Component>{foo}<br />{bar}</Component>
4848
>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11))
49+
>foo : Symbol(foo, Decl(jsxReactTestSuite.tsx, 7, 11))
50+
>bar : Symbol(bar, Decl(jsxReactTestSuite.tsx, 8, 11))
4951
>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11))
5052

5153
<br />
@@ -159,6 +161,7 @@ var x =
159161
<Component x={y} />;
160162
>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11))
161163
>x : Symbol(unknown)
164+
>y : Symbol(y, Decl(jsxReactTestSuite.tsx, 9, 11))
162165

163166
<x-component />;
164167

tests/baselines/reference/jsxReactTestSuite.types

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,7 @@ var x =
251251
>y : any
252252

253253
={2 } z />;
254+
>2 : number
254255
>z : any
255256

256257
<Component
@@ -287,25 +288,29 @@ var x =
287288
>Component : any
288289
>x : any
289290
>y : any
291+
>2 : number
290292

291293
<Component { ... x } y={2} z />;
292294
><Component { ... x } y={2} z /> : any
293295
>Component : any
294296
>x : any
295297
>y : any
298+
>2 : number
296299
>z : any
297300

298301
<Component x={1} {...y} />;
299302
><Component x={1} {...y} /> : any
300303
>Component : any
301304
>x : any
305+
>1 : number
302306
>y : any
303307

304308

305309
<Component x={1} y="2" {...z} {...z}><Child /></Component>;
306310
><Component x={1} y="2" {...z} {...z}><Child /></Component> : any
307311
>Component : any
308312
>x : any
313+
>1 : number
309314
>y : any
310315
>z : any
311316
>z : any
@@ -326,6 +331,7 @@ var x =
326331
>2 : number
327332
>z : any
328333
>z : any
334+
>3 : number
329335
>Component : any
330336

331337

tests/baselines/reference/tsxElementResolution13.types

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,5 @@ var obj1: Obj1;
2525
><obj1 x={10} /> : JSX.Element
2626
>obj1 : Obj1
2727
>x : any
28+
>10 : number
2829

tests/baselines/reference/tsxElementResolution14.types

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@ var obj1: Obj1;
2020
><obj1 x={10} /> : JSX.Element
2121
>obj1 : Obj1
2222
>x : any
23+
>10 : number
2324

tests/baselines/reference/tsxElementResolution9.types

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,5 @@ var Obj3: Obj3;
6767
><Obj3 x={42} /> : JSX.Element
6868
>Obj3 : Obj3
6969
>x : any
70+
>42 : number
7071

tests/baselines/reference/tsxEmit1.symbols

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ var selfClosed7 = <div x={p} y='p' />;
5252
>selfClosed7 : Symbol(selfClosed7, Decl(tsxEmit1.tsx, 14, 3))
5353
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
5454
>x : Symbol(unknown)
55+
>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3))
5556
>y : Symbol(unknown)
5657

5758
var openClosed1 = <div></div>;
@@ -69,6 +70,7 @@ var openClosed3 = <div n='m'>{p}</div>;
6970
>openClosed3 : Symbol(openClosed3, Decl(tsxEmit1.tsx, 18, 3))
7071
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
7172
>n : Symbol(unknown)
73+
>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3))
7274
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
7375

7476
var openClosed4 = <div n='m'>{p < p}</div>;
@@ -146,13 +148,16 @@ var whitespace1 = <div> </div>;
146148
var whitespace2 = <div> {p} </div>;
147149
>whitespace2 : Symbol(whitespace2, Decl(tsxEmit1.tsx, 35, 3))
148150
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
151+
>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3))
149152
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
150153

151154
var whitespace3 = <div>
152155
>whitespace3 : Symbol(whitespace3, Decl(tsxEmit1.tsx, 36, 3))
153156
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
154157

155158
{p}
159+
>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3))
160+
156161
</div>;
157162
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
158163

0 commit comments

Comments
 (0)