Skip to content

Commit

Permalink
Demonstrate "unused variable" warnings in test
Browse files Browse the repository at this point in the history
The macros may bring into scope constants called "mask" and "offset."
These symbols shadow a caller's similarly-named variables, and result in
a compiler warning. The tests suite promote this to an error to make it
prominent.

If they run, the tests will fail.
  • Loading branch information
mciantyre committed Sep 21, 2021
1 parent 4392b03 commit 657a3d4
Showing 1 changed file with 51 additions and 0 deletions.
51 changes: 51 additions & 0 deletions tests/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,54 @@ fn register_modify() {
ral::modify_reg!(self, &register_block, register, field_foo: 6);
assert_eq!(6 << 10, register_block.register.read());
}

/// Demonstrates that a local variable, 'mask'
/// doesn't affect the macro's behavior.
///
/// This is the same test as register_modify(), but
/// with the number '6' in a variable called 'mask'.
#[deny(warnings)] // Promotes "unused variable: mask" into error. Remove this, and the test fails.
#[test]
fn register_unused_mask_modify() {
let register_block = zeroed_register_block();
register_block.register.write(1 << 10);
let mask = 6;
ral::modify_reg!(self, &register_block, register, field_foo: mask);
assert_eq!(6 << 10, register_block.register.read());
}

/// Same test as above, but with a variable called
/// 'offset' instead of 'mask'.
#[deny(warnings)]
#[test]
fn register_unused_offset_modify() {
let register_block = zeroed_register_block();
register_block.register.write(1 << 10);
let offset = 6;
ral::modify_reg!(self, &register_block, register, field_foo: offset);
assert_eq!(6 << 10, register_block.register.read());
}

/// Same as above test, but using the 'write' macro
/// instead of 'modify'.
#[deny(warnings)]
#[test]
fn register_unused_mask_write() {
let register_block = zeroed_register_block();
register_block.register.write(1 << 10);
let mask = 6;
ral::write_reg!(self, &register_block, register, field_foo: mask);
assert_eq!(6 << 10, register_block.register.read());
}

/// Same test as above, but with a variable called
/// 'offset' instead of 'mask'.
#[deny(warnings)]
#[test]
fn register_unused_offset_write() {
let register_block = zeroed_register_block();
register_block.register.write(1 << 10);
let offset = 6;
ral::write_reg!(self, &register_block, register, field_foo: offset);
assert_eq!(6 << 10, register_block.register.read());
}

0 comments on commit 657a3d4

Please sign in to comment.