diff --git a/src/compiler/transformers/jsx.ts b/src/compiler/transformers/jsx.ts
index c54f79c9f66f6..d321e74817bd4 100644
--- a/src/compiler/transformers/jsx.ts
+++ b/src/compiler/transformers/jsx.ts
@@ -242,10 +242,19 @@ namespace ts {
const nonWhitespaceChildren = getSemanticJsxChildren(children);
const isStaticChildren =
length(nonWhitespaceChildren) > 1 || !!(nonWhitespaceChildren[0] as JsxExpression)?.dotDotDotToken;
- const args: Expression[] = [tagName, objectProperties, !keyAttr ? factory.createVoidZero() : transformJsxAttributeInitializer(keyAttr.initializer)];
+ const args: Expression[] = [tagName, objectProperties];
+ // function jsx(type, config, maybeKey) {}
+ // "maybeKey" is optional. It is acceptable to use "_jsx" without a third argument
+ if (keyAttr) {
+ args.push(transformJsxAttributeInitializer(keyAttr.initializer));
+ }
if (compilerOptions.jsx === JsxEmit.ReactJSXDev) {
const originalFile = getOriginalNode(currentSourceFile);
if (originalFile && isSourceFile(originalFile)) {
+ // "maybeKey" has to be replaced with "void 0" to not break the jsxDEV signature
+ if (keyAttr === undefined) {
+ args.push(factory.createVoidZero());
+ }
// isStaticChildren development flag
args.push(isStaticChildren ? factory.createTrue() : factory.createFalse());
// __source development flag
@@ -259,6 +268,7 @@ namespace ts {
args.push(factory.createThis());
}
}
+
const element = setTextRange(
factory.createCallExpression(getJsxFactoryCallee(isStaticChildren), /*typeArguments*/ undefined, args),
location
diff --git a/tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsx,module=commonjs).js b/tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsx,module=commonjs).js
index eee8eb6aff00a..5ed8e680add05 100644
--- a/tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsx,module=commonjs).js
+++ b/tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsx,module=commonjs).js
@@ -25,7 +25,7 @@ var Component = /** @class */ (function () {
function Component() {
}
Component.prototype.render = function () {
- return (0, _a.jsx)("div", { children: null /* preserved */ }, void 0);
+ return (0, _a.jsx)("div", { children: null /* preserved */ });
};
return Component;
}());
diff --git a/tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsx,module=system).js b/tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsx,module=system).js
index c8b14c6198d70..7dfb4487e41d5 100644
--- a/tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsx,module=system).js
+++ b/tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsx,module=system).js
@@ -25,7 +25,7 @@ var Component = /** @class */ (function () {
function Component() {
}
Component.prototype.render = function () {
- return _jsx("div", { children: null /* preserved */ }, void 0);
+ return _jsx("div", { children: null /* preserved */ });
};
return Component;
}());
diff --git a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).js b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).js
index 628a88e6df036..72845d881a37a 100644
--- a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).js
+++ b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).js
@@ -22,6 +22,6 @@ const element = (
exports.__esModule = true;
var jsx_runtime_1 = require("react/jsx-runtime");
function Wrapper(props) {
- return (0, jsx_runtime_1.jsx)("div", { children: props.children }, void 0);
+ return (0, jsx_runtime_1.jsx)("div", { children: props.children });
}
-var element = ((0, jsx_runtime_1.jsx)(Wrapper, { children: (0, jsx_runtime_1.jsx)("div", { children: "Hello" }, void 0) }, void 0));
+var element = ((0, jsx_runtime_1.jsx)(Wrapper, { children: (0, jsx_runtime_1.jsx)("div", { children: "Hello" }) }));
diff --git a/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsx).js b/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsx).js
index 6bb4e171cf7fb..2bf6a140dea6f 100644
--- a/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsx).js
+++ b/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsx).js
@@ -10,4 +10,4 @@ export {};
exports.__esModule = true;
var jsx_runtime_1 = require("react/jsx-runtime");
///
-var a = (0, jsx_runtime_1.jsx)("div", { children: "text" }, void 0);
+var a = (0, jsx_runtime_1.jsx)("div", { children: "text" });
diff --git a/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsx).js b/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsx).js
index 44c248f819084..5b98b87b31981 100644
--- a/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsx).js
+++ b/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsx).js
@@ -13,4 +13,4 @@ export {};
exports.__esModule = true;
var jsx_runtime_1 = require("preact/jsx-runtime");
///
-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);
+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" })] });
diff --git a/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsx).js b/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsx).js
index 04ecd0966b83f..70c683f242bbf 100644
--- a/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsx).js
+++ b/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsx).js
@@ -28,7 +28,7 @@ exports.__esModule = true;
var jsx_runtime_1 = require("preact/jsx-runtime");
///
/* @jsxImportSource preact */
-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);
+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" })] });
//// [react.js]
"use strict";
exports.__esModule = true;
@@ -36,4 +36,4 @@ var jsx_runtime_1 = require("react/jsx-runtime");
///
/* @jsxImportSource react */
require("./preact");
-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);
+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" })] });
diff --git a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).js b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).js
index 58aa36ae906f3..58a87dc9b86b8 100644
--- a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).js
+++ b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).js
@@ -25,6 +25,6 @@ console.log(
"use strict";
exports.__esModule = true;
var jsx_runtime_1 = require("react/jsx-runtime");
-console.log((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("div", {}, void 0) }, void 0));
-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));
-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));
+console.log((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("div", {}) }));
+console.log((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", {}), (0, jsx_runtime_1.jsx)("div", {})] }));
+console.log((0, jsx_runtime_1.jsx)("div", { children: [1, 2].map(function (i) { return (0, jsx_runtime_1.jsx)("div", { children: i }, i); }) }));
diff --git a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsx).js b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsx).js
index 9e00c8d0152ca..912e958c96c49 100644
--- a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsx).js
+++ b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsx).js
@@ -9,4 +9,4 @@ export {};
exports.__esModule = true;
var jsx_runtime_1 = require("react/jsx-runtime");
///
-var a = (0, jsx_runtime_1.jsx)("div", {}, void 0);
+var a = (0, jsx_runtime_1.jsx)("div", {});
diff --git a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsx).js b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsx).js
index 9e53d1df09c8f..15daa7806469f 100644
--- a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsx).js
+++ b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsx).js
@@ -13,4 +13,4 @@ export {};
exports.__esModule = true;
var jsx_runtime_1 = require("react/jsx-runtime");
///
-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);
+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", {})] });
diff --git a/tests/baselines/reference/jsxNamespaceGlobalReexport.js b/tests/baselines/reference/jsxNamespaceGlobalReexport.js
index dab912ca0e59b..2e721ec56b9f1 100644
--- a/tests/baselines/reference/jsxNamespaceGlobalReexport.js
+++ b/tests/baselines/reference/jsxNamespaceGlobalReexport.js
@@ -110,5 +110,5 @@ export const Comp = () =>
;
exports.__esModule = true;
exports.Comp = void 0;
var jsx_runtime_1 = require("preact/jsx-runtime");
-var Comp = function () { return (0, jsx_runtime_1.jsx)("div", {}, void 0); };
+var Comp = function () { return (0, jsx_runtime_1.jsx)("div", {}); };
exports.Comp = Comp;
diff --git a/tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.js b/tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.js
index ff1dfd19b1d21..bf3132f4e4da8 100644
--- a/tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.js
+++ b/tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.js
@@ -106,5 +106,5 @@ export const Comp = () => ;
exports.__esModule = true;
exports.Comp = void 0;
var jsx_runtime_1 = require("preact/jsx-runtime");
-var Comp = function () { return (0, jsx_runtime_1.jsx)("div", {}, void 0); };
+var Comp = function () { return (0, jsx_runtime_1.jsx)("div", {}); };
exports.Comp = Comp;
diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.js b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.js
index faf0631075199..f6aefee450f7a 100644
--- a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.js
+++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.js
@@ -106,5 +106,5 @@ export const Comp = () => ;
exports.__esModule = true;
exports.Comp = void 0;
var jsx_runtime_1 = require("preact/jsx-runtime");
-var Comp = function () { return (0, jsx_runtime_1.jsx)("div", {}, void 0); };
+var Comp = function () { return (0, jsx_runtime_1.jsx)("div", {}); };
exports.Comp = Comp;
diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne(jsx=react-jsx).js b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne(jsx=react-jsx).js
index 436bbc6930f72..9d09b3dfca13e 100644
--- a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne(jsx=react-jsx).js
+++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne(jsx=react-jsx).js
@@ -69,5 +69,5 @@ export const Comp = () => ;
exports.__esModule = true;
exports.Comp = void 0;
var jsx_runtime_1 = require("@emotion/react/jsx-runtime");
-var Comp = function () { return (0, jsx_runtime_1.jsx)("div", { css: "color: hotpink;" }, void 0); };
+var Comp = function () { return (0, jsx_runtime_1.jsx)("div", { css: "color: hotpink;" }); };
exports.Comp = Comp;
diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromPragmaPickedOverGlobalOne.js b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromPragmaPickedOverGlobalOne.js
index eb234fe58df7b..0161b0c2acf51 100644
--- a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromPragmaPickedOverGlobalOne.js
+++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromPragmaPickedOverGlobalOne.js
@@ -71,5 +71,5 @@ exports.__esModule = true;
exports.Comp = void 0;
var jsx_runtime_1 = require("@emotion/react/jsx-runtime");
/* @jsxImportSource @emotion/react */
-var Comp = function () { return (0, jsx_runtime_1.jsx)("div", { css: "color: hotpink;" }, void 0); };
+var Comp = function () { return (0, jsx_runtime_1.jsx)("div", { css: "color: hotpink;" }); };
exports.Comp = Comp;
diff --git a/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsx).js b/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsx).js
index 3f7b46c6bd77b..27f6c4d309260 100644
--- a/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsx).js
+++ b/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsx).js
@@ -17,9 +17,9 @@ exports.__esModule = true;
exports.Foo = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
function Bar() {
- return (0, jsx_runtime_1.jsx)("div", {}, void 0);
+ return (0, jsx_runtime_1.jsx)("div", {});
}
function Foo() {
- return (0, jsx_runtime_1.jsx)(Bar, {}, void 0);
+ return (0, jsx_runtime_1.jsx)(Bar, {});
}
exports.Foo = Foo;
diff --git a/tests/baselines/reference/reactJsxReactResolvedNodeNext.js b/tests/baselines/reference/reactJsxReactResolvedNodeNext.js
index 600bc4b92da82..f36fdc66c2a5b 100644
--- a/tests/baselines/reference/reactJsxReactResolvedNodeNext.js
+++ b/tests/baselines/reference/reactJsxReactResolvedNodeNext.js
@@ -24,4 +24,4 @@ import './';
Object.defineProperty(exports, "__esModule", { value: true });
exports.a = void 0;
const jsx_runtime_1 = require("react/jsx-runtime");
-exports.a = (0, jsx_runtime_1.jsx)("div", {}, void 0);
+exports.a = (0, jsx_runtime_1.jsx)("div", {});
diff --git a/tests/baselines/reference/reactJsxReactResolvedNodeNextEsm.js b/tests/baselines/reference/reactJsxReactResolvedNodeNextEsm.js
index bb4cddaf74e62..834a8fa145c4e 100644
--- a/tests/baselines/reference/reactJsxReactResolvedNodeNextEsm.js
+++ b/tests/baselines/reference/reactJsxReactResolvedNodeNextEsm.js
@@ -29,4 +29,4 @@ import './';
//// [file.js]
import { jsx as _jsx } from "react/jsx-runtime";
-export const a = _jsx("div", {}, void 0);
+export const a = _jsx("div", {});
diff --git a/tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash-under---strict.js b/tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash-under---strict.js
index 86a9065aca427..a552f6a790d32 100644
--- a/tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash-under---strict.js
+++ b/tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash-under---strict.js
@@ -57,7 +57,7 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated
exports.__esModule = true;
exports.App = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
-var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
+var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
exports.App = App;
diff --git a/tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash.js b/tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash.js
index c024df2326931..d1d33bd22eb58 100644
--- a/tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash.js
+++ b/tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash.js
@@ -49,7 +49,7 @@ exitCode:: ExitStatus.Success
exports.__esModule = true;
exports.App = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
-var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
+var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
exports.App = App;
diff --git a/tests/baselines/reference/tscWatch/forceConsistentCasingInFileNames/jsxImportSource-option-changed.js b/tests/baselines/reference/tscWatch/forceConsistentCasingInFileNames/jsxImportSource-option-changed.js
index 417fb08c4abc8..b1d511faa2c44 100644
--- a/tests/baselines/reference/tscWatch/forceConsistentCasingInFileNames/jsxImportSource-option-changed.js
+++ b/tests/baselines/reference/tscWatch/forceConsistentCasingInFileNames/jsxImportSource-option-changed.js
@@ -106,7 +106,7 @@ exitCode:: ExitStatus.undefined
exports.__esModule = true;
exports.App = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
-var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
+var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
exports.App = App;
diff --git a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-incremental.js b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-incremental.js
index bc8105dd86d3f..6b4af80386042 100644
--- a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-incremental.js
+++ b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-incremental.js
@@ -61,7 +61,7 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated
exports.__esModule = true;
exports.App = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
-var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
+var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
exports.App = App;
diff --git a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-watch.js b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-watch.js
index 5bf0dc49ee0e0..e45b207c97124 100644
--- a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-watch.js
+++ b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-watch.js
@@ -75,7 +75,7 @@ exitCode:: ExitStatus.undefined
exports.__esModule = true;
exports.App = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
-var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
+var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
exports.App = App;
diff --git a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-incremental.js b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-incremental.js
index 98699033c4a63..1f466cf37284e 100644
--- a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-incremental.js
+++ b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-incremental.js
@@ -73,7 +73,7 @@ exitCode:: ExitStatus.Success
exports.__esModule = true;
exports.App = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
-var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
+var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
exports.App = App;
diff --git a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-watch.js b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-watch.js
index 641134714d966..cd0d1e7b8b18d 100644
--- a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-watch.js
+++ b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-watch.js
@@ -96,7 +96,7 @@ exitCode:: ExitStatus.undefined
exports.__esModule = true;
exports.App = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
-var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
+var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
exports.App = App;
diff --git a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-incremental.js b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-incremental.js
index 9ceb94fe14ca4..dbd38dbd51558 100644
--- a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-incremental.js
+++ b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-incremental.js
@@ -96,7 +96,7 @@ exitCode:: ExitStatus.Success
exports.__esModule = true;
exports.App = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
-var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
+var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
exports.App = App;
@@ -212,7 +212,7 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated
exports.__esModule = true;
exports.App = void 0;
var jsx_runtime_1 = require("preact/jsx-runtime");
-var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
+var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
exports.App = App;
diff --git a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-watch.js b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-watch.js
index 87dc1d5f4ca04..7725b4acdace9 100644
--- a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-watch.js
+++ b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-watch.js
@@ -119,7 +119,7 @@ exitCode:: ExitStatus.undefined
exports.__esModule = true;
exports.App = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
-var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
+var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
exports.App = App;
@@ -255,7 +255,7 @@ exitCode:: ExitStatus.undefined
exports.__esModule = true;
exports.App = void 0;
var jsx_runtime_1 = require("preact/jsx-runtime");
-var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); };
+var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }); };
exports.App = App;
diff --git a/tests/baselines/reference/tsxReactEmit8(jsx=react-jsx).js b/tests/baselines/reference/tsxReactEmit8(jsx=react-jsx).js
new file mode 100644
index 0000000000000..4b2ad79559d76
--- /dev/null
+++ b/tests/baselines/reference/tsxReactEmit8(jsx=react-jsx).js
@@ -0,0 +1,11 @@
+//// [tsxReactEmit8.tsx]
+///
+
+1
;
+2
;
+
+
+//// [tsxReactEmit8.js]
+///
+_jsx("div", { children: "1" });
+_jsx("div", { children: "2" }, "key-attr");
diff --git a/tests/baselines/reference/tsxReactEmit8(jsx=react-jsx).symbols b/tests/baselines/reference/tsxReactEmit8(jsx=react-jsx).symbols
new file mode 100644
index 0000000000000..c5e8950b7fc9a
--- /dev/null
+++ b/tests/baselines/reference/tsxReactEmit8(jsx=react-jsx).symbols
@@ -0,0 +1,12 @@
+=== tests/cases/conformance/jsx/tsxReactEmit8.tsx ===
+///
+
+1
;
+>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
+>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
+
+2
;
+>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
+>key : Symbol(key, Decl(tsxReactEmit8.tsx, 3, 4))
+>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
+
diff --git a/tests/baselines/reference/tsxReactEmit8(jsx=react-jsx).types b/tests/baselines/reference/tsxReactEmit8(jsx=react-jsx).types
new file mode 100644
index 0000000000000..46799d30bdc5e
--- /dev/null
+++ b/tests/baselines/reference/tsxReactEmit8(jsx=react-jsx).types
@@ -0,0 +1,15 @@
+=== tests/cases/conformance/jsx/tsxReactEmit8.tsx ===
+///
+
+1
;
+>1
: JSX.Element
+>div : any
+>div : any
+
+2
;
+>2
: JSX.Element
+>div : any
+>key : string
+>"key-attr" : "key-attr"
+>div : any
+
diff --git a/tests/baselines/reference/tsxReactEmit8(jsx=react-jsxdev).js b/tests/baselines/reference/tsxReactEmit8(jsx=react-jsxdev).js
new file mode 100644
index 0000000000000..898c4d9886243
--- /dev/null
+++ b/tests/baselines/reference/tsxReactEmit8(jsx=react-jsxdev).js
@@ -0,0 +1,12 @@
+//// [tsxReactEmit8.tsx]
+///
+
+1
;
+2
;
+
+
+//// [tsxReactEmit8.js]
+const _jsxFileName = "tests/cases/conformance/jsx/tsxReactEmit8.tsx";
+///
+_jsxDEV("div", { children: "1" }, void 0, false, { fileName: _jsxFileName, lineNumber: 1, columnNumber: 1 }, this);
+_jsxDEV("div", { children: "2" }, "key-attr", false, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 14 }, this);
diff --git a/tests/baselines/reference/tsxReactEmit8(jsx=react-jsxdev).symbols b/tests/baselines/reference/tsxReactEmit8(jsx=react-jsxdev).symbols
new file mode 100644
index 0000000000000..c5e8950b7fc9a
--- /dev/null
+++ b/tests/baselines/reference/tsxReactEmit8(jsx=react-jsxdev).symbols
@@ -0,0 +1,12 @@
+=== tests/cases/conformance/jsx/tsxReactEmit8.tsx ===
+///
+
+1
;
+>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
+>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
+
+2
;
+>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
+>key : Symbol(key, Decl(tsxReactEmit8.tsx, 3, 4))
+>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
+
diff --git a/tests/baselines/reference/tsxReactEmit8(jsx=react-jsxdev).types b/tests/baselines/reference/tsxReactEmit8(jsx=react-jsxdev).types
new file mode 100644
index 0000000000000..46799d30bdc5e
--- /dev/null
+++ b/tests/baselines/reference/tsxReactEmit8(jsx=react-jsxdev).types
@@ -0,0 +1,15 @@
+=== tests/cases/conformance/jsx/tsxReactEmit8.tsx ===
+///
+
+1
;
+>1
: JSX.Element
+>div : any
+>div : any
+
+2
;
+>2
: JSX.Element
+>div : any
+>key : string
+>"key-attr" : "key-attr"
+>div : any
+
diff --git a/tests/baselines/reference/tsxReactEmitSpreadAttribute(target=es2015).js b/tests/baselines/reference/tsxReactEmitSpreadAttribute(target=es2015).js
index 24705934a296f..1e4fbe01c78ba 100644
--- a/tests/baselines/reference/tsxReactEmitSpreadAttribute(target=es2015).js
+++ b/tests/baselines/reference/tsxReactEmitSpreadAttribute(target=es2015).js
@@ -34,23 +34,23 @@ export function T7(a: any, b: any, c: any, d: any) {
import { jsx as _jsx } from "react/jsx-runtime";
///
export function T1(a) {
- return _jsx("div", Object.assign({ className: "T1" }, a, { children: "T1" }), void 0);
+ return _jsx("div", Object.assign({ className: "T1" }, a, { children: "T1" }));
}
export function T2(a, b) {
- return _jsx("div", Object.assign({ className: "T2" }, a, b, { children: "T2" }), void 0);
+ return _jsx("div", Object.assign({ className: "T2" }, a, b, { children: "T2" }));
}
export function T3(a, b) {
- return _jsx("div", Object.assign({}, a, { className: "T3" }, b, { children: "T3" }), void 0);
+ return _jsx("div", Object.assign({}, a, { className: "T3" }, b, { children: "T3" }));
}
export function T4(a, b) {
- return _jsx("div", Object.assign({ className: "T4" }, Object.assign(Object.assign({}, a), b), { children: "T4" }), void 0);
+ return _jsx("div", Object.assign({ className: "T4" }, Object.assign(Object.assign({}, a), b), { children: "T4" }));
}
export function T5(a, b, c, d) {
- return _jsx("div", Object.assign({ className: "T5" }, Object.assign(Object.assign(Object.assign({}, a), b), { c, d }), { children: "T5" }), void 0);
+ return _jsx("div", Object.assign({ className: "T5" }, Object.assign(Object.assign(Object.assign({}, a), b), { c, d }), { children: "T5" }));
}
export function T6(a, b, c, d) {
- 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);
+ return _jsx("div", Object.assign({ className: "T6" }, Object.assign(Object.assign(Object.assign({}, a), b), Object.assign(Object.assign({}, c), d)), { children: "T6" }));
}
export function T7(a, b, c, d) {
- return _jsx("div", { children: "T7" }, void 0);
+ return _jsx("div", { children: "T7" });
}
diff --git a/tests/baselines/reference/tsxReactEmitSpreadAttribute(target=es2018).js b/tests/baselines/reference/tsxReactEmitSpreadAttribute(target=es2018).js
index 5e870a365bc81..0aa58a3f27284 100644
--- a/tests/baselines/reference/tsxReactEmitSpreadAttribute(target=es2018).js
+++ b/tests/baselines/reference/tsxReactEmitSpreadAttribute(target=es2018).js
@@ -34,23 +34,23 @@ export function T7(a: any, b: any, c: any, d: any) {
import { jsx as _jsx } from "react/jsx-runtime";
///
export function T1(a) {
- return _jsx("div", { className: "T1", ...a, children: "T1" }, void 0);
+ return _jsx("div", { className: "T1", ...a, children: "T1" });
}
export function T2(a, b) {
- return _jsx("div", { className: "T2", ...a, ...b, children: "T2" }, void 0);
+ return _jsx("div", { className: "T2", ...a, ...b, children: "T2" });
}
export function T3(a, b) {
- return _jsx("div", { ...a, className: "T3", ...b, children: "T3" }, void 0);
+ return _jsx("div", { ...a, className: "T3", ...b, children: "T3" });
}
export function T4(a, b) {
- return _jsx("div", { className: "T4", ...{ ...a, ...b }, children: "T4" }, void 0);
+ return _jsx("div", { className: "T4", ...{ ...a, ...b }, children: "T4" });
}
export function T5(a, b, c, d) {
- return _jsx("div", { className: "T5", ...{ ...a, ...b, ...{ c, d } }, children: "T5" }, void 0);
+ return _jsx("div", { className: "T5", ...{ ...a, ...b, ...{ c, d } }, children: "T5" });
}
export function T6(a, b, c, d) {
- return _jsx("div", { className: "T6", ...{ ...a, ...b, ...{ ...c, ...d } }, children: "T6" }, void 0);
+ return _jsx("div", { className: "T6", ...{ ...a, ...b, ...{ ...c, ...d } }, children: "T6" });
}
export function T7(a, b, c, d) {
- return _jsx("div", { children: "T7" }, void 0);
+ return _jsx("div", { children: "T7" });
}
diff --git a/tests/baselines/reference/tsxReactEmitSpreadAttribute(target=esnext).js b/tests/baselines/reference/tsxReactEmitSpreadAttribute(target=esnext).js
index 5e870a365bc81..0aa58a3f27284 100644
--- a/tests/baselines/reference/tsxReactEmitSpreadAttribute(target=esnext).js
+++ b/tests/baselines/reference/tsxReactEmitSpreadAttribute(target=esnext).js
@@ -34,23 +34,23 @@ export function T7(a: any, b: any, c: any, d: any) {
import { jsx as _jsx } from "react/jsx-runtime";
///
export function T1(a) {
- return _jsx("div", { className: "T1", ...a, children: "T1" }, void 0);
+ return _jsx("div", { className: "T1", ...a, children: "T1" });
}
export function T2(a, b) {
- return _jsx("div", { className: "T2", ...a, ...b, children: "T2" }, void 0);
+ return _jsx("div", { className: "T2", ...a, ...b, children: "T2" });
}
export function T3(a, b) {
- return _jsx("div", { ...a, className: "T3", ...b, children: "T3" }, void 0);
+ return _jsx("div", { ...a, className: "T3", ...b, children: "T3" });
}
export function T4(a, b) {
- return _jsx("div", { className: "T4", ...{ ...a, ...b }, children: "T4" }, void 0);
+ return _jsx("div", { className: "T4", ...{ ...a, ...b }, children: "T4" });
}
export function T5(a, b, c, d) {
- return _jsx("div", { className: "T5", ...{ ...a, ...b, ...{ c, d } }, children: "T5" }, void 0);
+ return _jsx("div", { className: "T5", ...{ ...a, ...b, ...{ c, d } }, children: "T5" });
}
export function T6(a, b, c, d) {
- return _jsx("div", { className: "T6", ...{ ...a, ...b, ...{ ...c, ...d } }, children: "T6" }, void 0);
+ return _jsx("div", { className: "T6", ...{ ...a, ...b, ...{ ...c, ...d } }, children: "T6" });
}
export function T7(a, b, c, d) {
- return _jsx("div", { children: "T7" }, void 0);
+ return _jsx("div", { children: "T7" });
}
diff --git a/tests/baselines/reference/tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es2015).js b/tests/baselines/reference/tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es2015).js
index 75ff44138c806..9314082e933a4 100644
--- a/tests/baselines/reference/tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es2015).js
+++ b/tests/baselines/reference/tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es2015).js
@@ -34,14 +34,14 @@ let x: TodoListProps;
//// [tsxSpreadChildrenInvalidType.js]
function Todo(prop) {
- return _jsx("div", { children: prop.key.toString() + prop.todo }, void 0);
+ return _jsx("div", { children: prop.key.toString() + prop.todo });
}
function TodoList({ todos }) {
- return _jsxs("div", { children: [..._jsx(Todo, { todo: todos[0].todo }, todos[0].id)] }, void 0);
+ return _jsxs("div", { children: [..._jsx(Todo, { todo: todos[0].todo }, todos[0].id)] });
}
function TodoListNoError({ todos }) {
// any is not checked
- return _jsxs("div", { children: [..._jsx(Todo, { todo: todos[0].todo }, todos[0].id)] }, void 0);
+ return _jsxs("div", { children: [..._jsx(Todo, { todo: todos[0].todo }, todos[0].id)] });
}
let x;
-_jsx(TodoList, Object.assign({}, x), void 0);
+_jsx(TodoList, Object.assign({}, x));
diff --git a/tests/baselines/reference/tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es5).js b/tests/baselines/reference/tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es5).js
index 00f8cda36dd54..bf484ee6c15b1 100644
--- a/tests/baselines/reference/tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es5).js
+++ b/tests/baselines/reference/tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es5).js
@@ -54,16 +54,16 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
return to.concat(ar || Array.prototype.slice.call(from));
};
function Todo(prop) {
- return (0, _a.jsx)("div", { children: prop.key.toString() + prop.todo }, void 0);
+ return (0, _a.jsx)("div", { children: prop.key.toString() + prop.todo });
}
function TodoList(_a) {
var todos = _a.todos;
- return (0, _b.jsxs)("div", { children: __spreadArray([], (0, _a.jsx)(Todo, { todo: todos[0].todo }, todos[0].id), true) }, void 0);
+ return (0, _b.jsxs)("div", { children: __spreadArray([], (0, _a.jsx)(Todo, { todo: todos[0].todo }, todos[0].id), true) });
}
function TodoListNoError(_a) {
var todos = _a.todos;
// any is not checked
- return (0, _b.jsxs)("div", { children: __spreadArray([], (0, _a.jsx)(Todo, { todo: todos[0].todo }, todos[0].id), true) }, void 0);
+ return (0, _b.jsxs)("div", { children: __spreadArray([], (0, _a.jsx)(Todo, { todo: todos[0].todo }, todos[0].id), true) });
}
var x;
-(0, _a.jsx)(TodoList, __assign({}, x), void 0);
+(0, _a.jsx)(TodoList, __assign({}, x));
diff --git a/tests/cases/conformance/jsx/tsxReactEmit8.tsx b/tests/cases/conformance/jsx/tsxReactEmit8.tsx
new file mode 100644
index 0000000000000..23bd2e4c5a220
--- /dev/null
+++ b/tests/cases/conformance/jsx/tsxReactEmit8.tsx
@@ -0,0 +1,6 @@
+// @jsx: react-jsx,react-jsxdev
+// @target: esnext
+///
+
+1
;
+2
;