error: item does not constrain `FooRet::{opaque#0}` --> $DIR/issue-70877.rs:25:8 | LL | pub fn ham() -> Foo { | ^^^ | = note: consider removing `#[define_opaque]` or adding an empty `#[define_opaque()]` note: this opaque type is supposed to be constrained --> $DIR/issue-70877.rs:18:19 | LL | pub type FooRet = impl std::fmt::Debug; | ^^^^^^^^^^^^^^^^^^^^ error: item does not constrain `FooRet::{opaque#0}` --> $DIR/issue-70877.rs:30:8 | LL | pub fn oof() -> impl std::fmt::Debug { | ^^^ | = note: consider removing `#[define_opaque]` or adding an empty `#[define_opaque()]` note: this opaque type is supposed to be constrained --> $DIR/issue-70877.rs:18:19 | LL | pub type FooRet = impl std::fmt::Debug; | ^^^^^^^^^^^^^^^^^^^^ error: item does not constrain `Foo::{opaque#0}` --> $DIR/issue-70877.rs:30:8 | LL | pub fn oof() -> impl std::fmt::Debug { | ^^^ | = note: consider removing `#[define_opaque]` or adding an empty `#[define_opaque()]` note: this opaque type is supposed to be constrained --> $DIR/issue-70877.rs:23:16 | LL | pub type Foo = impl Iterator; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: opaque type's hidden type cannot be another opaque type from the same scope --> $DIR/issue-70877.rs:35:12 | LL | return func(&"oof"); | ^^^^^^^^^^^^ one of the two opaque types used here has to be outside its defining scope | note: opaque type whose hidden type is being assigned --> $DIR/issue-70877.rs:30:17 | LL | pub fn oof() -> impl std::fmt::Debug { | ^^^^^^^^^^^^^^^^^^^^ note: opaque type being used as hidden type --> $DIR/issue-70877.rs:18:19 | LL | pub type FooRet = impl std::fmt::Debug; | ^^^^^^^^^^^^^^^^^^^^ error: aborting due to 4 previous errors