@@ -5359,17 +5359,17 @@ const _super = (function (geti, seti) {
5359
5359
//
5360
5360
// TypeScript | Javascript
5361
5361
// --------------------------------|------------------------------------
5362
- // @dec | let C_1;
5363
- // class C { | let C = C_1 = class C {
5364
- // static x() { return C.y; } | static x() { return C_1.y; }
5365
- // static y = 1; | }
5362
+ // @dec | let C_1 = class C {
5363
+ // class C { | static x() { return C_1.y; }
5364
+ // static x() { return C.y; } | }
5365
+ // static y = 1; | let C = C_1;
5366
5366
// } | C.y = 1;
5367
5367
// | C = C_1 = __decorate([dec], C);
5368
5368
// --------------------------------|------------------------------------
5369
- // @dec | let C_1;
5370
- // export class C { | export let C = C_1 = class C {
5371
- // static x() { return C.y; } | static x() { return C_1.y; }
5372
- // static y = 1; | }
5369
+ // @dec | let C_1 = class C {
5370
+ // export class C { | static x() { return C_1.y; }
5371
+ // static x() { return C.y; } | }
5372
+ // static y = 1; | export let C = C_1;
5373
5373
// } | C.y = 1;
5374
5374
// | C = C_1 = __decorate([dec], C);
5375
5375
// ---------------------------------------------------------------------
@@ -5398,10 +5398,10 @@ const _super = (function (geti, seti) {
5398
5398
//
5399
5399
// TypeScript | Javascript
5400
5400
// --------------------------------|------------------------------------
5401
- // @dec | let C_1;
5402
- // export default class C { | let C = C_1 = class C {
5403
- // static x() { return C.y; } | static x() { return C_1.y; }
5404
- // static y = 1; | }
5401
+ // @dec | let C_1 = class C {
5402
+ // export default class C { | static x() { return C_1.y; }
5403
+ // static x() { return C.y; } | };
5404
+ // static y = 1; | let C = C_1;
5405
5405
// } | C.y = 1;
5406
5406
// | C = C_1 = __decorate([dec], C);
5407
5407
// | export default C;
@@ -5410,25 +5410,25 @@ const _super = (function (geti, seti) {
5410
5410
//
5411
5411
5412
5412
// NOTE: we reuse the same rewriting logic for cases when targeting ES6 and module kind is System.
5413
- // Because of hoisting top level class declaration need to be emitted as class expressions.
5413
+ // Because of hoisting top level class declaration need to be emitted as class expressions.
5414
5414
// Double bind case is only required if node is decorated.
5415
5415
if ( isDecorated && resolver . getNodeCheckFlags ( node ) & NodeCheckFlags . ClassWithBodyScopedClassBinding ) {
5416
5416
decoratedClassAlias = unescapeIdentifier ( makeUniqueName ( node . name ? node . name . text : "default" ) ) ;
5417
5417
decoratedClassAliases [ getNodeId ( node ) ] = decoratedClassAlias ;
5418
- write ( `let ${ decoratedClassAlias } ;` ) ;
5419
- writeLine ( ) ;
5420
5418
}
5421
5419
5422
- if ( isES6ExportedDeclaration ( node ) && ! ( node . flags & NodeFlags . Default ) ) {
5420
+ if ( isES6ExportedDeclaration ( node ) && ! ( node . flags & NodeFlags . Default ) && decoratedClassAlias === undefined ) {
5423
5421
write ( "export " ) ;
5424
5422
}
5425
5423
5426
5424
if ( ! isHoistedDeclarationInSystemModule ) {
5427
5425
write ( "let " ) ;
5428
5426
}
5429
- emitDeclarationName ( node ) ;
5430
5427
if ( decoratedClassAlias !== undefined ) {
5431
- write ( ` = ${ decoratedClassAlias } ` ) ;
5428
+ write ( `${ decoratedClassAlias } ` ) ;
5429
+ }
5430
+ else {
5431
+ emitDeclarationName ( node ) ;
5432
5432
}
5433
5433
5434
5434
write ( " = " ) ;
@@ -5490,6 +5490,16 @@ const _super = (function (geti, seti) {
5490
5490
emitToken ( SyntaxKind . CloseBraceToken , node . members . end ) ;
5491
5491
5492
5492
if ( rewriteAsClassExpression ) {
5493
+ if ( decoratedClassAlias !== undefined ) {
5494
+ write ( ";" ) ;
5495
+ writeLine ( ) ;
5496
+ if ( isES6ExportedDeclaration ( node ) && ! ( node . flags & NodeFlags . Default ) ) {
5497
+ write ( "export " ) ;
5498
+ }
5499
+ write ( "let " ) ;
5500
+ emitDeclarationName ( node ) ;
5501
+ write ( ` = ${ decoratedClassAlias } ` ) ;
5502
+ }
5493
5503
decoratedClassAliases [ getNodeId ( node ) ] = undefined ;
5494
5504
write ( ";" ) ;
5495
5505
}
0 commit comments