Update JSX intrinsic element test to match babel’s (#19946)
* Update JSX intrinsic element test to match babel’s * Update baseline * Move regex out of isIntrinsicJsxName * Switch to non-regex intrinsic name test
This commit is contained in:
parent
9c771958ab
commit
36ce7eac5a
|
@ -2434,10 +2434,8 @@ namespace ts {
|
|||
}
|
||||
|
||||
export function isIntrinsicJsxName(name: __String | string) {
|
||||
// An escaped identifier had a leading underscore prior to being escaped, which would return true
|
||||
// The escape adds an extra underscore which does not change the result
|
||||
const ch = (name as string).substr(0, 1);
|
||||
return ch.toLowerCase() === ch;
|
||||
const ch = (name as string).charCodeAt(0);
|
||||
return (ch >= CharacterCodes.a && ch <= CharacterCodes.z) || (name as string).indexOf("-") > -1;
|
||||
}
|
||||
|
||||
function get16BitUnicodeEscapeSequence(charCode: number): string {
|
||||
|
|
|
@ -1,19 +1,16 @@
|
|||
//// [index.tsx]
|
||||
declare global {
|
||||
namespace JSX {
|
||||
interface IntrinsicElements {
|
||||
__foot: any;
|
||||
}
|
||||
}
|
||||
function __make (params: object): any;
|
||||
}
|
||||
|
||||
declare var __foot: any;
|
||||
|
||||
const thing = <__foot></__foot>;
|
||||
const thing = <__foot />;
|
||||
|
||||
export {}
|
||||
export {}
|
||||
|
||||
|
||||
//// [index.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
var thing = __make("__foot", null);
|
||||
var thing = __make(__foot, null);
|
||||
|
|
|
@ -2,25 +2,17 @@
|
|||
declare global {
|
||||
>global : Symbol(global, Decl(index.tsx, 0, 0))
|
||||
|
||||
namespace JSX {
|
||||
>JSX : Symbol(JSX, Decl(index.tsx, 0, 16))
|
||||
|
||||
interface IntrinsicElements {
|
||||
>IntrinsicElements : Symbol(IntrinsicElements, Decl(index.tsx, 1, 19))
|
||||
|
||||
__foot: any;
|
||||
>__foot : Symbol(IntrinsicElements.__foot, Decl(index.tsx, 2, 37))
|
||||
}
|
||||
}
|
||||
function __make (params: object): any;
|
||||
>__make : Symbol(__make, Decl(index.tsx, 5, 5))
|
||||
>params : Symbol(params, Decl(index.tsx, 6, 21))
|
||||
>__make : Symbol(__make, Decl(index.tsx, 0, 16))
|
||||
>params : Symbol(params, Decl(index.tsx, 1, 21))
|
||||
}
|
||||
|
||||
declare var __foot: any;
|
||||
>__foot : Symbol(__foot, Decl(index.tsx, 4, 11))
|
||||
|
||||
const thing = <__foot></__foot>;
|
||||
>thing : Symbol(thing, Decl(index.tsx, 10, 5))
|
||||
>__foot : Symbol(JSX.IntrinsicElements.__foot, Decl(index.tsx, 2, 37))
|
||||
>__foot : Symbol(JSX.IntrinsicElements.__foot, Decl(index.tsx, 2, 37))
|
||||
const thing = <__foot />;
|
||||
>thing : Symbol(thing, Decl(index.tsx, 6, 5))
|
||||
>__foot : Symbol(__foot, Decl(index.tsx, 4, 11))
|
||||
|
||||
export {}
|
||||
|
||||
|
|
|
@ -2,26 +2,18 @@
|
|||
declare global {
|
||||
>global : typeof global
|
||||
|
||||
namespace JSX {
|
||||
>JSX : any
|
||||
|
||||
interface IntrinsicElements {
|
||||
>IntrinsicElements : IntrinsicElements
|
||||
|
||||
__foot: any;
|
||||
>__foot : any
|
||||
}
|
||||
}
|
||||
function __make (params: object): any;
|
||||
>__make : (params: object) => any
|
||||
>params : object
|
||||
}
|
||||
|
||||
|
||||
const thing = <__foot></__foot>;
|
||||
>thing : any
|
||||
><__foot></__foot> : any
|
||||
declare var __foot: any;
|
||||
>__foot : any
|
||||
|
||||
const thing = <__foot />;
|
||||
>thing : any
|
||||
><__foot /> : any
|
||||
>__foot : any
|
||||
|
||||
export {}
|
||||
|
||||
|
|
|
@ -47,8 +47,8 @@ declare var props;
|
|||
/>;
|
||||
|
||||
<日本語></日本語>;
|
||||
>日本語 : Symbol(unknown)
|
||||
>日本語 : Symbol(unknown)
|
||||
>日本語 : Symbol(日本語, Decl(jsxEsprimaFbTestSuite.tsx, 1, 11))
|
||||
>日本語 : Symbol(日本語, Decl(jsxEsprimaFbTestSuite.tsx, 1, 11))
|
||||
|
||||
<AbC_def
|
||||
>AbC_def : Symbol(AbC_def, Decl(jsxEsprimaFbTestSuite.tsx, 2, 11))
|
||||
|
|
|
@ -47,7 +47,8 @@ class A {
|
|||
<meta content={c.a!.b}></meta>
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//// [Element.js]
|
||||
"use strict";
|
||||
|
|
|
@ -122,3 +122,4 @@ class A {
|
|||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -137,3 +137,4 @@ class A {
|
|||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
declare var myReactLib: any;
|
||||
declare var foo: any;
|
||||
declare var Bar: any;
|
||||
declare var _Bar: any;
|
||||
declare var x: any;
|
||||
|
||||
<foo data/>;
|
||||
|
@ -9,6 +10,7 @@ declare var x: any;
|
|||
<x-component />;
|
||||
<Bar {...x} />;
|
||||
<Bar { ...x } y={2} />;
|
||||
<_Bar { ...x } />;
|
||||
|
||||
|
||||
//// [reactNamespaceJSXEmit.js]
|
||||
|
@ -25,3 +27,4 @@ myReactLib.createElement(Bar, { x: x });
|
|||
myReactLib.createElement("x-component", null);
|
||||
myReactLib.createElement(Bar, __assign({}, x));
|
||||
myReactLib.createElement(Bar, __assign({}, x, { y: 2 }));
|
||||
myReactLib.createElement(_Bar, __assign({}, x));
|
||||
|
|
|
@ -8,27 +8,34 @@ declare var foo: any;
|
|||
declare var Bar: any;
|
||||
>Bar : Symbol(Bar, Decl(reactNamespaceJSXEmit.tsx, 2, 11))
|
||||
|
||||
declare var _Bar: any;
|
||||
>_Bar : Symbol(_Bar, Decl(reactNamespaceJSXEmit.tsx, 3, 11))
|
||||
|
||||
declare var x: any;
|
||||
>x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 3, 11))
|
||||
>x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 4, 11))
|
||||
|
||||
<foo data/>;
|
||||
>foo : Symbol(unknown)
|
||||
>data : Symbol(data, Decl(reactNamespaceJSXEmit.tsx, 5, 4))
|
||||
>data : Symbol(data, Decl(reactNamespaceJSXEmit.tsx, 6, 4))
|
||||
|
||||
<Bar x={x} />;
|
||||
>Bar : Symbol(Bar, Decl(reactNamespaceJSXEmit.tsx, 2, 11))
|
||||
>x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 6, 4))
|
||||
>x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 3, 11))
|
||||
>x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 7, 4))
|
||||
>x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 4, 11))
|
||||
|
||||
<x-component />;
|
||||
>x-component : Symbol(unknown)
|
||||
|
||||
<Bar {...x} />;
|
||||
>Bar : Symbol(Bar, Decl(reactNamespaceJSXEmit.tsx, 2, 11))
|
||||
>x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 3, 11))
|
||||
>x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 4, 11))
|
||||
|
||||
<Bar { ...x } y={2} />;
|
||||
>Bar : Symbol(Bar, Decl(reactNamespaceJSXEmit.tsx, 2, 11))
|
||||
>x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 3, 11))
|
||||
>y : Symbol(y, Decl(reactNamespaceJSXEmit.tsx, 9, 13))
|
||||
>x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 4, 11))
|
||||
>y : Symbol(y, Decl(reactNamespaceJSXEmit.tsx, 10, 13))
|
||||
|
||||
<_Bar { ...x } />;
|
||||
>_Bar : Symbol(_Bar, Decl(reactNamespaceJSXEmit.tsx, 3, 11))
|
||||
>x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 4, 11))
|
||||
|
||||
|
|
|
@ -8,6 +8,9 @@ declare var foo: any;
|
|||
declare var Bar: any;
|
||||
>Bar : any
|
||||
|
||||
declare var _Bar: any;
|
||||
>_Bar : any
|
||||
|
||||
declare var x: any;
|
||||
>x : any
|
||||
|
||||
|
@ -38,3 +41,8 @@ declare var x: any;
|
|||
>y : number
|
||||
>2 : 2
|
||||
|
||||
<_Bar { ...x } />;
|
||||
><_Bar { ...x } /> : any
|
||||
>_Bar : any
|
||||
>x : any
|
||||
|
||||
|
|
|
@ -4,15 +4,11 @@
|
|||
// @filename: index.tsx
|
||||
|
||||
declare global {
|
||||
namespace JSX {
|
||||
interface IntrinsicElements {
|
||||
__foot: any;
|
||||
}
|
||||
}
|
||||
function __make (params: object): any;
|
||||
}
|
||||
|
||||
declare var __foot: any;
|
||||
|
||||
const thing = <__foot></__foot>;
|
||||
const thing = <__foot />;
|
||||
|
||||
export {}
|
||||
export {}
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
//@jsx: react
|
||||
//@target: es6
|
||||
//@module: commonjs
|
||||
//@jsxFactory: createElement
|
||||
//@sourcemap: true
|
||||
|
||||
// @filename: Element.ts
|
||||
//@jsx: react
|
||||
//@target: es6
|
||||
//@module: commonjs
|
||||
//@jsxFactory: createElement
|
||||
//@sourcemap: true
|
||||
|
||||
// @filename: Element.ts
|
||||
declare namespace JSX {
|
||||
interface Element {
|
||||
name: string;
|
||||
|
@ -33,9 +33,9 @@ export let createElement = Element.createElement;
|
|||
|
||||
function toCamelCase(text: string): string {
|
||||
return text[0].toLowerCase() + text.substring(1);
|
||||
}
|
||||
|
||||
// @filename: test.tsx
|
||||
}
|
||||
|
||||
// @filename: test.tsx
|
||||
import { Element} from './Element';
|
||||
let createElement = Element.createElement;
|
||||
let c: {
|
||||
|
@ -51,4 +51,4 @@ class A {
|
|||
<meta content={c.a!.b}></meta>
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
declare var myReactLib: any;
|
||||
declare var foo: any;
|
||||
declare var Bar: any;
|
||||
declare var _Bar: any;
|
||||
declare var x: any;
|
||||
|
||||
<foo data/>;
|
||||
|
@ -11,3 +12,4 @@ declare var x: any;
|
|||
<x-component />;
|
||||
<Bar {...x} />;
|
||||
<Bar { ...x } y={2} />;
|
||||
<_Bar { ...x } />;
|
||||
|
|
Loading…
Reference in a new issue