diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 8b53f10e14c49..ac559645bb5e9 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -978,6 +978,7 @@ namespace ts { case SyntaxKind.ComputedPropertyName: return node === (parent).expression; case SyntaxKind.Decorator: + case SyntaxKind.JsxExpression: return true; case SyntaxKind.ExpressionWithTypeArguments: return (parent).expression === node && isExpressionWithTypeArgumentsInClassExtendsClause(parent); diff --git a/tests/baselines/reference/jsxHash.types b/tests/baselines/reference/jsxHash.types index e614ebd3e0b5c..6d413141ca624 100644 --- a/tests/baselines/reference/jsxHash.types +++ b/tests/baselines/reference/jsxHash.types @@ -3,18 +3,21 @@ var t02 = {0}#; >t02 : any >{0}# : any >a : any +>0 : number >a : any var t03 = #{0}; >t03 : any >#{0} : any >a : any +>0 : number >a : any var t04 = #{0}#; >t04 : any >#{0}# : any >a : any +>0 : number >a : any var t05 = #; diff --git a/tests/baselines/reference/jsxImportInAttribute.symbols b/tests/baselines/reference/jsxImportInAttribute.symbols index 8481771f085c4..845001b22c0aa 100644 --- a/tests/baselines/reference/jsxImportInAttribute.symbols +++ b/tests/baselines/reference/jsxImportInAttribute.symbols @@ -9,6 +9,7 @@ let x = Test; // emit test_1.default ; // ? >attr : Symbol(unknown) +>Test : Symbol(Test, Decl(consumer.tsx, 1, 6)) === tests/cases/compiler/component.d.ts === diff --git a/tests/baselines/reference/jsxImportInAttribute.types b/tests/baselines/reference/jsxImportInAttribute.types index 8dfbe292fe05d..8dc5c370fa84d 100644 --- a/tests/baselines/reference/jsxImportInAttribute.types +++ b/tests/baselines/reference/jsxImportInAttribute.types @@ -11,7 +11,7 @@ let x = Test; // emit test_1.default > : any >anything : any >attr : any ->Test : any +>Test : typeof Test === tests/cases/compiler/component.d.ts === diff --git a/tests/baselines/reference/jsxReactTestSuite.symbols b/tests/baselines/reference/jsxReactTestSuite.symbols index ba32994993957..1fe64cbfdd717 100644 --- a/tests/baselines/reference/jsxReactTestSuite.symbols +++ b/tests/baselines/reference/jsxReactTestSuite.symbols @@ -46,6 +46,8 @@ declare var hasOwnProperty:any;

{foo}
{bar}
>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) +>foo : Symbol(foo, Decl(jsxReactTestSuite.tsx, 7, 11)) +>bar : Symbol(bar, Decl(jsxReactTestSuite.tsx, 8, 11)) >Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11))
@@ -159,6 +161,7 @@ var x = ; >Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) >x : Symbol(unknown) +>y : Symbol(y, Decl(jsxReactTestSuite.tsx, 9, 11)) ; diff --git a/tests/baselines/reference/jsxReactTestSuite.types b/tests/baselines/reference/jsxReactTestSuite.types index db7ebf8d912dc..88c2c278e59a3 100644 --- a/tests/baselines/reference/jsxReactTestSuite.types +++ b/tests/baselines/reference/jsxReactTestSuite.types @@ -251,6 +251,7 @@ var x = >y : any ={2 } z />; +>2 : number >z : any Component : any >x : any >y : any +>2 : number ; > : any >Component : any >x : any >y : any +>2 : number >z : any ; > : any >Component : any >x : any +>1 : number >y : any @@ -306,6 +310,7 @@ var x = > : any >Component : any >x : any +>1 : number >y : any >z : any >z : any @@ -326,6 +331,7 @@ var x = >2 : number >z : any >z : any +>3 : number >Component : any diff --git a/tests/baselines/reference/tsxElementResolution13.types b/tests/baselines/reference/tsxElementResolution13.types index cd6265de0911a..613835f32113e 100644 --- a/tests/baselines/reference/tsxElementResolution13.types +++ b/tests/baselines/reference/tsxElementResolution13.types @@ -25,4 +25,5 @@ var obj1: Obj1; > : JSX.Element >obj1 : Obj1 >x : any +>10 : number diff --git a/tests/baselines/reference/tsxElementResolution14.types b/tests/baselines/reference/tsxElementResolution14.types index ef03187d28ecb..80f9555030fc2 100644 --- a/tests/baselines/reference/tsxElementResolution14.types +++ b/tests/baselines/reference/tsxElementResolution14.types @@ -20,4 +20,5 @@ var obj1: Obj1; > : JSX.Element >obj1 : Obj1 >x : any +>10 : number diff --git a/tests/baselines/reference/tsxElementResolution9.types b/tests/baselines/reference/tsxElementResolution9.types index 525e4600b2ee8..6725bd216bd33 100644 --- a/tests/baselines/reference/tsxElementResolution9.types +++ b/tests/baselines/reference/tsxElementResolution9.types @@ -67,4 +67,5 @@ var Obj3: Obj3; > : JSX.Element >Obj3 : Obj3 >x : any +>42 : number diff --git a/tests/baselines/reference/tsxEmit1.symbols b/tests/baselines/reference/tsxEmit1.symbols index b7c8cde024ab2..aaca98ae9dbf3 100644 --- a/tests/baselines/reference/tsxEmit1.symbols +++ b/tests/baselines/reference/tsxEmit1.symbols @@ -52,6 +52,7 @@ var selfClosed7 =
; >selfClosed7 : Symbol(selfClosed7, Decl(tsxEmit1.tsx, 14, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22)) >x : Symbol(unknown) +>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3)) >y : Symbol(unknown) var openClosed1 =
; @@ -69,6 +70,7 @@ var openClosed3 =
{p}
; >openClosed3 : Symbol(openClosed3, Decl(tsxEmit1.tsx, 18, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22)) >n : Symbol(unknown) +>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22)) var openClosed4 =
{p < p}
; @@ -146,6 +148,7 @@ var whitespace1 =
; var whitespace2 =
{p}
; >whitespace2 : Symbol(whitespace2, Decl(tsxEmit1.tsx, 35, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22)) +>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22)) var whitespace3 =
@@ -153,6 +156,8 @@ var whitespace3 =
>div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22)) {p} +>p : Symbol(p, Decl(tsxEmit1.tsx, 7, 3)) +
; >div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit1.tsx, 1, 22)) diff --git a/tests/baselines/reference/tsxEmit1.types b/tests/baselines/reference/tsxEmit1.types index 667ec11333770..a427270354ea8 100644 --- a/tests/baselines/reference/tsxEmit1.types +++ b/tests/baselines/reference/tsxEmit1.types @@ -45,6 +45,7 @@ var selfClosed5 =
; >
: JSX.Element >div : any >x : any +>0 : number >y : any var selfClosed6 =
; @@ -52,6 +53,7 @@ var selfClosed6 =
; >
: JSX.Element >div : any >x : any +>"1" : string >y : any var selfClosed7 =
; diff --git a/tests/baselines/reference/tsxEmit2.symbols b/tests/baselines/reference/tsxEmit2.symbols index fd5689534939d..5eefc31710d88 100644 --- a/tests/baselines/reference/tsxEmit2.symbols +++ b/tests/baselines/reference/tsxEmit2.symbols @@ -21,29 +21,38 @@ var p1, p2, p3; var spreads1 =
{p2}
; >spreads1 : Symbol(spreads1, Decl(tsxEmit2.tsx, 8, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22)) +>p2 : Symbol(p2, Decl(tsxEmit2.tsx, 7, 7)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22)) var spreads2 =
{p2}
; >spreads2 : Symbol(spreads2, Decl(tsxEmit2.tsx, 9, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22)) +>p2 : Symbol(p2, Decl(tsxEmit2.tsx, 7, 7)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22)) var spreads3 =
{p2}
; >spreads3 : Symbol(spreads3, Decl(tsxEmit2.tsx, 10, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22)) >x : Symbol(unknown) +>p3 : Symbol(p3, Decl(tsxEmit2.tsx, 7, 11)) +>p2 : Symbol(p2, Decl(tsxEmit2.tsx, 7, 7)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22)) var spreads4 =
{p2}
; >spreads4 : Symbol(spreads4, Decl(tsxEmit2.tsx, 11, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22)) >x : Symbol(unknown) +>p3 : Symbol(p3, Decl(tsxEmit2.tsx, 7, 11)) +>p2 : Symbol(p2, Decl(tsxEmit2.tsx, 7, 7)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22)) var spreads5 =
{p2}
; >spreads5 : Symbol(spreads5, Decl(tsxEmit2.tsx, 12, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22)) >x : Symbol(unknown) +>p2 : Symbol(p2, Decl(tsxEmit2.tsx, 7, 7)) >y : Symbol(unknown) +>p3 : Symbol(p3, Decl(tsxEmit2.tsx, 7, 11)) +>p2 : Symbol(p2, Decl(tsxEmit2.tsx, 7, 7)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxEmit2.tsx, 1, 22)) diff --git a/tests/baselines/reference/tsxExternalModuleEmit2.symbols b/tests/baselines/reference/tsxExternalModuleEmit2.symbols index 137e9befa56aa..6f8d3d76cd236 100644 --- a/tests/baselines/reference/tsxExternalModuleEmit2.symbols +++ b/tests/baselines/reference/tsxExternalModuleEmit2.symbols @@ -20,6 +20,7 @@ declare var Foo, React; ; >Foo : Symbol(Foo, Decl(app.tsx, 1, 11)) >handler : Symbol(unknown) +>Main : Symbol(Main, Decl(app.tsx, 0, 6)) >Foo : Symbol(Foo, Decl(app.tsx, 1, 11)) // Should see mod_1['default'] in emit here diff --git a/tests/baselines/reference/tsxReactEmit1.symbols b/tests/baselines/reference/tsxReactEmit1.symbols index 665c6a0271ff7..4149142dd8205 100644 --- a/tests/baselines/reference/tsxReactEmit1.symbols +++ b/tests/baselines/reference/tsxReactEmit1.symbols @@ -54,6 +54,7 @@ var selfClosed7 =
; >selfClosed7 : Symbol(selfClosed7, Decl(tsxReactEmit1.tsx, 15, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit1.tsx, 1, 22)) >x : Symbol(unknown) +>p : Symbol(p, Decl(tsxReactEmit1.tsx, 8, 3)) >y : Symbol(unknown) >b : Symbol(unknown) @@ -72,6 +73,7 @@ var openClosed3 =
{p}
; >openClosed3 : Symbol(openClosed3, Decl(tsxReactEmit1.tsx, 19, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit1.tsx, 1, 22)) >n : Symbol(unknown) +>p : Symbol(p, Decl(tsxReactEmit1.tsx, 8, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit1.tsx, 1, 22)) var openClosed4 =
{p < p}
; @@ -150,6 +152,7 @@ var whitespace1 =
; var whitespace2 =
{p}
; >whitespace2 : Symbol(whitespace2, Decl(tsxReactEmit1.tsx, 36, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit1.tsx, 1, 22)) +>p : Symbol(p, Decl(tsxReactEmit1.tsx, 8, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit1.tsx, 1, 22)) var whitespace3 =
@@ -157,6 +160,8 @@ var whitespace3 =
>div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit1.tsx, 1, 22)) {p} +>p : Symbol(p, Decl(tsxReactEmit1.tsx, 8, 3)) +
; >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit1.tsx, 1, 22)) diff --git a/tests/baselines/reference/tsxReactEmit1.types b/tests/baselines/reference/tsxReactEmit1.types index 0b6e03c57428e..e180d2b6b7065 100644 --- a/tests/baselines/reference/tsxReactEmit1.types +++ b/tests/baselines/reference/tsxReactEmit1.types @@ -47,6 +47,7 @@ var selfClosed5 =
; >
: JSX.Element >div : any >x : any +>0 : number >y : any var selfClosed6 =
; @@ -54,6 +55,7 @@ var selfClosed6 =
; >
: JSX.Element >div : any >x : any +>"1" : string >y : any var selfClosed7 =
; diff --git a/tests/baselines/reference/tsxReactEmit2.symbols b/tests/baselines/reference/tsxReactEmit2.symbols index 7805a16363e99..049fdb1819b6f 100644 --- a/tests/baselines/reference/tsxReactEmit2.symbols +++ b/tests/baselines/reference/tsxReactEmit2.symbols @@ -23,29 +23,38 @@ var p1, p2, p3; var spreads1 =
{p2}
; >spreads1 : Symbol(spreads1, Decl(tsxReactEmit2.tsx, 9, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit2.tsx, 1, 22)) +>p2 : Symbol(p2, Decl(tsxReactEmit2.tsx, 8, 7)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit2.tsx, 1, 22)) var spreads2 =
{p2}
; >spreads2 : Symbol(spreads2, Decl(tsxReactEmit2.tsx, 10, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit2.tsx, 1, 22)) +>p2 : Symbol(p2, Decl(tsxReactEmit2.tsx, 8, 7)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit2.tsx, 1, 22)) var spreads3 =
{p2}
; >spreads3 : Symbol(spreads3, Decl(tsxReactEmit2.tsx, 11, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit2.tsx, 1, 22)) >x : Symbol(unknown) +>p3 : Symbol(p3, Decl(tsxReactEmit2.tsx, 8, 11)) +>p2 : Symbol(p2, Decl(tsxReactEmit2.tsx, 8, 7)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit2.tsx, 1, 22)) var spreads4 =
{p2}
; >spreads4 : Symbol(spreads4, Decl(tsxReactEmit2.tsx, 12, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit2.tsx, 1, 22)) >x : Symbol(unknown) +>p3 : Symbol(p3, Decl(tsxReactEmit2.tsx, 8, 11)) +>p2 : Symbol(p2, Decl(tsxReactEmit2.tsx, 8, 7)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit2.tsx, 1, 22)) var spreads5 =
{p2}
; >spreads5 : Symbol(spreads5, Decl(tsxReactEmit2.tsx, 13, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit2.tsx, 1, 22)) >x : Symbol(unknown) +>p2 : Symbol(p2, Decl(tsxReactEmit2.tsx, 8, 7)) >y : Symbol(unknown) +>p3 : Symbol(p3, Decl(tsxReactEmit2.tsx, 8, 11)) +>p2 : Symbol(p2, Decl(tsxReactEmit2.tsx, 8, 7)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmit2.tsx, 1, 22)) diff --git a/tests/baselines/reference/tsxReactEmitWhitespace.symbols b/tests/baselines/reference/tsxReactEmitWhitespace.symbols index 96b902372b712..3aa3f0d0f8adb 100644 --- a/tests/baselines/reference/tsxReactEmitWhitespace.symbols +++ b/tests/baselines/reference/tsxReactEmitWhitespace.symbols @@ -29,6 +29,7 @@ var p = 0; // Emit " ", p, " "
{p}
; >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace.tsx, 1, 22)) +>p : Symbol(p, Decl(tsxReactEmitWhitespace.tsx, 11, 3)) >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace.tsx, 1, 22)) // Emit only p @@ -36,6 +37,8 @@ var p = 0; >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace.tsx, 1, 22)) {p} +>p : Symbol(p, Decl(tsxReactEmitWhitespace.tsx, 11, 3)) +
; >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace.tsx, 1, 22)) @@ -44,6 +47,8 @@ var p = 0; >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace.tsx, 1, 22)) {p} +>p : Symbol(p, Decl(tsxReactEmitWhitespace.tsx, 11, 3)) +
; >div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace.tsx, 1, 22)) diff --git a/tests/baselines/reference/tsxReactEmitWhitespace.types b/tests/baselines/reference/tsxReactEmitWhitespace.types index 603dc4ca6c10f..4622aef19917e 100644 --- a/tests/baselines/reference/tsxReactEmitWhitespace.types +++ b/tests/baselines/reference/tsxReactEmitWhitespace.types @@ -32,7 +32,7 @@ var p = 0;
{p}
; >
{p}
: JSX.Element >div : any ->p : any +>p : number >div : any // Emit only p @@ -41,7 +41,7 @@ var p = 0; >div : any {p} ->p : any +>p : number
; >div : any @@ -52,7 +52,7 @@ var p = 0; >div : any {p} ->p : any +>p : number
; >div : any diff --git a/tests/baselines/reference/tsxTypeErrors.symbols b/tests/baselines/reference/tsxTypeErrors.symbols index bfe0c5686403e..94399b95d1fba 100644 --- a/tests/baselines/reference/tsxTypeErrors.symbols +++ b/tests/baselines/reference/tsxTypeErrors.symbols @@ -18,6 +18,7 @@ var thing = { oops: 100 }; var a3 =
>a3 : Symbol(a3, Decl(tsxTypeErrors.tsx, 9, 3)) >id : Symbol(unknown) +>thing : Symbol(thing, Decl(tsxTypeErrors.tsx, 8, 3)) // Mistyped html name (error) var e1 = diff --git a/tests/baselines/reference/tsxTypeErrors.types b/tests/baselines/reference/tsxTypeErrors.types index 92c7148b3147f..303c7695dbfc3 100644 --- a/tests/baselines/reference/tsxTypeErrors.types +++ b/tests/baselines/reference/tsxTypeErrors.types @@ -26,7 +26,7 @@ var a3 =
>
: any >div : any >id : any ->thing : any +>thing : { oops: number; } // Mistyped html name (error) var e1 = diff --git a/tests/cases/fourslash/tsxRename5.ts b/tests/cases/fourslash/tsxRename5.ts new file mode 100644 index 0000000000000..cc18d6287c3bf --- /dev/null +++ b/tests/cases/fourslash/tsxRename5.ts @@ -0,0 +1,20 @@ +/// + +//@Filename: file.tsx +//// declare module JSX { +//// interface Element { } +//// interface IntrinsicElements { +//// } +//// interface ElementAttributesProperty { props } +//// } +//// class MyClass { +//// props: { +//// name?: string; +//// size?: number; +//// } +//// +//// var [|nn|]: string; +//// var x = ; + +goTo.marker(); +verify.renameLocations(false, false);