File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -545,9 +545,11 @@ export class Injector {
545545 clear . push ( `${ varName } = undefined;` ) ;
546546
547547 let setDestination = `` ;
548+ let resetDestination = `` ;
548549 if ( code . needsDestination ) {
549550 const tokenVar = compiler . reserveConst ( prepared . token , 'token' ) ;
550- setDestination = `runtimeContext.destination = { token: ${ tokenVar } };` ;
551+ setDestination = `const oldContext = runtimeContext.destination; runtimeContext.destination = { token: ${ tokenVar } };` ;
552+ resetDestination = `runtimeContext.destination = oldContext;` ;
551553 }
552554
553555 let circularCheckBefore = '' ;
@@ -583,6 +585,7 @@ export class Injector {
583585 ${ code . code }
584586 ${ state } .count++;
585587 } finally {
588+ ${ resetDestination }
586589 ${ state } .creating = 0;
587590 }
588591 ${ circularCheckAfter }
Original file line number Diff line number Diff line change @@ -108,7 +108,35 @@ test('scope catches late changes', () => {
108108 expect ( logger . memory . messageStrings ) . toEqual ( [ '(database) test' , '(database) test2' , 'test3' ] ) ;
109109} ) ;
110110
111- test ( 'scoped logger' , ( ) => {
111+ test ( 'scoped logger 1' , ( ) => {
112+ class MyProvider {
113+ constructor ( public logger : ScopedLogger ) {
114+ }
115+ }
116+
117+ class AnotherProvider {
118+ constructor ( public myProvider : MyProvider , public logger : ScopedLogger ) {
119+ }
120+ }
121+
122+ {
123+ const injector = Injector . from ( [
124+ MyProvider ,
125+ AnotherProvider ,
126+ Logger , // optional base logger used by ScopedLogger
127+ ScopedLogger ,
128+ ] ) ;
129+ const logger = injector . get ( Logger ) ;
130+ expect ( logger ) . toBeInstanceOf ( Logger ) ;
131+
132+ const anotherProvider = injector . get ( AnotherProvider ) ;
133+ expect ( anotherProvider . logger ) . toBeInstanceOf ( Logger ) ;
134+ expect ( anotherProvider . myProvider . logger . scope ) . toBe ( 'MyProvider' ) ;
135+ expect ( anotherProvider . logger . scope ) . toBe ( 'AnotherProvider' ) ;
136+ }
137+ } ) ;
138+
139+ test ( 'scoped logger 2' , ( ) => {
112140 class MyProvider {
113141 constructor ( public logger : ScopedLogger ) {
114142 }
You can’t perform that action at this time.
0 commit comments