Computes message location and builds the pretty display.
(mut self, sources: &SourceTree)
| 135 | |
| 136 | /// Computes message location and builds the pretty display. |
| 137 | pub fn composed(mut self, sources: &SourceTree) -> Self { |
| 138 | let mut cache = FileTreeCache::new(sources); |
| 139 | |
| 140 | for e in &mut self.inner { |
| 141 | let Some(span) = e.span else { |
| 142 | continue; |
| 143 | }; |
| 144 | let Some(source_path) = sources.source_ids.get(&span.source_id) else { |
| 145 | continue; |
| 146 | }; |
| 147 | |
| 148 | let Ok(source) = cache.fetch(source_path) else { |
| 149 | continue; |
| 150 | }; |
| 151 | e.location = e.compose_location(source); |
| 152 | |
| 153 | assert!( |
| 154 | e.location.is_some(), |
| 155 | "span {:?} is out of bounds of the source (len = {})", |
| 156 | e.span, |
| 157 | source.len() |
| 158 | ); |
| 159 | e.display = e.compose_display(source_path.clone(), &mut cache); |
| 160 | } |
| 161 | self |
| 162 | } |
| 163 | } |
| 164 | |
| 165 | impl ErrorMessage { |
no test coverage detected