// Test that `variant_count` only gets evaluated once the type is concrete enough. #![feature(variant_count)] pub struct GetVariantCount(T); impl GetVariantCount { pub const VALUE: usize = std::mem::variant_count::(); } const fn check_variant_count() -> bool { matches!(GetVariantCount::::VALUE, GetVariantCount::::VALUE) //~^ ERROR constant pattern depends on a generic parameter //~| ERROR constant pattern depends on a generic parameter } fn main() { assert!(check_variant_count::>()); }