Skip to content

Commit 05961eb

Browse files
authoredAug 19, 2024
fix(common): Use SourceMap::adjust_mappings in correct order (#9447)
**Related issue:** - Closes #9392
1 parent 55404ba commit 05961eb

File tree

6 files changed

+27
-50
lines changed

6 files changed

+27
-50
lines changed
 

‎.changeset/hip-buckets-share.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
swc_common: patch
3+
swc_core: patch
4+
---
5+
6+
fix(common): Use `SourceMap::adjust_mappings` in correct order

‎crates/swc/tests/fixture/sourcemap/004/output/index.map

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
{
2-
"mappings": "AAACA,CAAAA,KAAKC,gBAAmB,GAAGD,KAAKC,gBAAmB,IAAI,EAAE,AAAF,EAAIC,IAAI,CAAC;IAC7D;QACI;KACH;IACD;QACU,MAAY,SAAUC,CAAuB,EAAEC,CAAmB,EAAEC,CAAmB;YACzF;YACA,IAAIC,IAAa,SAAoBC,CAAI;gBACrC,IAAIC,IAAOD,EAAKC,IAAI;gBACpB,OAAqB,AAAC,CAAA,GAAGC,EAA+CC,GAAG,AAAHA,EAAK,OAAO;oBAChFC,UAAUH,EAAKI,GAAG;gBACtB;YACJ;YACAP,EAAoBQ,CAAC,CAACT,IACDC,EAAoBS,CAAC,CAACV,GAAqB;gBACvCW,SAAS;oBAC1B,OAAqBA;gBACzB;gBACqBC,SAAS;oBAC1B,OAAqBV;gBACzB;YACJ;YACqB,IAAIG,IAAiDJ,EAAoB,OAC1FU,IAAU,CAAA;QAE1B;QACc,MAAY,SAAUZ,CAAuB,EAAEc,CAAwB,EAAEZ,CAAmB;YAC7Fa,CAAAA,OAAOC,QAAQ,GAAGD,OAAOC,QAAQ,IAAI,EAAE,AAAF,EAAIjB,IAAI,CAAC;gBAC3C;gBACA;oBACI,OAAOG,EAAoB;gBAC/B;aACH;QAGb;IACI;IACS,SAAUA,CAAmB;QAKzBA,EAAoBe,CAAC,CAAC,GAAG;YAC9B;YACA;YACA;SACH,EAAE;YACC,OAPOf,EAAoBA,EAAoBgB,CAAC,GAOxB;QAC5B,IAESC,OAD0BjB,EAAoBe,CAAC;IAGhE;CACC",
2+
"mappings": "AAACA,MAAK,gBAAmB,GAAGA,KAAK,gBAAmB,IAAI,EAAA,AAAC,EAAGC,IAAI,CAAC;IAC7D;QACI;KACH;IACD;QACU,MAAY,SAAUC,CAAuB,EAAEC,CAAmB,EAAEC,CAAmB,EAAE;YAC3F;YACA,IAAIC,IAAa,SAAoBC,CAAI,EAAE;gBACvC,IAAIC,IAAOD,EAAKC,IAAI;gBACpB,OAAsB,CAAA,GAAGC,EAA+CC,GAAAA,AAAE,EAAG,OAAO;oBAChFC,UAAUH,EAAKI,GAAG;gBACtB;YACJ;YACAP,EAAoBQ,CAAC,CAACT,IACDC,EAAoBS,CAAC,CAACV,GAAqB;gBACvCW,SAAS,WAAoB;oBAC9C,OAAqBA;gBACzB;gBACqBC,SAAS,WAAoB;oBAC9C,OAAqBV;gBACzB;YACJ;YACqB,IAAIG,IAAiDJ,EAAoB,OAC1FU,IAAU,CAAA;QAE1B;QACc,MAAY,SAAUZ,CAAuB,EAAEc,CAAwB,EAAEZ,CAAmB,EAAE;aAC/Fa,OAAOC,QAAQ,GAAGD,OAAOC,QAAQ,IAAI,EAAA,AAAC,EAAGjB,IAAI,CAAC;gBAC3C;gBACA,WAAY;oBACR,OAAOG,EAAoB;gBAC/B;aACH;QAGb;IACI;IACS,SAAUA,CAAmB,EAAE;QAK3BA,EAAoBe,CAAC,CAAC,GAAG;YAC9B;YACA;YACA;SACH,EAAE,WAAY;YACX,OAPOf,EAAoBA,EAAoBgB,CAAC,GAOxB;QAC5B,IAESC,OAD0BjB,EAAoBe,CAAC;IAGhE;CACC",
33
"names": [
44
"self",
5-
"webpackChunk_N_E",
65
"push",
76
"__unused_webpack_module",
87
"__webpack_exports__",

‎crates/swc/tests/fixture/sourcemap/issue-6552/input-map/output/index.map

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"mappings": "AAAA,IAAMA,IAAM,cACZC,QAAQC,KAAR,CAAe,KAAY,OAARC,UAEnB,IAAMC,IAAM",
2+
"mappings": "AAAA,IAAMA,GAAG,CAAG,aAAZ,CACAC,OAAO,CAACC,KAAR,CAAe,KAAY,CAA3B,MAAmBC,OAAQ,GAE3B,IAAMC,GAAG,CAAG,EAAZ",
33
"names": [
44
"xxx",
55
"console",

‎crates/swc/tests/minify/issue-7475/issue-8372/1/output.map

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
{
2-
"mappings": "AAEAA,IAAAA,EAAQC,CAFEC,IAAA,MAAA,EAASF,QAAAC,GAAA,CAAAE",
2+
"mappings": "AAEAA,IAAAA,EAAQC,CAAG,AAFD,IAAA,MAAA,EAAS,QAAA,GAAA,CAAA",
33
"names": [
44
"console",
55
"log",
6-
"aób",
7-
"a"
6+
"aób"
87
],
98
"sources": [
109
"input-preprocess.js"

‎crates/swc_common/src/source_map.rs

+16-43
Original file line numberDiff line numberDiff line change
@@ -1252,23 +1252,13 @@ impl SourceMap {
12521252

12531253
let mut src_id = 0u32;
12541254

1255-
if let Some(orig) = orig {
1256-
for src in orig.sources() {
1257-
let id = builder.add_source(src);
1258-
src_id = id;
1259-
1260-
builder.set_source_contents(id, orig.get_source_contents(id));
1261-
}
1262-
}
1263-
12641255
// // This method is optimized based on the fact that mapping is sorted.
12651256
// mappings.sort_by_key(|v| v.0);
12661257

12671258
let mut cur_file: Option<Lrc<SourceFile>> = None;
12681259

12691260
let mut prev_dst_line = u32::MAX;
12701261

1271-
let mut inline_sources_content = false;
12721262
let mut ch_state = ByteToCharPosState::default();
12731263
let mut line_state = ByteToCharPosState::default();
12741264

@@ -1300,13 +1290,11 @@ impl SourceMap {
13001290
if config.skip(&f.name) {
13011291
continue;
13021292
}
1303-
if orig.is_none() {
1304-
src_id = builder.add_source(&config.file_name_to_source(&f.name));
1293+
src_id = builder.add_source(&config.file_name_to_source(&f.name));
13051294

1306-
inline_sources_content = config.inline_sources_content(&f.name);
1307-
if inline_sources_content && orig.is_none() {
1308-
builder.set_source_contents(src_id, Some(&f.src));
1309-
}
1295+
let inline_sources_content = config.inline_sources_content(&f.name);
1296+
if inline_sources_content {
1297+
builder.set_source_contents(src_id, Some(&f.src));
13101298
}
13111299

13121300
ch_state = ByteToCharPosState::default();
@@ -1326,7 +1314,7 @@ impl SourceMap {
13261314
continue;
13271315
}
13281316

1329-
let mut line = match f.lookup_line(pos) {
1317+
let line = match f.lookup_line(pos) {
13301318
Some(line) => line as u32,
13311319
None => continue,
13321320
};
@@ -1352,31 +1340,8 @@ impl SourceMap {
13521340
linechpos,
13531341
);
13541342

1355-
let mut col = chpos - linechpos;
1356-
let mut name = None;
1357-
if let Some(orig) = &orig {
1358-
if let Some(token) = orig
1359-
.lookup_token(line, col)
1360-
.filter(|t| t.get_dst_line() == line)
1361-
{
1362-
line = token.get_src_line();
1363-
col = token.get_src_col();
1364-
if token.has_name() {
1365-
name = token.get_name();
1366-
}
1367-
if token.get_source().is_some() {
1368-
// When we have the original source map, we use the source ids from it
1369-
src_id = token.get_raw_token().src_id;
1370-
if inline_sources_content && !builder.has_source_contents(src_id) {
1371-
if let Some(contents) = token.get_source_view() {
1372-
builder.set_source_contents(src_id, Some(contents.source()));
1373-
}
1374-
}
1375-
}
1376-
} else {
1377-
continue;
1378-
}
1379-
}
1343+
let col = chpos - linechpos;
1344+
let name = None;
13801345

13811346
let name_idx = name
13821347
.or_else(|| config.name_for_bytepos(pos))
@@ -1385,7 +1350,15 @@ impl SourceMap {
13851350
builder.add_raw(lc.line, lc.col, line, col, Some(src_id), name_idx, false);
13861351
prev_dst_line = lc.line;
13871352
}
1388-
builder.into_sourcemap()
1353+
1354+
let map = builder.into_sourcemap();
1355+
1356+
if let Some(mut orig) = orig.cloned() {
1357+
orig.adjust_mappings(&map);
1358+
return orig;
1359+
}
1360+
1361+
map
13891362
}
13901363
}
13911364

‎renovate.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,5 @@
3939
"automerge": true
4040
}
4141
],
42-
"ignorePaths": ["packages/core/e2e/fixtures", "bindings"]
42+
"ignorePaths": ["packages/core/e2e/fixtures"]
4343
}

0 commit comments

Comments
 (0)