difftreelog
fix empty line outputed with empty trace
in: master
1 file changed
crates/jrsonnet-evaluator/src/trace/mod.rsdiffbeforeafterboth86 evaluation_state: &EvaluationState,86 evaluation_state: &EvaluationState,87 error: &LocError,87 error: &LocError,88 ) -> Result<(), std::fmt::Error> {88 ) -> Result<(), std::fmt::Error> {89 writeln!(out, "{}", error.error())?;89 write!(out, "{}", error.error())?;90 if let Error::ImportSyntaxError {90 if let Error::ImportSyntaxError {91 path,91 path,92 source_code,92 source_code,93 error,93 error,94 } = error.error()94 } = error.error()95 {95 {96 writeln!(out)?;96 use std::fmt::Write;97 use std::fmt::Write;97 let mut n = self.resolver.resolve(path);98 let mut n = self.resolver.resolve(path);98 let mut offset = error.location.offset;99 let mut offset = error.location.offset;136 .map(|e| e.len())137 .map(|e| e.len())137 .max()138 .max()138 .unwrap_or(0);139 .unwrap_or(0);139 for (i, (el, file)) in error.trace().0.iter().zip(file_names).enumerate() {140 for (el, file) in error.trace().0.iter().zip(file_names) {140 if i != 0 {141 writeln!(out)?;141 writeln!(out)?;142 }143 write!(142 write!(144 out,143 out,145 "{:<p$}{:<w$}: {}",144 "{:<p$}{:<w$}: {}",162 evaluation_state: &EvaluationState,161 evaluation_state: &EvaluationState,163 error: &LocError,162 error: &LocError,164 ) -> Result<(), std::fmt::Error> {163 ) -> Result<(), std::fmt::Error> {165 writeln!(out, "{}", error.error())?;164 write!(out, "{}", error.error())?;166 for (i, item) in error.trace().0.iter().enumerate() {165 for item in error.trace().0.iter() {167 if i != 0 {168 writeln!(out)?;166 writeln!(out)?;169 }170 let desc = &item.desc;167 let desc = &item.desc;171 if let Some(source) = &item.location {168 if let Some(source) = &item.location {172 let start_end =169 let start_end =201 evaluation_state: &EvaluationState,198 evaluation_state: &EvaluationState,202 error: &LocError,199 error: &LocError,203 ) -> Result<(), std::fmt::Error> {200 ) -> Result<(), std::fmt::Error> {204 writeln!(out, "{}", error.error())?;201 write!(out, "{}", error.error())?;205 if let Error::ImportSyntaxError {202 if let Error::ImportSyntaxError {206 path,203 path,207 source_code,204 source_code,208 error,205 error,209 } = error.error()206 } = error.error()210 {207 {208 writeln!(out)?;211 let mut offset = error.location.offset;209 let mut offset = error.location.offset;212 if offset >= source_code.len() {210 if offset >= source_code.len() {213 offset = source_code.len() - 1;211 offset = source_code.len() - 1;231 }229 }232 let trace = &error.trace();230 let trace = &error.trace();233 for item in trace.0.iter() {231 for item in trace.0.iter() {232 writeln!(out)?;234 let desc = &item.desc;233 let desc = &item.desc;235 if let Some(source) = &item.location {234 if let Some(source) = &item.location {236 let start_end =235 let start_end =297 };296 };298297299 let dl = DisplayList::from(snippet);298 let dl = DisplayList::from(snippet);300 writeln!(out, "{}", dl)?;299 write!(out, "{}", dl)?;301300302 Ok(())301 Ok(())303 }302 }