Compare commits

..

No commits in common. "060b4afb17366b3ccfebf477022522693eedba28" and "887aade4217245cb9c12051743b644543611ad3f" have entirely different histories.

8 changed files with 167 additions and 537 deletions

665
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -23,7 +23,8 @@ opt-level = 1
anyhow = "1.0.65" anyhow = "1.0.65"
clap = { version = "4.0.29", features = ["derive"] } clap = { version = "4.0.29", features = ["derive"] }
ctrlc = "3.2.5" ctrlc = "3.2.5"
genemichaels = { package = "genemichaels-lib", version = "0.7.2" } genemichaels = "0.1.21"
markdown = { version = "=1.0.0-alpha.14" } # pinning the version to ensure genemichaels builds.
libloading = "0.8.0" libloading = "0.8.0"
owo-colors = "3.5.0" owo-colors = "3.5.0"
proc-macro2 = { version = "1.0.48", features = ["span-locations"] } proc-macro2 = { version = "1.0.48", features = ["span-locations"] }
@ -31,7 +32,7 @@ quote = "1.0.23"
rustfix = "0.6.1" rustfix = "0.6.1"
serde = { version = "1.0.151", features = ["derive"] } serde = { version = "1.0.151", features = ["derive"] }
serde_json = "1.0.90" serde_json = "1.0.90"
syn = { version = "2.0.101", features = ["full", "visit-mut"] } syn = { version = "1.0.101", features = ["full", "visit-mut"] }
tempfile = "3.3.0" tempfile = "3.3.0"
tracing = "0.1.37" tracing = "0.1.37"
tracing-subscriber = { version = "0.3.16", features = ["env-filter"] } tracing-subscriber = { version = "0.3.16", features = ["env-filter"] }

View file

@ -1,11 +1,12 @@
use std::collections::HashMap; use std::collections::HashMap;
use anyhow::Context;
use genemichaels::FormatConfig; use genemichaels::FormatConfig;
pub fn format(file: syn::File) -> anyhow::Result<String> { pub fn format(file: syn::File) -> anyhow::Result<String> {
Ok( Ok(
genemichaels::format_ast(file, &FormatConfig::default(), HashMap::new()) genemichaels::format_ast(file, &FormatConfig::default(), HashMap::new())
.map_err(|e| anyhow::format_err!("formatting source file: {:?}", e))? .context("formatting source file")?
.rendered, .rendered,
) )
} }

View file

@ -26,12 +26,9 @@ impl VisitMut for Visitor<'_> {
fn visit_block_mut(&mut self, block: &mut syn::Block) { fn visit_block_mut(&mut self, block: &mut syn::Block) {
match block.stmts.as_slice() { match block.stmts.as_slice() {
[ [
syn::Stmt::Expr( syn::Stmt::Expr(syn::Expr::Loop(syn::ExprLoop {
syn::Expr::Loop(syn::ExprLoop {
body: loop_body, .. body: loop_body, ..
}), })),
_semi,
),
] if loop_body.stmts.is_empty() => {} ] if loop_body.stmts.is_empty() => {}
// Empty bodies are empty already, no need to loopify them. // Empty bodies are empty already, no need to loopify them.
[] => {} [] => {}

View file

@ -1,7 +1,8 @@
use quote::ToTokens; use quote::ToTokens;
use syn::{ use syn::{
Item, ItemConst, ItemEnum, ItemExternCrate, ItemFn, ItemMacro, ItemMod, ItemStatic, ItemStruct, Item, ItemConst, ItemEnum, ItemExternCrate, ItemFn, ItemMacro, ItemMacro2, ItemMod, ItemStatic,
ItemTrait, ItemTraitAlias, ItemType, ItemUnion, ItemUse, Signature, visit_mut::VisitMut, ItemStruct, ItemTrait, ItemTraitAlias, ItemType, ItemUnion, ItemUse, Signature,
visit_mut::VisitMut,
}; };
use crate::processor::{Pass, PassController, ProcessState, SourceFile, tracking}; use crate::processor::{Pass, PassController, ProcessState, SourceFile, tracking};
@ -62,6 +63,7 @@ impl<'a> Visitor<'a> {
| Item::Macro(ItemMacro { | Item::Macro(ItemMacro {
ident: Some(ident), .. ident: Some(ident), ..
}) })
| Item::Macro2(ItemMacro2 { ident, .. })
| Item::Static(ItemStatic { ident, .. }) | Item::Static(ItemStatic { ident, .. })
| Item::Mod(ItemMod { ident, .. }) | Item::Mod(ItemMod { ident, .. })
| Item::ExternCrate(ItemExternCrate { ident, .. }) => { | Item::ExternCrate(ItemExternCrate { ident, .. }) => {
@ -109,7 +111,7 @@ impl VisitMut for Visitor<'_> {
} }
tracking!(visit_item_fn_mut); tracking!(visit_item_fn_mut);
tracking!(visit_impl_item_fn_mut); tracking!(visit_impl_item_method_mut);
tracking!(visit_item_impl_mut); tracking!(visit_item_impl_mut);
tracking!(visit_field_mut); tracking!(visit_field_mut);
tracking!(visit_item_struct_mut); tracking!(visit_item_struct_mut);

View file

@ -153,7 +153,7 @@ impl VisitMut for Visitor<'_> {
} }
tracking!(visit_item_fn_mut); tracking!(visit_item_fn_mut);
tracking!(visit_impl_item_fn_mut); tracking!(visit_impl_item_method_mut);
tracking!(visit_item_impl_mut); tracking!(visit_item_impl_mut);
tracking!(visit_field_mut); tracking!(visit_field_mut);
tracking!(visit_item_struct_mut); tracking!(visit_item_struct_mut);

View file

@ -268,7 +268,7 @@ impl Minimizer {
macro_rules! tracking { macro_rules! tracking {
() => { () => {
tracking!(visit_item_fn_mut); tracking!(visit_item_fn_mut);
tracking!(visit_impl_item_fn_mut); tracking!(visit_impl_item_method_mut);
tracking!(visit_item_impl_mut); tracking!(visit_item_impl_mut);
tracking!(visit_item_mod_mut); tracking!(visit_item_mod_mut);
tracking!(visit_field_mut); tracking!(visit_field_mut);
@ -282,10 +282,10 @@ macro_rules! tracking {
self.current_path.pop(); self.current_path.pop();
} }
}; };
(visit_impl_item_fn_mut) => { (visit_impl_item_method_mut) => {
fn visit_impl_item_fn_mut(&mut self, method: &mut syn::ImplItemFn) { fn visit_impl_item_method_mut(&mut self, method: &mut syn::ImplItemMethod) {
self.current_path.push(method.sig.ident.to_string()); self.current_path.push(method.sig.ident.to_string());
syn::visit_mut::visit_impl_item_fn_mut(self, method); syn::visit_mut::visit_impl_item_method_mut(self, method);
self.current_path.pop(); self.current_path.pop();
} }
}; };

View file

@ -244,7 +244,7 @@ impl VisitMut for FindUnusedFunction<'_> {
.push(item_impl.self_ty.clone().into_token_stream().to_string()); .push(item_impl.self_ty.clone().into_token_stream().to_string());
item_impl.items.retain(|item| match item { item_impl.items.retain(|item| match item {
ImplItem::Fn(method) => { ImplItem::Method(method) => {
self.current_path.push(method.sig.ident.to_string()); self.current_path.push(method.sig.ident.to_string());
let span = method.sig.ident.span(); let span = method.sig.ident.span();
@ -303,7 +303,7 @@ impl VisitMut for FindUnusedFunction<'_> {
} }
tracking!(visit_item_fn_mut); tracking!(visit_item_fn_mut);
tracking!(visit_impl_item_fn_mut); tracking!(visit_impl_item_method_mut);
tracking!(visit_field_mut); tracking!(visit_field_mut);
tracking!(visit_item_struct_mut); tracking!(visit_item_struct_mut);
tracking!(visit_item_trait_mut); tracking!(visit_item_trait_mut);