// Copyright 2017 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. // 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 }