From 9044eb941a310e4120dab93a43e6630efef72e4a Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Sat, 20 Nov 2021 18:53:55 +0100 Subject: assert that dynamized traits are object-safe --- src/lib.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index a190cb9..85718d0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -308,12 +308,18 @@ pub fn dynamize(_attr: TokenStream, input: TokenStream) -> TokenStream { let blanket_impl = generate_blanket_impl(&dyn_trait, &original_trait, &method_impls); + let dyn_trait_name = &dyn_trait.ident; + let (impl_generics, ty_generics, where_clause) = dyn_trait.generics.split_for_impl(); + let expanded = quote! { #original_trait #(#dyn_trait_attrs)* #dyn_trait + // assert that dyn_trait can actually be made into an object + impl #impl_generics dyn #dyn_trait_name #ty_generics #where_clause {} + #(#blanket_impl_attrs)* #blanket_impl }; @@ -432,3 +438,7 @@ fn path_segment_for_trait(sometrait: &ItemTrait) -> PathSegment { }, } } + +#[doc = include_str!("../tests/doctests.md")] +#[cfg(doctest)] +struct Doctests; -- cgit v1.2.3