diff --git a/Cargo.toml b/Cargo.toml index 9441b21..cab7a7b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "async-attributes" description = "Experimental language-level polyfills for Async Rust." -version = "1.1.0" +version = "1.1.2" license = "MIT OR Apache-2.0" readme = "README.md" repository = "https://github.com/async-rs/async-attributes" @@ -20,4 +20,4 @@ syn = { version = "1.0", features = ["full"] } quote = "1.0" [dev-dependencies] -async-std = "0.99.5" +async-std = "1.9.0" diff --git a/src/lib.rs b/src/lib.rs index 755a8d5..e53c27b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -27,8 +27,6 @@ #![deny(missing_debug_implementations, nonstandard_style)] #![recursion_limit = "512"] -extern crate proc_macro; - use proc_macro::TokenStream; use quote::{quote, quote_spanned}; use syn::spanned::Spanned; @@ -53,10 +51,11 @@ pub fn main(_attr: TokenStream, item: TokenStream) -> TokenStream { let name = &input.sig.ident; let body = &input.block; let attrs = &input.attrs; + let vis = &input.vis; if name != "main" { return TokenStream::from(quote_spanned! { name.span() => - compile_error!("only the main function can be tagged with #[runtime::main]"), + compile_error!("only the main function can be tagged with #[async_std::main]"), }); } @@ -67,7 +66,7 @@ pub fn main(_attr: TokenStream, item: TokenStream) -> TokenStream { } let result = quote! { - fn main() #ret { + #vis fn main() #ret { #(#attrs)* async fn main(#inputs) #ret { #body @@ -102,6 +101,7 @@ pub fn test(_attr: TokenStream, item: TokenStream) -> TokenStream { let name = &input.sig.ident; let body = &input.block; let attrs = &input.attrs; + let vis = &input.vis; if input.sig.asyncness.is_none() { return TokenStream::from(quote_spanned! { input.span() => @@ -110,9 +110,9 @@ pub fn test(_attr: TokenStream, item: TokenStream) -> TokenStream { } let result = quote! { - #[test] + #[::core::prelude::v1::test] #(#attrs)* - fn #name() #ret { + #vis fn #name() #ret { async_std::task::block_on(async { #body }) } }; @@ -144,6 +144,7 @@ pub fn bench(_attr: TokenStream, item: TokenStream) -> TokenStream { let name = &input.sig.ident; let body = &input.block; let attrs = &input.attrs; + let vis = &input.vis; if input.sig.asyncness.is_none() { return TokenStream::from(quote_spanned! { input.span() => @@ -158,9 +159,9 @@ pub fn bench(_attr: TokenStream, item: TokenStream) -> TokenStream { } let result = quote! { - #[bench] + #[::core::prelude::v1::bench] #(#attrs)* - fn #name(b: &mut test::Bencher) #ret { + #vis fn #name(b: &mut test::Bencher) #ret { task::block_on(task::spawn(async { #body })) diff --git a/tests/test.rs b/tests/test.rs index bc0ca1b..5459acc 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -1,5 +1,13 @@ +use async_attributes::test; + #[async_attributes::test] async fn test() -> std::io::Result<()> { assert_eq!(2 * 2, 4); Ok(()) } + +#[test] +async fn aliased_test() -> std::io::Result<()> { + assert!(true); + Ok(()) +}