@@ -184,28 +184,30 @@ pub fn abort_on_err<T>(result: Result<T, CompileIncomplete>, sess: &Session) ->
184184pub fn run < F > ( run_compiler : F ) -> isize
185185 where F : FnOnce ( ) -> ( CompileResult , Option < Session > ) + Send + ' static
186186{
187- let result = monitor ( move || {
188- let ( result, session) = run_compiler ( ) ;
189- if let Err ( CompileIncomplete :: Errored ( _) ) = result {
190- match session {
191- Some ( sess) => {
192- sess. abort_if_errors ( ) ;
193- panic ! ( "error reported but abort_if_errors didn't abort???" ) ;
194- }
195- None => {
196- let emitter =
197- errors:: emitter:: EmitterWriter :: stderr ( errors:: ColorConfig :: Auto ,
198- None ,
199- true ,
200- false ) ;
201- let handler = errors:: Handler :: with_emitter ( true , false , Box :: new ( emitter) ) ;
202- handler. emit ( & MultiSpan :: new ( ) ,
203- "aborting due to previous error(s)" ,
204- errors:: Level :: Fatal ) ;
205- panic:: resume_unwind ( Box :: new ( errors:: FatalErrorMarker ) ) ;
187+ let result = syntax:: with_globals ( || {
188+ monitor ( move || {
189+ let ( result, session) = run_compiler ( ) ;
190+ if let Err ( CompileIncomplete :: Errored ( _) ) = result {
191+ match session {
192+ Some ( sess) => {
193+ sess. abort_if_errors ( ) ;
194+ panic ! ( "error reported but abort_if_errors didn't abort???" ) ;
195+ }
196+ None => {
197+ let emitter =
198+ errors:: emitter:: EmitterWriter :: stderr ( errors:: ColorConfig :: Auto ,
199+ None ,
200+ true ,
201+ false ) ;
202+ let handler = errors:: Handler :: with_emitter ( true , false , Box :: new ( emitter) ) ;
203+ handler. emit ( & MultiSpan :: new ( ) ,
204+ "aborting due to previous error(s)" ,
205+ errors:: Level :: Fatal ) ;
206+ panic:: resume_unwind ( Box :: new ( errors:: FatalErrorMarker ) ) ;
207+ }
206208 }
207209 }
208- }
210+ } )
209211 } ) ;
210212
211213 match result {
0 commit comments