(
diff: ObjectDiffBorrow,
symbol_ref: SymbolRef,
row_index: u32,
diff_config: DiffConfigBorrow,
)
| 293 | } |
| 294 | |
| 295 | fn instruction_hover( |
| 296 | diff: ObjectDiffBorrow, |
| 297 | symbol_ref: SymbolRef, |
| 298 | row_index: u32, |
| 299 | diff_config: DiffConfigBorrow, |
| 300 | ) -> Vec<HoverItem> { |
| 301 | let obj_diff = diff.get::<ResourceObjectDiff>(); |
| 302 | let obj = obj_diff.0.as_ref(); |
| 303 | let obj_diff = &obj_diff.1; |
| 304 | let symbol_display = from_symbol_ref(symbol_ref); |
| 305 | let symbol_diff = if symbol_display.is_mapping_symbol { |
| 306 | obj_diff |
| 307 | .mapping_symbols |
| 308 | .iter() |
| 309 | .find(|s| s.symbol_index == symbol_display.symbol) |
| 310 | .map(|s| &s.symbol_diff) |
| 311 | } else { |
| 312 | obj_diff.symbols.get(symbol_display.symbol) |
| 313 | }; |
| 314 | let Some(ins_ref) = symbol_diff |
| 315 | .and_then(|sd| sd.instruction_rows.get(row_index as usize)) |
| 316 | .and_then(|row| row.ins_ref) |
| 317 | else { |
| 318 | return Vec::new(); |
| 319 | }; |
| 320 | let diff_config = diff_config.get::<ResourceDiffConfig>().0.borrow(); |
| 321 | let Some(resolved) = obj.resolve_instruction_ref(symbol_display.symbol, ins_ref) else { |
| 322 | return vec![HoverItem::Text(HoverItemText { |
| 323 | label: "Error".to_string(), |
| 324 | value: "Failed to resolve instruction".to_string(), |
| 325 | color: HoverItemColor::Delete, |
| 326 | })]; |
| 327 | }; |
| 328 | let ins = match obj.arch.process_instruction(resolved, &diff_config) { |
| 329 | Ok(ins) => ins, |
| 330 | Err(e) => { |
| 331 | return vec![HoverItem::Text(HoverItemText { |
| 332 | label: "Error".to_string(), |
| 333 | value: e.to_string(), |
| 334 | color: HoverItemColor::Delete, |
| 335 | })]; |
| 336 | } |
| 337 | }; |
| 338 | diff::display::instruction_hover(obj, resolved, &ins, &diff_config) |
| 339 | .into_iter() |
| 340 | .map(HoverItem::from) |
| 341 | .collect() |
| 342 | } |
| 343 | |
| 344 | fn display_data_row( |
| 345 | diff: ObjectDiffBorrow, |
nothing calls this directly
no test coverage detected