just works

This commit is contained in:
nora 2022-12-17 22:55:59 +01:00
parent dcd163aeda
commit 436546eaf5
7 changed files with 23 additions and 14 deletions

View file

@ -26,12 +26,12 @@ enum BuildMode {
impl Build {
pub fn new(options: &Options) -> Self {
let mode = if options.cargo {
BuildMode::Cargo
let mode = if options.rustc {
BuildMode::Rustc
} else if let Some(script) = &options.verify_error_path {
BuildMode::Script(script.clone())
} else {
BuildMode::Rustc
BuildMode::Cargo
};
Self {
inner: Rc::new(BuildInner {

View file

@ -27,7 +27,7 @@ impl VisitMut for Visitor<'_> {
match block.stmts.as_slice() {
[syn::Stmt::Expr(syn::Expr::Loop(syn::ExprLoop {
body: loop_body, ..
}))] if loop_body.stmts.is_empty() => {}
}))] if loop_body.stmts.is_empty() && self.checker.can_process(&self.current_path) => {}
_ => {
*block = self.loop_expr.clone();
self.process_state = ProcessState::Changed;

View file

@ -1,3 +1,6 @@
// this code is pretty neat i guess but i dont have a use for it right now
#![allow(dead_code)]
use anyhow::{bail, Context, Result};
use cargo::{
core::{

View file

@ -1,5 +1,3 @@
#![allow(dead_code)]
use std::path::PathBuf;
mod build;
@ -15,25 +13,31 @@ use processor::Minimizer;
use crate::{everybody_loops::EverybodyLoops, privatize::Privatize, processor::Processor};
#[derive(clap::Parser)]
#[command(version, about, name = "cargo", bin_name = "cargo")]
enum Cargo {
Minimize(Options),
}
#[derive(clap::Args, Debug)]
pub struct Options {
#[arg(short, long)]
verify_error_path: Option<PathBuf>,
#[arg(long)]
cargo: bool,
rustc: bool,
#[arg(long)]
no_verify: bool,
#[arg(default_value = "src")]
path: PathBuf,
}
pub fn minimize() -> Result<()> {
let options = Options::parse();
let Cargo::Minimize(options) = Cargo::parse();
let build = build::Build::new(&options);
let mut minimizer = Minimizer::new_glob_dir(&options.path, build);
println!("{minimizer:?}");
minimizer.delete_dead_code().context("deleting dead code")?;
minimizer.run_passes([

View file

@ -57,6 +57,9 @@ impl Minimizer {
.map(|entry| SourceFile {
path: entry.into_path(),
})
.inspect(|file| {
println!("- {}", file.path.display());
})
.collect();
Self { files, build }
@ -94,7 +97,8 @@ impl Minimizer {
let mut krate = syn::parse_file(change.before_content())
.with_context(|| format!("parsing file {file_display}"))?;
let has_made_change = pass.process_file(&mut krate, file, &mut ProcessChecker {});
let has_made_change =
pass.process_file(&mut krate, file, &mut ProcessChecker {});
match has_made_change {
ProcessState::Changed | ProcessState::FileInvalidated => {

View file

@ -144,7 +144,6 @@ impl Processor for DeleteUnusedFunctions {
#[derive(Debug)]
struct Unused {
name: String,
line: usize,
column: Range<usize>,
}
@ -184,7 +183,6 @@ impl FindUnusedFunction {
return None;
}
let name = diag.message.split("`").nth(1)?.to_owned();
let span = &diag.spans[0];
assert_eq!(
@ -197,7 +195,6 @@ impl FindUnusedFunction {
}
Some(Unused {
name,
line: span.line_start,
column: (span.column_start - 1)..(span.column_end - 1),
})