xref: /third_party/rust/crates/rust-openssl/openssl-macros/src/lib.rs (revision 92f3ab15)
  • Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
  • only in /third_party/rust/crates/rust-openssl/openssl-macros/src/
1#![allow(clippy::uninlined_format_args)]
2
3use proc_macro::TokenStream;
4use proc_macro2::Ident;
5use quote::quote;
6use syn::{parse_macro_input, ItemFn};
7
8#[proc_macro_attribute]
9pub fn corresponds(attr: TokenStream, item: TokenStream) -> TokenStream {
10    let function = parse_macro_input!(attr as Ident);
11    let item = parse_macro_input!(item as ItemFn);
12
13    let function = function.to_string();
14    let line = format!(
15        "This corresponds to [`{0}`](https://www.openssl.org/docs/manmaster/man3/{0}.html).",
16        function
17    );
18
19    let attrs = item.attrs;
20    let vis = item.vis;
21    let sig = item.sig;
22    let block = item.block;
23
24    let out = quote! {
25        #(#attrs)*
26        #[doc = ""]
27        #[doc = #line]
28        #[doc(alias = #function)]
29        #vis #sig #block
30    };
31    out.into()
32}
33

Indexes created Thu Nov 07 10:32:03 CST 2024