Skip to content

Commit 085f0df

Browse files
committed
Merge pull request #4096 from RyanCavanaugh/renameClosingTags
Fixes renaming not affecting JSX closing tags (#4093)
2 parents 921dbb7 + 0a832af commit 085f0df

15 files changed

+121
-18
lines changed

src/compiler/checker.ts

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7209,13 +7209,17 @@ namespace ts {
72097209
}
72107210

72117211
function checkJsxElement(node: JsxElement) {
7212+
// Check attributes
7213+
checkJsxOpeningLikeElement(node.openingElement);
7214+
72127215
// Check that the closing tag matches
72137216
if (!tagNamesAreEquivalent(node.openingElement.tagName, node.closingElement.tagName)) {
72147217
error(node.closingElement, Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, getTextOfNode(node.openingElement.tagName));
72157218
}
7216-
7217-
// Check attributes
7218-
checkJsxOpeningLikeElement(node.openingElement);
7219+
else {
7220+
// Perform resolution on the closing tag so that rename/go to definition/etc work
7221+
getJsxElementTagSymbol(node.closingElement);
7222+
}
72197223

72207224
// Check children
72217225
for (let child of node.children) {
@@ -7326,7 +7330,7 @@ namespace ts {
73267330
/// If this is a class-based tag (otherwise returns undefined), returns the symbol of the class
73277331
/// type or factory function.
73287332
/// Otherwise, returns unknownSymbol.
7329-
function getJsxElementTagSymbol(node: JsxOpeningLikeElement): Symbol {
7333+
function getJsxElementTagSymbol(node: JsxOpeningLikeElement|JsxClosingElement): Symbol {
73307334
let flags: JsxFlags = JsxFlags.UnknownElement;
73317335
let links = getNodeLinks(node);
73327336
if (!links.resolvedSymbol) {
@@ -7338,7 +7342,7 @@ namespace ts {
73387342
}
73397343
return links.resolvedSymbol;
73407344

7341-
function lookupIntrinsicTag(node: JsxOpeningLikeElement): Symbol {
7345+
function lookupIntrinsicTag(node: JsxOpeningLikeElement|JsxClosingElement): Symbol {
73427346
let intrinsicElementsType = getJsxIntrinsicElementsType();
73437347
if (intrinsicElementsType !== unknownType) {
73447348
// Property case
@@ -7366,26 +7370,28 @@ namespace ts {
73667370
}
73677371
}
73687372

7369-
function lookupClassTag(node: JsxOpeningLikeElement): Symbol {
7370-
let valueSymbol: Symbol;
7373+
function lookupClassTag(node: JsxOpeningLikeElement|JsxClosingElement): Symbol {
7374+
let valueSymbol: Symbol = resolveJsxTagName(node);
73717375

73727376
// Look up the value in the current scope
7373-
if (node.tagName.kind === SyntaxKind.Identifier) {
7374-
let tag = <Identifier>node.tagName;
7375-
let sym = getResolvedSymbol(tag);
7376-
valueSymbol = sym.exportSymbol || sym;
7377-
}
7378-
else {
7379-
valueSymbol = checkQualifiedName(<QualifiedName>node.tagName).symbol;
7380-
}
7381-
73827377
if (valueSymbol && valueSymbol !== unknownSymbol) {
73837378
links.jsxFlags |= JsxFlags.ClassElement;
73847379
getSymbolLinks(valueSymbol).referenced = true;
73857380
}
73867381

73877382
return valueSymbol || unknownSymbol;
73887383
}
7384+
7385+
function resolveJsxTagName(node: JsxOpeningLikeElement|JsxClosingElement): Symbol {
7386+
if (node.tagName.kind === SyntaxKind.Identifier) {
7387+
let tag = <Identifier>node.tagName;
7388+
let sym = getResolvedSymbol(tag);
7389+
return sym.exportSymbol || sym;
7390+
}
7391+
else {
7392+
return checkQualifiedName(<QualifiedName>node.tagName).symbol;
7393+
}
7394+
}
73897395
}
73907396

73917397
/**
@@ -13912,7 +13918,9 @@ namespace ts {
1391213918
meaning |= SymbolFlags.Alias;
1391313919
return resolveEntityName(<EntityName>entityName, meaning);
1391413920
}
13915-
else if ((entityName.parent.kind === SyntaxKind.JsxOpeningElement) || (entityName.parent.kind === SyntaxKind.JsxSelfClosingElement)) {
13921+
else if ((entityName.parent.kind === SyntaxKind.JsxOpeningElement) ||
13922+
(entityName.parent.kind === SyntaxKind.JsxSelfClosingElement) ||
13923+
(entityName.parent.kind === SyntaxKind.JsxClosingElement)) {
1391613924
return getJsxElementTagSymbol(<JsxOpeningLikeElement>entityName.parent);
1391713925
}
1391813926
else if (isExpression(entityName)) {

tests/baselines/reference/jsxInvalidEsprimaTestSuite.errors.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(11,12): error TS2304:
3030
tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(11,16): error TS1109: Expression expected.
3131
tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(12,2): error TS2304: Cannot find name 'a'.
3232
tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(12,5): error TS1003: Identifier expected.
33+
tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(12,10): error TS2304: Cannot find name 'a'.
3334
tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(12,13): error TS1005: '>' expected.
3435
tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(12,14): error TS2304: Cannot find name 'c'.
3536
tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(12,16): error TS1109: Expression expected.
@@ -43,6 +44,7 @@ tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(14,8): error TS2304:
4344
tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(14,10): error TS1109: Expression expected.
4445
tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(15,2): error TS2304: Cannot find name 'a'.
4546
tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(15,4): error TS1003: Identifier expected.
47+
tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(15,7): error TS2304: Cannot find name 'a'.
4648
tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(15,9): error TS1003: Identifier expected.
4749
tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(16,3): error TS1003: Identifier expected.
4850
tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(16,4): error TS2304: Cannot find name 'foo'.
@@ -71,7 +73,7 @@ tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(35,4): error TS1003:
7173
tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(35,21): error TS17002: Expected corresponding JSX closing tag for 'a'.
7274

7375

74-
==== tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx (71 errors) ====
76+
==== tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx (73 errors) ====
7577
declare var React: any;
7678

7779
</>;
@@ -148,6 +150,8 @@ tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(35,21): error TS17002
148150
!!! error TS2304: Cannot find name 'a'.
149151
~
150152
!!! error TS1003: Identifier expected.
153+
~
154+
!!! error TS2304: Cannot find name 'a'.
151155
~
152156
!!! error TS1005: '>' expected.
153157
~
@@ -177,6 +181,8 @@ tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(35,21): error TS17002
177181
!!! error TS2304: Cannot find name 'a'.
178182
~
179183
!!! error TS1003: Identifier expected.
184+
~
185+
!!! error TS2304: Cannot find name 'a'.
180186
~
181187
!!! error TS1003: Identifier expected.
182188
<a[foo]></a[foo]>;

tests/baselines/reference/jsxReactTestSuite.symbols

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ declare var hasOwnProperty:any;
4545
<div>
4646
<div><br /></div>
4747
<Component>{foo}<br />{bar}</Component>
48+
>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11))
4849
>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11))
4950

5051
<br />
@@ -56,6 +57,7 @@ declare var hasOwnProperty:any;
5657

5758
{this.props.children}
5859
</Composite>;
60+
>Composite : Symbol(Composite, Decl(jsxReactTestSuite.tsx, 3, 11))
5961

6062
<Composite>
6163
>Composite : Symbol(Composite, Decl(jsxReactTestSuite.tsx, 3, 11))
@@ -64,6 +66,7 @@ declare var hasOwnProperty:any;
6466
>Composite2 : Symbol(Composite2, Decl(jsxReactTestSuite.tsx, 4, 11))
6567

6668
</Composite>;
69+
>Composite : Symbol(Composite, Decl(jsxReactTestSuite.tsx, 3, 11))
6770

6871
var x =
6972
>x : Symbol(x, Decl(jsxReactTestSuite.tsx, 10, 11), Decl(jsxReactTestSuite.tsx, 35, 3))
@@ -181,6 +184,7 @@ var x =
181184
>x : Symbol(unknown)
182185
>y : Symbol(unknown)
183186
>Child : Symbol(Child, Decl(jsxReactTestSuite.tsx, 5, 11))
187+
>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11))
184188

185189
<Component x="1" {...(z = { y: 2 }, z)} z={3}>Text</Component>;
186190
>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11))
@@ -189,6 +193,7 @@ var x =
189193
>y : Symbol(y, Decl(jsxReactTestSuite.tsx, 113, 27))
190194
>z : Symbol(z, Decl(jsxReactTestSuite.tsx, 11, 11))
191195
>z : Symbol(unknown)
196+
>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11))
192197

193198

194199

tests/baselines/reference/tsxEmit1.symbols

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,30 +57,35 @@ var selfClosed7 = <div x={p} y='p' />;
5757
var openClosed1 = <div></div>;
5858
>openClosed1 : Symbol(openClosed1, Decl(tsxEmit1.tsx, 16, 3))
5959
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
60+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
6061

6162
var openClosed2 = <div n='m'>foo</div>;
6263
>openClosed2 : Symbol(openClosed2, Decl(tsxEmit1.tsx, 17, 3))
6364
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
6465
>n : Symbol(unknown)
66+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
6567

6668
var openClosed3 = <div n='m'>{p}</div>;
6769
>openClosed3 : Symbol(openClosed3, Decl(tsxEmit1.tsx, 18, 3))
6870
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
6971
>n : Symbol(unknown)
72+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
7073

7174
var openClosed4 = <div n='m'>{p < p}</div>;
7275
>openClosed4 : Symbol(openClosed4, Decl(tsxEmit1.tsx, 19, 3))
7376
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
7477
>n : Symbol(unknown)
7578
>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3))
7679
>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3))
80+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
7781

7882
var openClosed5 = <div n='m'>{p > p}</div>;
7983
>openClosed5 : Symbol(openClosed5, Decl(tsxEmit1.tsx, 20, 3))
8084
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
8185
>n : Symbol(unknown)
8286
>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3))
8387
>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3))
88+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
8489

8590
class SomeClass {
8691
>SomeClass : Symbol(SomeClass, Decl(tsxEmit1.tsx, 20, 43))
@@ -92,24 +97,28 @@ class SomeClass {
9297
>rewrites1 : Symbol(rewrites1, Decl(tsxEmit1.tsx, 24, 5))
9398
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
9499
>this : Symbol(SomeClass, Decl(tsxEmit1.tsx, 20, 43))
100+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
95101

96102
var rewrites2 = <div>{[p, ...p, p]}</div>;
97103
>rewrites2 : Symbol(rewrites2, Decl(tsxEmit1.tsx, 25, 5))
98104
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
99105
>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3))
100106
>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3))
101107
>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3))
108+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
102109

103110
var rewrites3 = <div>{{p}}</div>;
104111
>rewrites3 : Symbol(rewrites3, Decl(tsxEmit1.tsx, 26, 5))
105112
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
106113
>p : Symbol(p, Decl(tsxEmit1.tsx, 26, 25))
114+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
107115

108116
var rewrites4 = <div a={() => this}></div>;
109117
>rewrites4 : Symbol(rewrites4, Decl(tsxEmit1.tsx, 28, 5))
110118
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
111119
>a : Symbol(unknown)
112120
>this : Symbol(SomeClass, Decl(tsxEmit1.tsx, 20, 43))
121+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
113122

114123
var rewrites5 = <div a={[p, ...p, p]}></div>;
115124
>rewrites5 : Symbol(rewrites5, Decl(tsxEmit1.tsx, 29, 5))
@@ -118,27 +127,32 @@ class SomeClass {
118127
>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3))
119128
>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3))
120129
>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3))
130+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
121131

122132
var rewrites6 = <div a={{p}}></div>;
123133
>rewrites6 : Symbol(rewrites6, Decl(tsxEmit1.tsx, 30, 5))
124134
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
125135
>a : Symbol(unknown)
126136
>p : Symbol(p, Decl(tsxEmit1.tsx, 30, 27))
137+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
127138
}
128139
}
129140

130141
var whitespace1 = <div> </div>;
131142
>whitespace1 : Symbol(whitespace1, Decl(tsxEmit1.tsx, 34, 3))
132143
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
144+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
133145

134146
var whitespace2 = <div> {p} </div>;
135147
>whitespace2 : Symbol(whitespace2, Decl(tsxEmit1.tsx, 35, 3))
136148
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
149+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
137150

138151
var whitespace3 = <div>
139152
>whitespace3 : Symbol(whitespace3, Decl(tsxEmit1.tsx, 36, 3))
140153
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
141154

142155
{p}
143156
</div>;
157+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22))
144158

tests/baselines/reference/tsxEmit2.symbols

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,29 @@ var p1, p2, p3;
2121
var spreads1 = <div {...p1}>{p2}</div>;
2222
>spreads1 : Symbol(spreads1, Decl(tsxEmit2.tsx, 8, 3))
2323
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22))
24+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22))
2425

2526
var spreads2 = <div {...p1}>{p2}</div>;
2627
>spreads2 : Symbol(spreads2, Decl(tsxEmit2.tsx, 9, 3))
2728
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22))
29+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22))
2830

2931
var spreads3 = <div x={p3} {...p1}>{p2}</div>;
3032
>spreads3 : Symbol(spreads3, Decl(tsxEmit2.tsx, 10, 3))
3133
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22))
3234
>x : Symbol(unknown)
35+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22))
3336

3437
var spreads4 = <div {...p1} x={p3} >{p2}</div>;
3538
>spreads4 : Symbol(spreads4, Decl(tsxEmit2.tsx, 11, 3))
3639
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22))
3740
>x : Symbol(unknown)
41+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22))
3842

3943
var spreads5 = <div x={p2} {...p1} y={p3}>{p2}</div>;
4044
>spreads5 : Symbol(spreads5, Decl(tsxEmit2.tsx, 12, 3))
4145
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22))
4246
>x : Symbol(unknown)
4347
>y : Symbol(unknown)
48+
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22))
4449

tests/baselines/reference/tsxExternalModuleEmit2.symbols

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@ declare var Foo, React;
2020
<Foo handler={Main}></Foo>;
2121
>Foo : Symbol(Foo, Decl(app.tsx, 1, 11))
2222
>handler : Symbol(unknown)
23+
>Foo : Symbol(Foo, Decl(app.tsx, 1, 11))
2324

2425
// Should see mod_1['default'] in emit here
2526
<Foo {...Main}></Foo>;
2627
>Foo : Symbol(Foo, Decl(app.tsx, 1, 11))
28+
>Foo : Symbol(Foo, Decl(app.tsx, 1, 11))
2729

2830

tests/baselines/reference/tsxGenericArrowFunctionParsing.symbols

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ var T, T1, T2;
1616
var x1 = <T>() => {}</T>;
1717
>x1 : Symbol(x1, Decl(tsxGenericArrowFunctionParsing.tsx, 7, 3))
1818
>T : Symbol(T, Decl(tsxGenericArrowFunctionParsing.tsx, 4, 3))
19+
>T : Symbol(T, Decl(tsxGenericArrowFunctionParsing.tsx, 4, 3))
1920

2021
x1.isElement;
2122
>x1.isElement : Symbol(JSX.Element.isElement, Decl(tsxGenericArrowFunctionParsing.tsx, 1, 20))
@@ -44,6 +45,7 @@ var x4 = <T extends={true}>() => {}</T>;
4445
>x4 : Symbol(x4, Decl(tsxGenericArrowFunctionParsing.tsx, 19, 3))
4546
>T : Symbol(T, Decl(tsxGenericArrowFunctionParsing.tsx, 4, 3))
4647
>extends : Symbol(unknown)
48+
>T : Symbol(T, Decl(tsxGenericArrowFunctionParsing.tsx, 4, 3))
4749

4850
x4.isElement;
4951
>x4.isElement : Symbol(JSX.Element.isElement, Decl(tsxGenericArrowFunctionParsing.tsx, 1, 20))
@@ -55,6 +57,7 @@ var x5 = <T extends>() => {}</T>;
5557
>x5 : Symbol(x5, Decl(tsxGenericArrowFunctionParsing.tsx, 23, 3))
5658
>T : Symbol(T, Decl(tsxGenericArrowFunctionParsing.tsx, 4, 3))
5759
>extends : Symbol(unknown)
60+
>T : Symbol(T, Decl(tsxGenericArrowFunctionParsing.tsx, 4, 3))
5861

5962
x5.isElement;
6063
>x5.isElement : Symbol(JSX.Element.isElement, Decl(tsxGenericArrowFunctionParsing.tsx, 1, 20))

tests/baselines/reference/tsxInArrowFunction.symbols

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,28 @@ declare namespace JSX {
2424
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxInArrowFunction.tsx, 3, 33))
2525
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxInArrowFunction.tsx, 3, 33))
2626
>text : Symbol(text, Decl(tsxInArrowFunction.tsx, 4, 14))
27+
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxInArrowFunction.tsx, 3, 33))
2728

2829
// didn't work
2930
<div>{x => <div text="wat" />}</div>;
3031
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxInArrowFunction.tsx, 3, 33))
3132
>x : Symbol(x, Decl(tsxInArrowFunction.tsx, 15, 6))
3233
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxInArrowFunction.tsx, 3, 33))
3334
>text : Symbol(text, Decl(tsxInArrowFunction.tsx, 4, 14))
35+
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxInArrowFunction.tsx, 3, 33))
3436

3537
// worked
3638
<div>{() => (<div text="wat" />)}</div>;
3739
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxInArrowFunction.tsx, 3, 33))
3840
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxInArrowFunction.tsx, 3, 33))
3941
>text : Symbol(text, Decl(tsxInArrowFunction.tsx, 4, 14))
42+
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxInArrowFunction.tsx, 3, 33))
4043

4144
// worked (!)
4245
<div>{() => <div text="wat"></div>}</div>;
4346
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxInArrowFunction.tsx, 3, 33))
4447
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxInArrowFunction.tsx, 3, 33))
4548
>text : Symbol(text, Decl(tsxInArrowFunction.tsx, 4, 14))
49+
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxInArrowFunction.tsx, 3, 33))
50+
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxInArrowFunction.tsx, 3, 33))
4651

tests/baselines/reference/tsxOpeningClosingNames.symbols

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ declare module A.B.C {
1717

1818
<A.B.C.D>foo</A . B . C.D>
1919
>D : Symbol(unknown)
20+
>D : Symbol(unknown)
2021

tests/baselines/reference/tsxParseTests1.symbols

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,8 @@ var x = <div><div><span><div></div></span></div></div>;
1717
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxParseTests1.tsx, 2, 30))
1818
>span : Symbol(JSX.IntrinsicElements.span, Decl(tsxParseTests1.tsx, 2, 35))
1919
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxParseTests1.tsx, 2, 30))
20+
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxParseTests1.tsx, 2, 30))
21+
>span : Symbol(JSX.IntrinsicElements.span, Decl(tsxParseTests1.tsx, 2, 35))
22+
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxParseTests1.tsx, 2, 30))
23+
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxParseTests1.tsx, 2, 30))
2024

0 commit comments

Comments
 (0)