8000 Merge pull request #4703 from Microsoft/jsxEmitAttribiteWithInitializer · FinalLody/TypeScript@6a77400 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6a77400

Browse files
committed
Merge pull request microsoft#4703 from Microsoft/jsxEmitAttribiteWithInitializer
do not emit '=' in jsx attribute if initializer is missing
2 parents 4be0ddb + 8321415 commit 6a77400

9 files changed

+42
-11
lines changed

src/compiler/emitter.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1292,8 +1292,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
12921292
function jsxEmitPreserve(node: JsxElement|JsxSelfClosingElement) {
12931293
function emitJsxAttribute(node: JsxAttribute) {
12941294
emit(node.name);
1295-
write("=");
1296-
emit(node.initializer);
1295+
if (node.initializer) {
1296+
write("=");
1297+
emit(node.initializer);
1298+
}
12971299
}
12981300

12991301
function emitJsxSpreadAttribute(node: JsxSpreadAttribute) {
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
//// [jsxEmitAttributeWithPreserve.tsx]
2+
3+
declare var React: any;
4+
<foo data/>
5+
6+
//// [jsxEmitAttributeWithPreserve.jsx]
7+
<foo data/>;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
=== tests/cases/compiler/jsxEmitAttributeWithPreserve.tsx ===
2+
3+
declare var React: any;
4+
>React : Symbol(React, Decl(jsxEmitAttributeWithPreserve.tsx, 1, 11))
5+
6+
<foo data/>
7+
>data : Symbol(unknown)
8+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
=== tests/cases/compiler/jsxEmitAttributeWithPreserve.tsx ===
2+
3+
declare var React: any;
4+
>React : any
5+
6+
<foo data/>
7+
><foo data/> : any
8+
>foo : any
9+
>data : any
10+

tests/baselines/reference/jsxInvalidEsprimaTestSuite.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ a / > ;
4747
< a;
4848
b > ;
4949
b > ;
50-
<a b= c=></a>;
50+
<a b c></a>;
5151
b.c > ;
52-
<a.b c=></a.b>;
52+
<a.b c></a.b>;
5353
c > ;
5454
<a.b.c></a>;
5555
< .a > ;
@@ -67,7 +67,7 @@ var x = <div>one</div><div>two</div>;;
6767
var x = <div>one</div> /* intervening comment */ /* intervening comment */ <div>two</div>;;
6868
<a>{"str"}}</a>;
6969
<span className="a"/> id="b" />;
70-
<div className=/>>;
70+
<div className/>>;
7171
<div {...props}/>;
7272

7373
<div>stuff</div>...props}>;

tests/baselines/reference/jsxReactTestSuite.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,14 +158,14 @@ var x = <div attr1={"foo" + "bar"} attr2={"foo" + "bar" +
158158
<Component constructor="foo"/>;
159159
<Namespace.Component />;
160160
<Namespace.DeepNamespace.Component />;
161-
<Component {...x} y={2} z=/>;
161+
<Component {...x} y={2} z/>;
162162
<Component {...this.props} sound="moo"/>;
163163
<font-face />;
164164
<Component x={y}/>;
165165
<x-component />;
166166
<Component {...x}/>;
167167
<Component {...x} y={2}/>;
168-
<Component {...x} y={2} z=/>;
168+
<Component {...x} y={2} z/>;
169169
<Component x={1} {...y}/>;
170170
<Component x={1} y="2" {...z} {...z}><Child /></Component>;
171171
<Component x="1" {...(z = { y: 2 }, z)} z={3}>Text</Component>;

tests/baselines/reference/tsxAttributeResolution6.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ declare module JSX {
2020

2121
//// [tsxAttributeResolution6.jsx]
2222
// Error
23-
<test1 s=/>;
23+
<test1 s/>;
2424
<test1 n='true'/>;
2525
<test2 />;
2626
// OK
27-
<test1 n=/>;
27+
<test1 n/>;
2828
<test1 n={false}/>;
29-
<test2 n=/>;
29+
<test2 n/>;

tests/baselines/reference/tsxGenericArrowFunctionParsing.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,5 @@ x3();
4242
var x4 = <T extends={true}>() => </T>;
4343
x4.isElement;
4444
// This is an element
45-
var x5 = <T extends=>() => </T>;
45+
var x5 = <T extends>() => </T>;
4646
x5.isElement;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
//@jsx: preserve
2+
3+
declare var React: any;
4+
<foo data/>

0 commit comments

Comments
 (0)
0