Skip to content

Commit fde0f53

Browse files
committed
Add support for anonymous class declarations in default exports
This is required because Esprima uses a ClassDeclaration with a null id property when parsing a default export involving an anonymous class.
1 parent 7aa3b04 commit fde0f53

4 files changed

Lines changed: 11 additions & 2 deletions

File tree

escodegen.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1145,7 +1145,10 @@
11451145

11461146
ClassDeclaration: function (stmt, flags) {
11471147
var result, fragment;
1148-
result = ['class ' + stmt.id.name];
1148+
result = ['class'];
1149+
if (stmt.id) {
1150+
result = join(result, this.generateExpression(stmt.id, Precedence.Sequence, E_TTT));
1151+
}
11491152
if (stmt.superClass) {
11501153
fragment = join('extends', this.generateExpression(stmt.superClass, Precedence.Assignment, E_TTT));
11511154
result = join(result, fragment);

test/compare-esprima2/export-default-declaration.expected.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,7 @@ export default function a() {
22
}
33
export default function () {
44
}
5+
export default class A {
6+
}
7+
export default class {
8+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default function a(){}export default function (){}
1+
export default function a(){}export default function (){}export default class A{}export default class{}

test/compare-esprima2/export-default-declaration.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@ export default function a () { }
22
// export default var i = 20;
33
// export default const K = 20;
44
export default function () { }
5+
export default class A { }
6+
export default class { }

0 commit comments

Comments
 (0)