Skip to content

objc2 fails to build on latets nightly #109632

Closed
@kchibisov

Description

@kchibisov

Our CI in winit started breaking on nightly recently due to inability of recent rustc nightly to build the https://github.com/madsmtm/objc2 crate, in particular you can look into madsmtm/objc2#432 issue.

Error

The error we get is:

 error[E0277]: `<<I as IvarType>::Type as InnerIvarType>::Output` is not an iterator
   --> /Users/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/objc2-0.3.0-beta.3.patch-leaks.2/src/declare/ivar_forwarding_impls.rs:165:5
    |
165 |     fn nth(&mut self, n: usize) -> Option<<<Self as Deref>::Target as Iterator>::Item> {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `<<I as IvarType>::Type as InnerIvarType>::Output` is not an iterator
    |
    = help: the trait `Iterator` is not implemented for `<<I as IvarType>::Type as InnerIvarType>::Output`
note: required for `ivar::Ivar<I>` to implement `Iterator`
   --> /Users/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/objc2-0.3.0-beta.3.patch-leaks.2/src/declare/ivar_forwarding_impls.rs:154:19
    |
154 | impl<I: IvarType> Iterator for Ivar<I>
    |                   ^^^^^^^^     ^^^^^^^
155 | where
156 |     <Self as Deref>::Target: Iterator,
    |                              -------- unsatisfied trait bound introduced here
help: consider further restricting the associated type
    |
165 |     fn nth(&mut self, n: usize) -> Option<<<Self as Deref>::Target as Iterator>::Item> where <<I as IvarType>::Type as InnerIvarType>::Output: Iterator {
    |                                                                                        ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

error[E0277]: `<<I as IvarType>::Type as InnerIvarType>::Output` is not an iterator
   --> /Users/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/objc2-0.3.0-beta.3.patch-leaks.2/src/declare/ivar_forwarding_impls.rs:165:5
    |
165 |     fn nth(&mut self, n: usize) -> Option<<<Self as Deref>::Target as Iterator>::Item> {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `<<I as IvarType>::Type as InnerIvarType>::Output` is not an iterator
    |
    = help: the trait `Iterator` is not implemented for `<<I as IvarType>::Type as InnerIvarType>::Output`
help: consider further restricting the associated type
    |
165 |     fn nth(&mut self, n: usize) -> Option<<<Self as Deref>::Target as Iterator>::Item> where <<I as IvarType>::Type as InnerIvarType>::Output: Iterator {
    |                                                                                        ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

I expected to see this happen: it should build.

Instead, this happened: it doesn't build, see above.

Version it worked on

It most recently worked on: rust version 1.69.0-nightly (31f858d 2023-02-28)

Version with regression

rustc --version --verbose:

rust version 1.70.0-nightly (da7c50c08 2023-03-19)

Metadata

Metadata

Assignees

Labels

C-bugCategory: This is a bug.P-highHigh priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.regression-from-stable-to-nightlyPerformance or correctness regression from stable to nightly.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions