Skip to content

Commit 24759b8

Browse files
azizhkweswigham
authored andcommitted
Fix comments after sread expression, spread assignment (#28482)
1 parent da37457 commit 24759b8

File tree

5 files changed

+593
-2
lines changed

5 files changed

+593
-2
lines changed

src/compiler/emitter.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1858,7 +1858,7 @@ namespace ts {
18581858
}
18591859

18601860
function emitSpreadExpression(node: SpreadElement) {
1861-
writePunctuation("...");
1861+
emitTokenWithComment(SyntaxKind.DotDotDotToken, node.pos, writePunctuation, node);
18621862
emitExpression(node.expression);
18631863
}
18641864

@@ -2715,7 +2715,7 @@ namespace ts {
27152715

27162716
function emitSpreadAssignment(node: SpreadAssignment) {
27172717
if (node.expression) {
2718-
writePunctuation("...");
2718+
emitTokenWithComment(SyntaxKind.DotDotDotToken, node.pos, writePunctuation, node);
27192719
emitExpression(node.expression);
27202720
}
27212721
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
//// [commentsAfterSpread.ts]
2+
const identity = (a) => a;
3+
4+
const a = {
5+
.../*#__PURE__*/identity({
6+
b: 1
7+
})
8+
};
9+
10+
const b = {
11+
...
12+
/*#__PURE__*/identity({
13+
b: 1
14+
})
15+
};
16+
17+
const c = {
18+
...
19+
/*#__PURE__*/
20+
identity({
21+
b: 1
22+
})
23+
};
24+
25+
const d = {
26+
.../*#__PURE__*/
27+
identity({
28+
b: 1
29+
})
30+
};
31+
32+
function e (.../* comment e */args) {
33+
const [ea, eb] = [.../* comment eab */args];
34+
return args.length;
35+
}
36+
37+
function f (
38+
first,
39+
.../* comment f */rest
40+
) {
41+
return rest.length;
42+
}
43+
44+
function g (
45+
first,
46+
.../* comment g */
47+
rest
48+
) {
49+
const [ga, gb] = [.../* comment gab */
50+
rest
51+
]
52+
return rest.length;
53+
}
54+
55+
const h = (.../* comment h */args) => args.length;
56+
57+
const i = (
58+
first, .../* comment i */rest
59+
) => rest.length;
60+
61+
const j = (
62+
first,
63+
.../* comment j */
64+
rest
65+
) => rest.length;
66+
67+
function k ({
68+
first,
69+
.../* comment k */rest
70+
}) {
71+
const { ka, kb, .../* comment kr */remaining } = rest;
72+
const {
73+
kc,
74+
kd,
75+
.../* comment kr2 */
76+
remaining2
77+
} = rest;
78+
return { .../* comment return k */ remaining };
79+
}
80+
81+
//// [commentsAfterSpread.js]
82+
const identity = (a) => a;
83+
const a = {
84+
... /*#__PURE__*/identity({
85+
b: 1
86+
})
87+
};
88+
const b = {
89+
...
90+
/*#__PURE__*/ identity({
91+
b: 1
92+
})
93+
};
94+
const c = {
95+
...
96+
/*#__PURE__*/
97+
identity({
98+
b: 1
99+
})
100+
};
101+
const d = {
102+
... /*#__PURE__*/identity({
103+
b: 1
104+
})
105+
};
106+
function e(... /* comment e */args) {
107+
const [ea, eb] = [... /* comment eab */args];
108+
return args.length;
109+
}
110+
function f(first, ... /* comment f */rest) {
111+
return rest.length;
112+
}
113+
function g(first, ... /* comment g */rest) {
114+
const [ga, gb] = [... /* comment gab */rest
115+
];
116+
return rest.length;
117+
}
118+
const h = (... /* comment h */args) => args.length;
119+
const i = (first, ... /* comment i */rest) => rest.length;
120+
const j = (first, ... /* comment j */rest) => rest.length;
121+
function k({ first, ... /* comment k */rest }) {
122+
const { ka, kb, ... /* comment kr */remaining } = rest;
123+
const { kc, kd, ... /* comment kr2 */remaining2 } = rest;
124+
return { ... /* comment return k */remaining };
125+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
1+
=== tests/cases/compiler/commentsAfterSpread.ts ===
2+
const identity = (a) => a;
3+
>identity : Symbol(identity, Decl(commentsAfterSpread.ts, 0, 5))
4+
>a : Symbol(a, Decl(commentsAfterSpread.ts, 0, 18))
5+
>a : Symbol(a, Decl(commentsAfterSpread.ts, 0, 18))
6+
7+
const a = {
8+
>a : Symbol(a, Decl(commentsAfterSpread.ts, 2, 5))
9+
10+
.../*#__PURE__*/identity({
11+
>identity : Symbol(identity, Decl(commentsAfterSpread.ts, 0, 5))
12+
13+
b: 1
14+
>b : Symbol(b, Decl(commentsAfterSpread.ts, 3, 28))
15+
16+
})
17+
};
18+
19+
const b = {
20+
>b : Symbol(b, Decl(commentsAfterSpread.ts, 8, 5))
21+
22+
...
23+
/*#__PURE__*/identity({
24+
>identity : Symbol(identity, Decl(commentsAfterSpread.ts, 0, 5))
25+
26+
b: 1
27+
>b : Symbol(b, Decl(commentsAfterSpread.ts, 10, 25))
28+
29+
})
30+
};
31+
32+
const c = {
33+
>c : Symbol(c, Decl(commentsAfterSpread.ts, 15, 5))
34+
35+
...
36+
/*#__PURE__*/
37+
identity({
38+
>identity : Symbol(identity, Decl(commentsAfterSpread.ts, 0, 5))
39+
40+
b: 1
41+
>b : Symbol(b, Decl(commentsAfterSpread.ts, 18, 12))
42+
43+
})
44+
};
45+
46+
const d = {
47+
>d : Symbol(d, Decl(commentsAfterSpread.ts, 23, 5))
48+
49+
.../*#__PURE__*/
50+
identity({
51+
>identity : Symbol(identity, Decl(commentsAfterSpread.ts, 0, 5))
52+
53+
b: 1
54+
>b : Symbol(b, Decl(commentsAfterSpread.ts, 25, 12))
55+
56+
})
57+
};
58+
59+
function e (.../* comment e */args) {
60+
>e : Symbol(e, Decl(commentsAfterSpread.ts, 28, 2))
61+
>args : Symbol(args, Decl(commentsAfterSpread.ts, 30, 12))
62+
63+
const [ea, eb] = [.../* comment eab */args];
64+
>ea : Symbol(ea, Decl(commentsAfterSpread.ts, 31, 9))
65+
>eb : Symbol(eb, Decl(commentsAfterSpread.ts, 31, 12))
66+
>args : Symbol(args, Decl(commentsAfterSpread.ts, 30, 12))
67+
68+
return args.length;
69+
>args.length : Symbol(Array.length, Decl(lib.es5.d.ts, --, --))
70+
>args : Symbol(args, Decl(commentsAfterSpread.ts, 30, 12))
71+
>length : Symbol(Array.length, Decl(lib.es5.d.ts, --, --))
72+
}
73+
74+
function f (
75+
>f : Symbol(f, Decl(commentsAfterSpread.ts, 33, 1))
76+
77+
first,
78+
>first : Symbol(first, Decl(commentsAfterSpread.ts, 35, 12))
79+
80+
.../* comment f */rest
81+
>rest : Symbol(rest, Decl(commentsAfterSpread.ts, 36, 8))
82+
83+
) {
84+
return rest.length;
85+
>rest.length : Symbol(Array.length, Decl(lib.es5.d.ts, --, --))
86+
>rest : Symbol(rest, Decl(commentsAfterSpread.ts, 36, 8))
87+
>length : Symbol(Array.length, Decl(lib.es5.d.ts, --, --))
88+
}
89+
90+
function g (
91+
>g : Symbol(g, Decl(commentsAfterSpread.ts, 40, 1))
92+
93+
first,
94+
>first : Symbol(first, Decl(commentsAfterSpread.ts, 42, 12))
95+
96+
.../* comment g */
97+
rest
98+
>rest : Symbol(rest, Decl(commentsAfterSpread.ts, 43, 8))
99+
100+
) {
101+
const [ga, gb] = [.../* comment gab */
102+
>ga : Symbol(ga, Decl(commentsAfterSpread.ts, 47, 9))
103+
>gb : Symbol(gb, Decl(commentsAfterSpread.ts, 47, 12))
104+
105+
rest
106+
>rest : Symbol(rest, Decl(commentsAfterSpread.ts, 43, 8))
107+
108+
]
109+
return rest.length;
110+
>rest.length : Symbol(Array.length, Decl(lib.es5.d.ts, --, --))
111+
>rest : Symbol(rest, Decl(commentsAfterSpread.ts, 43, 8))
112+
>length : Symbol(Array.length, Decl(lib.es5.d.ts, --, --))
113+
}
114+
115+
const h = (.../* comment h */args) => args.length;
116+
>h : Symbol(h, Decl(commentsAfterSpread.ts, 53, 5))
117+
>args : Symbol(args, Decl(commentsAfterSpread.ts, 53, 11))
118+
>args.length : Symbol(Array.length, Decl(lib.es5.d.ts, --, --))
119+
>args : Symbol(args, Decl(commentsAfterSpread.ts, 53, 11))
120+
>length : Symbol(Array.length, Decl(lib.es5.d.ts, --, --))
121+
122+
const i = (
123+
>i : Symbol(i, Decl(commentsAfterSpread.ts, 55, 5))
124+
125+
first, .../* comment i */rest
126+
>first : Symbol(first, Decl(commentsAfterSpread.ts, 55, 11))
127+
>rest : Symbol(rest, Decl(commentsAfterSpread.ts, 56, 8))
128+
129+
) => rest.length;
130+
>rest.length : Symbol(Array.length, Decl(lib.es5.d.ts, --, --))
131+
>rest : Symbol(rest, Decl(commentsAfterSpread.ts, 56, 8))
132+
>length : Symbol(Array.length, Decl(lib.es5.d.ts, --, --))
133+
134+
const j = (
135+
>j : Symbol(j, Decl(commentsAfterSpread.ts, 59, 5))
136+
137+
first,
138+
>first : Symbol(first, Decl(commentsAfterSpread.ts, 59, 11))
139+
140+
.../* comment j */
141+
rest
142+
>rest : Symbol(rest, Decl(commentsAfterSpread.ts, 60, 8))
143+
144+
) => rest.length;
145+
>rest.length : Symbol(Array.length, Decl(lib.es5.d.ts, --, --))
146+
>rest : Symbol(rest, Decl(commentsAfterSpread.ts, 60, 8))
147+
>length : Symbol(Array.length, Decl(lib.es5.d.ts, --, --))
148+
149+
function k ({
150+
>k : Symbol(k, Decl(commentsAfterSpread.ts, 63, 17))
151+
152+
first,
153+
>first : Symbol(first, Decl(commentsAfterSpread.ts, 65, 13))
154+
155+
.../* comment k */rest
156+
>rest : Symbol(rest, Decl(commentsAfterSpread.ts, 66, 8))
157+
158+
}) {
159+
const { ka, kb, .../* comment kr */remaining } = rest;
160+
>ka : Symbol(ka, Decl(commentsAfterSpread.ts, 69, 9))
161+
>kb : Symbol(kb, Decl(commentsAfterSpread.ts, 69, 13))
162+
>remaining : Symbol(remaining, Decl(commentsAfterSpread.ts, 69, 17))
163+
>rest : Symbol(rest, Decl(commentsAfterSpread.ts, 66, 8))
164+
165+
const {
166+
kc,
167+
>kc : Symbol(kc, Decl(commentsAfterSpread.ts, 70, 9))
168+
169+
kd,
170+
>kd : Symbol(kd, Decl(commentsAfterSpread.ts, 71, 7))
171+
172+
.../* comment kr2 */
173+
remaining2
174+
>remaining2 : Symbol(remaining2, Decl(commentsAfterSpread.ts, 72, 7))
175+
176+
} = rest;
177+
>rest : Symbol(rest, Decl(commentsAfterSpread.ts, 66, 8))
178+
179+
return { .../* comment return k */ remaining };
180+
>remaining : Symbol(remaining, Decl(commentsAfterSpread.ts, 69, 17))
181+
}

0 commit comments

Comments
 (0)