@@ -1897,10 +1897,17 @@ fn spawn_thin_lto_work<'a, B: ExtraBackendMethods>(
18971897
18981898enum SharedEmitterMessage {
18991899 Diagnostic ( Diagnostic ) ,
1900- InlineAsmError ( SpanData , String , Level , Option < ( String , Vec < InnerSpan > ) > ) ,
1900+ InlineAsmError ( InlineAsmError ) ,
19011901 Fatal ( String ) ,
19021902}
19031903
1904+ pub struct InlineAsmError {
1905+ pub span : SpanData ,
1906+ pub msg : String ,
1907+ pub level : Level ,
1908+ pub source : Option < ( String , Vec < InnerSpan > ) > ,
1909+ }
1910+
19041911#[ derive( Clone ) ]
19051912pub struct SharedEmitter {
19061913 sender : Sender < SharedEmitterMessage > ,
@@ -1917,14 +1924,8 @@ impl SharedEmitter {
19171924 ( SharedEmitter { sender } , SharedEmitterMain { receiver } )
19181925 }
19191926
1920- pub fn inline_asm_error (
1921- & self ,
1922- span : SpanData ,
1923- msg : String ,
1924- level : Level ,
1925- source : Option < ( String , Vec < InnerSpan > ) > ,
1926- ) {
1927- drop ( self . sender . send ( SharedEmitterMessage :: InlineAsmError ( span, msg, level, source) ) ) ;
1927+ pub fn inline_asm_error ( & self , err : InlineAsmError ) {
1928+ drop ( self . sender . send ( SharedEmitterMessage :: InlineAsmError ( err) ) ) ;
19281929 }
19291930
19301931 fn fatal ( & self , msg : & str ) {
@@ -2007,15 +2008,15 @@ impl SharedEmitterMain {
20072008 dcx. emit_diagnostic ( d) ;
20082009 sess. dcx ( ) . abort_if_errors ( ) ;
20092010 }
2010- Ok ( SharedEmitterMessage :: InlineAsmError ( span , msg , level , source ) ) => {
2011- assert_matches ! ( level, Level :: Error | Level :: Warning | Level :: Note ) ;
2012- let mut err = Diag :: < ( ) > :: new ( sess. dcx ( ) , level, msg) ;
2013- if !span. is_dummy ( ) {
2014- err. span ( span. span ( ) ) ;
2011+ Ok ( SharedEmitterMessage :: InlineAsmError ( inner ) ) => {
2012+ assert_matches ! ( inner . level, Level :: Error | Level :: Warning | Level :: Note ) ;
2013+ let mut err = Diag :: < ( ) > :: new ( sess. dcx ( ) , inner . level , inner . msg ) ;
2014+ if !inner . span . is_dummy ( ) {
2015+ err. span ( inner . span . span ( ) ) ;
20152016 }
20162017
20172018 // Point to the generated assembly if it is available.
2018- if let Some ( ( buffer, spans) ) = source {
2019+ if let Some ( ( buffer, spans) ) = inner . source {
20192020 let source = sess
20202021 . source_map ( )
20212022 . new_source_file ( FileName :: inline_asm_source_code ( & buffer) , buffer) ;
0 commit comments