Skip to content

Commit d061d29

Browse files
authoredApr 29, 2023
fix(es/typescript): Fix typescript strip pass (#7342)
**Related issue:** - Reverts #7196. - vercel/turborepo#4747.
1 parent 767284e commit d061d29

File tree

3 files changed

+21
-35
lines changed

3 files changed

+21
-35
lines changed
 

‎crates/swc_ecma_transforms_typescript/src/strip.rs

+8-35
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,7 @@ pub fn strip_with_config(config: Config, top_level_mark: Mark) -> impl Fold + Vi
165165
is_type_only_export: Default::default(),
166166
decl_names: Default::default(),
167167
in_var_pat: Default::default(),
168-
keys: Default::default(),
169-
exported_variable_to_is_type: Default::default(),
168+
keys: Default::default()
170169
}),
171170
inline_enum(ts_enum_lit, ts_enum_config)
172171
)
@@ -237,7 +236,6 @@ where
237236
decl_names: Default::default(),
238237
in_var_pat: Default::default(),
239238
keys: Default::default(),
240-
exported_variable_to_is_type: Default::default(),
241239
}),
242240
inline_enum(ts_enum_lit, ts_enum_config)
243241
)
@@ -294,10 +292,6 @@ where
294292
in_var_pat: bool,
295293

296294
keys: Vec<VarDeclarator>,
297-
298-
/// Key is the `orig` in ExportNamedSpecifier
299-
/// Value is `true` if the Key is a type
300-
exported_variable_to_is_type: AHashMap<Id, bool>,
301295
}
302296

303297
impl<C> Strip<C>
@@ -1683,22 +1677,11 @@ where
16831677
self.is_type_only_export = old;
16841678
}
16851679

1686-
fn visit_export_named_specifier(&mut self, n: &ExportNamedSpecifier) {
1687-
let is_type = self.is_type_only_export || n.is_type_only;
1688-
if let ModuleExportName::Ident(local_ident) = &n.orig {
1689-
// If the stored exported `Id` is a value, we just leave it here.
1690-
// If the stored exported `Id` is both a type and value, we consider it's a
1691-
// value. See https://github.com/denoland/deno/issues/8978
1692-
let is_type_to_the_existed = self
1693-
.exported_variable_to_is_type
1694-
.entry(local_ident.to_id())
1695-
.or_insert(is_type);
1696-
1697-
if *is_type_to_the_existed && !is_type {
1698-
*is_type_to_the_existed = false
1699-
}
1700-
}
1701-
n.visit_children_with(self)
1680+
fn visit_export_named_specifier(&mut self, export: &ExportNamedSpecifier) {
1681+
let old = self.is_type_only_export;
1682+
self.is_type_only_export |= export.is_type_only;
1683+
export.visit_children_with(self);
1684+
self.is_type_only_export = old;
17021685
}
17031686

17041687
fn visit_prop_name(&mut self, n: &PropName) {
@@ -2083,18 +2066,8 @@ where
20832066

20842067
import.specifiers.retain(|s| match *s {
20852068
ImportSpecifier::Named(ImportNamedSpecifier {
2086-
ref is_type_only,
2087-
ref local,
2088-
..
2089-
}) if *is_type_only
2090-
|| self
2091-
.exported_variable_to_is_type
2092-
.get(&local.to_id())
2093-
.copied()
2094-
.unwrap_or_default() =>
2095-
{
2096-
false
2097-
}
2069+
ref is_type_only, ..
2070+
}) if *is_type_only => false,
20982071

20992072
ImportSpecifier::Default(ImportDefaultSpecifier { ref local, .. })
21002073
| ImportSpecifier::Named(ImportNamedSpecifier { ref local, .. })
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { NextResponse } from "next/server";
2+
3+
export async function GET(): Promise<Response> {
4+
return NextResponse.json({ data: "hello" });
5+
}
6+
7+
export type { NextResponse };
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { NextResponse } from "next/server";
2+
export async function GET() {
3+
return NextResponse.json({
4+
data: "hello"
5+
});
6+
}

1 commit comments

Comments
 (1)

github-actions[bot] commented on Apr 29, 2023

@github-actions[bot]

Benchmark

Benchmark suite Current: d061d29 Previous: 246300a Ratio
es/full/bugs-1 235080 ns/iter (± 11786) 298449 ns/iter (± 6446) 0.79
es/full/minify/libraries/antd 1175142977 ns/iter (± 12208560) 1567754974 ns/iter (± 20695035) 0.75
es/full/minify/libraries/d3 236847335 ns/iter (± 3367852) 283250223 ns/iter (± 7675151) 0.84
es/full/minify/libraries/echarts 920982645 ns/iter (± 7567862) 1192440599 ns/iter (± 8950670) 0.77
es/full/minify/libraries/jquery 75654137 ns/iter (± 90238) 89078660 ns/iter (± 374179) 0.85
es/full/minify/libraries/lodash 85328261 ns/iter (± 178244) 104551458 ns/iter (± 423722) 0.82
es/full/minify/libraries/moment 44012496 ns/iter (± 128349) 51412568 ns/iter (± 403891) 0.86
es/full/minify/libraries/react 16091201 ns/iter (± 21907) 18806288 ns/iter (± 80523) 0.86
es/full/minify/libraries/terser 192076025 ns/iter (± 659939) 236610316 ns/iter (± 1717219) 0.81
es/full/minify/libraries/three 329682278 ns/iter (± 638949) 420313813 ns/iter (± 3923666) 0.78
es/full/minify/libraries/typescript 2310137274 ns/iter (± 8335458) 3015405387 ns/iter (± 22961798) 0.77
es/full/minify/libraries/victory 491250516 ns/iter (± 2901004) 636969280 ns/iter (± 6174638) 0.77
es/full/minify/libraries/vue 105952088 ns/iter (± 346388) 127661073 ns/iter (± 965296) 0.83
es/full/codegen/es3 25336 ns/iter (± 97) 28775 ns/iter (± 69) 0.88
es/full/codegen/es5 25453 ns/iter (± 70) 28832 ns/iter (± 61) 0.88
es/full/codegen/es2015 25458 ns/iter (± 39) 28865 ns/iter (± 202) 0.88
es/full/codegen/es2016 25483 ns/iter (± 26) 28841 ns/iter (± 69) 0.88
es/full/codegen/es2017 25474 ns/iter (± 69) 28799 ns/iter (± 127) 0.88
es/full/codegen/es2018 25469 ns/iter (± 47) 28655 ns/iter (± 145) 0.89
es/full/codegen/es2019 25403 ns/iter (± 67) 28627 ns/iter (± 135) 0.89
es/full/codegen/es2020 25455 ns/iter (± 52) 28557 ns/iter (± 72) 0.89
es/full/all/es3 158305600 ns/iter (± 1338493) 181893425 ns/iter (± 4744324) 0.87
es/full/all/es5 150716107 ns/iter (± 763388) 174336938 ns/iter (± 2489280) 0.86
es/full/all/es2015 110612395 ns/iter (± 723889) 137858379 ns/iter (± 1929951) 0.80
es/full/all/es2016 109839004 ns/iter (± 434236) 134664906 ns/iter (± 1166683) 0.82
es/full/all/es2017 109106222 ns/iter (± 396216) 133662887 ns/iter (± 1777677) 0.82
es/full/all/es2018 107106025 ns/iter (± 429220) 128682297 ns/iter (± 2481131) 0.83
es/full/all/es2019 106154692 ns/iter (± 461620) 125293323 ns/iter (± 1689891) 0.85
es/full/all/es2020 101379652 ns/iter (± 548962) 118497045 ns/iter (± 1106031) 0.86
es/full/parser 451498 ns/iter (± 4365) 514355 ns/iter (± 7492) 0.88
es/full/base/fixer 17733 ns/iter (± 56) 22659 ns/iter (± 85) 0.78
es/full/base/resolver_and_hygiene 75875 ns/iter (± 184) 86171 ns/iter (± 271) 0.88
serialization of serde 112 ns/iter (± 0) 120 ns/iter (± 0) 0.93
css/minify/libraries/bootstrap 23367702 ns/iter (± 13966) 27123762 ns/iter (± 86008) 0.86
css/visitor/compare/clone 1710239 ns/iter (± 5038) 2096845 ns/iter (± 9150) 0.82
css/visitor/compare/visit_mut_span 1843980 ns/iter (± 3699) 2251163 ns/iter (± 8429) 0.82
css/visitor/compare/visit_mut_span_panic 1911749 ns/iter (± 4701) 2333928 ns/iter (± 9279) 0.82
css/visitor/compare/fold_span 2617996 ns/iter (± 23104) 3040704 ns/iter (± 7662) 0.86
css/visitor/compare/fold_span_panic 2809024 ns/iter (± 9083) 3191977 ns/iter (± 10725) 0.88
css/lexer/bootstrap_5_1_3 4470101 ns/iter (± 8176) 5145179 ns/iter (± 13565) 0.87
css/lexer/foundation_6_7_4 3771868 ns/iter (± 1211) 4334948 ns/iter (± 12190) 0.87
css/lexer/tailwind_3_1_1 713734 ns/iter (± 594) 819496 ns/iter (± 2369) 0.87
css/parser/bootstrap_5_1_3 18026116 ns/iter (± 21062) 20845446 ns/iter (± 104505) 0.86
css/parser/foundation_6_7_4 14452254 ns/iter (± 17106) 16671333 ns/iter (± 61007) 0.87
css/parser/tailwind_3_1_1 2777838 ns/iter (± 1828) 3211544 ns/iter (± 7099) 0.86
es/codegen/colors 327803 ns/iter (± 185172) 321849 ns/iter (± 184729) 1.02
es/codegen/large 1213234 ns/iter (± 642303) 1250290 ns/iter (± 642413) 0.97
es/codegen/with-parser/colors 41840 ns/iter (± 506) 47594 ns/iter (± 418) 0.88
es/codegen/with-parser/large 468705 ns/iter (± 2044) 507919 ns/iter (± 2573) 0.92
es/minify/libraries/antd 1011121079 ns/iter (± 6225077) 1364978213 ns/iter (± 12483184) 0.74
es/minify/libraries/d3 202745343 ns/iter (± 359101) 243145402 ns/iter (± 1325530) 0.83
es/minify/libraries/echarts 797257187 ns/iter (± 2551791) 1032614119 ns/iter (± 9261018) 0.77
es/minify/libraries/jquery 65890591 ns/iter (± 97023) 77423137 ns/iter (± 508444) 0.85
es/minify/libraries/lodash 76441669 ns/iter (± 129816) 93053414 ns/iter (± 609981) 0.82
es/minify/libraries/moment 38227731 ns/iter (± 42926) 45055336 ns/iter (± 196189) 0.85
es/minify/libraries/react 14287434 ns/iter (± 39964) 16934012 ns/iter (± 92594) 0.84
es/minify/libraries/terser 165132473 ns/iter (± 254961) 203711668 ns/iter (± 2340352) 0.81
es/minify/libraries/three 274733476 ns/iter (± 817280) 344627477 ns/iter (± 3101184) 0.80
es/minify/libraries/typescript 1989826743 ns/iter (± 7610370) 2573515395 ns/iter (± 11096477) 0.77
es/minify/libraries/victory 406342788 ns/iter (± 1031431) 531856775 ns/iter (± 8796710) 0.76
es/minify/libraries/vue 93849822 ns/iter (± 440334) 113340621 ns/iter (± 707887) 0.83
es/visitor/compare/clone 1987315 ns/iter (± 6207) 2317491 ns/iter (± 25920) 0.86
es/visitor/compare/visit_mut_span 2327992 ns/iter (± 5903) 2680238 ns/iter (± 6924) 0.87
es/visitor/compare/visit_mut_span_panic 2347540 ns/iter (± 1575) 2712184 ns/iter (± 7494) 0.87
es/visitor/compare/fold_span 3369100 ns/iter (± 8553) 3778365 ns/iter (± 8539) 0.89
es/visitor/compare/fold_span_panic 3543594 ns/iter (± 3829) 3915056 ns/iter (± 12086) 0.91
es/lexer/colors 11437 ns/iter (± 54) 13142 ns/iter (± 65) 0.87
es/lexer/angular 5601272 ns/iter (± 2866) 6357769 ns/iter (± 17543) 0.88
es/lexer/backbone 722940 ns/iter (± 2174) 782213 ns/iter (± 3509) 0.92
es/lexer/jquery 4075316 ns/iter (± 3419) 4408375 ns/iter (± 16390) 0.92
es/lexer/jquery mobile 6257869 ns/iter (± 5578) 6890025 ns/iter (± 44337) 0.91
es/lexer/mootools 3235489 ns/iter (± 2502) 3454376 ns/iter (± 8173) 0.94
es/lexer/underscore 597771 ns/iter (± 1243) 646866 ns/iter (± 2217) 0.92
es/lexer/three 19349400 ns/iter (± 622989) 20838073 ns/iter (± 77775) 0.93
es/lexer/yui 3535285 ns/iter (± 4527) 3852238 ns/iter (± 14606) 0.92
es/parser/colors 25857 ns/iter (± 69) 28676 ns/iter (± 139) 0.90
es/parser/angular 12945776 ns/iter (± 40756) 14708384 ns/iter (± 115309) 0.88
es/parser/backbone 1915566 ns/iter (± 9826) 2121787 ns/iter (± 28898) 0.90
es/parser/jquery 10374731 ns/iter (± 29656) 11478269 ns/iter (± 110379) 0.90
es/parser/jquery mobile 16061837 ns/iter (± 257968) 17977401 ns/iter (± 97479) 0.89
es/parser/mootools 8038864 ns/iter (± 11368) 8813834 ns/iter (± 21191) 0.91
es/parser/underscore 1648284 ns/iter (± 7776) 1792488 ns/iter (± 11611) 0.92
es/parser/three 44571873 ns/iter (± 166625) 51345805 ns/iter (± 1853624) 0.87
es/parser/yui 7947813 ns/iter (± 29442) 8932208 ns/iter (± 86487) 0.89
es/preset-env/usage/builtin_type 146282 ns/iter (± 40343) 141516 ns/iter (± 34162) 1.03
es/preset-env/usage/property 15114 ns/iter (± 70) 20326 ns/iter (± 114) 0.74
es/resolver/typescript 87707891 ns/iter (± 1110870) 117124945 ns/iter (± 3370487) 0.75
es/fixer/typescript 63391076 ns/iter (± 1484025) 87261612 ns/iter (± 1549727) 0.73
es/hygiene/typescript 128071696 ns/iter (± 563547) 187125584 ns/iter (± 1341668) 0.68
es/resolver_with_hygiene/typescript 228144564 ns/iter (± 1023374) 322038972 ns/iter (± 1875265) 0.71
es/visitor/base-perf/module_clone 58417 ns/iter (± 274) 80291 ns/iter (± 640) 0.73
es/visitor/base-perf/fold_empty 63206 ns/iter (± 353) 90334 ns/iter (± 279) 0.70
es/visitor/base-perf/fold_noop_impl_all 62930 ns/iter (± 215) 90586 ns/iter (± 607) 0.69
es/visitor/base-perf/fold_noop_impl_vec 62884 ns/iter (± 267) 90475 ns/iter (± 646) 0.70
es/visitor/base-perf/boxing_boxed_clone 52 ns/iter (± 0) 56 ns/iter (± 0) 0.93
es/visitor/base-perf/boxing_unboxed_clone 37 ns/iter (± 0) 42 ns/iter (± 0) 0.88
es/visitor/base-perf/boxing_boxed 108 ns/iter (± 0) 103 ns/iter (± 0) 1.05
es/visitor/base-perf/boxing_unboxed 76 ns/iter (± 0) 78 ns/iter (± 0) 0.97
es/visitor/base-perf/visit_empty 0 ns/iter (± 0)
es/visitor/base-perf/visit_contains_this 2685 ns/iter (± 12) 3415 ns/iter (± 95) 0.79
es/base/parallel/resolver/typescript 3534455338 ns/iter (± 302210628) 6159839606 ns/iter (± 543660522) 0.57
es/base/parallel/hygiene/typescript 1418999826 ns/iter (± 19545344) 2180589045 ns/iter (± 28787817) 0.65
misc/visitors/time-complexity/time 5 102 ns/iter (± 0) 96 ns/iter (± 0) 1.06
misc/visitors/time-complexity/time 10 287 ns/iter (± 0) 323 ns/iter (± 10) 0.89
misc/visitors/time-complexity/time 15 484 ns/iter (± 0) 632 ns/iter (± 5) 0.77
misc/visitors/time-complexity/time 20 1010 ns/iter (± 15) 1199 ns/iter (± 20) 0.84
misc/visitors/time-complexity/time 40 3395 ns/iter (± 4) 6071 ns/iter (± 40) 0.56
misc/visitors/time-complexity/time 60 7151 ns/iter (± 6) 15190 ns/iter (± 87) 0.47
es/full-target/es2016 222983 ns/iter (± 484) 251386 ns/iter (± 1392) 0.89
es/full-target/es2017 211901 ns/iter (± 404) 238946 ns/iter (± 465) 0.89
es/full-target/es2018 201021 ns/iter (± 434) 229396 ns/iter (± 1425) 0.88
es2020_nullish_coalescing 67394 ns/iter (± 428) 90839 ns/iter (± 514) 0.74
es2020_optional_chaining 95827 ns/iter (± 279) 120235 ns/iter (± 612) 0.80
es2022_class_properties 116284 ns/iter (± 298) 145694 ns/iter (± 847) 0.80
es2018_object_rest_spread 72787 ns/iter (± 260) 93729 ns/iter (± 722) 0.78
es2019_optional_catch_binding 61714 ns/iter (± 359) 83396 ns/iter (± 926) 0.74
es2017_async_to_generator 62548 ns/iter (± 205) 83691 ns/iter (± 598) 0.75
es2016_exponentiation 65691 ns/iter (± 251) 88040 ns/iter (± 553) 0.75
es2015_arrow 69383 ns/iter (± 193) 90898 ns/iter (± 538) 0.76
es2015_block_scoped_fn 66152 ns/iter (± 185) 89849 ns/iter (± 574) 0.74
es2015_block_scoping 118792 ns/iter (± 515) 165039 ns/iter (± 509) 0.72

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

Please sign in to comment.