From e5d648c41cd9740c4397dda6c340d6ce1600b808 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Tue, 10 Nov 2020 14:51:41 +0100 Subject: [PATCH] Add actual baseline for a problem with global namespace being preferred over config implicit one --- ...jsxNamespaceImplicitImportJSXNamespace2.js | 55 ++++++ ...mespaceImplicitImportJSXNamespace2.symbols | 137 +++++++++++++ ...NamespaceImplicitImportJSXNamespace2.types | 85 ++++++++ ...JSXNamespacePickedOverGlobalOne.errors.txt | 70 +++++++ ...itImportJSXNamespacePickedOverGlobalOne.js | 73 +++++++ ...ortJSXNamespacePickedOverGlobalOne.symbols | 184 ++++++++++++++++++ ...mportJSXNamespacePickedOverGlobalOne.types | 112 +++++++++++ ...tImportJSXNamespacePickedOverGlobalOne.tsx | 65 +++++++ 8 files changed, 781 insertions(+) create mode 100644 tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace2.js create mode 100644 tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace2.symbols create mode 100644 tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace2.types create mode 100644 tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.errors.txt create mode 100644 tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.js create mode 100644 tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.symbols create mode 100644 tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.types create mode 100644 tests/cases/compiler/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.tsx diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace2.js b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace2.js new file mode 100644 index 0000000000000..24caaf33d7b9d --- /dev/null +++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace2.js @@ -0,0 +1,55 @@ +//// [tests/cases/compiler/jsxNamespaceImplicitImportJSXNamespace2.tsx] //// + +//// [index.d.ts] +export { EmotionJSX as JSX } from './jsx-namespace' + +//// [jsx-namespace.d.ts] +import 'react' + +type WithConditionalCSSProp

= 'className' extends keyof P + ? (P extends { className?: string } ? P & { css?: string } : P) + : P + +type ReactJSXElement = JSX.Element +type ReactJSXElementClass = JSX.ElementClass +type ReactJSXElementAttributesProperty = JSX.ElementAttributesProperty +type ReactJSXElementChildrenAttribute = JSX.ElementChildrenAttribute +type ReactJSXLibraryManagedAttributes = JSX.LibraryManagedAttributes +type ReactJSXIntrinsicAttributes = JSX.IntrinsicAttributes +type ReactJSXIntrinsicClassAttributes = JSX.IntrinsicClassAttributes +type ReactJSXIntrinsicElements = JSX.IntrinsicElements + +export namespace EmotionJSX { + interface Element extends ReactJSXElement {} + interface ElementClass extends ReactJSXElementClass {} + interface ElementAttributesProperty + extends ReactJSXElementAttributesProperty {} + interface ElementChildrenAttribute extends ReactJSXElementChildrenAttribute {} + + type LibraryManagedAttributes = WithConditionalCSSProp

& + ReactJSXLibraryManagedAttributes + + interface IntrinsicAttributes extends ReactJSXIntrinsicAttributes {} + interface IntrinsicClassAttributes + extends ReactJSXIntrinsicClassAttributes {} + + type IntrinsicElements = { + [K in keyof ReactJSXIntrinsicElements]: ReactJSXIntrinsicElements[K] & { + css?: string + } + } +} + +//// [index.tsx] +/// +export const Comp = () =>

; + + +//// [index.js] +"use strict"; +exports.__esModule = true; +exports.Comp = void 0; +var jsx_runtime_1 = require("@emotion/react/jsx-runtime"); +/// +var Comp = function () { return jsx_runtime_1.jsx("div", { css: "color: hotpink;" }, void 0); }; +exports.Comp = Comp; diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace2.symbols b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace2.symbols new file mode 100644 index 0000000000000..672417409c2e0 --- /dev/null +++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace2.symbols @@ -0,0 +1,137 @@ +=== /index.tsx === +/// +export const Comp = () =>
; +>Comp : Symbol(Comp, Decl(index.tsx, 1, 12)) +>div : Symbol(div, Decl(react16.d.ts, 2420, 114)) +>css : Symbol(css, Decl(index.tsx, 1, 30)) +>div : Symbol(div, Decl(react16.d.ts, 2420, 114)) + +=== /node_modules/@emotion/react/jsx-runtime/index.d.ts === +export { EmotionJSX as JSX } from './jsx-namespace' +>EmotionJSX : Symbol(EmotionJSX, Decl(jsx-namespace.d.ts, 13, 54)) +>JSX : Symbol(JSX, Decl(index.d.ts, 0, 8)) + +=== /node_modules/@emotion/react/jsx-runtime/jsx-namespace.d.ts === +import 'react' + +type WithConditionalCSSProp

= 'className' extends keyof P +>WithConditionalCSSProp : Symbol(WithConditionalCSSProp, Decl(jsx-namespace.d.ts, 0, 14)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 2, 28)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 2, 28)) + + ? (P extends { className?: string } ? P & { css?: string } : P) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 2, 28)) +>className : Symbol(className, Decl(jsx-namespace.d.ts, 3, 16)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 2, 28)) +>css : Symbol(css, Decl(jsx-namespace.d.ts, 3, 45)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 2, 28)) + + : P +>P : Symbol(P, Decl(jsx-namespace.d.ts, 2, 28)) + +type ReactJSXElement = JSX.Element +>ReactJSXElement : Symbol(ReactJSXElement, Decl(jsx-namespace.d.ts, 4, 5)) +>JSX : Symbol(JSX, Decl(react16.d.ts, 2367, 12)) +>Element : Symbol(JSX.Element, Decl(react16.d.ts, 2368, 23)) + +type ReactJSXElementClass = JSX.ElementClass +>ReactJSXElementClass : Symbol(ReactJSXElementClass, Decl(jsx-namespace.d.ts, 6, 34)) +>JSX : Symbol(JSX, Decl(react16.d.ts, 2367, 12)) +>ElementClass : Symbol(JSX.ElementClass, Decl(react16.d.ts, 2370, 65)) + +type ReactJSXElementAttributesProperty = JSX.ElementAttributesProperty +>ReactJSXElementAttributesProperty : Symbol(ReactJSXElementAttributesProperty, Decl(jsx-namespace.d.ts, 7, 44)) +>JSX : Symbol(JSX, Decl(react16.d.ts, 2367, 12)) +>ElementAttributesProperty : Symbol(JSX.ElementAttributesProperty, Decl(react16.d.ts, 2373, 13)) + +type ReactJSXElementChildrenAttribute = JSX.ElementChildrenAttribute +>ReactJSXElementChildrenAttribute : Symbol(ReactJSXElementChildrenAttribute, Decl(jsx-namespace.d.ts, 8, 70)) +>JSX : Symbol(JSX, Decl(react16.d.ts, 2367, 12)) +>ElementChildrenAttribute : Symbol(JSX.ElementChildrenAttribute, Decl(react16.d.ts, 2374, 62)) + +type ReactJSXLibraryManagedAttributes = JSX.LibraryManagedAttributes +>ReactJSXLibraryManagedAttributes : Symbol(ReactJSXLibraryManagedAttributes, Decl(jsx-namespace.d.ts, 9, 68)) +>C : Symbol(C, Decl(jsx-namespace.d.ts, 10, 38)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 10, 40)) +>JSX : Symbol(JSX, Decl(react16.d.ts, 2367, 12)) +>LibraryManagedAttributes : Symbol(JSX.LibraryManagedAttributes, Decl(react16.d.ts, 2375, 64)) +>C : Symbol(C, Decl(jsx-namespace.d.ts, 10, 38)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 10, 40)) + +type ReactJSXIntrinsicAttributes = JSX.IntrinsicAttributes +>ReactJSXIntrinsicAttributes : Symbol(ReactJSXIntrinsicAttributes, Decl(jsx-namespace.d.ts, 10, 80)) +>JSX : Symbol(JSX, Decl(react16.d.ts, 2367, 12)) +>IntrinsicAttributes : Symbol(JSX.IntrinsicAttributes, Decl(react16.d.ts, 2383, 20)) + +type ReactJSXIntrinsicClassAttributes = JSX.IntrinsicClassAttributes +>ReactJSXIntrinsicClassAttributes : Symbol(ReactJSXIntrinsicClassAttributes, Decl(jsx-namespace.d.ts, 11, 58)) +>T : Symbol(T, Decl(jsx-namespace.d.ts, 12, 38)) +>JSX : Symbol(JSX, Decl(react16.d.ts, 2367, 12)) +>IntrinsicClassAttributes : Symbol(JSX.IntrinsicClassAttributes, Decl(react16.d.ts, 2386, 70)) +>T : Symbol(T, Decl(jsx-namespace.d.ts, 12, 38)) + +type ReactJSXIntrinsicElements = JSX.IntrinsicElements +>ReactJSXIntrinsicElements : Symbol(ReactJSXIntrinsicElements, Decl(jsx-namespace.d.ts, 12, 74)) +>JSX : Symbol(JSX, Decl(react16.d.ts, 2367, 12)) +>IntrinsicElements : Symbol(JSX.IntrinsicElements, Decl(react16.d.ts, 2388, 86)) + +export namespace EmotionJSX { +>EmotionJSX : Symbol(EmotionJSX, Decl(jsx-namespace.d.ts, 13, 54)) + + interface Element extends ReactJSXElement {} +>Element : Symbol(Element, Decl(jsx-namespace.d.ts, 15, 29)) +>ReactJSXElement : Symbol(ReactJSXElement, Decl(jsx-namespace.d.ts, 4, 5)) + + interface ElementClass extends ReactJSXElementClass {} +>ElementClass : Symbol(ElementClass, Decl(jsx-namespace.d.ts, 16, 46)) +>ReactJSXElementClass : Symbol(ReactJSXElementClass, Decl(jsx-namespace.d.ts, 6, 34)) + + interface ElementAttributesProperty +>ElementAttributesProperty : Symbol(ElementAttributesProperty, Decl(jsx-namespace.d.ts, 17, 56)) + + extends ReactJSXElementAttributesProperty {} +>ReactJSXElementAttributesProperty : Symbol(ReactJSXElementAttributesProperty, Decl(jsx-namespace.d.ts, 7, 44)) + + interface ElementChildrenAttribute extends ReactJSXElementChildrenAttribute {} +>ElementChildrenAttribute : Symbol(ElementChildrenAttribute, Decl(jsx-namespace.d.ts, 19, 48)) +>ReactJSXElementChildrenAttribute : Symbol(ReactJSXElementChildrenAttribute, Decl(jsx-namespace.d.ts, 8, 70)) + + type LibraryManagedAttributes = WithConditionalCSSProp

& +>LibraryManagedAttributes : Symbol(LibraryManagedAttributes, Decl(jsx-namespace.d.ts, 20, 80)) +>C : Symbol(C, Decl(jsx-namespace.d.ts, 22, 32)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 22, 34)) +>WithConditionalCSSProp : Symbol(WithConditionalCSSProp, Decl(jsx-namespace.d.ts, 0, 14)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 22, 34)) + + ReactJSXLibraryManagedAttributes +>ReactJSXLibraryManagedAttributes : Symbol(ReactJSXLibraryManagedAttributes, Decl(jsx-namespace.d.ts, 9, 68)) +>C : Symbol(C, Decl(jsx-namespace.d.ts, 22, 32)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 22, 34)) + + interface IntrinsicAttributes extends ReactJSXIntrinsicAttributes {} +>IntrinsicAttributes : Symbol(IntrinsicAttributes, Decl(jsx-namespace.d.ts, 23, 42)) +>ReactJSXIntrinsicAttributes : Symbol(ReactJSXIntrinsicAttributes, Decl(jsx-namespace.d.ts, 10, 80)) + + interface IntrinsicClassAttributes +>IntrinsicClassAttributes : Symbol(IntrinsicClassAttributes, Decl(jsx-namespace.d.ts, 25, 70)) +>T : Symbol(T, Decl(jsx-namespace.d.ts, 26, 37)) + + extends ReactJSXIntrinsicClassAttributes {} +>ReactJSXIntrinsicClassAttributes : Symbol(ReactJSXIntrinsicClassAttributes, Decl(jsx-namespace.d.ts, 11, 58)) +>T : Symbol(T, Decl(jsx-namespace.d.ts, 26, 37)) + + type IntrinsicElements = { +>IntrinsicElements : Symbol(IntrinsicElements, Decl(jsx-namespace.d.ts, 27, 50)) + + [K in keyof ReactJSXIntrinsicElements]: ReactJSXIntrinsicElements[K] & { +>K : Symbol(K, Decl(jsx-namespace.d.ts, 30, 5)) +>ReactJSXIntrinsicElements : Symbol(ReactJSXIntrinsicElements, Decl(jsx-namespace.d.ts, 12, 74)) +>ReactJSXIntrinsicElements : Symbol(ReactJSXIntrinsicElements, Decl(jsx-namespace.d.ts, 12, 74)) +>K : Symbol(K, Decl(jsx-namespace.d.ts, 30, 5)) + + css?: string +>css : Symbol(css, Decl(jsx-namespace.d.ts, 30, 76)) + } + } +} + diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace2.types b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace2.types new file mode 100644 index 0000000000000..bac8dd4df1ada --- /dev/null +++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace2.types @@ -0,0 +1,85 @@ +=== /index.tsx === +/// +export const Comp = () =>

; +>Comp : () => import("/node_modules/@emotion/react/jsx-runtime/jsx-namespace").EmotionJSX.Element +>() =>
: () => import("/node_modules/@emotion/react/jsx-runtime/jsx-namespace").EmotionJSX.Element +>
: import("/node_modules/@emotion/react/jsx-runtime/jsx-namespace").EmotionJSX.Element +>div : any +>css : string +>div : any + +=== /node_modules/@emotion/react/jsx-runtime/index.d.ts === +export { EmotionJSX as JSX } from './jsx-namespace' +>EmotionJSX : any +>JSX : any + +=== /node_modules/@emotion/react/jsx-runtime/jsx-namespace.d.ts === +import 'react' + +type WithConditionalCSSProp

= 'className' extends keyof P +>WithConditionalCSSProp : WithConditionalCSSProp

+ + ? (P extends { className?: string } ? P & { css?: string } : P) +>className : string | undefined +>css : string | undefined + + : P + +type ReactJSXElement = JSX.Element +>ReactJSXElement : JSX.Element +>JSX : any + +type ReactJSXElementClass = JSX.ElementClass +>ReactJSXElementClass : JSX.ElementClass +>JSX : any + +type ReactJSXElementAttributesProperty = JSX.ElementAttributesProperty +>ReactJSXElementAttributesProperty : JSX.ElementAttributesProperty +>JSX : any + +type ReactJSXElementChildrenAttribute = JSX.ElementChildrenAttribute +>ReactJSXElementChildrenAttribute : JSX.ElementChildrenAttribute +>JSX : any + +type ReactJSXLibraryManagedAttributes = JSX.LibraryManagedAttributes +>ReactJSXLibraryManagedAttributes : JSX.LibraryManagedAttributes +>JSX : any + +type ReactJSXIntrinsicAttributes = JSX.IntrinsicAttributes +>ReactJSXIntrinsicAttributes : JSX.IntrinsicAttributes +>JSX : any + +type ReactJSXIntrinsicClassAttributes = JSX.IntrinsicClassAttributes +>ReactJSXIntrinsicClassAttributes : ReactJSXIntrinsicClassAttributes +>JSX : any + +type ReactJSXIntrinsicElements = JSX.IntrinsicElements +>ReactJSXIntrinsicElements : JSX.IntrinsicElements +>JSX : any + +export namespace EmotionJSX { + interface Element extends ReactJSXElement {} + interface ElementClass extends ReactJSXElementClass {} + interface ElementAttributesProperty + extends ReactJSXElementAttributesProperty {} + interface ElementChildrenAttribute extends ReactJSXElementChildrenAttribute {} + + type LibraryManagedAttributes = WithConditionalCSSProp

& +>LibraryManagedAttributes : LibraryManagedAttributes + + ReactJSXLibraryManagedAttributes + + interface IntrinsicAttributes extends ReactJSXIntrinsicAttributes {} + interface IntrinsicClassAttributes + extends ReactJSXIntrinsicClassAttributes {} + + type IntrinsicElements = { +>IntrinsicElements : IntrinsicElements + + [K in keyof ReactJSXIntrinsicElements]: ReactJSXIntrinsicElements[K] & { + css?: string +>css : string | undefined + } + } +} + diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.errors.txt b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.errors.txt new file mode 100644 index 0000000000000..9cbe47a9ee62c --- /dev/null +++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.errors.txt @@ -0,0 +1,70 @@ +/index.tsx(1,32): error TS2322: Type '{ css: string; }' is not assignable to type '{}'. + Property 'css' does not exist on type '{}'. + + +==== /node_modules/react/index.d.ts (0 errors) ==== + export = React; + export as namespace React; + + declare namespace React {} + + declare global { + namespace JSX { + interface Element {} + interface ElementClass {} + interface ElementAttributesProperty {} + interface ElementChildrenAttribute {} + type LibraryManagedAttributes = {} + interface IntrinsicAttributes {} + interface IntrinsicClassAttributes {} + interface IntrinsicElements { + div: {} + } + } + } +==== /node_modules/@emotion/react/jsx-runtime/index.d.ts (0 errors) ==== + export { EmotionJSX as JSX } from './jsx-namespace' + +==== /node_modules/@emotion/react/jsx-runtime/jsx-namespace.d.ts (0 errors) ==== + import 'react' + + type WithConditionalCSSProp

= 'className' extends keyof P + ? (P extends { className?: string } ? P & { css?: string } : P) + : P + + type ReactJSXElement = JSX.Element + type ReactJSXElementClass = JSX.ElementClass + type ReactJSXElementAttributesProperty = JSX.ElementAttributesProperty + type ReactJSXElementChildrenAttribute = JSX.ElementChildrenAttribute + type ReactJSXLibraryManagedAttributes = JSX.LibraryManagedAttributes + type ReactJSXIntrinsicAttributes = JSX.IntrinsicAttributes + type ReactJSXIntrinsicClassAttributes = JSX.IntrinsicClassAttributes + type ReactJSXIntrinsicElements = JSX.IntrinsicElements + + export namespace EmotionJSX { + interface Element extends ReactJSXElement {} + interface ElementClass extends ReactJSXElementClass {} + interface ElementAttributesProperty + extends ReactJSXElementAttributesProperty {} + interface ElementChildrenAttribute extends ReactJSXElementChildrenAttribute {} + + type LibraryManagedAttributes = WithConditionalCSSProp

& + ReactJSXLibraryManagedAttributes + + interface IntrinsicAttributes extends ReactJSXIntrinsicAttributes {} + interface IntrinsicClassAttributes + extends ReactJSXIntrinsicClassAttributes {} + + type IntrinsicElements = { + [K in keyof ReactJSXIntrinsicElements]: ReactJSXIntrinsicElements[K] & { + css?: string + } + } + } + +==== /index.tsx (1 errors) ==== + export const Comp = () =>

; + ~~~ +!!! error TS2322: Type '{ css: string; }' is not assignable to type '{}'. +!!! error TS2322: Property 'css' does not exist on type '{}'. + \ No newline at end of file diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.js b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.js new file mode 100644 index 0000000000000..510a758c3c554 --- /dev/null +++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.js @@ -0,0 +1,73 @@ +//// [tests/cases/compiler/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.tsx] //// + +//// [index.d.ts] +export = React; +export as namespace React; + +declare namespace React {} + +declare global { + namespace JSX { + interface Element {} + interface ElementClass {} + interface ElementAttributesProperty {} + interface ElementChildrenAttribute {} + type LibraryManagedAttributes = {} + interface IntrinsicAttributes {} + interface IntrinsicClassAttributes {} + interface IntrinsicElements { + div: {} + } + } +} +//// [index.d.ts] +export { EmotionJSX as JSX } from './jsx-namespace' + +//// [jsx-namespace.d.ts] +import 'react' + +type WithConditionalCSSProp

= 'className' extends keyof P + ? (P extends { className?: string } ? P & { css?: string } : P) + : P + +type ReactJSXElement = JSX.Element +type ReactJSXElementClass = JSX.ElementClass +type ReactJSXElementAttributesProperty = JSX.ElementAttributesProperty +type ReactJSXElementChildrenAttribute = JSX.ElementChildrenAttribute +type ReactJSXLibraryManagedAttributes = JSX.LibraryManagedAttributes +type ReactJSXIntrinsicAttributes = JSX.IntrinsicAttributes +type ReactJSXIntrinsicClassAttributes = JSX.IntrinsicClassAttributes +type ReactJSXIntrinsicElements = JSX.IntrinsicElements + +export namespace EmotionJSX { + interface Element extends ReactJSXElement {} + interface ElementClass extends ReactJSXElementClass {} + interface ElementAttributesProperty + extends ReactJSXElementAttributesProperty {} + interface ElementChildrenAttribute extends ReactJSXElementChildrenAttribute {} + + type LibraryManagedAttributes = WithConditionalCSSProp

& + ReactJSXLibraryManagedAttributes + + interface IntrinsicAttributes extends ReactJSXIntrinsicAttributes {} + interface IntrinsicClassAttributes + extends ReactJSXIntrinsicClassAttributes {} + + type IntrinsicElements = { + [K in keyof ReactJSXIntrinsicElements]: ReactJSXIntrinsicElements[K] & { + css?: string + } + } +} + +//// [index.tsx] +export const Comp = () =>

; + + +//// [index.js] +"use strict"; +exports.__esModule = true; +exports.Comp = void 0; +var jsx_runtime_1 = require("@emotion/react/jsx-runtime"); +var Comp = function () { return jsx_runtime_1.jsx("div", { css: "color: hotpink;" }, void 0); }; +exports.Comp = Comp; diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.symbols b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.symbols new file mode 100644 index 0000000000000..8d16fd5c00e91 --- /dev/null +++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.symbols @@ -0,0 +1,184 @@ +=== /node_modules/react/index.d.ts === +export = React; +>React : Symbol(React, Decl(index.d.ts, 1, 26)) + +export as namespace React; +>React : Symbol(React, Decl(index.d.ts, 0, 15)) + +declare namespace React {} +>React : Symbol(React, Decl(index.d.ts, 1, 26)) + +declare global { +>global : Symbol(global, Decl(index.d.ts, 3, 26)) + + namespace JSX { +>JSX : Symbol(JSX, Decl(index.d.ts, 5, 16)) + + interface Element {} +>Element : Symbol(Element, Decl(index.d.ts, 6, 17)) + + interface ElementClass {} +>ElementClass : Symbol(ElementClass, Decl(index.d.ts, 7, 24)) + + interface ElementAttributesProperty {} +>ElementAttributesProperty : Symbol(ElementAttributesProperty, Decl(index.d.ts, 8, 29)) + + interface ElementChildrenAttribute {} +>ElementChildrenAttribute : Symbol(ElementChildrenAttribute, Decl(index.d.ts, 9, 42)) + + type LibraryManagedAttributes = {} +>LibraryManagedAttributes : Symbol(LibraryManagedAttributes, Decl(index.d.ts, 10, 41)) +>C : Symbol(C, Decl(index.d.ts, 11, 34)) +>P : Symbol(P, Decl(index.d.ts, 11, 36)) + + interface IntrinsicAttributes {} +>IntrinsicAttributes : Symbol(IntrinsicAttributes, Decl(index.d.ts, 11, 44)) + + interface IntrinsicClassAttributes {} +>IntrinsicClassAttributes : Symbol(IntrinsicClassAttributes, Decl(index.d.ts, 12, 36)) +>T : Symbol(T, Decl(index.d.ts, 13, 39)) + + interface IntrinsicElements { +>IntrinsicElements : Symbol(IntrinsicElements, Decl(index.d.ts, 13, 44)) + + div: {} +>div : Symbol(IntrinsicElements.div, Decl(index.d.ts, 14, 33)) + } + } +} +=== /node_modules/@emotion/react/jsx-runtime/index.d.ts === +export { EmotionJSX as JSX } from './jsx-namespace' +>EmotionJSX : Symbol(EmotionJSX, Decl(jsx-namespace.d.ts, 13, 54)) +>JSX : Symbol(JSX, Decl(index.d.ts, 0, 8)) + +=== /node_modules/@emotion/react/jsx-runtime/jsx-namespace.d.ts === +import 'react' + +type WithConditionalCSSProp

= 'className' extends keyof P +>WithConditionalCSSProp : Symbol(WithConditionalCSSProp, Decl(jsx-namespace.d.ts, 0, 14)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 2, 28)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 2, 28)) + + ? (P extends { className?: string } ? P & { css?: string } : P) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 2, 28)) +>className : Symbol(className, Decl(jsx-namespace.d.ts, 3, 16)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 2, 28)) +>css : Symbol(css, Decl(jsx-namespace.d.ts, 3, 45)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 2, 28)) + + : P +>P : Symbol(P, Decl(jsx-namespace.d.ts, 2, 28)) + +type ReactJSXElement = JSX.Element +>ReactJSXElement : Symbol(ReactJSXElement, Decl(jsx-namespace.d.ts, 4, 5)) +>JSX : Symbol(JSX, Decl(index.d.ts, 5, 16)) +>Element : Symbol(JSX.Element, Decl(index.d.ts, 6, 17)) + +type ReactJSXElementClass = JSX.ElementClass +>ReactJSXElementClass : Symbol(ReactJSXElementClass, Decl(jsx-namespace.d.ts, 6, 34)) +>JSX : Symbol(JSX, Decl(index.d.ts, 5, 16)) +>ElementClass : Symbol(JSX.ElementClass, Decl(index.d.ts, 7, 24)) + +type ReactJSXElementAttributesProperty = JSX.ElementAttributesProperty +>ReactJSXElementAttributesProperty : Symbol(ReactJSXElementAttributesProperty, Decl(jsx-namespace.d.ts, 7, 44)) +>JSX : Symbol(JSX, Decl(index.d.ts, 5, 16)) +>ElementAttributesProperty : Symbol(JSX.ElementAttributesProperty, Decl(index.d.ts, 8, 29)) + +type ReactJSXElementChildrenAttribute = JSX.ElementChildrenAttribute +>ReactJSXElementChildrenAttribute : Symbol(ReactJSXElementChildrenAttribute, Decl(jsx-namespace.d.ts, 8, 70)) +>JSX : Symbol(JSX, Decl(index.d.ts, 5, 16)) +>ElementChildrenAttribute : Symbol(JSX.ElementChildrenAttribute, Decl(index.d.ts, 9, 42)) + +type ReactJSXLibraryManagedAttributes = JSX.LibraryManagedAttributes +>ReactJSXLibraryManagedAttributes : Symbol(ReactJSXLibraryManagedAttributes, Decl(jsx-namespace.d.ts, 9, 68)) +>C : Symbol(C, Decl(jsx-namespace.d.ts, 10, 38)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 10, 40)) +>JSX : Symbol(JSX, Decl(index.d.ts, 5, 16)) +>LibraryManagedAttributes : Symbol(JSX.LibraryManagedAttributes, Decl(index.d.ts, 10, 41)) +>C : Symbol(C, Decl(jsx-namespace.d.ts, 10, 38)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 10, 40)) + +type ReactJSXIntrinsicAttributes = JSX.IntrinsicAttributes +>ReactJSXIntrinsicAttributes : Symbol(ReactJSXIntrinsicAttributes, Decl(jsx-namespace.d.ts, 10, 80)) +>JSX : Symbol(JSX, Decl(index.d.ts, 5, 16)) +>IntrinsicAttributes : Symbol(JSX.IntrinsicAttributes, Decl(index.d.ts, 11, 44)) + +type ReactJSXIntrinsicClassAttributes = JSX.IntrinsicClassAttributes +>ReactJSXIntrinsicClassAttributes : Symbol(ReactJSXIntrinsicClassAttributes, Decl(jsx-namespace.d.ts, 11, 58)) +>T : Symbol(T, Decl(jsx-namespace.d.ts, 12, 38)) +>JSX : Symbol(JSX, Decl(index.d.ts, 5, 16)) +>IntrinsicClassAttributes : Symbol(JSX.IntrinsicClassAttributes, Decl(index.d.ts, 12, 36)) +>T : Symbol(T, Decl(jsx-namespace.d.ts, 12, 38)) + +type ReactJSXIntrinsicElements = JSX.IntrinsicElements +>ReactJSXIntrinsicElements : Symbol(ReactJSXIntrinsicElements, Decl(jsx-namespace.d.ts, 12, 74)) +>JSX : Symbol(JSX, Decl(index.d.ts, 5, 16)) +>IntrinsicElements : Symbol(JSX.IntrinsicElements, Decl(index.d.ts, 13, 44)) + +export namespace EmotionJSX { +>EmotionJSX : Symbol(EmotionJSX, Decl(jsx-namespace.d.ts, 13, 54)) + + interface Element extends ReactJSXElement {} +>Element : Symbol(Element, Decl(jsx-namespace.d.ts, 15, 29)) +>ReactJSXElement : Symbol(ReactJSXElement, Decl(jsx-namespace.d.ts, 4, 5)) + + interface ElementClass extends ReactJSXElementClass {} +>ElementClass : Symbol(ElementClass, Decl(jsx-namespace.d.ts, 16, 46)) +>ReactJSXElementClass : Symbol(ReactJSXElementClass, Decl(jsx-namespace.d.ts, 6, 34)) + + interface ElementAttributesProperty +>ElementAttributesProperty : Symbol(ElementAttributesProperty, Decl(jsx-namespace.d.ts, 17, 56)) + + extends ReactJSXElementAttributesProperty {} +>ReactJSXElementAttributesProperty : Symbol(ReactJSXElementAttributesProperty, Decl(jsx-namespace.d.ts, 7, 44)) + + interface ElementChildrenAttribute extends ReactJSXElementChildrenAttribute {} +>ElementChildrenAttribute : Symbol(ElementChildrenAttribute, Decl(jsx-namespace.d.ts, 19, 48)) +>ReactJSXElementChildrenAttribute : Symbol(ReactJSXElementChildrenAttribute, Decl(jsx-namespace.d.ts, 8, 70)) + + type LibraryManagedAttributes = WithConditionalCSSProp

& +>LibraryManagedAttributes : Symbol(LibraryManagedAttributes, Decl(jsx-namespace.d.ts, 20, 80)) +>C : Symbol(C, Decl(jsx-namespace.d.ts, 22, 32)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 22, 34)) +>WithConditionalCSSProp : Symbol(WithConditionalCSSProp, Decl(jsx-namespace.d.ts, 0, 14)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 22, 34)) + + ReactJSXLibraryManagedAttributes +>ReactJSXLibraryManagedAttributes : Symbol(ReactJSXLibraryManagedAttributes, Decl(jsx-namespace.d.ts, 9, 68)) +>C : Symbol(C, Decl(jsx-namespace.d.ts, 22, 32)) +>P : Symbol(P, Decl(jsx-namespace.d.ts, 22, 34)) + + interface IntrinsicAttributes extends ReactJSXIntrinsicAttributes {} +>IntrinsicAttributes : Symbol(IntrinsicAttributes, Decl(jsx-namespace.d.ts, 23, 42)) +>ReactJSXIntrinsicAttributes : Symbol(ReactJSXIntrinsicAttributes, Decl(jsx-namespace.d.ts, 10, 80)) + + interface IntrinsicClassAttributes +>IntrinsicClassAttributes : Symbol(IntrinsicClassAttributes, Decl(jsx-namespace.d.ts, 25, 70)) +>T : Symbol(T, Decl(jsx-namespace.d.ts, 26, 37)) + + extends ReactJSXIntrinsicClassAttributes {} +>ReactJSXIntrinsicClassAttributes : Symbol(ReactJSXIntrinsicClassAttributes, Decl(jsx-namespace.d.ts, 11, 58)) +>T : Symbol(T, Decl(jsx-namespace.d.ts, 26, 37)) + + type IntrinsicElements = { +>IntrinsicElements : Symbol(IntrinsicElements, Decl(jsx-namespace.d.ts, 27, 50)) + + [K in keyof ReactJSXIntrinsicElements]: ReactJSXIntrinsicElements[K] & { +>K : Symbol(K, Decl(jsx-namespace.d.ts, 30, 5)) +>ReactJSXIntrinsicElements : Symbol(ReactJSXIntrinsicElements, Decl(jsx-namespace.d.ts, 12, 74)) +>ReactJSXIntrinsicElements : Symbol(ReactJSXIntrinsicElements, Decl(jsx-namespace.d.ts, 12, 74)) +>K : Symbol(K, Decl(jsx-namespace.d.ts, 30, 5)) + + css?: string +>css : Symbol(css, Decl(jsx-namespace.d.ts, 30, 76)) + } + } +} + +=== /index.tsx === +export const Comp = () =>

; +>Comp : Symbol(Comp, Decl(index.tsx, 0, 12)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(index.d.ts, 14, 33)) +>css : Symbol(css, Decl(index.tsx, 0, 30)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(index.d.ts, 14, 33)) + diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.types b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.types new file mode 100644 index 0000000000000..908570a3e5f76 --- /dev/null +++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.types @@ -0,0 +1,112 @@ +=== /node_modules/react/index.d.ts === +export = React; +>React : any + +export as namespace React; +>React : any + +declare namespace React {} + +declare global { +>global : any + + namespace JSX { + interface Element {} + interface ElementClass {} + interface ElementAttributesProperty {} + interface ElementChildrenAttribute {} + type LibraryManagedAttributes = {} +>LibraryManagedAttributes : LibraryManagedAttributes + + interface IntrinsicAttributes {} + interface IntrinsicClassAttributes {} + interface IntrinsicElements { + div: {} +>div : {} + } + } +} +=== /node_modules/@emotion/react/jsx-runtime/index.d.ts === +export { EmotionJSX as JSX } from './jsx-namespace' +>EmotionJSX : any +>JSX : any + +=== /node_modules/@emotion/react/jsx-runtime/jsx-namespace.d.ts === +import 'react' + +type WithConditionalCSSProp

= 'className' extends keyof P +>WithConditionalCSSProp : WithConditionalCSSProp

+ + ? (P extends { className?: string } ? P & { css?: string } : P) +>className : string | undefined +>css : string | undefined + + : P + +type ReactJSXElement = JSX.Element +>ReactJSXElement : JSX.Element +>JSX : any + +type ReactJSXElementClass = JSX.ElementClass +>ReactJSXElementClass : JSX.ElementClass +>JSX : any + +type ReactJSXElementAttributesProperty = JSX.ElementAttributesProperty +>ReactJSXElementAttributesProperty : JSX.ElementAttributesProperty +>JSX : any + +type ReactJSXElementChildrenAttribute = JSX.ElementChildrenAttribute +>ReactJSXElementChildrenAttribute : JSX.ElementChildrenAttribute +>JSX : any + +type ReactJSXLibraryManagedAttributes = JSX.LibraryManagedAttributes +>ReactJSXLibraryManagedAttributes : JSX.LibraryManagedAttributes +>JSX : any + +type ReactJSXIntrinsicAttributes = JSX.IntrinsicAttributes +>ReactJSXIntrinsicAttributes : JSX.IntrinsicAttributes +>JSX : any + +type ReactJSXIntrinsicClassAttributes = JSX.IntrinsicClassAttributes +>ReactJSXIntrinsicClassAttributes : ReactJSXIntrinsicClassAttributes +>JSX : any + +type ReactJSXIntrinsicElements = JSX.IntrinsicElements +>ReactJSXIntrinsicElements : JSX.IntrinsicElements +>JSX : any + +export namespace EmotionJSX { + interface Element extends ReactJSXElement {} + interface ElementClass extends ReactJSXElementClass {} + interface ElementAttributesProperty + extends ReactJSXElementAttributesProperty {} + interface ElementChildrenAttribute extends ReactJSXElementChildrenAttribute {} + + type LibraryManagedAttributes = WithConditionalCSSProp

& +>LibraryManagedAttributes : LibraryManagedAttributes + + ReactJSXLibraryManagedAttributes + + interface IntrinsicAttributes extends ReactJSXIntrinsicAttributes {} + interface IntrinsicClassAttributes + extends ReactJSXIntrinsicClassAttributes {} + + type IntrinsicElements = { +>IntrinsicElements : IntrinsicElements + + [K in keyof ReactJSXIntrinsicElements]: ReactJSXIntrinsicElements[K] & { + css?: string +>css : string | undefined + } + } +} + +=== /index.tsx === +export const Comp = () =>

; +>Comp : () => JSX.Element +>() =>
: () => JSX.Element +>
: JSX.Element +>div : any +>css : string +>div : any + diff --git a/tests/cases/compiler/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.tsx b/tests/cases/compiler/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.tsx new file mode 100644 index 0000000000000..c226c1f7c8d49 --- /dev/null +++ b/tests/cases/compiler/jsxNamespaceImplicitImportJSXNamespacePickedOverGlobalOne.tsx @@ -0,0 +1,65 @@ +// @strict: true +// @jsx: react-jsx +// @jsxImportSource: @emotion/react +// @filename: /node_modules/react/index.d.ts +export = React; +export as namespace React; + +declare namespace React {} + +declare global { + namespace JSX { + interface Element {} + interface ElementClass {} + interface ElementAttributesProperty {} + interface ElementChildrenAttribute {} + type LibraryManagedAttributes = {} + interface IntrinsicAttributes {} + interface IntrinsicClassAttributes {} + interface IntrinsicElements { + div: {} + } + } +} +// @filename: /node_modules/@emotion/react/jsx-runtime/index.d.ts +export { EmotionJSX as JSX } from './jsx-namespace' + +// @filename: /node_modules/@emotion/react/jsx-runtime/jsx-namespace.d.ts +import 'react' + +type WithConditionalCSSProp

= 'className' extends keyof P + ? (P extends { className?: string } ? P & { css?: string } : P) + : P + +type ReactJSXElement = JSX.Element +type ReactJSXElementClass = JSX.ElementClass +type ReactJSXElementAttributesProperty = JSX.ElementAttributesProperty +type ReactJSXElementChildrenAttribute = JSX.ElementChildrenAttribute +type ReactJSXLibraryManagedAttributes = JSX.LibraryManagedAttributes +type ReactJSXIntrinsicAttributes = JSX.IntrinsicAttributes +type ReactJSXIntrinsicClassAttributes = JSX.IntrinsicClassAttributes +type ReactJSXIntrinsicElements = JSX.IntrinsicElements + +export namespace EmotionJSX { + interface Element extends ReactJSXElement {} + interface ElementClass extends ReactJSXElementClass {} + interface ElementAttributesProperty + extends ReactJSXElementAttributesProperty {} + interface ElementChildrenAttribute extends ReactJSXElementChildrenAttribute {} + + type LibraryManagedAttributes = WithConditionalCSSProp

& + ReactJSXLibraryManagedAttributes + + interface IntrinsicAttributes extends ReactJSXIntrinsicAttributes {} + interface IntrinsicClassAttributes + extends ReactJSXIntrinsicClassAttributes {} + + type IntrinsicElements = { + [K in keyof ReactJSXIntrinsicElements]: ReactJSXIntrinsicElements[K] & { + css?: string + } + } +} + +// @filename: /index.tsx +export const Comp = () =>

;