summaryrefslogtreecommitdiff
path: root/vendor/bitflags-1.3.2/tests/compile-fail
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/bitflags-1.3.2/tests/compile-fail')
-rw-r--r--vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.rs10
-rw-r--r--vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.stderr.beta27
-rw-r--r--vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.rs10
-rw-r--r--vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.stderr.beta55
-rw-r--r--vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.rs123
-rw-r--r--vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.stderr.beta27
-rw-r--r--vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.rs13
-rw-r--r--vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.stderr.beta13
-rw-r--r--vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.rs13
-rw-r--r--vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.stderr.beta10
-rw-r--r--vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.rs18
-rw-r--r--vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.stderr.beta18
-rw-r--r--vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.rs9
-rw-r--r--vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.stderr.beta5
14 files changed, 351 insertions, 0 deletions
diff --git a/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.rs b/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.rs
new file mode 100644
index 0000000..38f4822
--- /dev/null
+++ b/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.rs
@@ -0,0 +1,10 @@
+use bitflags::bitflags;
+
+bitflags! {
+ #[derive(Clone, Copy)]
+ struct Flags: u32 {
+ const A = 0b00000001;
+ }
+}
+
+fn main() {}
diff --git a/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.stderr.beta b/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.stderr.beta
new file mode 100644
index 0000000..0c13aa5
--- /dev/null
+++ b/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.stderr.beta
@@ -0,0 +1,27 @@
+error[E0119]: conflicting implementations of trait `std::clone::Clone` for type `Flags`
+ --> $DIR/copy.rs:3:1
+ |
+3 | / bitflags! {
+4 | | #[derive(Clone, Copy)]
+ | | ----- first implementation here
+5 | | struct Flags: u32 {
+6 | | const A = 0b00000001;
+7 | | }
+8 | | }
+ | |_^ conflicting implementation for `Flags`
+ |
+ = note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0119]: conflicting implementations of trait `std::marker::Copy` for type `Flags`
+ --> $DIR/copy.rs:3:1
+ |
+3 | / bitflags! {
+4 | | #[derive(Clone, Copy)]
+ | | ---- first implementation here
+5 | | struct Flags: u32 {
+6 | | const A = 0b00000001;
+7 | | }
+8 | | }
+ | |_^ conflicting implementation for `Flags`
+ |
+ = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.rs b/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.rs
new file mode 100644
index 0000000..4abbd63
--- /dev/null
+++ b/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.rs
@@ -0,0 +1,10 @@
+use bitflags::bitflags;
+
+bitflags! {
+ #[derive(PartialEq, Eq)]
+ struct Flags: u32 {
+ const A = 0b00000001;
+ }
+}
+
+fn main() {}
diff --git a/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.stderr.beta b/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.stderr.beta
new file mode 100644
index 0000000..8a1a3b4
--- /dev/null
+++ b/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.stderr.beta
@@ -0,0 +1,55 @@
+error[E0119]: conflicting implementations of trait `std::cmp::PartialEq` for type `Flags`
+ --> $DIR/eq.rs:3:1
+ |
+3 | / bitflags! {
+4 | | #[derive(PartialEq, Eq)]
+ | | --------- first implementation here
+5 | | struct Flags: u32 {
+6 | | const A = 0b00000001;
+7 | | }
+8 | | }
+ | |_^ conflicting implementation for `Flags`
+ |
+ = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0119]: conflicting implementations of trait `std::cmp::Eq` for type `Flags`
+ --> $DIR/eq.rs:3:1
+ |
+3 | / bitflags! {
+4 | | #[derive(PartialEq, Eq)]
+ | | -- first implementation here
+5 | | struct Flags: u32 {
+6 | | const A = 0b00000001;
+7 | | }
+8 | | }
+ | |_^ conflicting implementation for `Flags`
+ |
+ = note: this error originates in the derive macro `Eq` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0119]: conflicting implementations of trait `std::marker::StructuralPartialEq` for type `Flags`
+ --> $DIR/eq.rs:3:1
+ |
+3 | / bitflags! {
+4 | | #[derive(PartialEq, Eq)]
+ | | --------- first implementation here
+5 | | struct Flags: u32 {
+6 | | const A = 0b00000001;
+7 | | }
+8 | | }
+ | |_^ conflicting implementation for `Flags`
+ |
+ = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0119]: conflicting implementations of trait `std::marker::StructuralEq` for type `Flags`
+ --> $DIR/eq.rs:3:1
+ |
+3 | / bitflags! {
+4 | | #[derive(PartialEq, Eq)]
+ | | -- first implementation here
+5 | | struct Flags: u32 {
+6 | | const A = 0b00000001;
+7 | | }
+8 | | }
+ | |_^ conflicting implementation for `Flags`
+ |
+ = note: this error originates in the derive macro `Eq` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.rs b/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.rs
new file mode 100644
index 0000000..c2856b1
--- /dev/null
+++ b/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.rs
@@ -0,0 +1,123 @@
+use std::{
+ fmt::{
+ self,
+ Debug,
+ Display,
+ LowerHex,
+ UpperHex,
+ Octal,
+ Binary,
+ },
+ ops::{
+ BitAnd,
+ BitOr,
+ BitXor,
+ BitAndAssign,
+ BitOrAssign,
+ BitXorAssign,
+ Not,
+ },
+};
+
+use bitflags::bitflags;
+
+// Ideally we'd actually want this to work, but currently need something like `num`'s `Zero`
+// With some design work it could be made possible
+#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
+struct MyInt(u8);
+
+impl BitAnd for MyInt {
+ type Output = Self;
+
+ fn bitand(self, other: Self) -> Self {
+ MyInt(self.0 & other.0)
+ }
+}
+
+impl BitOr for MyInt {
+ type Output = Self;
+
+ fn bitor(self, other: Self) -> Self {
+ MyInt(self.0 | other.0)
+ }
+}
+
+impl BitXor for MyInt {
+ type Output = Self;
+
+ fn bitxor(self, other: Self) -> Self {
+ MyInt(self.0 ^ other.0)
+ }
+}
+
+impl BitAndAssign for MyInt {
+ fn bitand_assign(&mut self, other: Self) {
+ self.0 &= other.0
+ }
+}
+
+impl BitOrAssign for MyInt {
+ fn bitor_assign(&mut self, other: Self) {
+ self.0 |= other.0
+ }
+}
+
+impl BitXorAssign for MyInt {
+ fn bitxor_assign(&mut self, other: Self) {
+ self.0 ^= other.0
+ }
+}
+
+impl Debug for MyInt {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ Debug::fmt(&self.0, f)
+ }
+}
+
+impl Display for MyInt {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ Display::fmt(&self.0, f)
+ }
+}
+
+impl LowerHex for MyInt {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ LowerHex::fmt(&self.0, f)
+ }
+}
+
+impl UpperHex for MyInt {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ UpperHex::fmt(&self.0, f)
+ }
+}
+
+impl Octal for MyInt {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ Octal::fmt(&self.0, f)
+ }
+}
+
+impl Binary for MyInt {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ Binary::fmt(&self.0, f)
+ }
+}
+
+impl Not for MyInt {
+ type Output = MyInt;
+
+ fn not(self) -> Self {
+ MyInt(!self.0)
+ }
+}
+
+bitflags! {
+ struct Flags128: MyInt {
+ const A = MyInt(0b0000_0001u8);
+ const B = MyInt(0b0000_0010u8);
+ const C = MyInt(0b0000_0100u8);
+ }
+}
+
+fn main() {}
diff --git a/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.stderr.beta b/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.stderr.beta
new file mode 100644
index 0000000..1f0fb5c
--- /dev/null
+++ b/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.stderr.beta
@@ -0,0 +1,27 @@
+error[E0308]: mismatched types
+ --> $DIR/all_defined.rs:115:1
+ |
+115 | / bitflags! {
+116 | | struct Flags128: MyInt {
+117 | | const A = MyInt(0b0000_0001u8);
+118 | | const B = MyInt(0b0000_0010u8);
+119 | | const C = MyInt(0b0000_0100u8);
+120 | | }
+121 | | }
+ | |_^ expected struct `MyInt`, found integer
+ |
+ = note: this error originates in the macro `__impl_all_bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0308]: mismatched types
+ --> $DIR/all_defined.rs:115:1
+ |
+115 | / bitflags! {
+116 | | struct Flags128: MyInt {
+117 | | const A = MyInt(0b0000_0001u8);
+118 | | const B = MyInt(0b0000_0010u8);
+119 | | const C = MyInt(0b0000_0100u8);
+120 | | }
+121 | | }
+ | |_^ expected struct `MyInt`, found integer
+ |
+ = note: this error originates in the macro `__impl_bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.rs b/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.rs
new file mode 100644
index 0000000..fff6b2c
--- /dev/null
+++ b/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.rs
@@ -0,0 +1,13 @@
+use bitflags::bitflags;
+
+struct MyInt(u8);
+
+bitflags! {
+ struct Flags128: MyInt {
+ const A = MyInt(0b0000_0001);
+ const B = MyInt(0b0000_0010);
+ const C = MyInt(0b0000_0100);
+ }
+}
+
+fn main() {}
diff --git a/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.stderr.beta b/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.stderr.beta
new file mode 100644
index 0000000..ee95f83
--- /dev/null
+++ b/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.stderr.beta
@@ -0,0 +1,13 @@
+error[E0204]: the trait `Copy` may not be implemented for this type
+ --> $DIR/all_missing.rs:5:1
+ |
+5 | / bitflags! {
+6 | | struct Flags128: MyInt {
+7 | | const A = MyInt(0b0000_0001);
+8 | | const B = MyInt(0b0000_0010);
+9 | | const C = MyInt(0b0000_0100);
+10 | | }
+11 | | }
+ | |_^ this field does not implement `Copy`
+ |
+ = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.rs b/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.rs
new file mode 100644
index 0000000..a6a3912
--- /dev/null
+++ b/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.rs
@@ -0,0 +1,13 @@
+mod example {
+ use bitflags::bitflags;
+
+ bitflags! {
+ pub struct Flags1: u32 {
+ const FLAG_A = 0b00000001;
+ }
+ }
+}
+
+fn main() {
+ let flag1 = example::Flags1::FLAG_A.bits;
+}
diff --git a/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.stderr.beta b/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.stderr.beta
new file mode 100644
index 0000000..58a0466
--- /dev/null
+++ b/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.stderr.beta
@@ -0,0 +1,10 @@
+error[E0616]: field `bits` of struct `Flags1` is private
+ --> $DIR/private_field.rs:12:41
+ |
+12 | let flag1 = example::Flags1::FLAG_A.bits;
+ | ^^^^ private field
+ |
+help: a method `bits` also exists, call it with parentheses
+ |
+12 | let flag1 = example::Flags1::FLAG_A.bits();
+ | ^^
diff --git a/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.rs b/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.rs
new file mode 100644
index 0000000..85a5b18
--- /dev/null
+++ b/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.rs
@@ -0,0 +1,18 @@
+mod example {
+ use bitflags::bitflags;
+
+ bitflags! {
+ pub struct Flags1: u32 {
+ const FLAG_A = 0b00000001;
+ }
+
+ struct Flags2: u32 {
+ const FLAG_B = 0b00000010;
+ }
+ }
+}
+
+fn main() {
+ let flag1 = example::Flags1::FLAG_A;
+ let flag2 = example::Flags2::FLAG_B;
+}
diff --git a/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.stderr.beta b/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.stderr.beta
new file mode 100644
index 0000000..d23f832
--- /dev/null
+++ b/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.stderr.beta
@@ -0,0 +1,18 @@
+error[E0603]: struct `Flags2` is private
+ --> $DIR/private_flags.rs:17:26
+ |
+17 | let flag2 = example::Flags2::FLAG_B;
+ | ^^^^^^ private struct
+ |
+note: the struct `Flags2` is defined here
+ --> $DIR/private_flags.rs:4:5
+ |
+4 | / bitflags! {
+5 | | pub struct Flags1: u32 {
+6 | | const FLAG_A = 0b00000001;
+7 | | }
+... |
+11 | | }
+12 | | }
+ | |_____^
+ = note: this error originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.rs b/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.rs
new file mode 100644
index 0000000..b90f0ce
--- /dev/null
+++ b/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.rs
@@ -0,0 +1,9 @@
+use bitflags::bitflags;
+
+bitflags! {
+ pub struct Flags1: u32 {
+ pub const FLAG_A = 0b00000001;
+ }
+}
+
+fn main() {}
diff --git a/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.stderr.beta b/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.stderr.beta
new file mode 100644
index 0000000..b01122c
--- /dev/null
+++ b/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.stderr.beta
@@ -0,0 +1,5 @@
+error: no rules expected the token `pub`
+ --> $DIR/pub_const.rs:5:9
+ |
+5 | pub const FLAG_A = 0b00000001;
+ | ^^^ no rules expected this token in macro call