@@ -5359,17 +5359,17 @@ const _super = (function (geti, seti) {
53595359 //
53605360 // TypeScript | Javascript
53615361 // --------------------------------|------------------------------------
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;
53665366 // } | C.y = 1;
53675367 // | C = C_1 = __decorate([dec], C);
53685368 // --------------------------------|------------------------------------
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;
53735373 // } | C.y = 1;
53745374 // | C = C_1 = __decorate([dec], C);
53755375 // ---------------------------------------------------------------------
@@ -5398,10 +5398,10 @@ const _super = (function (geti, seti) {
53985398 //
53995399 // TypeScript | Javascript
54005400 // --------------------------------|------------------------------------
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;
54055405 // } | C.y = 1;
54065406 // | C = C_1 = __decorate([dec], C);
54075407 // | export default C;
@@ -5410,25 +5410,25 @@ const _super = (function (geti, seti) {
54105410 //
54115411
54125412 // 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.
54145414 // Double bind case is only required if node is decorated.
54155415 if ( isDecorated && resolver . getNodeCheckFlags ( node ) & NodeCheckFlags . ClassWithBodyScopedClassBinding ) {
54165416 decoratedClassAlias = unescapeIdentifier ( makeUniqueName ( node . name ? node . name . text : "default" ) ) ;
54175417 decoratedClassAliases [ getNodeId ( node ) ] = decoratedClassAlias ;
5418- write ( `let ${ decoratedClassAlias } ;` ) ;
5419- writeLine ( ) ;
54205418 }
54215419
5422- if ( isES6ExportedDeclaration ( node ) && ! ( node . flags & NodeFlags . Default ) ) {
5420+ if ( isES6ExportedDeclaration ( node ) && ! ( node . flags & NodeFlags . Default ) && decoratedClassAlias === undefined ) {
54235421 write ( "export " ) ;
54245422 }
54255423
54265424 if ( ! isHoistedDeclarationInSystemModule ) {
54275425 write ( "let " ) ;
54285426 }
5429- emitDeclarationName ( node ) ;
54305427 if ( decoratedClassAlias !== undefined ) {
5431- write ( ` = ${ decoratedClassAlias } ` ) ;
5428+ write ( `${ decoratedClassAlias } ` ) ;
5429+ }
5430+ else {
5431+ emitDeclarationName ( node ) ;
54325432 }
54335433
54345434 write ( " = " ) ;
@@ -5490,6 +5490,16 @@ const _super = (function (geti, seti) {
54905490 emitToken ( SyntaxKind . CloseBraceToken , node . members . end ) ;
54915491
54925492 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+ }
54935503 decoratedClassAliases [ getNodeId ( node ) ] = undefined ;
54945504 write ( ";" ) ;
54955505 }
0 commit comments