Compare commits

...

3 Commits

Author SHA1 Message Date
LagoLunatic 43ce084df6
Merge 01a85248eb into 7aa878b48e 2024-12-02 01:22:03 -05:00
LagoLunatic 01a85248eb Merge branch 'main' into hotkeys 2024-12-02 01:21:29 -05:00
Luke Street 7aa878b48e Update all dependencies & clippy fixes 2024-12-01 22:22:35 -07:00
11 changed files with 727 additions and 437 deletions

1099
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -73,6 +73,7 @@ ignore = [
#{ id = "RUSTSEC-0000-0000", reason = "you can specify a reason the advisory is ignored" }, #{ id = "RUSTSEC-0000-0000", reason = "you can specify a reason the advisory is ignored" },
#"a-crate-that-is-yanked@0.1.1", # you can also ignore yanked crate versions if you wish #"a-crate-that-is-yanked@0.1.1", # you can also ignore yanked crate versions if you wish
#{ crate = "a-crate-that-is-yanked@0.1.1", reason = "you can specify why you are ignoring the yanked crate" }, #{ crate = "a-crate-that-is-yanked@0.1.1", reason = "you can specify why you are ignoring the yanked crate" },
{ id = "RUSTSEC-2024-0384", reason = "Unmaintained indirect dependency" },
] ]
# If this is true, then cargo deny will use the git executable to fetch advisory database. # If this is true, then cargo deny will use the git executable to fetch advisory database.
# If this is false, then it uses a built-in git library. # If this is false, then it uses a built-in git library.
@ -97,7 +98,7 @@ allow = [
"BSL-1.0", "BSL-1.0",
"CC0-1.0", "CC0-1.0",
"MPL-2.0", "MPL-2.0",
"Unicode-DFS-2016", "Unicode-3.0",
"Zlib", "Zlib",
"0BSD", "0BSD",
"OFL-1.1", "OFL-1.1",

View File

@ -20,7 +20,7 @@ enable-ansi-support = "0.2"
memmap2 = "0.9" memmap2 = "0.9"
objdiff-core = { path = "../objdiff-core", features = ["all"] } objdiff-core = { path = "../objdiff-core", features = ["all"] }
prost = "0.13" prost = "0.13"
ratatui = "0.28" ratatui = "0.29"
rayon = "1.10" rayon = "1.10"
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0" serde_json = "1.0"

View File

@ -1,3 +1,4 @@
#![allow(clippy::needless_lifetimes)] // Generated serde code
use crate::{ use crate::{
diff::{ diff::{
ObjDataDiff, ObjDataDiffKind, ObjDiff, ObjInsArgDiff, ObjInsBranchFrom, ObjInsBranchTo, ObjDataDiff, ObjDataDiffKind, ObjDiff, ObjInsArgDiff, ObjInsBranchFrom, ObjInsBranchTo,

View File

@ -1,3 +1,4 @@
#![allow(clippy::needless_lifetimes)] // Generated serde code
use std::ops::AddAssign; use std::ops::AddAssign;
use anyhow::{bail, Result}; use anyhow::{bail, Result};
@ -173,8 +174,7 @@ impl Report {
continue; continue;
} }
fn is_sub_category(id: &str, parent: &str, sep: char) -> bool { fn is_sub_category(id: &str, parent: &str, sep: char) -> bool {
id.starts_with(parent) id.starts_with(parent) && id.get(parent.len()..).is_some_and(|s| s.starts_with(sep))
&& id.get(parent.len()..).map_or(false, |s| s.starts_with(sep))
} }
let mut sub_categories = self let mut sub_categories = self
.categories .categories

View File

@ -65,10 +65,7 @@ fn to_obj_symbol(
flags = ObjSymbolFlagSet(flags.0 | ObjSymbolFlags::Hidden); flags = ObjSymbolFlagSet(flags.0 | ObjSymbolFlags::Hidden);
} }
#[cfg(feature = "ppc")] #[cfg(feature = "ppc")]
if arch if arch.ppc().and_then(|a| a.extab.as_ref()).is_some_and(|e| e.contains_key(&symbol.index().0))
.ppc()
.and_then(|a| a.extab.as_ref())
.map_or(false, |e| e.contains_key(&symbol.index().0))
{ {
flags = ObjSymbolFlagSet(flags.0 | ObjSymbolFlags::HasExtra); flags = ObjSymbolFlagSet(flags.0 | ObjSymbolFlags::HasExtra);
} }

View File

@ -25,7 +25,7 @@ wsl = []
[dependencies] [dependencies]
anyhow = "1.0" anyhow = "1.0"
bytes = "1.7" bytes = "1.9"
cfg-if = "1.0" cfg-if = "1.0"
const_format = "0.2" const_format = "0.2"
cwdemangle = "1.0" cwdemangle = "1.0"
@ -42,7 +42,7 @@ notify = { git = "https://github.com/notify-rs/notify", rev = "128bf6230c03d39db
objdiff-core = { path = "../objdiff-core", features = ["all"] } objdiff-core = { path = "../objdiff-core", features = ["all"] }
open = "5.3" open = "5.3"
png = "0.17" png = "0.17"
pollster = "0.3" pollster = "0.4"
regex = "1.11" regex = "1.11"
rfd = { version = "0.15" } #, default-features = false, features = ['xdg-portal'] rfd = { version = "0.15" } #, default-features = false, features = ['xdg-portal']
rlwinmdec = "1.0" rlwinmdec = "1.0"
@ -51,7 +51,7 @@ serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0" serde_json = "1.0"
shell-escape = "0.1" shell-escape = "0.1"
strum = { version = "0.26", features = ["derive"] } strum = { version = "0.26", features = ["derive"] }
tempfile = "3.13" tempfile = "3.14"
time = { version = "0.3", features = ["formatting", "local-offset"] } time = { version = "0.3", features = ["formatting", "local-offset"] }
# Keep version in sync with egui # Keep version in sync with egui

View File

@ -152,16 +152,14 @@ fn start_job(
let context = JobContext { status: status.clone(), egui: ctx.clone() }; let context = JobContext { status: status.clone(), egui: ctx.clone() };
let context_inner = JobContext { status: status.clone(), egui: ctx.clone() }; let context_inner = JobContext { status: status.clone(), egui: ctx.clone() };
let (tx, rx) = std::sync::mpsc::channel(); let (tx, rx) = std::sync::mpsc::channel();
let handle = std::thread::spawn(move || { let handle = std::thread::spawn(move || match run(context_inner, rx) {
return match run(context_inner, rx) { Ok(state) => state,
Ok(state) => state, Err(e) => {
Err(e) => { if let Ok(mut w) = status.write() {
if let Ok(mut w) = status.write() { w.error = Some(e);
w.error = Some(e);
}
JobResult::None
} }
}; JobResult::None
}
}); });
let id = JOB_ID.fetch_add(1, Ordering::Relaxed); let id = JOB_ID.fetch_add(1, Ordering::Relaxed);
log::info!("Started job {}", id); log::info!("Started job {}", id);

View File

@ -218,8 +218,8 @@ pub fn data_diff_ui(
let right_ctx = SectionDiffContext::new(result.second_obj.as_ref(), section_name); let right_ctx = SectionDiffContext::new(result.second_obj.as_ref(), section_name);
// If both sides are missing a symbol, switch to symbol diff view // If both sides are missing a symbol, switch to symbol diff view
if !right_ctx.map_or(false, |ctx| ctx.has_section()) if !right_ctx.is_some_and(|ctx| ctx.has_section())
&& !left_ctx.map_or(false, |ctx| ctx.has_section()) && !left_ctx.is_some_and(|ctx| ctx.has_section())
{ {
return Some(DiffViewAction::Navigate(DiffViewNavigation::symbol_diff())); return Some(DiffViewAction::Navigate(DiffViewNavigation::symbol_diff()));
} }

View File

@ -104,7 +104,7 @@ pub fn extab_diff_ui(
let right_diff_symbol = right_ctx.and_then(|ctx| { let right_diff_symbol = right_ctx.and_then(|ctx| {
ctx.symbol_ref.and_then(|symbol_ref| ctx.diff.symbol_diff(symbol_ref).target_symbol) ctx.symbol_ref.and_then(|symbol_ref| ctx.diff.symbol_diff(symbol_ref).target_symbol)
}); });
if left_diff_symbol.is_some() && right_ctx.map_or(false, |ctx| !ctx.has_symbol()) { if left_diff_symbol.is_some() && right_ctx.is_some_and(|ctx| !ctx.has_symbol()) {
let (right_section, right_symbol) = let (right_section, right_symbol) =
right_ctx.unwrap().obj.section_symbol(left_diff_symbol.unwrap()); right_ctx.unwrap().obj.section_symbol(left_diff_symbol.unwrap());
let symbol_ref = SymbolRefByName::new(right_symbol, right_section); let symbol_ref = SymbolRefByName::new(right_symbol, right_section);
@ -114,7 +114,7 @@ pub fn extab_diff_ui(
left_symbol: state.symbol_state.left_symbol.clone(), left_symbol: state.symbol_state.left_symbol.clone(),
right_symbol: Some(symbol_ref), right_symbol: Some(symbol_ref),
})); }));
} else if right_diff_symbol.is_some() && left_ctx.map_or(false, |ctx| !ctx.has_symbol()) { } else if right_diff_symbol.is_some() && left_ctx.is_some_and(|ctx| !ctx.has_symbol()) {
let (left_section, left_symbol) = let (left_section, left_symbol) =
left_ctx.unwrap().obj.section_symbol(right_diff_symbol.unwrap()); left_ctx.unwrap().obj.section_symbol(right_diff_symbol.unwrap());
let symbol_ref = SymbolRefByName::new(left_symbol, left_section); let symbol_ref = SymbolRefByName::new(left_symbol, left_section);
@ -127,8 +127,8 @@ pub fn extab_diff_ui(
} }
// If both sides are missing a symbol, switch to symbol diff view // If both sides are missing a symbol, switch to symbol diff view
if right_ctx.map_or(false, |ctx| !ctx.has_symbol()) if right_ctx.is_some_and(|ctx| !ctx.has_symbol())
&& left_ctx.map_or(false, |ctx| !ctx.has_symbol()) && left_ctx.is_some_and(|ctx| !ctx.has_symbol())
{ {
return Some(DiffViewAction::Navigate(DiffViewNavigation::symbol_diff())); return Some(DiffViewAction::Navigate(DiffViewNavigation::symbol_diff()));
} }
@ -147,7 +147,7 @@ pub fn extab_diff_ui(
.add_enabled( .add_enabled(
!state.scratch_running !state.scratch_running
&& state.scratch_available && state.scratch_available
&& left_ctx.map_or(false, |ctx| ctx.has_symbol()), && left_ctx.is_some_and(|ctx| ctx.has_symbol()),
egui::Button::new("📲 decomp.me"), egui::Button::new("📲 decomp.me"),
) )
.on_hover_text_at_pointer("Create a new scratch on decomp.me (beta)") .on_hover_text_at_pointer("Create a new scratch on decomp.me (beta)")

View File

@ -640,7 +640,7 @@ pub fn function_diff_ui(
let right_diff_symbol = right_ctx.and_then(|ctx| { let right_diff_symbol = right_ctx.and_then(|ctx| {
ctx.symbol_ref.and_then(|symbol_ref| ctx.diff.symbol_diff(symbol_ref).target_symbol) ctx.symbol_ref.and_then(|symbol_ref| ctx.diff.symbol_diff(symbol_ref).target_symbol)
}); });
if left_diff_symbol.is_some() && right_ctx.map_or(false, |ctx| !ctx.has_symbol()) { if left_diff_symbol.is_some() && right_ctx.is_some_and(|ctx| !ctx.has_symbol()) {
let (right_section, right_symbol) = let (right_section, right_symbol) =
right_ctx.unwrap().obj.section_symbol(left_diff_symbol.unwrap()); right_ctx.unwrap().obj.section_symbol(left_diff_symbol.unwrap());
let symbol_ref = SymbolRefByName::new(right_symbol, right_section); let symbol_ref = SymbolRefByName::new(right_symbol, right_section);
@ -650,7 +650,7 @@ pub fn function_diff_ui(
left_symbol: state.symbol_state.left_symbol.clone(), left_symbol: state.symbol_state.left_symbol.clone(),
right_symbol: Some(symbol_ref), right_symbol: Some(symbol_ref),
})); }));
} else if right_diff_symbol.is_some() && left_ctx.map_or(false, |ctx| !ctx.has_symbol()) { } else if right_diff_symbol.is_some() && left_ctx.is_some_and(|ctx| !ctx.has_symbol()) {
let (left_section, left_symbol) = let (left_section, left_symbol) =
left_ctx.unwrap().obj.section_symbol(right_diff_symbol.unwrap()); left_ctx.unwrap().obj.section_symbol(right_diff_symbol.unwrap());
let symbol_ref = SymbolRefByName::new(left_symbol, left_section); let symbol_ref = SymbolRefByName::new(left_symbol, left_section);
@ -663,8 +663,8 @@ pub fn function_diff_ui(
} }
// If both sides are missing a symbol, switch to symbol diff view // If both sides are missing a symbol, switch to symbol diff view
if right_ctx.map_or(false, |ctx| !ctx.has_symbol()) if right_ctx.is_some_and(|ctx| !ctx.has_symbol())
&& left_ctx.map_or(false, |ctx| !ctx.has_symbol()) && left_ctx.is_some_and(|ctx| !ctx.has_symbol())
{ {
return Some(DiffViewAction::Navigate(DiffViewNavigation::symbol_diff())); return Some(DiffViewAction::Navigate(DiffViewNavigation::symbol_diff()));
} }
@ -683,7 +683,7 @@ pub fn function_diff_ui(
.add_enabled( .add_enabled(
!state.scratch_running !state.scratch_running
&& state.scratch_available && state.scratch_available
&& left_ctx.map_or(false, |ctx| ctx.has_symbol()), && left_ctx.is_some_and(|ctx| ctx.has_symbol()),
egui::Button::new("📲 decomp.me"), egui::Button::new("📲 decomp.me"),
) )
.on_hover_text_at_pointer("Create a new scratch on decomp.me (beta)") .on_hover_text_at_pointer("Create a new scratch on decomp.me (beta)")
@ -707,7 +707,7 @@ pub fn function_diff_ui(
.font(appearance.code_font.clone()) .font(appearance.code_font.clone())
.color(appearance.highlight_color), .color(appearance.highlight_color),
); );
if right_ctx.map_or(false, |m| m.has_symbol()) if right_ctx.is_some_and(|m| m.has_symbol())
&& (ui && (ui
.button("Change target") .button("Change target")
.on_hover_text_at_pointer("Choose a different symbol to use as the target") .on_hover_text_at_pointer("Choose a different symbol to use as the target")
@ -778,7 +778,7 @@ pub fn function_diff_ui(
.color(match_color_for_symbol(match_percent, appearance)), .color(match_color_for_symbol(match_percent, appearance)),
); );
} }
if left_ctx.map_or(false, |m| m.has_symbol()) { if left_ctx.is_some_and(|m| m.has_symbol()) {
ui.separator(); ui.separator();
if ui if ui
.button("Change base") .button("Change base")