Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/compiler/emitter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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);
}
}

Expand All @@ -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;
}
}
Expand Down
4 changes: 2 additions & 2 deletions tests/baselines/reference/tsxReactEmit1.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
2 changes: 1 addition & 1 deletion tests/baselines/reference/tsxReactEmit3.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ declare var Foo, Bar, baz;
<Foo> <Bar> q </Bar> <Bar/> s <Bar/><Bar/></Foo>;

//// [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));
8 changes: 4 additions & 4 deletions tests/baselines/reference/tsxReactEmitWhitespace.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
25 changes: 25 additions & 0 deletions tests/baselines/reference/tsxReactEmitWhitespace2.js
Original file line number Diff line number Diff line change
@@ -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
<div>word <code>code</code> word</div>;
// Same here
<div><code>code</code> word</div>;
// And here
<div><code /> word</div>;



//// [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");
38 changes: 38 additions & 0 deletions tests/baselines/reference/tsxReactEmitWhitespace2.symbols
Original file line number Diff line number Diff line change
@@ -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
<div>word <code>code</code> word</div>;
>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
<div><code>code</code> word</div>;
>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
<div><code /> word</div>;
>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))


44 changes: 44 additions & 0 deletions tests/baselines/reference/tsxReactEmitWhitespace2.types
Original file line number Diff line number Diff line change
@@ -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
<div>word <code>code</code> word</div>;
><div>word <code>code</code> word</div> : JSX.Element
>div : any
><code>code</code> : JSX.Element
>code : any
>code : any
>div : any

// Same here
<div><code>code</code> word</div>;
><div><code>code</code> word</div> : JSX.Element
>div : any
><code>code</code> : JSX.Element
>code : any
>code : any
>div : any

// And here
<div><code /> word</div>;
><div><code /> word</div> : JSX.Element
>div : any
><code /> : JSX.Element
>code : any
>div : any


17 changes: 17 additions & 0 deletions tests/cases/conformance/jsx/tsxReactEmitWhitespace2.tsx
Original file line number Diff line number Diff line change
@@ -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
<div>word <code>code</code> word</div>;
// Same here
<div><code>code</code> word</div>;
// And here
<div><code /> word</div>;