mirror of
https://github.com/swc-project/swc.git
synced 2024-10-05 04:39:06 +03:00
fix(es/resolver): Resolve the super class before registering a class name (#7550)
**Related issue:** - Closes #7546.
This commit is contained in:
parent
69b034931e
commit
1d9f972fb4
10
crates/swc/tests/fixture/issues-7xxx/7546/input/.swcrc
Normal file
10
crates/swc/tests/fixture/issues-7xxx/7546/input/.swcrc
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"jsc": {
|
||||
"loose": true
|
||||
},
|
||||
"env": {
|
||||
"include": [
|
||||
"transform-classes"
|
||||
]
|
||||
}
|
||||
}
|
9
crates/swc/tests/fixture/issues-7xxx/7546/input/1.js
Normal file
9
crates/swc/tests/fixture/issues-7xxx/7546/input/1.js
Normal file
@ -0,0 +1,9 @@
|
||||
import { ClassName } from './some-file';
|
||||
|
||||
export default {
|
||||
field: class ClassName extends ClassName {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
}
|
12
crates/swc/tests/fixture/issues-7xxx/7546/output/1.js
Normal file
12
crates/swc/tests/fixture/issues-7xxx/7546/output/1.js
Normal file
@ -0,0 +1,12 @@
|
||||
import { _ as _inherits } from "@swc/helpers/_/_inherits";
|
||||
import { ClassName } from "./some-file";
|
||||
export default {
|
||||
field: /*#__PURE__*/ function(ClassName) {
|
||||
"use strict";
|
||||
_inherits(ClassName1, ClassName);
|
||||
function ClassName1() {
|
||||
return ClassName.call(this);
|
||||
}
|
||||
return ClassName1;
|
||||
}(ClassName)
|
||||
};
|
@ -675,6 +675,8 @@ impl<'a> VisitMut for Resolver<'a> {
|
||||
fn visit_mut_class_expr(&mut self, n: &mut ClassExpr) {
|
||||
// Create a child scope. The class name is only accessible within the class.
|
||||
|
||||
n.class.super_class.visit_mut_with(self);
|
||||
|
||||
self.with_child(ScopeKind::Fn, |child| {
|
||||
child.ident_type = IdentType::Binding;
|
||||
n.ident.visit_mut_with(child);
|
||||
|
@ -0,0 +1,9 @@
|
||||
import { ClassName } from './some-file';
|
||||
|
||||
export default {
|
||||
field: class ClassName extends ClassName {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
import { ClassName__2 } from './some-file';
|
||||
export default {
|
||||
field: class ClassName__3 extends ClassName__2 {
|
||||
constructor(){
|
||||
super();
|
||||
}
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue
Block a user