fix(es/resolver): Resolve the super class before registering a class name (#7550)

**Related issue:**

 - Closes #7546.
This commit is contained in:
Donny/강동윤 2023-06-20 14:03:01 +09:00 committed by GitHub
parent 69b034931e
commit 1d9f972fb4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 50 additions and 0 deletions

View File

@ -0,0 +1,10 @@
{
"jsc": {
"loose": true
},
"env": {
"include": [
"transform-classes"
]
}
}

View File

@ -0,0 +1,9 @@
import { ClassName } from './some-file';
export default {
field: class ClassName extends ClassName {
constructor() {
super();
}
}
}

View 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)
};

View File

@ -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);

View File

@ -0,0 +1,9 @@
import { ClassName } from './some-file';
export default {
field: class ClassName extends ClassName {
constructor() {
super();
}
}
}

View File

@ -0,0 +1,8 @@
import { ClassName__2 } from './some-file';
export default {
field: class ClassName__3 extends ClassName__2 {
constructor(){
super();
}
}
};