diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts
index 72ff0327e0891..b6f4c59740fdf 100644
--- a/src/compiler/emitter.ts
+++ b/src/compiler/emitter.ts
@@ -6514,7 +6514,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
function trimReactWhitespaceAndApplyEntities(node: JsxText): string {
let result: string = undefined;
- let text = getTextOfNode(node);
+ let text = getTextOfNode(node, /*includeTrivia*/ true);
let firstNonWhitespace = 0;
let lastNonWhitespace = -1;
@@ -6570,7 +6570,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
}
case JsxEmit.Preserve:
default:
- return getTextOfNode(node, true);
+ return getTextOfNode(node, /*includeTrivia*/ true);
}
}
@@ -6584,7 +6584,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
case JsxEmit.Preserve:
default: // Emit JSX-preserve as default when no --jsx flag is specified
- writer.writeLiteral(getTextOfNode(node, true));
+ writer.writeLiteral(getTextOfNode(node, /*includeTrivia*/ true));
break;
}
}
diff --git a/tests/baselines/reference/tsxReactEmit1.js b/tests/baselines/reference/tsxReactEmit1.js
index f1799e5bb77f9..260bd9cd22804 100644
--- a/tests/baselines/reference/tsxReactEmit1.js
+++ b/tests/baselines/reference/tsxReactEmit1.js
@@ -69,6 +69,6 @@ var SomeClass = (function () {
};
return SomeClass;
})();
-var whitespace1 = React.createElement("div", null);
-var whitespace2 = React.createElement("div", null, p);
+var whitespace1 = React.createElement("div", null, " ");
+var whitespace2 = React.createElement("div", null, " ", p, " ");
var whitespace3 = React.createElement("div", null, p);
diff --git a/tests/baselines/reference/tsxReactEmit3.js b/tests/baselines/reference/tsxReactEmit3.js
index 1a6ba03723041..239105485342e 100644
--- a/tests/baselines/reference/tsxReactEmit3.js
+++ b/tests/baselines/reference/tsxReactEmit3.js
@@ -8,4 +8,4 @@ declare var Foo, Bar, baz;
q s ;
//// [tsxReactEmit3.js]
-React.createElement(Foo, null, React.createElement(Bar, null, "q "), React.createElement(Bar, null), "s ", React.createElement(Bar, null), React.createElement(Bar, null));
+React.createElement(Foo, null, " ", React.createElement(Bar, null, " q "), " ", React.createElement(Bar, null), " s ", React.createElement(Bar, null), React.createElement(Bar, null));
diff --git a/tests/baselines/reference/tsxReactEmitWhitespace.js b/tests/baselines/reference/tsxReactEmitWhitespace.js
index a124ce73312fb..a1b5894106fc9 100644
--- a/tests/baselines/reference/tsxReactEmitWhitespace.js
+++ b/tests/baselines/reference/tsxReactEmitWhitespace.js
@@ -57,17 +57,17 @@ var p = 0;
// WHITESPACE, DO NOT RUN 'FORMAT DOCUMENT' ON IT
var p = 0;
// Emit " "
-React.createElement("div", null);
+React.createElement("div", null, " ");
// Emit " ", p, " "
-React.createElement("div", null, p);
+React.createElement("div", null, " ", p, " ");
// Emit only p
React.createElement("div", null, p);
// Emit only p
React.createElement("div", null, p);
// Emit " 3"
-React.createElement("div", null, "3");
+React.createElement("div", null, " 3");
// Emit " 3 "
-React.createElement("div", null, "3 ");
+React.createElement("div", null, " 3 ");
// Emit "3"
React.createElement("div", null, "3");
// Emit no args
diff --git a/tests/baselines/reference/tsxReactEmitWhitespace2.js b/tests/baselines/reference/tsxReactEmitWhitespace2.js
new file mode 100644
index 0000000000000..091a193cdc5c1
--- /dev/null
+++ b/tests/baselines/reference/tsxReactEmitWhitespace2.js
@@ -0,0 +1,25 @@
+//// [tsxReactEmitWhitespace2.tsx]
+declare module JSX {
+ interface Element { }
+ interface IntrinsicElements {
+ [s: string]: any;
+ }
+}
+declare var React: any;
+
+// Emit ' word' in the last string
+
word code word
;
+// Same here
+code word
;
+// And here
+ word
;
+
+
+
+//// [tsxReactEmitWhitespace2.js]
+// Emit ' word' in the last string
+React.createElement("div", null, "word ", React.createElement("code", null, "code"), " word");
+// Same here
+React.createElement("div", null, React.createElement("code", null, "code"), " word");
+// And here
+React.createElement("div", null, React.createElement("code", null), " word");
diff --git a/tests/baselines/reference/tsxReactEmitWhitespace2.symbols b/tests/baselines/reference/tsxReactEmitWhitespace2.symbols
new file mode 100644
index 0000000000000..44ff4cba292e5
--- /dev/null
+++ b/tests/baselines/reference/tsxReactEmitWhitespace2.symbols
@@ -0,0 +1,38 @@
+=== tests/cases/conformance/jsx/tsxReactEmitWhitespace2.tsx ===
+declare module JSX {
+>JSX : Symbol(JSX, Decl(tsxReactEmitWhitespace2.tsx, 0, 0))
+
+ interface Element { }
+>Element : Symbol(Element, Decl(tsxReactEmitWhitespace2.tsx, 0, 20))
+
+ interface IntrinsicElements {
+>IntrinsicElements : Symbol(IntrinsicElements, Decl(tsxReactEmitWhitespace2.tsx, 1, 22))
+
+ [s: string]: any;
+>s : Symbol(s, Decl(tsxReactEmitWhitespace2.tsx, 3, 3))
+ }
+}
+declare var React: any;
+>React : Symbol(React, Decl(tsxReactEmitWhitespace2.tsx, 6, 11))
+
+// Emit ' word' in the last string
+word code word
;
+>div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace2.tsx, 1, 22))
+>code : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace2.tsx, 1, 22))
+>code : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace2.tsx, 1, 22))
+>div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace2.tsx, 1, 22))
+
+// Same here
+code word
;
+>div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace2.tsx, 1, 22))
+>code : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace2.tsx, 1, 22))
+>code : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace2.tsx, 1, 22))
+>div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace2.tsx, 1, 22))
+
+// And here
+ word
;
+>div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace2.tsx, 1, 22))
+>code : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace2.tsx, 1, 22))
+>div : Symbol(JSX.IntrinsicElements, Decl(tsxReactEmitWhitespace2.tsx, 1, 22))
+
+
diff --git a/tests/baselines/reference/tsxReactEmitWhitespace2.types b/tests/baselines/reference/tsxReactEmitWhitespace2.types
new file mode 100644
index 0000000000000..7287e59b9b15f
--- /dev/null
+++ b/tests/baselines/reference/tsxReactEmitWhitespace2.types
@@ -0,0 +1,44 @@
+=== tests/cases/conformance/jsx/tsxReactEmitWhitespace2.tsx ===
+declare module JSX {
+>JSX : any
+
+ interface Element { }
+>Element : Element
+
+ interface IntrinsicElements {
+>IntrinsicElements : IntrinsicElements
+
+ [s: string]: any;
+>s : string
+ }
+}
+declare var React: any;
+>React : any
+
+// Emit ' word' in the last string
+word code word
;
+>word code word
: JSX.Element
+>div : any
+>code : JSX.Element
+>code : any
+>code : any
+>div : any
+
+// Same here
+code word
;
+>code word
: JSX.Element
+>div : any
+>code : JSX.Element
+>code : any
+>code : any
+>div : any
+
+// And here
+ word
;
+> word
: JSX.Element
+>div : any
+> : JSX.Element
+>code : any
+>div : any
+
+
diff --git a/tests/cases/conformance/jsx/tsxReactEmitWhitespace2.tsx b/tests/cases/conformance/jsx/tsxReactEmitWhitespace2.tsx
new file mode 100644
index 0000000000000..964064979ec55
--- /dev/null
+++ b/tests/cases/conformance/jsx/tsxReactEmitWhitespace2.tsx
@@ -0,0 +1,17 @@
+//@filename: file.tsx
+//@jsx: react
+declare module JSX {
+ interface Element { }
+ interface IntrinsicElements {
+ [s: string]: any;
+ }
+}
+declare var React: any;
+
+// Emit ' word' in the last string
+word code word
;
+// Same here
+code word
;
+// And here
+ word
;
+