Skip to content

Commit 9d08b8a

Browse files
authoredSep 26, 2023
fix(es/typescript): Handle DeclareCollect correctly (#8008)
**Related issue:** - Closes #8007
1 parent 78e1259 commit 9d08b8a

File tree

5 files changed

+139
-1
lines changed

5 files changed

+139
-1
lines changed
 

‎crates/swc_ecma_transforms_typescript/src/strip_import_export.rs

+22-1
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,21 @@ struct DeclareCollect {
120120
id_value: AHashSet<Id>,
121121
}
122122

123-
// Only scan the top level of the module
123+
/// Only scan the top level of the module.
124+
/// Any inner declaration is ignored.
124125
impl Visit for DeclareCollect {
125126
fn visit_binding_ident(&mut self, n: &BindingIdent) {
126127
self.id_value.insert(n.to_id());
127128
}
128129

130+
fn visit_assign_pat_prop(&mut self, n: &AssignPatProp) {
131+
self.id_value.insert(n.key.to_id());
132+
}
133+
134+
fn visit_var_declarator(&mut self, n: &VarDeclarator) {
135+
n.name.visit_with(self);
136+
}
137+
129138
fn visit_fn_decl(&mut self, n: &FnDecl) {
130139
self.id_value.insert(n.ident.to_id());
131140
}
@@ -134,6 +143,10 @@ impl Visit for DeclareCollect {
134143
self.id_value.insert(n.ident.to_id());
135144
}
136145

146+
fn visit_ts_enum_decl(&mut self, n: &TsEnumDecl) {
147+
self.id_value.insert(n.id.to_id());
148+
}
149+
137150
fn visit_export_default_decl(&mut self, n: &ExportDefaultDecl) {
138151
match &n.decl {
139152
DefaultDecl::Class(ClassExpr {
@@ -202,6 +215,14 @@ impl Visit for DeclareCollect {
202215
});
203216
}
204217

218+
fn visit_stmt(&mut self, n: &Stmt) {
219+
if !n.is_decl() {
220+
return;
221+
}
222+
223+
n.visit_children_with(self);
224+
}
225+
205226
fn visit_stmts(&mut self, _: &[Stmt]) {
206227
// skip
207228
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import { useMemo } from "react";
2+
import { type SerializedStyles, type Theme, css } from "@emotion/react";
3+
import { type Breakpoint, theme } from "antd";
4+
5+
import { useMediaQuery } from "./hooks";
6+
7+
export { type Breakpoint } from "antd";
8+
9+
export const getMQ = (token: Theme["token"]) => ({
10+
xsMin: `@media (min-width: ${token.screenXSMin}px)`,
11+
xsMax: `@media (max-width: ${token.screenXSMax}px)`,
12+
smMin: `@media (min-width: ${token.screenSMMin}px)`,
13+
smMax: `@media (max-width: ${token.screenSMMax}px)`,
14+
mdMin: `@media (min-width: ${token.screenMDMin}px)`,
15+
mdMax: `@media (max-width: ${token.screenMDMax}px)`,
16+
lgMin: `@media (min-width: ${token.screenLGMin}px)`,
17+
lgMax: `@media (max-width: ${token.screenLGMax}px)`,
18+
xlMin: `@media (min-width: ${token.screenXLMin}px)`,
19+
xlMax: `@media (max-width: ${token.screenXLMax}px)`,
20+
xxlMin: `@media (min-width: ${token.screenXXLMin}px)`,
21+
});
22+
23+
export const useBreakpoint = (breakpoint: Breakpoint) => {
24+
const { token } = theme.useToken();
25+
26+
const query = useMemo(() => {
27+
const key =
28+
breakpoint === "xs"
29+
? "xsMax"
30+
: (`${breakpoint}Min` satisfies `${Breakpoint}Min`);
31+
32+
return getMQ(token)[key].replace("@media ", "");
33+
}, [breakpoint, token]);
34+
35+
return useMediaQuery(query);
36+
};
37+
38+
export const createStyles = <
39+
T extends Record<
40+
string,
41+
SerializedStyles | ((theme: Theme) => SerializedStyles)
42+
>
43+
>(
44+
arg: T
45+
) => arg;
46+
47+
/**
48+
* Reusable styles
49+
*/
50+
51+
export const centeredCss = css({
52+
display: "grid",
53+
placeContent: "center",
54+
height: "100%",
55+
});
56+
57+
export const fullVPHeightCss = css({
58+
height: "100vh",
59+
});
60+
61+
export const noMargin = css({
62+
margin: "0 !important",
63+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { useMemo } from "react";
2+
import { css } from "@emotion/react";
3+
import { theme } from "antd";
4+
import { useMediaQuery } from "./hooks";
5+
export const getMQ = (token)=>({
6+
xsMin: `@media (min-width: ${token.screenXSMin}px)`,
7+
xsMax: `@media (max-width: ${token.screenXSMax}px)`,
8+
smMin: `@media (min-width: ${token.screenSMMin}px)`,
9+
smMax: `@media (max-width: ${token.screenSMMax}px)`,
10+
mdMin: `@media (min-width: ${token.screenMDMin}px)`,
11+
mdMax: `@media (max-width: ${token.screenMDMax}px)`,
12+
lgMin: `@media (min-width: ${token.screenLGMin}px)`,
13+
lgMax: `@media (max-width: ${token.screenLGMax}px)`,
14+
xlMin: `@media (min-width: ${token.screenXLMin}px)`,
15+
xlMax: `@media (max-width: ${token.screenXLMax}px)`,
16+
xxlMin: `@media (min-width: ${token.screenXXLMin}px)`
17+
});
18+
export const useBreakpoint = (breakpoint)=>{
19+
const { token } = theme.useToken();
20+
const query = useMemo(()=>{
21+
const key = breakpoint === "xs" ? "xsMax" : `${breakpoint}Min`;
22+
return getMQ(token)[key].replace("@media ", "");
23+
}, [
24+
breakpoint,
25+
token
26+
]);
27+
return useMediaQuery(query);
28+
};
29+
export const createStyles = (arg)=>arg;
30+
/**
31+
* Reusable styles
32+
*/ export const centeredCss = css({
33+
display: "grid",
34+
placeContent: "center",
35+
height: "100%"
36+
});
37+
export const fullVPHeightCss = css({
38+
height: "100vh"
39+
});
40+
export const noMargin = css({
41+
margin: "0 !important"
42+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { A } from 'mod';
2+
3+
const foo = <
4+
T extends ((A: any) => void),
5+
>(
6+
arg: T,
7+
) => arg;
8+
9+
console.log(A);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { A } from 'mod';
2+
const foo = (arg)=>arg;
3+
console.log(A);

1 commit comments

Comments
 (1)

github-actions[bot] commented on Sep 27, 2023

@github-actions[bot]

Benchmark

Benchmark suite Current: 9d08b8a Previous: f07bb48 Ratio
es/full/bugs-1 282449 ns/iter (± 7509) 292516 ns/iter (± 8947) 0.97
es/full/minify/libraries/antd 1338949179 ns/iter (± 11337959) 1318265702 ns/iter (± 14442138) 1.02
es/full/minify/libraries/d3 274325218 ns/iter (± 1449043) 277606393 ns/iter (± 4855569) 0.99
es/full/minify/libraries/echarts 1067093159 ns/iter (± 5771137) 1061077829 ns/iter (± 5313346) 1.01
es/full/minify/libraries/jquery 84570412 ns/iter (± 321458) 84059914 ns/iter (± 269367) 1.01
es/full/minify/libraries/lodash 97523506 ns/iter (± 459472) 97395858 ns/iter (± 395724) 1.00
es/full/minify/libraries/moment 49801994 ns/iter (± 128396) 49899127 ns/iter (± 135451) 1.00
es/full/minify/libraries/react 18004233 ns/iter (± 19739) 17960080 ns/iter (± 70795) 1.00
es/full/minify/libraries/terser 218761213 ns/iter (± 1632454) 218424976 ns/iter (± 1026938) 1.00
es/full/minify/libraries/three 386911532 ns/iter (± 1791843) 387127503 ns/iter (± 2620053) 1.00
es/full/minify/libraries/typescript 2680623810 ns/iter (± 13570212) 2655224390 ns/iter (± 8144988) 1.01
es/full/minify/libraries/victory 578395358 ns/iter (± 3717483) 570967433 ns/iter (± 3738279) 1.01
es/full/minify/libraries/vue 119620834 ns/iter (± 378850) 119676440 ns/iter (± 396872) 1.00
es/full/codegen/es3 34170 ns/iter (± 59) 33260 ns/iter (± 78) 1.03
es/full/codegen/es5 34114 ns/iter (± 84) 33288 ns/iter (± 72) 1.02
es/full/codegen/es2015 34166 ns/iter (± 61) 33195 ns/iter (± 94) 1.03
es/full/codegen/es2016 34187 ns/iter (± 94) 33244 ns/iter (± 79) 1.03
es/full/codegen/es2017 34108 ns/iter (± 83) 33237 ns/iter (± 66) 1.03
es/full/codegen/es2018 34107 ns/iter (± 91) 33238 ns/iter (± 58) 1.03
es/full/codegen/es2019 34169 ns/iter (± 77) 33274 ns/iter (± 102) 1.03
es/full/codegen/es2020 34139 ns/iter (± 66) 33260 ns/iter (± 58) 1.03
es/full/all/es3 165401072 ns/iter (± 805762) 163263887 ns/iter (± 1234734) 1.01
es/full/all/es5 156727272 ns/iter (± 1625244) 155869875 ns/iter (± 785701) 1.01
es/full/all/es2015 117187163 ns/iter (± 498504) 116157212 ns/iter (± 840627) 1.01
es/full/all/es2016 115777913 ns/iter (± 962597) 115178018 ns/iter (± 547436) 1.01
es/full/all/es2017 115561284 ns/iter (± 820293) 114443316 ns/iter (± 1049411) 1.01
es/full/all/es2018 112947588 ns/iter (± 684187) 111936151 ns/iter (± 516555) 1.01
es/full/all/es2019 112418713 ns/iter (± 409494) 111330746 ns/iter (± 507583) 1.01
es/full/all/es2020 108720212 ns/iter (± 486187) 107229039 ns/iter (± 650779) 1.01
es/full/parser 486609 ns/iter (± 4788) 487947 ns/iter (± 5621) 1.00
es/full/base/fixer 18262 ns/iter (± 261) 17960 ns/iter (± 151) 1.02
es/full/base/resolver_and_hygiene 80597 ns/iter (± 192) 80166 ns/iter (± 93) 1.01
serialization of serde 295 ns/iter (± 0) 298 ns/iter (± 1) 0.99
css/minify/libraries/bootstrap 28354421 ns/iter (± 50094) 30096864 ns/iter (± 113336) 0.94
css/visitor/compare/clone 1687526 ns/iter (± 6366) 1679478 ns/iter (± 9700) 1.00
css/visitor/compare/visit_mut_span 1820409 ns/iter (± 7569) 1786433 ns/iter (± 7688) 1.02
css/visitor/compare/visit_mut_span_panic 1852989 ns/iter (± 3880) 1890277 ns/iter (± 9097) 0.98
css/visitor/compare/fold_span 2590169 ns/iter (± 12813) 2579837 ns/iter (± 9813) 1.00
css/visitor/compare/fold_span_panic 2768502 ns/iter (± 9198) 2772726 ns/iter (± 12140) 1.00
css/lexer/bootstrap_5_1_3 4439251 ns/iter (± 2101) 4407631 ns/iter (± 2979) 1.01
css/lexer/foundation_6_7_4 3737910 ns/iter (± 1876) 3723074 ns/iter (± 1914) 1.00
css/lexer/tailwind_3_1_1 712373 ns/iter (± 240) 707373 ns/iter (± 430) 1.01
css/parser/bootstrap_5_1_3 19399738 ns/iter (± 47235) 19519084 ns/iter (± 45458) 0.99
css/parser/foundation_6_7_4 15457488 ns/iter (± 31873) 15534832 ns/iter (± 51951) 1.00
css/parser/tailwind_3_1_1 2962325 ns/iter (± 3102) 3018001 ns/iter (± 2460) 0.98
es/codegen/colors 737893 ns/iter (± 404449) 737456 ns/iter (± 402542) 1.00
es/codegen/large 3162508 ns/iter (± 1683085) 3183347 ns/iter (± 1702964) 0.99
es/codegen/with-parser/colors 45819 ns/iter (± 431) 44740 ns/iter (± 200) 1.02
es/codegen/with-parser/large 498623 ns/iter (± 676) 484526 ns/iter (± 750) 1.03
es/minify/libraries/antd 1164663731 ns/iter (± 15049044) 1143525841 ns/iter (± 10724832) 1.02
es/minify/libraries/d3 241214164 ns/iter (± 1400502) 239388362 ns/iter (± 733882) 1.01
es/minify/libraries/echarts 913849594 ns/iter (± 6630630) 903847670 ns/iter (± 9298348) 1.01
es/minify/libraries/jquery 73566178 ns/iter (± 275219) 73016786 ns/iter (± 139473) 1.01
es/minify/libraries/lodash 87027397 ns/iter (± 257211) 86744032 ns/iter (± 334705) 1.00
es/minify/libraries/moment 43596954 ns/iter (± 183201) 43481592 ns/iter (± 37089) 1.00
es/minify/libraries/react 16091286 ns/iter (± 33296) 16002536 ns/iter (± 55721) 1.01
es/minify/libraries/terser 186656268 ns/iter (± 3704782) 185892412 ns/iter (± 909617) 1.00
es/minify/libraries/three 324846004 ns/iter (± 1266950) 320452353 ns/iter (± 1641837) 1.01
es/minify/libraries/typescript 2255133371 ns/iter (± 9122288) 2249705147 ns/iter (± 8732012) 1.00
es/minify/libraries/victory 486064502 ns/iter (± 3401312) 473957821 ns/iter (± 3109563) 1.03
es/minify/libraries/vue 106218837 ns/iter (± 372250) 105569066 ns/iter (± 538857) 1.01
es/visitor/compare/clone 1951175 ns/iter (± 3341) 1940180 ns/iter (± 5581) 1.01
es/visitor/compare/visit_mut_span 2276275 ns/iter (± 3634) 2281329 ns/iter (± 2235) 1.00
es/visitor/compare/visit_mut_span_panic 2322532 ns/iter (± 4473) 2318659 ns/iter (± 3842) 1.00
es/visitor/compare/fold_span 3362902 ns/iter (± 3599) 3369344 ns/iter (± 7006) 1.00
es/visitor/compare/fold_span_panic 3507062 ns/iter (± 10963) 3513094 ns/iter (± 8841) 1.00
es/lexer/colors 13279 ns/iter (± 22) 13146 ns/iter (± 40) 1.01
es/lexer/angular 6164048 ns/iter (± 31176) 6023162 ns/iter (± 21460) 1.02
es/lexer/backbone 791150 ns/iter (± 3777) 777852 ns/iter (± 2227) 1.02
es/lexer/jquery 4537775 ns/iter (± 12227) 4429536 ns/iter (± 6707) 1.02
es/lexer/jquery mobile 6883083 ns/iter (± 2578) 6771955 ns/iter (± 23862) 1.02
es/lexer/mootools 3567489 ns/iter (± 1864) 3512909 ns/iter (± 3145) 1.02
es/lexer/underscore 661461 ns/iter (± 1150) 656614 ns/iter (± 697) 1.01
es/lexer/three 21528075 ns/iter (± 21773) 21232527 ns/iter (± 25959) 1.01
es/lexer/yui 3783982 ns/iter (± 3906) 3774634 ns/iter (± 2919) 1.00
es/parser/colors 27006 ns/iter (± 59) 27080 ns/iter (± 76) 1.00
es/parser/angular 13502372 ns/iter (± 51171) 13438968 ns/iter (± 53327) 1.00
es/parser/backbone 1975900 ns/iter (± 8863) 1972304 ns/iter (± 9622) 1.00
es/parser/jquery 10779860 ns/iter (± 41123) 10785445 ns/iter (± 50031) 1.00
es/parser/jquery mobile 16573142 ns/iter (± 57025) 16472557 ns/iter (± 66282) 1.01
es/parser/mootools 8304665 ns/iter (± 10927) 8280729 ns/iter (± 12496) 1.00
es/parser/underscore 1700918 ns/iter (± 7716) 1701016 ns/iter (± 10011) 1.00
es/parser/three 47246676 ns/iter (± 366210) 46803634 ns/iter (± 186067) 1.01
es/parser/yui 8247681 ns/iter (± 49236) 8220009 ns/iter (± 33711) 1.00
es/preset-env/usage/builtin_type 139155 ns/iter (± 32842) 137285 ns/iter (± 32728) 1.01
es/preset-env/usage/property 16968 ns/iter (± 53) 17011 ns/iter (± 187) 1.00
es/resolver/typescript 91396691 ns/iter (± 887608) 90583553 ns/iter (± 1150988) 1.01
es/fixer/typescript 63686358 ns/iter (± 365604) 63429788 ns/iter (± 1466184) 1.00
es/hygiene/typescript 131257016 ns/iter (± 695194) 129046787 ns/iter (± 277540) 1.02
es/resolver_with_hygiene/typescript 244732517 ns/iter (± 1822223) 242665614 ns/iter (± 913117) 1.01
es/visitor/base-perf/module_clone 59092 ns/iter (± 357) 59090 ns/iter (± 832) 1.00
es/visitor/base-perf/fold_empty 62667 ns/iter (± 240) 63652 ns/iter (± 184) 0.98
es/visitor/base-perf/fold_noop_impl_all 62809 ns/iter (± 131) 63689 ns/iter (± 315) 0.99
es/visitor/base-perf/fold_noop_impl_vec 63289 ns/iter (± 346) 63976 ns/iter (± 428) 0.99
es/visitor/base-perf/boxing_boxed_clone 58 ns/iter (± 0) 56 ns/iter (± 0) 1.04
es/visitor/base-perf/boxing_unboxed_clone 39 ns/iter (± 0) 40 ns/iter (± 0) 0.97
es/visitor/base-perf/boxing_boxed 109 ns/iter (± 0) 109 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed 77 ns/iter (± 0) 78 ns/iter (± 0) 0.99
es/visitor/base-perf/visit_empty 0 ns/iter (± 0) 0 ns/iter (± 0) NaN
es/visitor/base-perf/visit_contains_this 2535 ns/iter (± 16) 2515 ns/iter (± 5) 1.01
es/base/parallel/resolver/typescript 4714031925 ns/iter (± 291885416) 4459789901 ns/iter (± 293980576) 1.06
es/base/parallel/hygiene/typescript 1454922214 ns/iter (± 16601214) 1455628912 ns/iter (± 14833791) 1.00
misc/visitors/time-complexity/time 5 137 ns/iter (± 0) 121 ns/iter (± 7) 1.13
misc/visitors/time-complexity/time 10 305 ns/iter (± 33) 387 ns/iter (± 1) 0.79
misc/visitors/time-complexity/time 15 600 ns/iter (± 1) 735 ns/iter (± 3) 0.82
misc/visitors/time-complexity/time 20 1169 ns/iter (± 3) 996 ns/iter (± 67) 1.17
misc/visitors/time-complexity/time 40 3561 ns/iter (± 30) 3596 ns/iter (± 39) 0.99
misc/visitors/time-complexity/time 60 8833 ns/iter (± 4) 7226 ns/iter (± 8) 1.22

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.