summaryrefslogtreecommitdiffstats
path: root/third_party/rust/zerocopy/tests/ui-stable/invalid-impls
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/zerocopy/tests/ui-stable/invalid-impls')
-rw-r--r--third_party/rust/zerocopy/tests/ui-stable/invalid-impls/invalid-impls.rs29
-rw-r--r--third_party/rust/zerocopy/tests/ui-stable/invalid-impls/invalid-impls.stderr107
2 files changed, 136 insertions, 0 deletions
diff --git a/third_party/rust/zerocopy/tests/ui-stable/invalid-impls/invalid-impls.rs b/third_party/rust/zerocopy/tests/ui-stable/invalid-impls/invalid-impls.rs
new file mode 100644
index 0000000000..ea963907df
--- /dev/null
+++ b/third_party/rust/zerocopy/tests/ui-stable/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-stable/invalid-impls/invalid-impls.stderr b/third_party/rust/zerocopy/tests/ui-stable/invalid-impls/invalid-impls.stderr
new file mode 100644
index 0000000000..7737d67175
--- /dev/null
+++ b/third_party/rust/zerocopy/tests/ui-stable/invalid-impls/invalid-impls.stderr
@@ -0,0 +1,107 @@
+error[E0277]: the trait bound `T: zerocopy::FromZeroes` is not satisfied
+ --> tests/ui-stable/invalid-impls/invalid-impls.rs:26:37
+ |
+26 | impl_or_verify!(T => FromZeroes for Foo<T>);
+ | ^^^^^^ the trait `zerocopy::FromZeroes` is not implemented for `T`
+ |
+note: required for `Foo<T>` to implement `zerocopy::FromZeroes`
+ --> tests/ui-stable/invalid-impls/invalid-impls.rs:22:10
+ |
+22 | #[derive(FromZeroes, FromBytes, AsBytes, Unaligned)]
+ | ^^^^^^^^^^ unsatisfied trait bound introduced in this `derive` macro
+note: required by a bound in `_::Subtrait`
+ --> tests/ui-stable/invalid-impls/../../../src/macros.rs
+ |
+ | trait Subtrait: $trait {}
+ | ^^^^^^ required by this bound in `Subtrait`
+ |
+ ::: tests/ui-stable/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 derive macro `FromZeroes` which comes from the expansion of 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-stable/invalid-impls/invalid-impls.rs:27:36
+ |
+27 | impl_or_verify!(T => FromBytes for Foo<T>);
+ | ^^^^^^ the trait `zerocopy::FromBytes` is not implemented for `T`
+ |
+note: required for `Foo<T>` to implement `zerocopy::FromBytes`
+ --> tests/ui-stable/invalid-impls/invalid-impls.rs:22:22
+ |
+22 | #[derive(FromZeroes, FromBytes, AsBytes, Unaligned)]
+ | ^^^^^^^^^ unsatisfied trait bound introduced in this `derive` macro
+note: required by a bound in `_::Subtrait`
+ --> tests/ui-stable/invalid-impls/../../../src/macros.rs
+ |
+ | trait Subtrait: $trait {}
+ | ^^^^^^ required by this bound in `Subtrait`
+ |
+ ::: tests/ui-stable/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 derive macro `FromBytes` which comes from the expansion of 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-stable/invalid-impls/invalid-impls.rs:28:34
+ |
+28 | impl_or_verify!(T => AsBytes for Foo<T>);
+ | ^^^^^^ the trait `zerocopy::AsBytes` is not implemented for `T`
+ |
+note: required for `Foo<T>` to implement `zerocopy::AsBytes`
+ --> tests/ui-stable/invalid-impls/invalid-impls.rs:22:33
+ |
+22 | #[derive(FromZeroes, FromBytes, AsBytes, Unaligned)]
+ | ^^^^^^^ unsatisfied trait bound introduced in this `derive` macro
+note: required by a bound in `_::Subtrait`
+ --> tests/ui-stable/invalid-impls/../../../src/macros.rs
+ |
+ | trait Subtrait: $trait {}
+ | ^^^^^^ required by this bound in `Subtrait`
+ |
+ ::: tests/ui-stable/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 derive macro `AsBytes` which comes from the expansion of 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-stable/invalid-impls/invalid-impls.rs:29:36
+ |
+29 | impl_or_verify!(T => Unaligned for Foo<T>);
+ | ^^^^^^ the trait `zerocopy::Unaligned` is not implemented for `T`
+ |
+note: required for `Foo<T>` to implement `zerocopy::Unaligned`
+ --> tests/ui-stable/invalid-impls/invalid-impls.rs:22:42
+ |
+22 | #[derive(FromZeroes, FromBytes, AsBytes, Unaligned)]
+ | ^^^^^^^^^ unsatisfied trait bound introduced in this `derive` macro
+note: required by a bound in `_::Subtrait`
+ --> tests/ui-stable/invalid-impls/../../../src/macros.rs
+ |
+ | trait Subtrait: $trait {}
+ | ^^^^^^ required by this bound in `Subtrait`
+ |
+ ::: tests/ui-stable/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 derive macro `Unaligned` which comes from the expansion of 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>);
+ | +++++++++++++++++++++