Skip to content

Commit ef9821e

Browse files
committed
chore(codegen): add a more useful test
1 parent 3c5c6b6 commit ef9821e

File tree

2 files changed

+182
-0
lines changed

2 files changed

+182
-0
lines changed

crates/oxc_codegen/tests/integration/pure_comments.rs

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,68 @@ const defineSSRCustomElement = () => {
133133
const Component = // #__PURE__
134134
React.forwardRef((props, ref) => {});
135135
",
136+
// Copy from <https://github.com/rolldown-rs/rolldown/blob/main/crates/rolldown/tests/esbuild/dce/remove_unused_pure_comment_calls/entry.js>
137+
"
138+
function bar() {}
139+
let bare = foo(bar);
140+
141+
let at_yes = /* @__PURE__ */ foo(bar);
142+
let at_no = /* @__PURE__ */ foo(bar());
143+
let new_at_yes = /* @__PURE__ */ new foo(bar);
144+
let new_at_no = /* @__PURE__ */ new foo(bar());
145+
146+
let nospace_at_yes = /*@__PURE__*/ foo(bar);
147+
let nospace_at_no = /*@__PURE__*/ foo(bar());
148+
let nospace_new_at_yes = /*@__PURE__*/ new foo(bar);
149+
let nospace_new_at_no = /*@__PURE__*/ new foo(bar());
150+
151+
let num_yes = /* #__PURE__ */ foo(bar);
152+
let num_no = /* #__PURE__ */ foo(bar());
153+
let new_num_yes = /* #__PURE__ */ new foo(bar);
154+
let new_num_no = /* #__PURE__ */ new foo(bar());
155+
156+
let nospace_num_yes = /*#__PURE__*/ foo(bar);
157+
let nospace_num_no = /*#__PURE__*/ foo(bar());
158+
let nospace_new_num_yes = /*#__PURE__*/ new foo(bar);
159+
let nospace_new_num_no = /*#__PURE__*/ new foo(bar());
160+
161+
let dot_yes = /* @__PURE__ */ foo(sideEffect()).dot(bar);
162+
let dot_no = /* @__PURE__ */ foo(sideEffect()).dot(bar());
163+
let new_dot_yes = /* @__PURE__ */ new foo(sideEffect()).dot(bar);
164+
let new_dot_no = /* @__PURE__ */ new foo(sideEffect()).dot(bar());
165+
166+
let nested_yes = [1, /* @__PURE__ */ foo(bar), 2];
167+
let nested_no = [1, /* @__PURE__ */ foo(bar()), 2];
168+
let new_nested_yes = [1, /* @__PURE__ */ new foo(bar), 2];
169+
let new_nested_no = [1, /* @__PURE__ */ new foo(bar()), 2];
170+
171+
let single_at_yes = // @__PURE__
172+
foo(bar);
173+
let single_at_no = // @__PURE__
174+
foo(bar());
175+
let new_single_at_yes = // @__PURE__
176+
new foo(bar);
177+
let new_single_at_no = // @__PURE__
178+
new foo(bar());
179+
180+
let single_num_yes = // #__PURE__
181+
foo(bar);
182+
let single_num_no = // #__PURE__
183+
foo(bar());
184+
let new_single_num_yes = // #__PURE__
185+
new foo(bar);
186+
let new_single_num_no = // #__PURE__
187+
new foo(bar());
188+
189+
let bad_no = /* __PURE__ */ foo(bar);
190+
let new_bad_no = /* __PURE__ */ new foo(bar);
191+
192+
let parens_no = (/* @__PURE__ */ foo)(bar);
193+
let new_parens_no = new (/* @__PURE__ */ foo)(bar);
194+
195+
let exp_no = /* @__PURE__ */ foo() ** foo();
196+
let new_exp_no = /* @__PURE__ */ new foo() ** foo();
197+
",
136198
];
137199

138200
snapshot("pure_comments", &cases);

crates/oxc_codegen/tests/integration/snapshots/pure_comments.snap

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,3 +277,123 @@ const defineSSRCustomElement = () => {
277277

278278
----------
279279
const Component = /* #__PURE__*/ React.forwardRef((props, ref) => {});
280+
281+
########## 21
282+
283+
function bar() {}
284+
let bare = foo(bar);
285+
286+
let at_yes = /* @__PURE__ */ foo(bar);
287+
let at_no = /* @__PURE__ */ foo(bar());
288+
let new_at_yes = /* @__PURE__ */ new foo(bar);
289+
let new_at_no = /* @__PURE__ */ new foo(bar());
290+
291+
let nospace_at_yes = /*@__PURE__*/ foo(bar);
292+
let nospace_at_no = /*@__PURE__*/ foo(bar());
293+
let nospace_new_at_yes = /*@__PURE__*/ new foo(bar);
294+
let nospace_new_at_no = /*@__PURE__*/ new foo(bar());
295+
296+
let num_yes = /* #__PURE__ */ foo(bar);
297+
let num_no = /* #__PURE__ */ foo(bar());
298+
let new_num_yes = /* #__PURE__ */ new foo(bar);
299+
let new_num_no = /* #__PURE__ */ new foo(bar());
300+
301+
let nospace_num_yes = /*#__PURE__*/ foo(bar);
302+
let nospace_num_no = /*#__PURE__*/ foo(bar());
303+
let nospace_new_num_yes = /*#__PURE__*/ new foo(bar);
304+
let nospace_new_num_no = /*#__PURE__*/ new foo(bar());
305+
306+
let dot_yes = /* @__PURE__ */ foo(sideEffect()).dot(bar);
307+
let dot_no = /* @__PURE__ */ foo(sideEffect()).dot(bar());
308+
let new_dot_yes = /* @__PURE__ */ new foo(sideEffect()).dot(bar);
309+
let new_dot_no = /* @__PURE__ */ new foo(sideEffect()).dot(bar());
310+
311+
let nested_yes = [1, /* @__PURE__ */ foo(bar), 2];
312+
let nested_no = [1, /* @__PURE__ */ foo(bar()), 2];
313+
let new_nested_yes = [1, /* @__PURE__ */ new foo(bar), 2];
314+
let new_nested_no = [1, /* @__PURE__ */ new foo(bar()), 2];
315+
316+
let single_at_yes = // @__PURE__
317+
foo(bar);
318+
let single_at_no = // @__PURE__
319+
foo(bar());
320+
let new_single_at_yes = // @__PURE__
321+
new foo(bar);
322+
let new_single_at_no = // @__PURE__
323+
new foo(bar());
324+
325+
let single_num_yes = // #__PURE__
326+
foo(bar);
327+
let single_num_no = // #__PURE__
328+
foo(bar());
329+
let new_single_num_yes = // #__PURE__
330+
new foo(bar);
331+
let new_single_num_no = // #__PURE__
332+
new foo(bar());
333+
334+
let bad_no = /* __PURE__ */ foo(bar);
335+
let new_bad_no = /* __PURE__ */ new foo(bar);
336+
337+
let parens_no = (/* @__PURE__ */ foo)(bar);
338+
let new_parens_no = new (/* @__PURE__ */ foo)(bar);
339+
340+
let exp_no = /* @__PURE__ */ foo() ** foo();
341+
let new_exp_no = /* @__PURE__ */ new foo() ** foo();
342+
343+
----------
344+
function bar() {}
345+
let bare = foo(bar);
346+
let at_yes = /* @__PURE__ */ foo(bar);
347+
let at_no = /* @__PURE__ */ foo(bar());
348+
let new_at_yes = /* @__PURE__ */ new foo(bar);
349+
let new_at_no = /* @__PURE__ */ new foo(bar());
350+
let nospace_at_yes = /*@__PURE__*/ foo(bar);
351+
let nospace_at_no = /*@__PURE__*/ foo(bar());
352+
let nospace_new_at_yes = /*@__PURE__*/ new foo(bar);
353+
let nospace_new_at_no = /*@__PURE__*/ new foo(bar());
354+
let num_yes = /* #__PURE__ */ foo(bar);
355+
let num_no = /* #__PURE__ */ foo(bar());
356+
let new_num_yes = /* #__PURE__ */ new foo(bar);
357+
let new_num_no = /* #__PURE__ */ new foo(bar());
358+
let nospace_num_yes = /*#__PURE__*/ foo(bar);
359+
let nospace_num_no = /*#__PURE__*/ foo(bar());
360+
let nospace_new_num_yes = /*#__PURE__*/ new foo(bar);
361+
let nospace_new_num_no = /*#__PURE__*/ new foo(bar());
362+
let dot_yes = /* @__PURE__ */ foo(sideEffect()).dot(bar);
363+
let dot_no = /* @__PURE__ */ foo(sideEffect()).dot(bar());
364+
let new_dot_yes = /* @__PURE__ */ new foo(sideEffect()).dot(bar);
365+
let new_dot_no = /* @__PURE__ */ new foo(sideEffect()).dot(bar());
366+
let nested_yes = [
367+
1,
368+
/* @__PURE__ */ foo(bar),
369+
2
370+
];
371+
let nested_no = [
372+
1,
373+
/* @__PURE__ */ foo(bar()),
374+
2
375+
];
376+
let new_nested_yes = [
377+
1,
378+
/* @__PURE__ */ new foo(bar),
379+
2
380+
];
381+
let new_nested_no = [
382+
1,
383+
/* @__PURE__ */ new foo(bar()),
384+
2
385+
];
386+
let single_at_yes = /* @__PURE__*/ foo(bar);
387+
let single_at_no = /* @__PURE__*/ foo(bar());
388+
let new_single_at_yes = /* @__PURE__*/ new foo(bar);
389+
let new_single_at_no = /* @__PURE__*/ new foo(bar());
390+
let single_num_yes = /* #__PURE__*/ foo(bar);
391+
let single_num_no = /* #__PURE__*/ foo(bar());
392+
let new_single_num_yes = /* #__PURE__*/ new foo(bar);
393+
let new_single_num_no = /* #__PURE__*/ new foo(bar());
394+
let bad_no = foo(bar);
395+
let new_bad_no = new foo(bar);
396+
let parens_no = foo(bar);
397+
let new_parens_no = new foo(bar);
398+
let exp_no = /* @__PURE__ */ foo() ** foo();
399+
let new_exp_no = /* @__PURE__ */ new foo() ** foo();

0 commit comments

Comments
 (0)