#![feature(type_ascription)] struct S(T); impl S<(i32, S>)> { fn f(self) {} } fn g() {} fn main() { let s = (crate::S::<(i32, crate::S<::std::option::Option>)>: _)( ( 0: i32, (crate::S::<::std::option::Option>: _)( ::std::prelude::v1::None: ::std::option::Option, ): crate::S<::std::option::Option>, ): (i32, crate::S<::std::option::Option>), ): crate::S<(i32, crate::S<::std::option::Option>)>; let x = (s: crate::S<(i32, crate::S<::std::option::Option>)>).f(): (); let f = crate::S::<(i32, crate::S<::std::option::Option>)>::f: _; let s = (crate::S::<(i32, crate::S<::std::option::Option>)>: _)( ( 1: i32, (crate::S::<::std::option::Option>: _)( (::std::prelude::v1::Some: _)(2: i32): ::std::option::Option, ): crate::S<::std::option::Option>, ): (i32, crate::S<::std::option::Option>), ): crate::S<(i32, crate::S<::std::option::Option>)>; let mut v = (::std::vec::Vec::::new: _)(): ::std::vec::Vec; (v: ::std::vec::Vec).push(123: i32): (); let f = ::std::vec::Vec::::pop: _; (::std::vec::Vec::::pop: _)(&mut (v: ::std::vec::Vec): &mut ::std::vec::Vec): ::std::option::Option; (::std::vec::Vec::::drain::<::std::ops::RangeFull>: _)( &mut (v: ::std::vec::Vec): &mut ::std::vec::Vec, ::std::ops::RangeFull: ::std::ops::RangeFull, ): ::std::vec::Drain; }