summaryrefslogtreecommitdiffstats
path: root/third_party/rust/zerocopy/tests/ui-msrv/invalid-impls
diff options
context:
space:
mode:
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.rs29
-rw-r--r--third_party/rust/zerocopy/tests/ui-msrv/invalid-impls/invalid-impls.stderr127
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>);
+ | +++++++++++++++++++++