Files
continuwuity/src/macros/debug.rs
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

28 lines
702 B
Rust
Raw Normal View History

2024-07-25 01:41:31 +00:00
use std::cmp;
use proc_macro::TokenStream;
2024-07-26 20:40:07 +00:00
use quote::ToTokens;
use syn::{Item, Meta};
2024-07-25 01:41:31 +00:00
2024-07-26 20:40:07 +00:00
use crate::Result;
2024-07-25 01:41:31 +00:00
2024-07-26 20:40:07 +00:00
pub(super) fn recursion_depth(item: Item, _args: &[Meta]) -> Result<TokenStream> {
2024-07-25 01:41:31 +00:00
let mut best: usize = 0;
let mut count: usize = 0;
// think you'd find a fancy recursive ast visitor? think again
let tree = format!("{item:#?}");
for line in tree.lines() {
let trim = line.trim_start_matches(' ');
let diff = line.len().saturating_sub(trim.len());
let level = diff / 4;
best = cmp::max(level, best);
count = count.saturating_add(1);
}
println!("--- Recursion Diagnostic ---");
println!("DEPTH: {best}");
println!("LENGTH: {count}");
2024-07-26 20:40:07 +00:00
Ok(item.into_token_stream().into())
2024-07-25 01:41:31 +00:00
}