mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-11 10:00:13 -06:00
Handle indirect imports of JSX elements from external modules
Fixes #4675
This commit is contained in:
parent
a4db4be4b6
commit
590569b87d
@ -7463,7 +7463,9 @@ namespace ts {
|
||||
// Look up the value in the current scope
|
||||
if (valueSymbol && valueSymbol !== unknownSymbol) {
|
||||
links.jsxFlags |= JsxFlags.ClassElement;
|
||||
getSymbolLinks(valueSymbol).referenced = true;
|
||||
if (valueSymbol.flags & SymbolFlags.Alias) {
|
||||
markAliasSymbolAsReferenced(valueSymbol);
|
||||
}
|
||||
}
|
||||
|
||||
return valueSymbol || unknownSymbol;
|
||||
|
||||
32
tests/baselines/reference/tsxPreserveEmit1.js
Normal file
32
tests/baselines/reference/tsxPreserveEmit1.js
Normal file
@ -0,0 +1,32 @@
|
||||
//// [tests/cases/conformance/jsx/tsxPreserveEmit1.tsx] ////
|
||||
|
||||
//// [react.d.ts]
|
||||
|
||||
declare module 'react' {
|
||||
var x: any;
|
||||
export = x;
|
||||
}
|
||||
|
||||
declare module ReactRouter {
|
||||
var Route: any;
|
||||
interface Thing { }
|
||||
}
|
||||
declare module 'react-router' {
|
||||
export = ReactRouter;
|
||||
}
|
||||
|
||||
//// [test.tsx]
|
||||
// Should emit 'react-router' in the AMD dependency list
|
||||
import React = require('react');
|
||||
import ReactRouter = require('react-router');
|
||||
|
||||
import Route = ReactRouter.Route;
|
||||
|
||||
var routes = <Route />;
|
||||
|
||||
|
||||
//// [test.jsx]
|
||||
define(["require", "exports", 'react-router'], function (require, exports, ReactRouter) {
|
||||
var Route = ReactRouter.Route;
|
||||
var routes = <Route />;
|
||||
});
|
||||
41
tests/baselines/reference/tsxPreserveEmit1.symbols
Normal file
41
tests/baselines/reference/tsxPreserveEmit1.symbols
Normal file
@ -0,0 +1,41 @@
|
||||
=== tests/cases/conformance/jsx/test.tsx ===
|
||||
// Should emit 'react-router' in the AMD dependency list
|
||||
import React = require('react');
|
||||
>React : Symbol(React, Decl(test.tsx, 0, 0))
|
||||
|
||||
import ReactRouter = require('react-router');
|
||||
>ReactRouter : Symbol(ReactRouter, Decl(test.tsx, 1, 32))
|
||||
|
||||
import Route = ReactRouter.Route;
|
||||
>Route : Symbol(Route, Decl(test.tsx, 2, 45))
|
||||
>ReactRouter : Symbol(ReactRouter, Decl(react.d.ts, 4, 1))
|
||||
>Route : Symbol(ReactRouter.Route, Decl(react.d.ts, 7, 4))
|
||||
|
||||
var routes = <Route />;
|
||||
>routes : Symbol(routes, Decl(test.tsx, 6, 3))
|
||||
>Route : Symbol(Route, Decl(test.tsx, 2, 45))
|
||||
|
||||
=== tests/cases/conformance/jsx/react.d.ts ===
|
||||
|
||||
declare module 'react' {
|
||||
var x: any;
|
||||
>x : Symbol(x, Decl(react.d.ts, 2, 4))
|
||||
|
||||
export = x;
|
||||
>x : Symbol(x, Decl(react.d.ts, 2, 4))
|
||||
}
|
||||
|
||||
declare module ReactRouter {
|
||||
>ReactRouter : Symbol(ReactRouter, Decl(react.d.ts, 4, 1))
|
||||
|
||||
var Route: any;
|
||||
>Route : Symbol(Route, Decl(react.d.ts, 7, 4))
|
||||
|
||||
interface Thing { }
|
||||
>Thing : Symbol(Thing, Decl(react.d.ts, 7, 16))
|
||||
}
|
||||
declare module 'react-router' {
|
||||
export = ReactRouter;
|
||||
>ReactRouter : Symbol(ReactRouter, Decl(react.d.ts, 4, 1))
|
||||
}
|
||||
|
||||
42
tests/baselines/reference/tsxPreserveEmit1.types
Normal file
42
tests/baselines/reference/tsxPreserveEmit1.types
Normal file
@ -0,0 +1,42 @@
|
||||
=== tests/cases/conformance/jsx/test.tsx ===
|
||||
// Should emit 'react-router' in the AMD dependency list
|
||||
import React = require('react');
|
||||
>React : any
|
||||
|
||||
import ReactRouter = require('react-router');
|
||||
>ReactRouter : typeof ReactRouter
|
||||
|
||||
import Route = ReactRouter.Route;
|
||||
>Route : any
|
||||
>ReactRouter : typeof ReactRouter
|
||||
>Route : any
|
||||
|
||||
var routes = <Route />;
|
||||
>routes : any
|
||||
><Route /> : any
|
||||
>Route : any
|
||||
|
||||
=== tests/cases/conformance/jsx/react.d.ts ===
|
||||
|
||||
declare module 'react' {
|
||||
var x: any;
|
||||
>x : any
|
||||
|
||||
export = x;
|
||||
>x : any
|
||||
}
|
||||
|
||||
declare module ReactRouter {
|
||||
>ReactRouter : typeof ReactRouter
|
||||
|
||||
var Route: any;
|
||||
>Route : any
|
||||
|
||||
interface Thing { }
|
||||
>Thing : Thing
|
||||
}
|
||||
declare module 'react-router' {
|
||||
export = ReactRouter;
|
||||
>ReactRouter : typeof ReactRouter
|
||||
}
|
||||
|
||||
26
tests/cases/conformance/jsx/tsxPreserveEmit1.tsx
Normal file
26
tests/cases/conformance/jsx/tsxPreserveEmit1.tsx
Normal file
@ -0,0 +1,26 @@
|
||||
//@module: amd
|
||||
//@jsx: preserve
|
||||
//@target: ES5
|
||||
|
||||
//@Filename: react.d.ts
|
||||
declare module 'react' {
|
||||
var x: any;
|
||||
export = x;
|
||||
}
|
||||
|
||||
declare module ReactRouter {
|
||||
var Route: any;
|
||||
interface Thing { }
|
||||
}
|
||||
declare module 'react-router' {
|
||||
export = ReactRouter;
|
||||
}
|
||||
|
||||
//@Filename: test.tsx
|
||||
// Should emit 'react-router' in the AMD dependency list
|
||||
import React = require('react');
|
||||
import ReactRouter = require('react-router');
|
||||
|
||||
import Route = ReactRouter.Route;
|
||||
|
||||
var routes = <Route />;
|
||||
Loading…
x
Reference in New Issue
Block a user