#spans #debugging #macro #proc-macro #token

spanr

A tool for proc-macro authors to visualize the spans on generated code

1 unstable release

0.1.0 Aug 28, 2020

#1616 in Procedural macros

MIT/Apache

240KB
321 lines

spanr

A tool for procedural macro authors to be able to interactively view and debug the Spans on generated code.

Screenshot

Example usage

#[proc_macro_attribute]
pub fn act_zero(_attr: TokenStream, item: TokenStream) -> TokenStream {
    let res = match act_zero_impl(item) {
        Ok(tokens) => tokens,
        Err(e) => e.to_compile_error(),
    };
    // Save the visualization to a file
    spanr::save_html(res.clone(), "tokens.html").unwrap();
    res.into()
}

Building

This crate relies on unstable features from the proc-macro2 crate, so it must be built using a nightly compiler, and the RUSTFLAGS environment variable must be configured:

RUSTFLAGS='--cfg procmacro2_semver_exempt'

Dependencies