//@ known-bug: #110395 //@ compile-flags: -Znext-solver #![allow(incomplete_features)] #![feature(staged_api)] #![feature(const_trait_impl, effects)] #![feature(const_t_try)] #![feature(const_try)] #![feature(try_trait_v2)] #![stable(feature = "foo", since = "1.0")] use std::ops::{ControlFlow, FromResidual, Try}; #[stable(feature = "foo", since = "1.0")] pub struct T; #[stable(feature = "foo", since = "1.0")] #[rustc_const_unstable(feature = "const_t_try", issue = "none")] impl const Try for T { type Output = T; type Residual = T; fn from_output(t: T) -> T { t } fn branch(self) -> ControlFlow { ControlFlow::Continue(self) } } #[stable(feature = "foo", since = "1.0")] #[rustc_const_unstable(feature = "const_t_try", issue = "none")] impl const FromResidual for T { fn from_residual(t: T) -> T { t } } #[stable(feature = "foo", since = "1.0")] #[const_trait] pub trait Tr { #[stable(feature = "foo", since = "1.0")] fn bar() -> T { T? // Should be allowed. // Must enable unstable features to call this trait fn in const contexts. } } fn main() {}