♻️ (macros): Adapta main y test a Tokio

`#[pagetop::main]` y `#[pagetop::test]` expanden ahora a
`#[tokio::main]` y `#[tokio::test]`, eliminando la dependencia de
Actix-web.
This commit is contained in:
Manuel Cillero 2026-05-31 23:43:10 +02:00
parent c1afe0e70c
commit 7d43742a11
5 changed files with 12 additions and 13 deletions

View file

@ -39,7 +39,7 @@ mod smart_default;
use proc_macro::TokenStream;
use quote::{quote, quote_spanned};
use syn::{parse_macro_input, spanned::Spanned, DeriveInput};
use syn::{DeriveInput, parse_macro_input, spanned::Spanned};
/// Macro para escribir plantillas HTML (basada en [Maud](https://docs.rs/maud)).
#[proc_macro]
@ -164,7 +164,7 @@ pub fn derive_auto_default(input: TokenStream) -> TokenStream {
/// documentación se mostrará la entrada del método `with_...()`.
#[proc_macro_attribute]
pub fn builder_fn(_: TokenStream, item: TokenStream) -> TokenStream {
use syn::{parse2, FnArg, Ident, ImplItemFn, Pat, ReturnType, TraitItemFn, Type};
use syn::{FnArg, Ident, ImplItemFn, Pat, ReturnType, TraitItemFn, Type, parse2};
let ts: proc_macro2::TokenStream = item.clone().into();
@ -451,7 +451,7 @@ pub fn builder_fn(_: TokenStream, item: TokenStream) -> TokenStream {
#[proc_macro_attribute]
pub fn main(_: TokenStream, item: TokenStream) -> TokenStream {
let mut output: TokenStream = (quote! {
#[::pagetop::service::rt::main(system = "::pagetop::service::rt::System")]
#[::tokio::main]
})
.into();
@ -472,7 +472,7 @@ pub fn main(_: TokenStream, item: TokenStream) -> TokenStream {
#[proc_macro_attribute]
pub fn test(_: TokenStream, item: TokenStream) -> TokenStream {
let mut output: TokenStream = (quote! {
#[::pagetop::service::rt::test(system = "::pagetop::service::rt::System")]
#[::tokio::test]
})
.into();

View file

@ -4,7 +4,7 @@ use proc_macro2::TokenStream;
use proc_macro2_diagnostics::{Diagnostic, SpanDiagnosticExt};
use quote::ToTokens;
use syn::{
braced, bracketed,
Error, Expr, Ident, Lit, LitBool, LitInt, LitStr, Local, Pat, Stmt, braced, bracketed,
ext::IdentExt,
parenthesized,
parse::{Lookahead1, Parse, ParseStream},
@ -14,7 +14,6 @@ use syn::{
At, Brace, Bracket, Colon, Comma, Dot, Else, Eq, FatArrow, For, If, In, Let, Match, Minus,
Paren, Pound, Question, Semi, Slash, While,
},
Error, Expr, Ident, Lit, LitBool, LitInt, LitStr, Local, Pat, Stmt,
};
#[derive(Debug, Clone)]
@ -1079,7 +1078,7 @@ impl<E: ToTokens> ToTokens for MatchArm<E> {
pub trait DiagnosticParse: Sized {
fn diagnostic_parse(input: ParseStream, diagnostics: &mut Vec<Diagnostic>)
-> syn::Result<Self>;
-> syn::Result<Self>;
}
impl<T: DiagnosticParse> DiagnosticParse for Box<T> {

View file

@ -1,6 +1,6 @@
use proc_macro2::{Ident, Span, TokenStream};
use quote::{quote, ToTokens};
use syn::{parse_quote, token::Brace, Expr, Local};
use quote::{ToTokens, quote};
use syn::{Expr, Local, parse_quote, token::Brace};
use crate::maud::{ast::*, escape};

View file

@ -1,9 +1,9 @@
use proc_macro2::TokenStream;
use quote::quote;
use syn::DeriveInput;
use syn::parse::Error;
use syn::spanned::Spanned;
use syn::DeriveInput;
use crate::smart_default::default_attr::{ConversionStrategy, DefaultAttr};
use crate::smart_default::util::find_only;
@ -68,7 +68,7 @@ fn default_body_tt(body: &syn::Fields) -> Result<(TokenStream, String), Error> {
let mut doc = String::new();
use std::fmt::Write;
let body_tt = match body {
syn::Fields::Named(ref fields) => {
syn::Fields::Named(fields) => {
doc.push_str(" {");
let result = {
let field_assignments = fields
@ -101,7 +101,7 @@ fn default_body_tt(body: &syn::Fields) -> Result<(TokenStream, String), Error> {
doc.push('}');
result
}
syn::Fields::Unnamed(ref fields) => {
syn::Fields::Unnamed(fields) => {
doc.push('(');
let result = {
let field_assignments = fields

View file

@ -1,6 +1,6 @@
use proc_macro2::TokenStream;
use quote::ToTokens;
use syn::{parse::Error, MetaNameValue};
use syn::{MetaNameValue, parse::Error};
use crate::smart_default::util::find_only;