From 9c32164e0b7f787b4e3af5464d912b6c1b94b8e1 Mon Sep 17 00:00:00 2001 From: NathanW Date: Mon, 17 May 2021 13:23:11 -0600 Subject: [PATCH] revert supporting generics for deriving TypeUuid --- .../bevy_reflect_derive/src/type_uuid.rs | 10 ++++++--- crates/bevy_reflect/src/type_uuid.rs | 22 ------------------- 2 files changed, 7 insertions(+), 25 deletions(-) diff --git a/crates/bevy_reflect/bevy_reflect_derive/src/type_uuid.rs b/crates/bevy_reflect/bevy_reflect_derive/src/type_uuid.rs index 257bafac7006c..90de455e9ecf1 100644 --- a/crates/bevy_reflect/bevy_reflect_derive/src/type_uuid.rs +++ b/crates/bevy_reflect/bevy_reflect_derive/src/type_uuid.rs @@ -1,6 +1,6 @@ extern crate proc_macro; -use quote::quote; +use quote::{quote, ToTokens}; use syn::{parse::*, *}; use uuid::Uuid; @@ -15,7 +15,11 @@ pub fn type_uuid_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStre // Build the trait implementation let name = &ast.ident; - let (impl_generics, type_generics, where_clause) = &ast.generics.split_for_impl(); + + let (impl_generics, type_generics, _) = &ast.generics.split_for_impl(); + if !impl_generics.to_token_stream().is_empty() || !type_generics.to_token_stream().is_empty() { + panic!("#[derive(TypeUuid)] is not supported for generics."); + } let mut uuid = None; for attribute in ast.attrs.iter().filter_map(|attr| attr.parse_meta().ok()) { @@ -54,7 +58,7 @@ pub fn type_uuid_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStre .map(|byte_str| syn::parse_str::(&byte_str).unwrap()); let gen = quote! { - impl #impl_generics #bevy_reflect_path::TypeUuid for #name #type_generics #where_clause { + impl #bevy_reflect_path::TypeUuid for #name { const TYPE_UUID: #bevy_reflect_path::Uuid = #bevy_reflect_path::Uuid::from_bytes([ #( #bytes ),* ]); diff --git a/crates/bevy_reflect/src/type_uuid.rs b/crates/bevy_reflect/src/type_uuid.rs index fe59e9173779e..ec71f13639ecc 100644 --- a/crates/bevy_reflect/src/type_uuid.rs +++ b/crates/bevy_reflect/src/type_uuid.rs @@ -22,25 +22,3 @@ where std::any::type_name::() } } - -#[cfg(test)] -mod test { - use super::*; - - #[derive(TypeUuid)] - #[uuid = "af6466c2-a9f4-11eb-bcbc-0242ac130002"] - struct TestDeriveStruct - where - T: Clone, - { - _value: T, - } - - fn test_impl_type_uuid(_: &impl TypeUuid) {} - - #[test] - fn test_generic_type_uuid_derive() { - let test_struct = TestDeriveStruct { _value: 42 }; - test_impl_type_uuid(&test_struct); - } -}