Skip to content

Commit

Permalink
Merge pull request #257 from KodrAus/chore/more-compile-tests
Browse files Browse the repository at this point in the history
More work on compile tests
  • Loading branch information
KodrAus committed Aug 16, 2021
2 parents acfba7d + df838ab commit ac957a5
Show file tree
Hide file tree
Showing 19 changed files with 139 additions and 14 deletions.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
27 changes: 27 additions & 0 deletions 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)
13 changes: 13 additions & 0 deletions 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)
14 changes: 0 additions & 14 deletions tests/compile-fail/non_integer_base/missing_bitops.rs

This file was deleted.

13 changes: 13 additions & 0 deletions 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;
}
10 changes: 10 additions & 0 deletions 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();
| ^^
File renamed without changes.
9 changes: 9 additions & 0 deletions 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() {}
5 changes: 5 additions & 0 deletions 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
17 changes: 17 additions & 0 deletions tests/compile-pass/impls/convert.rs
@@ -0,0 +1,17 @@
use bitflags::bitflags;

bitflags! {
struct Flags: u32 {
const A = 0b00000001;
}
}

impl From<u32> for Flags {
fn from(v: u32) -> Flags {
Flags::from_bits_truncate(v)
}
}

fn main() {

}
File renamed without changes.
15 changes: 15 additions & 0 deletions tests/compile-pass/impls/inherent_methods.rs
@@ -0,0 +1,15 @@
use bitflags::bitflags;

bitflags! {
struct Flags: u32 {
const A = 0b00000001;
}
}

impl Flags {
pub fn new() -> Flags {
Flags::A
}
}

fn main() {}
11 changes: 11 additions & 0 deletions tests/compile-pass/visibility/bits_field.rs
@@ -0,0 +1,11 @@
use bitflags::bitflags;

bitflags! {
pub struct Flags1: u32 {
const FLAG_A = 0b00000001;
}
}

fn main() {
assert_eq!(0b00000001, Flags1::FLAG_A.bits);
}
19 changes: 19 additions & 0 deletions tests/compile-pass/visibility/pub_in.rs
@@ -0,0 +1,19 @@
mod a {
mod b {
use bitflags::bitflags;

bitflags! {
pub(in crate::a) struct Flags: u32 {
const FLAG_A = 0b00000001;
}
}
}

pub fn flags() -> u32 {
b::Flags::FLAG_A.bits()
}
}

fn main() {
assert_eq!(0b00000001, a::flags());
}

0 comments on commit ac957a5

Please sign in to comment.