Add a test for JSX namespace lookup with jsx: preserve, jsxImportSource (#41676)

* Add a test for JSX namespace lookup with `jsx: preserve, jsxImportSource`

* updated baselines

Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
This commit is contained in:
Mateusz Burzyński 2021-03-11 18:07:33 +01:00 committed by GitHub
parent dcaefe732e
commit 998ecd9c06
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 398 additions and 18 deletions

View File

@ -119,8 +119,8 @@
"containerKind": "",
"containerName": "",
"fileName": "/a.js",
"kind": "property",
"name": "(property) f: () => void",
"kind": "alias",
"name": "(alias) function f(): void\nimport f",
"textSpan": {
"start": 32,
"length": 1
@ -131,7 +131,7 @@
"kind": "punctuation"
},
{
"text": "property",
"text": "alias",
"kind": "text"
},
{
@ -143,17 +143,17 @@
"kind": "space"
},
{
"text": "f",
"kind": "propertyName"
},
{
"text": ":",
"kind": "punctuation"
"text": "function",
"kind": "keyword"
},
{
"text": " ",
"kind": "space"
},
{
"text": "f",
"kind": "aliasName"
},
{
"text": "(",
"kind": "punctuation"
@ -163,11 +163,7 @@
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "=>",
"text": ":",
"kind": "punctuation"
},
{
@ -177,6 +173,22 @@
{
"text": "void",
"kind": "keyword"
},
{
"text": "\n",
"kind": "lineBreak"
},
{
"text": "import",
"kind": "keyword"
},
{
"text": " ",
"kind": "space"
},
{
"text": "f",
"kind": "aliasName"
}
],
"contextSpan": {

View File

@ -1150,9 +1150,9 @@ define(function () {
>'[object Array]' : "[object Array]"
: Array.isArray;
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
>Array.isArray : (arg: any) => arg is any[]
>Array : ArrayConstructor
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
>isArray : (arg: any) => arg is any[]
function equalIC(a, b) {
>equalIC : (a: any, b: any) => boolean

View File

@ -5,7 +5,7 @@
// module.exports.[|logWarning|] = message => { };
// === /bin/serverless.js ===
// /*FIND ALL REFS*/require('../lib/classes/Error').[|logWarning|](`CLI triage crashed with: ${error.stack}`);
// require('../lib/classes/Error').[|log/*FIND ALL REFS*/Warning|](`CLI triage crashed with: ${error.stack}`);
[
{

View File

@ -0,0 +1,72 @@
//// [tests/cases/compiler/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne.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<C, P> = {}
interface IntrinsicAttributes {}
interface IntrinsicClassAttributes<T> {}
interface IntrinsicElements {
div: {}
}
}
}
//// [index.d.ts]
export { EmotionJSX as JSX } from './jsx-namespace'
//// [jsx-namespace.d.ts]
import 'react'
type WithConditionalCSSProp<P> = '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<C, P> = JSX.LibraryManagedAttributes<C, P>
type ReactJSXIntrinsicAttributes = JSX.IntrinsicAttributes
type ReactJSXIntrinsicClassAttributes<T> = JSX.IntrinsicClassAttributes<T>
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<C, P> = WithConditionalCSSProp<P> &
ReactJSXLibraryManagedAttributes<C, P>
interface IntrinsicAttributes extends ReactJSXIntrinsicAttributes {}
interface IntrinsicClassAttributes<T>
extends ReactJSXIntrinsicClassAttributes<T> {}
type IntrinsicElements = {
[K in keyof ReactJSXIntrinsicElements]: ReactJSXIntrinsicElements[K] & {
css?: string
}
}
}
//// [index.tsx]
export const Comp = () => <div css="color: hotpink;"></div>;
//// [index.jsx]
"use strict";
exports.__esModule = true;
exports.Comp = void 0;
var Comp = function () { return <div css="color: hotpink;"></div>; };
exports.Comp = Comp;

View File

@ -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<C, P> = {}
>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<T> {}
>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<P> = '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<C, P> = JSX.LibraryManagedAttributes<C, P>
>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<T> = JSX.IntrinsicClassAttributes<T>
>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<C, P> = WithConditionalCSSProp<P> &
>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<C, P>
>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<T>
>IntrinsicClassAttributes : Symbol(IntrinsicClassAttributes, Decl(jsx-namespace.d.ts, 25, 70))
>T : Symbol(T, Decl(jsx-namespace.d.ts, 26, 37))
extends ReactJSXIntrinsicClassAttributes<T> {}
>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 = () => <div css="color: hotpink;"></div>;
>Comp : Symbol(Comp, Decl(index.tsx, 0, 12))
>div : Symbol(div, Decl(index.d.ts, 14, 33))
>css : Symbol(css, Decl(index.tsx, 0, 30))
>div : Symbol(div, Decl(index.d.ts, 14, 33))

View File

@ -0,0 +1,112 @@
=== /node_modules/react/index.d.ts ===
export = React;
>React : any
export as namespace React;
>React : error
declare namespace React {}
declare global {
>global : any
namespace JSX {
interface Element {}
interface ElementClass {}
interface ElementAttributesProperty {}
interface ElementChildrenAttribute {}
type LibraryManagedAttributes<C, P> = {}
>LibraryManagedAttributes : LibraryManagedAttributes<C, P>
interface IntrinsicAttributes {}
interface IntrinsicClassAttributes<T> {}
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<P> = 'className' extends keyof P
>WithConditionalCSSProp : WithConditionalCSSProp<P>
? (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<C, P> = JSX.LibraryManagedAttributes<C, P>
>ReactJSXLibraryManagedAttributes : ReactJSXLibraryManagedAttributes<C, P>
>JSX : any
type ReactJSXIntrinsicAttributes = JSX.IntrinsicAttributes
>ReactJSXIntrinsicAttributes : JSX.IntrinsicAttributes
>JSX : any
type ReactJSXIntrinsicClassAttributes<T> = JSX.IntrinsicClassAttributes<T>
>ReactJSXIntrinsicClassAttributes : ReactJSXIntrinsicClassAttributes<T>
>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<C, P> = WithConditionalCSSProp<P> &
>LibraryManagedAttributes : LibraryManagedAttributes<C, P>
ReactJSXLibraryManagedAttributes<C, P>
interface IntrinsicAttributes extends ReactJSXIntrinsicAttributes {}
interface IntrinsicClassAttributes<T>
extends ReactJSXIntrinsicClassAttributes<T> {}
type IntrinsicElements = {
>IntrinsicElements : IntrinsicElements
[K in keyof ReactJSXIntrinsicElements]: ReactJSXIntrinsicElements[K] & {
css?: string
>css : string | undefined
}
}
}
=== /index.tsx ===
export const Comp = () => <div css="color: hotpink;"></div>;
>Comp : () => import("/node_modules/@emotion/react/jsx-runtime/jsx-namespace").EmotionJSX.Element
>() => <div css="color: hotpink;"></div> : () => import("/node_modules/@emotion/react/jsx-runtime/jsx-namespace").EmotionJSX.Element
><div css="color: hotpink;"></div> : import("/node_modules/@emotion/react/jsx-runtime/jsx-namespace").EmotionJSX.Element
>div : any
>css : string
>div : any

View File

@ -1,5 +1,5 @@
// @strict: true
// @jsx: react-jsx
// @jsx: preserve,react-jsx
// @jsxImportSource: @emotion/react
// @filename: /node_modules/react/index.d.ts
export = React;