Skip to content

Commit 16e96f6

Browse files
authored
feat(47439): omit optional key from jsx output (microsoft#47467)
1 parent cecd8c5 commit 16e96f6

File tree

39 files changed

+156
-63
lines changed

39 files changed

+156
-63
lines changed

src/compiler/transformers/jsx.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,10 +242,19 @@ namespace ts {
242242
const nonWhitespaceChildren = getSemanticJsxChildren(children);
243243
const isStaticChildren =
244244
length(nonWhitespaceChildren) > 1 || !!(nonWhitespaceChildren[0] as JsxExpression)?.dotDotDotToken;
245-
const args: Expression[] = [tagName, objectProperties, !keyAttr ? factory.createVoidZero() : transformJsxAttributeInitializer(keyAttr.initializer)];
245+
const args: Expression[] = [tagName, objectProperties];
246+
// function jsx(type, config, maybeKey) {}
247+
// "maybeKey" is optional. It is acceptable to use "_jsx" without a third argument
248+
if (keyAttr) {
249+
args.push(transformJsxAttributeInitializer(keyAttr.initializer));
250+
}
246251
if (compilerOptions.jsx === JsxEmit.ReactJSXDev) {
247252
const originalFile = getOriginalNode(currentSourceFile);
248253
if (originalFile && isSourceFile(originalFile)) {
254+
// "maybeKey" has to be replaced with "void 0" to not break the jsxDEV signature
255+
if (keyAttr === undefined) {
256+
args.push(factory.createVoidZero());
257+
}
249258
// isStaticChildren development flag
250259
args.push(isStaticChildren ? factory.createTrue() : factory.createFalse());
251260
// __source development flag
@@ -259,6 +268,7 @@ namespace ts {
259268
args.push(factory.createThis());
260269
}
261270
}
271+
262272
const element = setTextRange(
263273
factory.createCallExpression(getJsxFactoryCallee(isStaticChildren), /*typeArguments*/ undefined, args),
264274
location

tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsx,module=commonjs).js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ var Component = /** @class */ (function () {
2525
function Component() {
2626
}
2727
Component.prototype.render = function () {
28-
return (0, _a.jsx)("div", { children: null /* preserved */ }, void 0);
28+
return (0, _a.jsx)("div", { children: null /* preserved */ });
2929
};
3030
return Component;
3131
}());

tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsx,module=system).js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ var Component = /** @class */ (function () {
2525
function Component() {
2626
}
2727
Component.prototype.render = function () {
28-
return _jsx("div", { children: null /* preserved */ }, void 0);
28+
return _jsx("div", { children: null /* preserved */ });
2929
};
3030
return Component;
3131
}());

tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ const element = (
2222
exports.__esModule = true;
2323
var jsx_runtime_1 = require("react/jsx-runtime");
2424
function Wrapper(props) {
25-
return (0, jsx_runtime_1.jsx)("div", { children: props.children }, void 0);
25+
return (0, jsx_runtime_1.jsx)("div", { children: props.children });
2626
}
27-
var element = ((0, jsx_runtime_1.jsx)(Wrapper, { children: (0, jsx_runtime_1.jsx)("div", { children: "Hello" }, void 0) }, void 0));
27+
var element = ((0, jsx_runtime_1.jsx)(Wrapper, { children: (0, jsx_runtime_1.jsx)("div", { children: "Hello" }) }));

tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsx).js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ export {};
1010
exports.__esModule = true;
1111
var jsx_runtime_1 = require("react/jsx-runtime");
1212
/// <reference path="react16.d.ts" />
13-
var a = (0, jsx_runtime_1.jsx)("div", { children: "text" }, void 0);
13+
var a = (0, jsx_runtime_1.jsx)("div", { children: "text" });

tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsx).js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ export {};
1313
exports.__esModule = true;
1414
var jsx_runtime_1 = require("preact/jsx-runtime");
1515
/// <reference path="react16.d.ts" />
16-
var a = (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("p", {}, void 0), "text", (0, jsx_runtime_1.jsx)("div", { className: "foo" }, void 0)] }, void 0);
16+
var a = (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("p", {}), "text", (0, jsx_runtime_1.jsx)("div", { className: "foo" })] });

tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsx).js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ exports.__esModule = true;
2828
var jsx_runtime_1 = require("preact/jsx-runtime");
2929
/// <reference path="react16.d.ts" />
3030
/* @jsxImportSource preact */
31-
var a = (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("p", {}, void 0), "text", (0, jsx_runtime_1.jsx)("div", { className: "foo" }, void 0)] }, void 0);
31+
var a = (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("p", {}), "text", (0, jsx_runtime_1.jsx)("div", { className: "foo" })] });
3232
//// [react.js]
3333
"use strict";
3434
exports.__esModule = true;
3535
var jsx_runtime_1 = require("react/jsx-runtime");
3636
/// <reference path="react16.d.ts" />
3737
/* @jsxImportSource react */
3838
require("./preact");
39-
var a = (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("p", {}, void 0), "text", (0, jsx_runtime_1.jsx)("div", { className: "foo" }, void 0)] }, void 0);
39+
var a = (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("p", {}), "text", (0, jsx_runtime_1.jsx)("div", { className: "foo" })] });

tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ console.log(
2525
"use strict";
2626
exports.__esModule = true;
2727
var jsx_runtime_1 = require("react/jsx-runtime");
28-
console.log((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("div", {}, void 0) }, void 0));
29-
console.log((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", {}, void 0), (0, jsx_runtime_1.jsx)("div", {}, void 0)] }, void 0));
30-
console.log((0, jsx_runtime_1.jsx)("div", { children: [1, 2].map(function (i) { return (0, jsx_runtime_1.jsx)("div", { children: i }, i); }) }, void 0));
28+
console.log((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("div", {}) }));
29+
console.log((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", {}), (0, jsx_runtime_1.jsx)("div", {})] }));
30+
console.log((0, jsx_runtime_1.jsx)("div", { children: [1, 2].map(function (i) { return (0, jsx_runtime_1.jsx)("div", { children: i }, i); }) }));

tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsx).js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ export {};
99
exports.__esModule = true;
1010
var jsx_runtime_1 = require("react/jsx-runtime");
1111
/// <reference path="react16.d.ts" />
12-
var a = (0, jsx_runtime_1.jsx)("div", {}, void 0);
12+
var a = (0, jsx_runtime_1.jsx)("div", {});

tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsx).js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ export {};
1313
exports.__esModule = true;
1414
var jsx_runtime_1 = require("react/jsx-runtime");
1515
/// <reference path="react16.d.ts" />
16-
var a = (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("p", {}, void 0), "text", (0, jsx_runtime_1.jsx)("div", {}, void 0)] }, void 0);
16+
var a = (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("p", {}), "text", (0, jsx_runtime_1.jsx)("div", {})] });

tests/baselines/reference/jsxNamespaceGlobalReexport.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,5 +110,5 @@ export const Comp = () => <div></div>;
110110
exports.__esModule = true;
111111
exports.Comp = void 0;
112112
var jsx_runtime_1 = require("preact/jsx-runtime");
113-
var Comp = function () { return (0, jsx_runtime_1.jsx)("div", {}, void 0); };
113+
var Comp = function () { return (0, jsx_runtime_1.jsx)("div", {}); };
114114
exports.Comp = Comp;

tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,5 +106,5 @@ export const Comp = () => <div></div>;
106106
exports.__esModule = true;
107107
exports.Comp = void 0;
108108
var jsx_runtime_1 = require("preact/jsx-runtime");
109-
var Comp = function () { return (0, jsx_runtime_1.jsx)("div", {}, void 0); };
109+
var Comp = function () { return (0, jsx_runtime_1.jsx)("div", {}); };
110110
exports.Comp = Comp;

tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,5 +106,5 @@ export const Comp = () => <div></div>;
106106
exports.__esModule = true;
107107
exports.Comp = void 0;
108108
var jsx_runtime_1 = require("preact/jsx-runtime");
109-
var Comp = function () { return (0, jsx_runtime_1.jsx)("div", {}, void 0); };
109+
var Comp = function () { return (0, jsx_runtime_1.jsx)("div", {}); };
110110
exports.Comp = Comp;

tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne(jsx=react-jsx).js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,5 @@ export const Comp = () => <div css="color: hotpink;"></div>;
6969
exports.__esModule = true;
7070
exports.Comp = void 0;
7171
var jsx_runtime_1 = require("@emotion/react/jsx-runtime");
72-
var Comp = function () { return (0, jsx_runtime_1.jsx)("div", { css: "color: hotpink;" }, void 0); };
72+
var Comp = function () { return (0, jsx_runtime_1.jsx)("div", { css: "color: hotpink;" }); };
7373
exports.Comp = Comp;

tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromPragmaPickedOverGlobalOne.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,5 +71,5 @@ exports.__esModule = true;
7171
exports.Comp = void 0;
7272
var jsx_runtime_1 = require("@emotion/react/jsx-runtime");
7373
/* @jsxImportSource @emotion/react */
74-
var Comp = function () { return (0, jsx_runtime_1.jsx)("div", { css: "color: hotpink;" }, void 0); };
74+
var Comp = function () { return (0, jsx_runtime_1.jsx)("div", { css: "color: hotpink;" }); };
7575
exports.Comp = Comp;

tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsx).js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ exports.__esModule = true;
1717
exports.Foo = void 0;
1818
var jsx_runtime_1 = require("react/jsx-runtime");
1919
function Bar() {
20-
return (0, jsx_runtime_1.jsx)("div", {}, void 0);
20+
return (0, jsx_runtime_1.jsx)("div", {});
2121
}
2222
function Foo() {
23-
return (0, jsx_runtime_1.jsx)(Bar, {}, void 0);
23+
return (0, jsx_runtime_1.jsx)(Bar, {});
2424
}
2525
exports.Foo = Foo;

tests/baselines/reference/reactJsxReactResolvedNodeNext.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,4 @@ import './';
2424
Object.defineProperty(exports, "__esModule", { value: true });
2525
exports.a = void 0;
2626
const jsx_runtime_1 = require("react/jsx-runtime");
27-
exports.a = (0, jsx_runtime_1.jsx)("div", {}, void 0);
27+
exports.a = (0, jsx_runtime_1.jsx)("div", {});

tests/baselines/reference/reactJsxReactResolvedNodeNextEsm.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ import './';
2929

3030
//// [file.js]
3131
import { jsx as _jsx } from "react/jsx-runtime";
32-
export const a = _jsx("div", {}, void 0);
32+
export const a = _jsx("div", {});

tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash-under---strict.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated
5757
exports.__esModule = true;
5858
exports.App = void 0;
5959
var jsx_runtime_1 = require("react/jsx-runtime");
60-
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
60+
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
6161
exports.App = App;
6262

6363

tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ exitCode:: ExitStatus.Success
4949
exports.__esModule = true;
5050
exports.App = void 0;
5151
var jsx_runtime_1 = require("react/jsx-runtime");
52-
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
52+
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
5353
exports.App = App;
5454

5555

tests/baselines/reference/tscWatch/forceConsistentCasingInFileNames/jsxImportSource-option-changed.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ exitCode:: ExitStatus.undefined
106106
exports.__esModule = true;
107107
exports.App = void 0;
108108
var jsx_runtime_1 = require("react/jsx-runtime");
109-
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
109+
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
110110
exports.App = App;
111111

112112

tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-incremental.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated
6161
exports.__esModule = true;
6262
exports.App = void 0;
6363
var jsx_runtime_1 = require("react/jsx-runtime");
64-
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
64+
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
6565
exports.App = App;
6666

6767

tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-watch.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ exitCode:: ExitStatus.undefined
7575
exports.__esModule = true;
7676
exports.App = void 0;
7777
var jsx_runtime_1 = require("react/jsx-runtime");
78-
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
78+
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
7979
exports.App = App;
8080

8181

tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-incremental.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ exitCode:: ExitStatus.Success
7373
exports.__esModule = true;
7474
exports.App = void 0;
7575
var jsx_runtime_1 = require("react/jsx-runtime");
76-
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
76+
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
7777
exports.App = App;
7878

7979

tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-watch.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ exitCode:: ExitStatus.undefined
9696
exports.__esModule = true;
9797
exports.App = void 0;
9898
var jsx_runtime_1 = require("react/jsx-runtime");
99-
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
99+
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
100100
exports.App = App;
101101

102102

tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-incremental.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ exitCode:: ExitStatus.Success
9696
exports.__esModule = true;
9797
exports.App = void 0;
9898
var jsx_runtime_1 = require("react/jsx-runtime");
99-
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
99+
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
100100
exports.App = App;
101101
102102
@@ -212,7 +212,7 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated
212212
exports.__esModule = true;
213213
exports.App = void 0;
214214
var jsx_runtime_1 = require("preact/jsx-runtime");
215-
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
215+
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
216216
exports.App = App;
217217

218218

tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-watch.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ exitCode:: ExitStatus.undefined
119119
exports.__esModule = true;
120120
exports.App = void 0;
121121
var jsx_runtime_1 = require("react/jsx-runtime");
122-
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
122+
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
123123
exports.App = App;
124124
125125
@@ -255,7 +255,7 @@ exitCode:: ExitStatus.undefined
255255
exports.__esModule = true;
256256
exports.App = void 0;
257257
var jsx_runtime_1 = require("preact/jsx-runtime");
258-
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
258+
var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
259259
exports.App = App;
260260

261261

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//// [tsxReactEmit8.tsx]
2+
/// <reference path="/.lib/react16.d.ts" />
3+
4+
<div>1</div>;
5+
<div key={"key-attr"}>2</div>;
6+
7+
8+
//// [tsxReactEmit8.js]
9+
/// <reference path="react16.d.ts" />
10+
_jsx("div", { children: "1" });
11+
_jsx("div", { children: "2" }, "key-attr");
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
=== tests/cases/conformance/jsx/tsxReactEmit8.tsx ===
2+
/// <reference path="react16.d.ts" />
3+
4+
<div>1</div>;
5+
>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
6+
>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
7+
8+
<div key={"key-attr"}>2</div>;
9+
>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
10+
>key : Symbol(key, Decl(tsxReactEmit8.tsx, 3, 4))
11+
>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
12+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
=== tests/cases/conformance/jsx/tsxReactEmit8.tsx ===
2+
/// <reference path="react16.d.ts" />
3+
4+
<div>1</div>;
5+
><div>1</div> : JSX.Element
6+
>div : any
7+
>div : any
8+
9+
<div key={"key-attr"}>2</div>;
10+
><div key={"key-attr"}>2</div> : JSX.Element
11+
>div : any
12+
>key : string
13+
>"key-attr" : "key-attr"
14+
>div : any
15+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//// [tsxReactEmit8.tsx]
2+
/// <reference path="/.lib/react16.d.ts" />
3+
4+
<div>1</div>;
5+
<div key={"key-attr"}>2</div>;
6+
7+
8+
//// [tsxReactEmit8.js]
9+
const _jsxFileName = "tests/cases/conformance/jsx/tsxReactEmit8.tsx";
10+
/// <reference path="react16.d.ts" />
11+
_jsxDEV("div", { children: "1" }, void 0, false, { fileName: _jsxFileName, lineNumber: 1, columnNumber: 1 }, this);
12+
_jsxDEV("div", { children: "2" }, "key-attr", false, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 14 }, this);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
=== tests/cases/conformance/jsx/tsxReactEmit8.tsx ===
2+
/// <reference path="react16.d.ts" />
3+
4+
<div>1</div>;
5+
>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
6+
>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
7+
8+
<div key={"key-attr"}>2</div>;
9+
>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
10+
>key : Symbol(key, Decl(tsxReactEmit8.tsx, 3, 4))
11+
>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
12+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
=== tests/cases/conformance/jsx/tsxReactEmit8.tsx ===
2+
/// <reference path="react16.d.ts" />
3+
4+
<div>1</div>;
5+
><div>1</div> : JSX.Element
6+
>div : any
7+
>div : any
8+
9+
<div key={"key-attr"}>2</div>;
10+
><div key={"key-attr"}>2</div> : JSX.Element
11+
>div : any
12+
>key : string
13+
>"key-attr" : "key-attr"
14+
>div : any
15+

tests/baselines/reference/tsxReactEmitSpreadAttribute(target=es2015).js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,23 +34,23 @@ export function T7(a: any, b: any, c: any, d: any) {
3434
import { jsx as _jsx } from "react/jsx-runtime";
3535
/// <reference path="react16.d.ts" />
3636
export function T1(a) {
37-
return _jsx("div", Object.assign({ className: "T1" }, a, { children: "T1" }), void 0);
37+
return _jsx("div", Object.assign({ className: "T1" }, a, { children: "T1" }));
3838
}
3939
export function T2(a, b) {
40-
return _jsx("div", Object.assign({ className: "T2" }, a, b, { children: "T2" }), void 0);
40+
return _jsx("div", Object.assign({ className: "T2" }, a, b, { children: "T2" }));
4141
}
4242
export function T3(a, b) {
43-
return _jsx("div", Object.assign({}, a, { className: "T3" }, b, { children: "T3" }), void 0);
43+
return _jsx("div", Object.assign({}, a, { className: "T3" }, b, { children: "T3" }));
4444
}
4545
export function T4(a, b) {
46-
return _jsx("div", Object.assign({ className: "T4" }, Object.assign(Object.assign({}, a), b), { children: "T4" }), void 0);
46+
return _jsx("div", Object.assign({ className: "T4" }, Object.assign(Object.assign({}, a), b), { children: "T4" }));
4747
}
4848
export function T5(a, b, c, d) {
49-
return _jsx("div", Object.assign({ className: "T5" }, Object.assign(Object.assign(Object.assign({}, a), b), { c, d }), { children: "T5" }), void 0);
49+
return _jsx("div", Object.assign({ className: "T5" }, Object.assign(Object.assign(Object.assign({}, a), b), { c, d }), { children: "T5" }));
5050
}
5151
export function T6(a, b, c, d) {
52-
return _jsx("div", Object.assign({ className: "T6" }, Object.assign(Object.assign(Object.assign({}, a), b), Object.assign(Object.assign({}, c), d)), { children: "T6" }), void 0);
52+
return _jsx("div", Object.assign({ className: "T6" }, Object.assign(Object.assign(Object.assign({}, a), b), Object.assign(Object.assign({}, c), d)), { children: "T6" }));
5353
}
5454
export function T7(a, b, c, d) {
55-
return _jsx("div", { children: "T7" }, void 0);
55+
return _jsx("div", { children: "T7" });
5656
}

0 commit comments

Comments
 (0)