From fc9b10eeb64678e69ff7ce9a229bb6c754874cda Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Tue, 28 Jul 2015 13:49:39 -0700 Subject: [PATCH] Correctly identify JSX expressions as identifier parents --- src/compiler/emitter.ts | 1 + .../reference/tsxExternalModuleEmit2.js | 20 ++++++++++++++ .../reference/tsxExternalModuleEmit2.symbols | 23 ++++++++++++++++ .../reference/tsxExternalModuleEmit2.types | 26 +++++++++++++++++++ .../jsx/tsxExternalModuleEmit2.tsx | 14 ++++++++++ 5 files changed, 84 insertions(+) create mode 100644 tests/baselines/reference/tsxExternalModuleEmit2.js create mode 100644 tests/baselines/reference/tsxExternalModuleEmit2.symbols create mode 100644 tests/baselines/reference/tsxExternalModuleEmit2.types create mode 100644 tests/cases/conformance/jsx/tsxExternalModuleEmit2.tsx diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index c77324eefd4..e97ece5bf00 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -1425,6 +1425,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi case SyntaxKind.IfStatement: case SyntaxKind.JsxSelfClosingElement: case SyntaxKind.JsxOpeningElement: + case SyntaxKind.JsxExpression: case SyntaxKind.NewExpression: case SyntaxKind.ParenthesizedExpression: case SyntaxKind.PostfixUnaryExpression: diff --git a/tests/baselines/reference/tsxExternalModuleEmit2.js b/tests/baselines/reference/tsxExternalModuleEmit2.js new file mode 100644 index 00000000000..0a76a3c3f4c --- /dev/null +++ b/tests/baselines/reference/tsxExternalModuleEmit2.js @@ -0,0 +1,20 @@ +//// [tests/cases/conformance/jsx/tsxExternalModuleEmit2.tsx] //// + +//// [modules.d.ts] + +declare module 'mod' { + var y: any; + export default y; +} + +//// [app.tsx] +import Main from 'mod'; +declare var Foo, React; +// Should see mod_1['default'] in emit here + + + +//// [app.js] +var mod_1 = require('mod'); +// Should see mod_1['default'] in emit here +React.createElement(Foo, {"handler": mod_1["default"]}); diff --git a/tests/baselines/reference/tsxExternalModuleEmit2.symbols b/tests/baselines/reference/tsxExternalModuleEmit2.symbols new file mode 100644 index 00000000000..78dd1760570 --- /dev/null +++ b/tests/baselines/reference/tsxExternalModuleEmit2.symbols @@ -0,0 +1,23 @@ +=== tests/cases/conformance/jsx/modules.d.ts === + +declare module 'mod' { + var y: any; +>y : Symbol(y, Decl(modules.d.ts, 2, 5)) + + export default y; +>y : Symbol(y, Decl(modules.d.ts, 2, 5)) +} + +=== tests/cases/conformance/jsx/app.tsx === +import Main from 'mod'; +>Main : Symbol(Main, Decl(app.tsx, 0, 6)) + +declare var Foo, React; +>Foo : Symbol(Foo, Decl(app.tsx, 1, 11)) +>React : Symbol(React, Decl(app.tsx, 1, 16)) + +// Should see mod_1['default'] in emit here + +>Foo : Symbol(Foo, Decl(app.tsx, 1, 11)) +>handler : Symbol(unknown) + diff --git a/tests/baselines/reference/tsxExternalModuleEmit2.types b/tests/baselines/reference/tsxExternalModuleEmit2.types new file mode 100644 index 00000000000..f10345cccdc --- /dev/null +++ b/tests/baselines/reference/tsxExternalModuleEmit2.types @@ -0,0 +1,26 @@ +=== tests/cases/conformance/jsx/modules.d.ts === + +declare module 'mod' { + var y: any; +>y : any + + export default y; +>y : any +} + +=== tests/cases/conformance/jsx/app.tsx === +import Main from 'mod'; +>Main : any + +declare var Foo, React; +>Foo : any +>React : any + +// Should see mod_1['default'] in emit here + +> : any +>Foo : any +>handler : any +>Main : any +>Foo : any + diff --git a/tests/cases/conformance/jsx/tsxExternalModuleEmit2.tsx b/tests/cases/conformance/jsx/tsxExternalModuleEmit2.tsx new file mode 100644 index 00000000000..e1e91f678ca --- /dev/null +++ b/tests/cases/conformance/jsx/tsxExternalModuleEmit2.tsx @@ -0,0 +1,14 @@ +//@jsx: react +//@module: commonjs + +//@filename: modules.d.ts +declare module 'mod' { + var y: any; + export default y; +} + +//@filename: app.tsx +import Main from 'mod'; +declare var Foo, React; +// Should see mod_1['default'] in emit here +