Skip to content

Commit 35b0ca0

Browse files
authored
fix(es): Source map super(...args) calls in injected constructors (#9745)
**Related issue:** - Closes #9742
1 parent c55e524 commit 35b0ca0

File tree

15 files changed

+107
-31
lines changed

15 files changed

+107
-31
lines changed

.changeset/smart-horses-repeat.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
swc_ecma_compat_es2015: patch
3+
swc_ecma_compat_es2022: patch
4+
swc_ecma_transforms_compat: patch
5+
swc_ecma_transforms_proposal: patch
6+
swc_ecma_utils: patch
7+
---
8+
9+
fix(es/transforms): Source map `super(...args)` calls in injected constructors

crates/swc/tests/fixture/issues-5xxx/5272/1/output/a.map

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"mappings": ";;;+BACaA;;;eAAAA;;;;;;;oBADQ;AACd,IAAA,AAAMA,oBAAN;;gBAAMA;aAAAA;kCAAAA;mCAAAA;;oBAAAA;;YACTC,KAAAA;mBAAAA,SAAAA;gBACI,OAAO,IAAI,IAAI,CAACC,GAAG;YACvB;;;WAHSF;EAAYG,UAAI",
2+
"mappings": ";;;+BACaA;;;eAAAA;;;;;;;oBADQ;AACd,IAAA,AAAMA,oBAAN;;gBAAMA;aAAAA;kCAAAA;eAAN,oBAAMA;;oBAAAA;;YACTC,KAAAA;mBAAAA,SAAAA;gBACI,OAAO,IAAI,IAAI,CAACC,GAAG;YACvB;;;WAHSF;EAAYG,UAAI",
33
"names": [
44
"Foo",
55
"bar",

crates/swc/tests/fixture/sourcemap/issue-3854/1-true/output/index.map

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"mappings": ";;;;;;;;;;;IA6BaA,MAAM;eAANA;;IAMAC,MAAM;eAANA;;IARDC,IAAI;;;IAKHC,MAAM;eAANA;;IAaAC,GAAG;eAAHA;;IARAC,MAAM;eAANA;;IAKAC,OAAO;eAAPA;;IATAC,KAAK;eAALA;;IAHAC,QAAQ;eAARA;;;;;;;;kCA9BuC;8BACJ;gCAC1B;2FAwBR;AAGP,MAAMR,SAAqC,IAAM,IAAIS;AACrD,MAAMD,WAA2C,IACpD,IAAIE;AACD,MAAMP,SAAuC,IAAM,IAAIQ;AACvD,MAAMJ,QAAyC,IAClD,IAAIK;AACD,MAAMX,SAA2C,IACpD,IAAIY;AACD,MAAMR,SAGT,CAACS,QAAkC,EAAE,GACrC,IAAIC,wBAAwBD;AACzB,MAAMR,UAAgD,IACzD,IAAIU;AAED,MAAMZ,MAAM;IACfG,OAAQ,IACJ,IAAIU;IACRZ,QAAS,IACL,IAAIa;AACZ;IAGI,uCACA,yCACA,2CACA;AAJJ,MAAMT,oBAAoBU,iCAAe;IAMrCC,OAAO,GAAGA,MAA4B,EAAQ;yCACrC,SAAUA,OAAOC,GAAG,CAACC,yBAAW;QACrC,OAAO,IAAI;IACf;IAEAd,SAASA,QAA6B,EAAQ;yCACrC,WAAYc,IAAAA,yBAAW,EAACd;QAC7B,OAAO,IAAI;IACf;IAEAe,WAAWA,UAAqC,EAAQ;yCAC/C,aAAcA,YAAYF,IAAIC,yBAAW;QAC9C,OAAO,IAAI;IACf;IAEAE,eAAeA,cAAyC,EAAQ;yCACvD,iBAAkBF,IAAAA,yBAAW,EAACE;QACnC,OAAO,IAAI;IACf;IAEAC,QAAc;QACV,OAAO;YACHL,MAAM,6BAAE,IAAI,EAAC;YACbZ,QAAQ,6BAAE,IAAI,EAAC;YACfe,UAAU,6BAAE,IAAI,EAAC;YACjBC,cAAc,6BAAE,IAAI,EAAC;QACzB;IACJ;;wBAhCA,kCAAA;;mBAAuB,EAAE;YACzB,kCAAA;;mBAAuBE;YACvB,kCAAA;;mBAAgCA;YAChC,kCAAA;;mBAAmCA;;;AA8BvC;IAGI,sCACA;AAFJ,MAAMhB,wBAAwBS,iCAAe;IAIzCL,MAAMA,KAA+B,EAAQ;yCACpC,QAASA,MAAMO,GAAG,CAACC,yBAAW;QACnC,OAAO,IAAI;IACf;IAEAK,OAAOA,MAAgC,EAAQ;yCACtC,SAAUA,OAAON,GAAG,CAACC,yBAAW;QACrC,OAAO,IAAI;IACf;IAEAG,QAAkB;QACd,OAAO;YACHX,KAAK,6BAAE,IAAI,EAAC;YACZa,MAAM,6BAAE,IAAI,EAAC;QACjB;IACJ;;wBAlBA,kCAAA;;mBAA0B,EAAE;YAC5B,kCAAA;;mBAA2B,EAAE;;;AAkBjC;IAGI;AADJ,MAAMhB,sBAAsBQ,iCAAe;IAGvCS,QAAQA,OAAoC,EAAQ;yCAC3C,UAAWN,IAAAA,yBAAW,EAACM;QAC5B,OAAO,IAAI;IACf;IAEAH,QAAgB;QACZ,OAAO;YACHG,OAAO,6BAAE,IAAI,EAAC;QAClB;IACJ;;wBAXA,kCAAA;;mBAA8BC,IAAAA,qBAAK,IAAGJ,KAAK;;;AAY/C;IAGI,uCACA,uCACA,2CACA;AAJJ,MAAMR,4BAA4Ba,oCAAkB;IAMhDhB,MAAMA,KAA2C,EAAQ;yCAChD,SAASA,MAAMO,GAAG,CAACU,0BAAY;QACpC,OAAO,IAAI;IACf;IAEA9B,OAAOA,MAAyC,EAAQ;yCAC/C,SAAU8B,IAAAA,0BAAY,EAAC9B,UAAU,EAAE;QACxC,OAAO,IAAI;IACf;IAEA+B,WAAWA,UAAsD,EAAQ;yCAChE,aAAcA,WAAWX,GAAG,CAACU,0BAAY;QAC9C,OAAO,IAAI;IACf;IAEAE,sBACIA,qBAA2D,EACvD;yCACC,wBAAyBA,sBAAsBZ,GAAG,CAACU,0BAAY;QACpE,OAAO,IAAI;IACf;IAEAG,cAAcC,cAAuC,EAAa;QAC9D,OAAO;YACHC,IAAIC,IAAAA,kBAAI,EACJ,wCACA,IAAI,EAAC,qCACL,IAAI,EAAC,yCACL,IAAI,EAAC,oDACL,IAAI,EAAC;YAETvB,OAAOqB,eAAeG,KAAK,4BAAC,IAAI,EAAC;YACjCrC,QAAQkC,eAAeI,KAAK,4BAAC,IAAI,EAAC;YAClCP,YAAYG,eAAeG,KAAK,4BAAC,IAAI,EAAC;YACtCL,uBAAuBE,eAAeG,KAAK,4BACvC,IAAI,EAAC;QAEb;IACJ;;wBA3CA,kCAAA;;mBAAsC,EAAE;YACxC,kCAAA;;mBAAmCZ;YACnC,kCAAA;;mBAAiD,EAAE;YACnD,kCAAA;;mBAAsD,EAAE;;;AAyC5D;IAGI;AADJ,MAAMd,yBAAyBO,iCAAe;IAG1CL,MAAMA,KAA+B,EAAQ;QACzC,2BAAA,IAAI,EAAC,aAAYA,KAAK,CAAC;YAACA;SAAM;QAC9B,OAAO,IAAI;IACf;IAEAb,OAAOA,MAA6B,EAAQ;QACxC,IAAIA,QAAQ;YACR,2BAAA,IAAI,EAAC,aAAYA,MAAM,CAAC;gBAACA;aAAO;QACpC;QACA,OAAO,IAAI;IACf;IAEA+B,WAAWA,UAA0C,EAAQ;QACzD,2BAAA,IAAI,EAAC,aAAYA,UAAU,CAAC;YAACA;SAAW;QACxC,OAAO,IAAI;IACf;IAEAC,sBACIA,qBAA+C,EAC3C;QACJ,2BAAA,IAAI,EAAC,aAAYA,qBAAqB,CAAC;YAACA;SAAsB;QAC9D,OAAO,IAAI;IACf;IAEAR,QAAmB;QACf,OAAO,2BAAA,IAAI,EAAC,aAAYA,KAAK;IACjC;;wBA5BA,kCAAA;;mBAAmC,IAAIR;;;AA6B3C;IAGI,wCACA;AAFJ,MAAMJ,0BAA0BM,iCAAe;IAI3CqB,QAAQA,OAA8B,EAAQ;yCACrC,UAAWA;QAChB,OAAO,IAAI;IACf;IAEArC,OAAOA,MAAwB,EAAQ;yCAC9B,SAAUmB,IAAAA,yBAAW,EAACnB;QAC3B,OAAO,IAAI;IACf;IAEAsB,QAAoB;QAChB,OAAO;YACHe,OAAO,6BAAE,IAAI,EAAC;YACdrC,MAAM,6BAAE,IAAI,EAAC;QACjB;IACJ;;wBAlBA,kCAAA;;mBAAkC;YAClC,kCAAA;;mBAAmBuB;;;AAkBvB;IAGI;AADJ,MAAMR,gCAAgCY,oCAAkB;IAGpDhB,MAAMA,KAA2C,EAAQ;yCAChD,SAASA,MAAMO,GAAG,CAACU,0BAAY;QACpC,OAAO,IAAI;IACf;IAEAG,cAAcC,cAAuC,EAAiB;QAClE,MAAMC,KAAKC,IAAAA,kBAAI,EAAC,6CAAkB,IAAI,EAAC;QACvC,OAAO;YACHD;YACAtB,OAAOqB,eAAeG,KAAK,4BAAC,IAAI,EAAC;QACrC;IACJ;;wBAbA,kCAAA;;mBAAsC,EAAE;;;AAc5C;IAGI;AADJ,MAAMvB,6BAA6BI,iCAAe;IAQ9CL,MAAM,GAAGA,KAA+B,EAAQ;QAC5C,2BAAA,IAAI,EAAC,cAAYA,KAAK,CAAC;YAACA;SAAM;QAC9B,OAAO,IAAI;IACf;IAEAW,QAAuB;QACnB,OAAO,2BAAA,IAAI,EAAC,cAAYA,KAAK;IACjC;IAZAgB,YAAY,GAAG3B,KAA+B,CAAE;QAC5C,KAAK,IAHT,kCAAA;;mBAAuC,IAAII;;QAIvC,IAAI,CAACJ,KAAK,IAAIA;IAClB;AAUJ;IAGI,uCACA;AAFJ,MAAME,8BAA8BG,iCAAe;IAI/CL,MAAM,GAAGA,KAA+B,EAAQ;yCACvC,SAASA,MAAMO,GAAG,CAACC,yBAAW;QACnC,OAAO,IAAI;IACf;IAEAK,OAAO,GAAGA,MAAgC,EAAQ;yCACzC,UAAUA,OAAON,GAAG,CAACC,yBAAW;QACrC,OAAO,IAAI;IACf;IAEAG,QAAwB;QACpB,OAAO;YACHX,KAAK,6BAAE,IAAI,EAAC;YACZa,MAAM,6BAAE,IAAI,EAAC;QACjB;IACJ;;wBAlBA,kCAAA;;mBAA0B,EAAE;YAC5B,kCAAA;;mBAA2B,EAAE;;;AAkBjC",
2+
"mappings": "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",
33
"names": [
44
"create",
55
"header",

crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/output/index.ts

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"jsc": {
3+
"parser": {
4+
"syntax": "ecmascript",
5+
"jsx": false
6+
},
7+
"loose": true,
8+
"minify": {
9+
"compress": false,
10+
"mangle": false
11+
}
12+
},
13+
"module": {
14+
"type": "es6"
15+
},
16+
"minify": false,
17+
"isModule": true,
18+
"env": {
19+
"targets": "node >= 8"
20+
}
21+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Parent {
2+
constructor() {
3+
throw new Error('foo')
4+
}
5+
}
6+
7+
class Child extends Parent {
8+
handleScroll = () => { }
9+
}
10+
11+
new Child()
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
$DIR/tests/stacktrace/issue-9742/input/index.js:3
2+
throw new Error('foo')
3+
^
4+
5+
6+
Error: foo
7+
at constructor ($DIR/tests/stacktrace/issue-9742/input/index.js:3:15)
8+
at Parent ($DIR/tests/stacktrace/issue-9742/input/index.js:7:1)
9+
at Object.<anonymous> ($DIR/tests/stacktrace/issue-9742/input/index.js:11:1)

crates/swc_ecma_compat_es2015/src/classes/constructor.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
11
use std::mem;
22

3-
use swc_common::{util::take::Take, Spanned, SyntaxContext, DUMMY_SP};
3+
use swc_common::{util::take::Take, Span, Spanned, SyntaxContext, DUMMY_SP};
44
use swc_ecma_ast::*;
55
use swc_ecma_transforms_base::{helper, helper_expr};
66
use swc_ecma_transforms_classes::super_field::SuperFieldAccessFolder;
7-
use swc_ecma_utils::{default_constructor, private_ident, quote_ident, ExprFactory};
7+
use swc_ecma_utils::{default_constructor_with_span, private_ident, quote_ident, ExprFactory};
88
use swc_ecma_visit::{noop_visit_mut_type, VisitMut, VisitMutWith};
99
use swc_trace_macro::swc_trace;
1010
use tracing::debug;
1111

1212
use super::Config;
1313

1414
pub(super) fn fold_constructor(
15+
class_span: Span,
1516
constructor: Option<Constructor>,
1617
class_name: &Ident,
1718
class_super_name: &Option<Ident>,
1819
config: Config,
1920
) -> FnDecl {
2021
let is_derived = class_super_name.is_some();
21-
let mut constructor = constructor.unwrap_or_else(|| default_constructor(is_derived));
22+
let mut constructor =
23+
constructor.unwrap_or_else(|| default_constructor_with_span(is_derived, class_span));
2224

2325
// Black magic to detect injected constructor.
2426
let is_constructor_default = constructor.span.is_dummy();

crates/swc_ecma_compat_es2015/src/classes/mod.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,14 @@ impl Classes {
548548

549549
// constructor
550550
stmts.push(
551-
fold_constructor(constructor, &class_name, &super_class_ident, self.config).into(),
551+
fold_constructor(
552+
class.span,
553+
constructor,
554+
&class_name,
555+
&super_class_ident,
556+
self.config,
557+
)
558+
.into(),
552559
);
553560

554561
// convert class methods

crates/swc_ecma_compat_es2022/src/class_properties/mod.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
use swc_common::{
2-
collections::AHashMap, errors::HANDLER, source_map::PURE_SP, util::take::Take, Mark, Spanned,
3-
SyntaxContext, DUMMY_SP,
2+
collections::AHashMap, errors::HANDLER, source_map::PURE_SP, util::take::Take, Mark, Span,
3+
Spanned, SyntaxContext, DUMMY_SP,
44
};
55
use swc_ecma_ast::*;
66
use swc_ecma_transforms_base::{helper, perf::Check};
77
use swc_ecma_transforms_classes::super_field::SuperFieldAccessFolder;
88
use swc_ecma_transforms_macros::fast_path;
99
use swc_ecma_utils::{
10-
alias_ident_for, alias_if_required, constructor::inject_after_super, default_constructor,
11-
is_literal, prepend_stmt, private_ident, quote_ident, replace_ident, ExprFactory,
12-
ModuleItemLike, StmtLike,
10+
alias_ident_for, alias_if_required, constructor::inject_after_super,
11+
default_constructor_with_span, is_literal, prepend_stmt, private_ident, quote_ident,
12+
replace_ident, ExprFactory, ModuleItemLike, StmtLike,
1313
};
1414
use swc_ecma_visit::{
1515
noop_visit_mut_type, noop_visit_type, visit_mut_pass, Visit, VisitMut, VisitMutWith, VisitWith,
@@ -938,7 +938,8 @@ impl ClassProperties {
938938
}
939939
}
940940

941-
let constructor = self.process_constructor(constructor, has_super, constructor_inits);
941+
let constructor =
942+
self.process_constructor(class.span, constructor, has_super, constructor_inits);
942943
if let Some(c) = constructor {
943944
members.push(ClassMember::Constructor(c));
944945
}
@@ -1015,6 +1016,7 @@ impl ClassProperties {
10151016
#[allow(clippy::vec_box)]
10161017
fn process_constructor(
10171018
&mut self,
1019+
class_span: Span,
10181020
constructor: Option<Constructor>,
10191021
has_super: bool,
10201022
constructor_exprs: MemberInitRecord,
@@ -1023,7 +1025,7 @@ impl ClassProperties {
10231025
if constructor_exprs.record.is_empty() {
10241026
None
10251027
} else {
1026-
Some(default_constructor(has_super))
1028+
Some(default_constructor_with_span(has_super, class_span))
10271029
}
10281030
});
10291031

0 commit comments

Comments
 (0)