// This test was failing on Linux for a while due to #110393 somehow making
// the unused functions not instrumented, but it seems to be fine now.

// Validates coverage now works with optimizations
//@ compile-flags: -C opt-level=3

#![allow(unused_assignments, unused_variables)]

//@ aux-build:used_crate.rs
extern crate used_crate;

fn main() {
    used_crate::used_function();
    let some_vec = vec![1, 2, 3, 4];
    used_crate::used_only_from_bin_crate_generic_function(&some_vec);
    used_crate::used_only_from_bin_crate_generic_function("used from bin uses_crate.rs");
    used_crate::used_from_bin_crate_and_lib_crate_generic_function(some_vec);
    used_crate::used_with_same_type_from_bin_crate_and_lib_crate_generic_function("interesting?");
}
