// Test for RFC 1268: we allow overlapping impls of marker traits, // that is, traits without items. In this case, a type `T` is // `MyMarker` if it is either `Debug` or `Display`. This test just // checks that we don't consider **all** types to be `MyMarker`. See // also the companion test in // `run-pass/overlap-permitted-for-marker-traits.rs`. #![feature(overlapping_marker_traits)] #![feature(optin_builtin_traits)] use std::fmt::{Debug, Display}; trait Marker {} impl Marker for T {} impl Marker for T {} fn is_marker() { } struct NotDebugOrDisplay; fn main() { // Debug && Display: is_marker::(); // Debug && !Display: is_marker::>(); // !Debug && !Display is_marker::(); //~ ERROR }