misc: get rid of some errors from Cargo lol

This commit is contained in:
2025-06-24 21:55:11 +01:00
parent 77331f65ab
commit ebae99811b
9 changed files with 119 additions and 107 deletions
+5
View File
@@ -1,2 +1,7 @@
[build] [build]
rustc-wrapper = "sccache" rustc-wrapper = "sccache"
# Enable to cut unused deps.
# rustflags = ["-D", "unused-crate-dependencies"]
[future-incompat-report]
frequency = "always"
+9
View File
@@ -1,3 +1,5 @@
cargo-features = ["codegen-backend"]
[workspace] [workspace]
members = ["emulator", "common", "assembler", "dsa_editor"] members = ["emulator", "common", "assembler", "dsa_editor"]
resolver = "3" resolver = "3"
@@ -6,3 +8,10 @@ resolver = "3"
version = "0.2.0" version = "0.2.0"
edition = "2024" edition = "2024"
authors = ["zxq5", "nullndvoid"] authors = ["zxq5", "nullndvoid"]
[profile.dev]
codegen-backend = "cranelift"
panic = "abort" # Cranelift does not support stack unwinds.
lto = false
debug = true
incremental = false # sccache does not support caching incremental crates.
+4 -6
View File
@@ -113,11 +113,10 @@ impl Parser {
let dest = expect_type!(self.next()?, Register)?; let dest = expect_type!(self.next()?, Register)?;
let mut offset = Token::Immediate(0); let mut offset = Token::Immediate(0);
if let Ok(next) = self.peek_next() { if let Ok(next) = self.peek_next()
if expect_type!(next, Immediate).is_ok() { && expect_type!(next, Immediate).is_ok() {
offset = self.next()?; offset = self.next()?;
} }
}
args = vec![base, dest, offset]; args = vec![base, dest, offset];
} }
@@ -125,11 +124,10 @@ impl Parser {
let base = expect_type!(self.next()?, Register)?; let base = expect_type!(self.next()?, Register)?;
let dest = expect_type!(self.next()?, Register, Symbol)?; let dest = expect_type!(self.next()?, Register, Symbol)?;
let mut offset = Token::Immediate(0); let mut offset = Token::Immediate(0);
if let Ok(next) = self.peek_next() { if let Ok(next) = self.peek_next()
if expect_type!(next, Immediate).is_ok() { && expect_type!(next, Immediate).is_ok() {
offset = self.next()?; offset = self.next()?;
} }
}
args = vec![base, dest, offset]; args = vec![base, dest, offset];
} }
+3
View File
@@ -24,3 +24,6 @@ pub mod prelude {
pub use crate::tooling::brainf; pub use crate::tooling::brainf;
pub use crate::tooling::project; pub use crate::tooling::project;
} }
use num_cpus as _;
use threadpool as _;
+7 -3
View File
@@ -1,3 +1,7 @@
use common as _;
use num_cpus as _;
use threadpool as _;
use assembler::{ use assembler::{
prelude::*, prelude::*,
tooling::{brainf, project}, tooling::{brainf, project},
@@ -23,7 +27,7 @@ fn main() {
let mut file = match fs::File::create("brainf.dsb") { let mut file = match fs::File::create("brainf.dsb") {
Err(e) => { Err(e) => {
eprintln!("Failed to create output file: {}", e); eprintln!("Failed to create output file: {e}");
std::process::exit(1); std::process::exit(1);
} }
Ok(file) => file, Ok(file) => file,
@@ -31,7 +35,7 @@ fn main() {
for instruction in result { for instruction in result {
if let Err(e) = file.write(&instruction.encode().to_be_bytes()) { if let Err(e) = file.write(&instruction.encode().to_be_bytes()) {
eprintln!("Failed to write to output file: {}", e); eprintln!("Failed to write to output file: {e}");
std::process::exit(1); std::process::exit(1);
} }
} }
@@ -57,7 +61,7 @@ fn main() {
for instruction in result { for instruction in result {
if let Err(e) = fs::write(output_path, instruction.encode().to_be_bytes()) { if let Err(e) = fs::write(output_path, instruction.encode().to_be_bytes()) {
eprintln!("Failed to write to output file: {}", e); eprintln!("Failed to write to output file: {e}");
std::process::exit(1); std::process::exit(1);
} }
} }
+4 -7
View File
@@ -1,8 +1,3 @@
cargo-features = ["codegen-backend"]
[profile.dev]
codegen-backend = "cranelift"
[package] [package]
name = "emulator" name = "emulator"
version = "0.1.0" version = "0.1.0"
@@ -22,7 +17,6 @@ required-features = ["config"]
common = { path = "../common" } common = { path = "../common" }
assembler = { path = "../assembler" } assembler = { path = "../assembler" }
dsa_editor = { path = "../dsa_editor" } dsa_editor = { path = "../dsa_editor" }
eframe = { version = "0.31.1" }
egui = "0.31.1" egui = "0.31.1"
dirs = "6.0.0" dirs = "6.0.0"
discord-presence = { version = "1.6.0", optional = true } discord-presence = { version = "1.6.0", optional = true }
@@ -35,7 +29,7 @@ default = ["config"]
discord-rpc = ["dep:discord-presence"] discord-rpc = ["dep:discord-presence"]
config = ["dep:toml", "dep:serde"] config = ["dep:toml", "dep:serde"]
# Add support for Android for the fun of it. # Add support for Android for the fun of it. Currently crashes lol.
[target.'cfg(target_os = "android")'.dependencies] [target.'cfg(target_os = "android")'.dependencies]
winit = { version = "0.30.11", features = ["android-native-activity"] } winit = { version = "0.30.11", features = ["android-native-activity"] }
# jni = "0.21.1" # jni = "0.21.1"
@@ -43,3 +37,6 @@ winit = { version = "0.30.11", features = ["android-native-activity"] }
[target.'cfg(target_os = "android")'.dependencies.eframe] [target.'cfg(target_os = "android")'.dependencies.eframe]
version = "0.31.1" version = "0.31.1"
features = ["android-native-activity"] features = ["android-native-activity"]
[target.'cfg(not(target_os = "android"))'.dependencies.eframe]
version = "0.31.1"
+1 -5
View File
@@ -1,9 +1,5 @@
use std::sync::Arc; use std::sync::Arc;
use std::{ use std::sync::mpsc::{self, Receiver, Sender};
sync::mpsc::{self, Receiver, Sender},
thread,
time::Duration,
};
#[allow(unused_imports)] #[allow(unused_imports)]
use crate::emulator::misc::rpc::{Activity, RpcClient}; use crate::emulator::misc::rpc::{Activity, RpcClient};
+72 -72
View File
@@ -218,89 +218,89 @@ impl Editor {
fn handle_file_dialogs(&mut self, ctx: &egui::Context) { fn handle_file_dialogs(&mut self, ctx: &egui::Context) {
// Handle open dialog // Handle open dialog
if let Some(dialog) = &mut self.open_file_dialog { if let Some(dialog) = &mut self.open_file_dialog
if dialog.show(ctx).selected() { && dialog.show(ctx).selected()
if let Some(file) = dialog.path() { {
// check if the file is a binary file if let Some(file) = dialog.path() {
if file.extension().is_some_and(|ext| ext == "dsb") { // check if the file is a binary file
match std::fs::read(file) { if file.extension().is_some_and(|ext| ext == "dsb") {
Ok(content) => { match std::fs::read(file) {
let mut res = String::new(); Ok(content) => {
for (i, b) in content.iter().enumerate() { let mut res = String::new();
_ = write!(res, "{b:02x}"); for (i, b) in content.iter().enumerate() {
if i % 4 == 3 { _ = write!(res, "{b:02x}");
res.push('\n'); if i % 4 == 3 {
} res.push('\n');
}
self.text = res.clone();
self.buffer = res;
self.path = Some(file.to_path_buf());
self.unsaved = false;
self.error = None;
}
Err(e) => {
self.error = Some(format!("Failed to read file: {e}"));
}
}
} else {
match std::fs::read_to_string(file) {
Ok(content) => {
self.text = content.clone();
self.buffer = content;
self.path = Some(file.to_path_buf());
self.unsaved = false;
self.error = None;
}
Err(e) => {
self.error = Some(format!("Failed to read file: {e}"));
}
}
}
}
self.open_file_dialog = None;
}
}
// Handle save dialog
if let Some(dialog) = &mut self.save_file_dialog {
if dialog.show(ctx).selected() {
if let Some(file) = dialog.path() {
self.buffer = self.text.clone();
let content = if file.extension().is_some_and(|ext| ext == "dsb") {
let mut res = Vec::new();
for line in self.text.lines() {
for line in line.split_whitespace() {
match u32::from_str_radix(line, 16) {
Ok(num) => res.push(num),
Err(e) => {
self.error =
Some(format!("Failed to parse file: {e}"));
return;
}
} }
} }
} self.text = res.clone();
res.into_iter() self.buffer = res;
.flat_map(u32::to_be_bytes)
.collect::<Vec<u8>>()
} else {
self.text.clone().as_bytes().to_vec()
};
match std::fs::write(file, content) {
Ok(()) => {
self.path = Some(file.to_path_buf()); self.path = Some(file.to_path_buf());
self.unsaved = false; self.unsaved = false;
self.error = None; self.error = None;
} }
Err(e) => { Err(e) => {
self.error = Some(format!("Failed to save file: {e}")); self.error = Some(format!("Failed to read file: {e}"));
}
}
} else {
match std::fs::read_to_string(file) {
Ok(content) => {
self.text = content.clone();
self.buffer = content;
self.path = Some(file.to_path_buf());
self.unsaved = false;
self.error = None;
}
Err(e) => {
self.error = Some(format!("Failed to read file: {e}"));
} }
} }
} }
self.save_file_dialog = None;
} }
self.open_file_dialog = None;
}
// Handle save dialog
if let Some(dialog) = &mut self.save_file_dialog
&& dialog.show(ctx).selected()
{
if let Some(file) = dialog.path() {
self.buffer = self.text.clone();
let content = if file.extension().is_some_and(|ext| ext == "dsb") {
let mut res = Vec::new();
for line in self.text.lines() {
for line in line.split_whitespace() {
match u32::from_str_radix(line, 16) {
Ok(num) => res.push(num),
Err(e) => {
self.error =
Some(format!("Failed to parse file: {e}"));
return;
}
}
}
}
res.into_iter()
.flat_map(u32::to_be_bytes)
.collect::<Vec<u8>>()
} else {
self.text.clone().as_bytes().to_vec()
};
match std::fs::write(file, content) {
Ok(()) => {
self.path = Some(file.to_path_buf());
self.unsaved = false;
self.error = None;
}
Err(e) => {
self.error = Some(format!("Failed to save file: {e}"));
}
}
}
self.save_file_dialog = None;
} }
} }
+14 -14
View File
@@ -115,24 +115,24 @@ impl Loader {
fn handle_file_dialogs(&mut self, ctx: &egui::Context) { fn handle_file_dialogs(&mut self, ctx: &egui::Context) {
// Handle open dialog // Handle open dialog
if let Some(dialog) = &mut self.open_file_dialog { if let Some(dialog) = &mut self.open_file_dialog
if dialog.show(ctx).selected() { && dialog.show(ctx).selected()
if let Some(file) = dialog.path() { {
// check if the file is a binary file if let Some(file) = dialog.path() {
if file.extension().is_some_and(|ext| ext == "dsb") { // check if the file is a binary file
match std::fs::read(file) { if file.extension().is_some_and(|ext| ext == "dsb") {
Ok(content) => { match std::fs::read(file) {
self.output = content; Ok(content) => {
self.error = None; self.output = content;
} self.error = None;
Err(e) => { }
self.error = Some(format!("Failed to read file: {e}")); Err(e) => {
} self.error = Some(format!("Failed to read file: {e}"));
} }
} }
} }
self.open_file_dialog = None;
} }
self.open_file_dialog = None;
} }
} }