diff --git a/Cargo.toml b/Cargo.toml index 4e9eff0..7d3807f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,3 +14,9 @@ bevy_ecs = { version = "0.16.0", default-features = false } bevy_log = { version = "0.16.0", default-features = false } bevy_state = { version = "0.16.0", default-features = false, features = ["bevy_app"] } bevy = { version = "0.16.0", default-features = false, features = ["bevy_log", "bevy_state"] } +deluxe = { version = "0.5.0", package = "deluxe-tg" } +deluxe-core = { version = "0.5.0", package = "deluxe-core-tg" } +proc-macro2 = "1.0.93" +quote = "1.0.38" +sha256 = { version = "1.5.0", default-features = false } +syn = { version = "2.0.96", features = ["full"] } diff --git a/bevy-butler-proc-macro/Cargo.toml b/bevy-butler-proc-macro/Cargo.toml index a7a0ae0..9d0ce8c 100644 --- a/bevy-butler-proc-macro/Cargo.toml +++ b/bevy-butler-proc-macro/Cargo.toml @@ -11,9 +11,9 @@ exclude = [".direnv/", ".vscode/", "Cargo.lock", "*.nix", "flake.lock", ".envrc" proc-macro = true [dependencies] -deluxe = "0.5.0" -deluxe-core = "0.5.0" -proc-macro2 = "1.0.93" -quote = "1.0.38" -sha256 = { version = "1.5.0", default-features = false } -syn = { version = "2.0.96", features = ["full"] } +deluxe = { workspace = true } +deluxe-core = { workspace = true } +proc-macro2 = { workspace = true } +quote = { workspace = true } +sha256 = { workspace = true } +syn = { workspace = true } diff --git a/bevy-butler-proc-macro/src/add_system/mod.rs b/bevy-butler-proc-macro/src/add_system/mod.rs index 993b61a..2015838 100644 --- a/bevy-butler-proc-macro/src/add_system/mod.rs +++ b/bevy-butler-proc-macro/src/add_system/mod.rs @@ -16,7 +16,7 @@ pub(crate) fn parse_system(attr: &SystemAttr, ident: &Ident) -> Expr { }); let transforms = &attr.transforms.0; - let sys_expr = syn::parse_quote! { + let sys_expr: Expr = syn::parse_quote! { #ident #generics #(. #transforms)* }; diff --git a/bevy-butler-proc-macro/src/add_system/structs.rs b/bevy-butler-proc-macro/src/add_system/structs.rs index c135933..cb889ea 100644 --- a/bevy-butler-proc-macro/src/add_system/structs.rs +++ b/bevy-butler-proc-macro/src/add_system/structs.rs @@ -51,8 +51,10 @@ impl ParseMetaRest for TransformList { // Style 2: NameValue - transform = expr if input.peek(Token![=]) { input.parse::()?; - let expr = Expr::parse(input)?; - ret.push(syn::parse2(quote!(#path ( #expr )))?); + let expr: Expr = Expr::parse(input)?; + let trns: ExprCall = syn::parse2(quote!(#path ( #expr )))?; + ret.push(trns); + parse_end_comma_or_eof(input)?; continue; } @@ -64,7 +66,6 @@ impl ParseMetaRest for TransformList { parse_end_comma_or_eof(input)?; } } - Ok(TransformList(ret)) } } diff --git a/bevy-butler/tests/add_system/generic_system.rs b/bevy-butler/tests/add_system/generic_system.rs index 3371368..9a7313b 100644 --- a/bevy-butler/tests/add_system/generic_system.rs +++ b/bevy-butler/tests/add_system/generic_system.rs @@ -6,7 +6,8 @@ use bevy_ecs::prelude::*; use bevy_log::info; use wasm_bindgen_test::wasm_bindgen_test; -use super::common::log_plugin; +include!("../common.rs"); +use common::log_plugin; #[derive(Resource)] struct GenericResource(pub T, pub bool); @@ -22,10 +23,11 @@ impl Plugin for MyPlugin { } } -#[add_system(generics = <&str>, plugin = MyPlugin, schedule = Startup, before = test_sys::)] -#[add_system(generics = , plugin = MyPlugin, schedule = Startup, after = test_sys::<&str>)] -#[add_system(generics = , plugin = MyPlugin, schedule = Startup, after(test_sys::<&str>), after = test_sys::)] -fn test_sys(mut res: ResMut>) { +// Duplicated generics to test an issue that existed with deluxe +#[add_system(generics = <&str, &str>, plugin = MyPlugin, schedule = Startup, before = test_sys::)] +#[add_system(generics = , plugin = MyPlugin, schedule = Startup, after = test_sys::<&str, &str>)] +#[add_system(generics = , plugin = MyPlugin, schedule = Startup)] +fn test_sys(mut res: ResMut>) { info!("{} = {}", type_name::(), res.0); res.1 = true; }