Skip to content

Commit

Permalink
Add trybuild test to ensure deprecated types are derivable.
Browse files Browse the repository at this point in the history
  • Loading branch information
daniel-levin committed May 21, 2024
1 parent 7b77668 commit e920607
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 2 deletions.
2 changes: 0 additions & 2 deletions zerocopy-derive/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1205,8 +1205,6 @@ fn impl_block<D: DataExt>(
});

quote! {
// TODO(#553): Add a test that generates a warning when
// `#[allow(deprecated)]` isn't present.
#[allow(deprecated)]
unsafe impl < #(#params),* > #trait_path for #type_ident < #(#param_idents),* >
where
Expand Down
24 changes: 24 additions & 0 deletions zerocopy-derive/tests/ui-nightly/absence_of_deprecated_warning.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//! See: https://github.com/google/zerocopy/issues/553
//! zerocopy must still allow derives of deprecated types.
//! This test has a hand-written impl of a deprecated type, and should result in a compilation
//! error. If zerocopy does not tack an allow(deprecated) annotation onto its impls, then this
//! test will fail because more than one compile error will be generated.
#![deny(deprecated)]

extern crate zerocopy;

use zerocopy::IntoBytes;

#[deprecated = "Do not use"]
#[derive(IntoBytes)]
#[repr(C)]
struct OldHeader {
field_a: usize,
collection: [u8; 8],
}

trait T {}

impl T for OldHeader {}

fn main() {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
error: use of deprecated struct `OldHeader`: Do not use
--> tests/ui-nightly/absence_of_deprecated_warning.rs:22:12
|
22 | impl T for OldHeader {}
| ^^^^^^^^^
|
note: the lint level is defined here
--> tests/ui-nightly/absence_of_deprecated_warning.rs:6:9
|
6 | #![deny(deprecated)]
| ^^^^^^^^^^

0 comments on commit e920607

Please sign in to comment.