// check-pass #![feature(inherent_associated_types, auto_traits, negative_impls)] #![allow(incomplete_features)] use std::cmp::Ordering; // Check that inherent associated types are dispatched on the concrete Self type. struct Select(T, U); impl Select { type Type = (); } impl Select { type Type = bool; } impl Select { type Type = Ordering; } impl Select { type Type = (bool, bool); } fn main() { let _: Select::Type = false; let _: Select::Type = (true, false); let _: Select::Type = Ordering::Equal; let _: Select::Type = (); } enum Special {} impl !Ordinary for Special {} auto trait Ordinary {}