rust/tests/run-coverage/no_cov_crate.rs
Zalathar 72b721f48e Resolve all warnings in run-coverage tests
When one of these tests fails, any compiler warnings will be printed to the
console, which makes it harder to track down the actual reason for failure.

(The outstanding warnings were found by temporarily adding `-Dwarnings` to the
compiler arguments for `RunCoverage` in `src/tools/compiletest/src/runtest.rs`.)
2023-08-26 14:35:34 +10:00

89 lines
2.0 KiB
Rust

// Enables `no_coverage` on the entire crate
#![feature(no_coverage)]
#[no_coverage]
fn do_not_add_coverage_1() {
println!("called but not covered");
}
fn do_not_add_coverage_2() {
#![no_coverage]
println!("called but not covered");
}
#[no_coverage]
#[allow(dead_code)]
fn do_not_add_coverage_not_called() {
println!("not called and not covered");
}
fn add_coverage_1() {
println!("called and covered");
}
fn add_coverage_2() {
println!("called and covered");
}
#[allow(dead_code)]
fn add_coverage_not_called() {
println!("not called but covered");
}
// FIXME: These test-cases illustrate confusing results of nested functions.
// See https://github.com/rust-lang/rust/issues/93319
mod nested_fns {
#[no_coverage]
pub fn outer_not_covered(is_true: bool) {
fn inner(is_true: bool) {
if is_true {
println!("called and covered");
} else {
println!("absolutely not covered");
}
}
println!("called but not covered");
inner(is_true);
}
pub fn outer(is_true: bool) {
println!("called and covered");
inner_not_covered(is_true);
#[no_coverage]
fn inner_not_covered(is_true: bool) {
if is_true {
println!("called but not covered");
} else {
println!("absolutely not covered");
}
}
}
pub fn outer_both_covered(is_true: bool) {
println!("called and covered");
inner(is_true);
fn inner(is_true: bool) {
if is_true {
println!("called and covered");
} else {
println!("absolutely not covered");
}
}
}
}
fn main() {
let is_true = std::env::args().len() == 1;
do_not_add_coverage_1();
do_not_add_coverage_2();
add_coverage_1();
add_coverage_2();
nested_fns::outer_not_covered(is_true);
nested_fns::outer(is_true);
nested_fns::outer_both_covered(is_true);
}