diff options
Diffstat (limited to 'third_party/rust/zerocopy/tests/ui-msrv/invalid-impls')
-rw-r--r-- | third_party/rust/zerocopy/tests/ui-msrv/invalid-impls/invalid-impls.rs | 29 | ||||
-rw-r--r-- | third_party/rust/zerocopy/tests/ui-msrv/invalid-impls/invalid-impls.stderr | 127 |
2 files changed, 156 insertions, 0 deletions
diff --git a/third_party/rust/zerocopy/tests/ui-msrv/invalid-impls/invalid-impls.rs b/third_party/rust/zerocopy/tests/ui-msrv/invalid-impls/invalid-impls.rs new file mode 100644 index 0000000000..ea963907df --- /dev/null +++ b/third_party/rust/zerocopy/tests/ui-msrv/invalid-impls/invalid-impls.rs @@ -0,0 +1,29 @@ +// Copyright 2022 The Fuchsia Authors +// +// Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0 +// <LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0>, or the MIT +// license <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your option. +// This file may not be copied, modified, or distributed except according to +// those terms. + +// Since some macros from `macros.rs` are unused. +#![allow(unused)] + +extern crate zerocopy; +extern crate zerocopy_derive; + +include!("../../../src/macros.rs"); + +use zerocopy::*; +use zerocopy_derive::*; + +fn main() {} + +#[derive(FromZeroes, FromBytes, AsBytes, Unaligned)] +#[repr(transparent)] +struct Foo<T>(T); + +impl_or_verify!(T => FromZeroes for Foo<T>); +impl_or_verify!(T => FromBytes for Foo<T>); +impl_or_verify!(T => AsBytes for Foo<T>); +impl_or_verify!(T => Unaligned for Foo<T>); diff --git a/third_party/rust/zerocopy/tests/ui-msrv/invalid-impls/invalid-impls.stderr b/third_party/rust/zerocopy/tests/ui-msrv/invalid-impls/invalid-impls.stderr new file mode 100644 index 0000000000..c1de466ece --- /dev/null +++ b/third_party/rust/zerocopy/tests/ui-msrv/invalid-impls/invalid-impls.stderr @@ -0,0 +1,127 @@ +error[E0277]: the trait bound `T: zerocopy::FromZeroes` is not satisfied + --> tests/ui-msrv/invalid-impls/../../../src/macros.rs + | + | impl<$($tyvar $(: $(? $optbound +)* $($bound +)*)?),*> Subtrait for $ty {} + | ^^^^^^^^ the trait `zerocopy::FromZeroes` is not implemented for `T` + | + ::: tests/ui-msrv/invalid-impls/invalid-impls.rs:26:1 + | +26 | impl_or_verify!(T => FromZeroes for Foo<T>); + | ------------------------------------------- in this macro invocation + | +note: required because of the requirements on the impl of `zerocopy::FromZeroes` for `Foo<T>` + --> tests/ui-msrv/invalid-impls/invalid-impls.rs:22:10 + | +22 | #[derive(FromZeroes, FromBytes, AsBytes, Unaligned)] + | ^^^^^^^^^^ +note: required by a bound in `_::Subtrait` + --> tests/ui-msrv/invalid-impls/../../../src/macros.rs + | + | trait Subtrait: $trait {} + | ^^^^^^ required by this bound in `_::Subtrait` + | + ::: tests/ui-msrv/invalid-impls/invalid-impls.rs:26:1 + | +26 | impl_or_verify!(T => FromZeroes for Foo<T>); + | ------------------------------------------- in this macro invocation + = note: this error originates in the macro `impl_or_verify` (in Nightly builds, run with -Z macro-backtrace for more info) +help: consider restricting type parameter `T` + | +26 | impl_or_verify!(T: zerocopy::FromZeroes => FromZeroes for Foo<T>); + | ++++++++++++++++++++++ + +error[E0277]: the trait bound `T: zerocopy::FromBytes` is not satisfied + --> tests/ui-msrv/invalid-impls/../../../src/macros.rs + | + | impl<$($tyvar $(: $(? $optbound +)* $($bound +)*)?),*> Subtrait for $ty {} + | ^^^^^^^^ the trait `zerocopy::FromBytes` is not implemented for `T` + | + ::: tests/ui-msrv/invalid-impls/invalid-impls.rs:27:1 + | +27 | impl_or_verify!(T => FromBytes for Foo<T>); + | ------------------------------------------ in this macro invocation + | +note: required because of the requirements on the impl of `zerocopy::FromBytes` for `Foo<T>` + --> tests/ui-msrv/invalid-impls/invalid-impls.rs:22:22 + | +22 | #[derive(FromZeroes, FromBytes, AsBytes, Unaligned)] + | ^^^^^^^^^ +note: required by a bound in `_::Subtrait` + --> tests/ui-msrv/invalid-impls/../../../src/macros.rs + | + | trait Subtrait: $trait {} + | ^^^^^^ required by this bound in `_::Subtrait` + | + ::: tests/ui-msrv/invalid-impls/invalid-impls.rs:27:1 + | +27 | impl_or_verify!(T => FromBytes for Foo<T>); + | ------------------------------------------ in this macro invocation + = note: this error originates in the macro `impl_or_verify` (in Nightly builds, run with -Z macro-backtrace for more info) +help: consider restricting type parameter `T` + | +27 | impl_or_verify!(T: zerocopy::FromBytes => FromBytes for Foo<T>); + | +++++++++++++++++++++ + +error[E0277]: the trait bound `T: zerocopy::AsBytes` is not satisfied + --> tests/ui-msrv/invalid-impls/../../../src/macros.rs + | + | impl<$($tyvar $(: $(? $optbound +)* $($bound +)*)?),*> Subtrait for $ty {} + | ^^^^^^^^ the trait `zerocopy::AsBytes` is not implemented for `T` + | + ::: tests/ui-msrv/invalid-impls/invalid-impls.rs:28:1 + | +28 | impl_or_verify!(T => AsBytes for Foo<T>); + | ---------------------------------------- in this macro invocation + | +note: required because of the requirements on the impl of `zerocopy::AsBytes` for `Foo<T>` + --> tests/ui-msrv/invalid-impls/invalid-impls.rs:22:33 + | +22 | #[derive(FromZeroes, FromBytes, AsBytes, Unaligned)] + | ^^^^^^^ +note: required by a bound in `_::Subtrait` + --> tests/ui-msrv/invalid-impls/../../../src/macros.rs + | + | trait Subtrait: $trait {} + | ^^^^^^ required by this bound in `_::Subtrait` + | + ::: tests/ui-msrv/invalid-impls/invalid-impls.rs:28:1 + | +28 | impl_or_verify!(T => AsBytes for Foo<T>); + | ---------------------------------------- in this macro invocation + = note: this error originates in the macro `impl_or_verify` (in Nightly builds, run with -Z macro-backtrace for more info) +help: consider restricting type parameter `T` + | +28 | impl_or_verify!(T: zerocopy::AsBytes => AsBytes for Foo<T>); + | +++++++++++++++++++ + +error[E0277]: the trait bound `T: zerocopy::Unaligned` is not satisfied + --> tests/ui-msrv/invalid-impls/../../../src/macros.rs + | + | impl<$($tyvar $(: $(? $optbound +)* $($bound +)*)?),*> Subtrait for $ty {} + | ^^^^^^^^ the trait `zerocopy::Unaligned` is not implemented for `T` + | + ::: tests/ui-msrv/invalid-impls/invalid-impls.rs:29:1 + | +29 | impl_or_verify!(T => Unaligned for Foo<T>); + | ------------------------------------------ in this macro invocation + | +note: required because of the requirements on the impl of `zerocopy::Unaligned` for `Foo<T>` + --> tests/ui-msrv/invalid-impls/invalid-impls.rs:22:42 + | +22 | #[derive(FromZeroes, FromBytes, AsBytes, Unaligned)] + | ^^^^^^^^^ +note: required by a bound in `_::Subtrait` + --> tests/ui-msrv/invalid-impls/../../../src/macros.rs + | + | trait Subtrait: $trait {} + | ^^^^^^ required by this bound in `_::Subtrait` + | + ::: tests/ui-msrv/invalid-impls/invalid-impls.rs:29:1 + | +29 | impl_or_verify!(T => Unaligned for Foo<T>); + | ------------------------------------------ in this macro invocation + = note: this error originates in the macro `impl_or_verify` (in Nightly builds, run with -Z macro-backtrace for more info) +help: consider restricting type parameter `T` + | +29 | impl_or_verify!(T: zerocopy::Unaligned => Unaligned for Foo<T>); + | +++++++++++++++++++++ |