@@ -128,11 +128,24 @@ impl LanguageEngine for ZigEngine {
128128 let src_hash = hash_source ( & snippet) ;
129129 if let Some ( output) = try_cached_execution ( src_hash) {
130130 let start = Instant :: now ( ) ;
131+ let mut stdout = String :: from_utf8_lossy ( & output. stdout ) . into_owned ( ) ;
132+ let stderr = String :: from_utf8_lossy ( & output. stderr ) . into_owned ( ) ;
133+ if output. status . success ( ) && !stderr. contains ( "error:" ) {
134+ if stdout. is_empty ( ) {
135+ stdout = stderr. clone ( ) ;
136+ } else if !stderr. is_empty ( ) {
137+ stdout. push_str ( & stderr) ;
138+ }
139+ }
131140 return Ok ( ExecutionOutcome {
132141 language : self . id ( ) . to_string ( ) ,
133142 exit_code : output. status . code ( ) ,
134- stdout : String :: from_utf8_lossy ( & output. stdout ) . into_owned ( ) ,
135- stderr : String :: from_utf8_lossy ( & output. stderr ) . into_owned ( ) ,
143+ stdout,
144+ stderr : if output. status . success ( ) && !stderr. contains ( "error:" ) {
145+ String :: new ( )
146+ } else {
147+ stderr
148+ } ,
136149 duration : start. elapsed ( ) ,
137150 } ) ;
138151 }
@@ -184,11 +197,24 @@ impl LanguageEngine for ZigEngine {
184197 . stdin ( Stdio :: inherit ( ) ) ;
185198 if let Ok ( output) = run_cmd. output ( ) {
186199 drop ( temp_dir) ;
200+ let mut stdout = String :: from_utf8_lossy ( & output. stdout ) . into_owned ( ) ;
201+ let stderr = String :: from_utf8_lossy ( & output. stderr ) . into_owned ( ) ;
202+ if output. status . success ( ) && !stderr. contains ( "error:" ) {
203+ if stdout. is_empty ( ) {
204+ stdout = stderr. clone ( ) ;
205+ } else if !stderr. is_empty ( ) {
206+ stdout. push_str ( & stderr) ;
207+ }
208+ }
187209 return Ok ( ExecutionOutcome {
188210 language : self . id ( ) . to_string ( ) ,
189211 exit_code : output. status . code ( ) ,
190- stdout : String :: from_utf8_lossy ( & output. stdout ) . into_owned ( ) ,
191- stderr : String :: from_utf8_lossy ( & output. stderr ) . into_owned ( ) ,
212+ stdout,
213+ stderr : if output. status . success ( ) && !stderr. contains ( "error:" ) {
214+ String :: new ( )
215+ } else {
216+ stderr
217+ } ,
192218 duration : start. elapsed ( ) ,
193219 } ) ;
194220 }
0 commit comments