You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
regression: overflow evaluating the requirement #128887
[INFO] [stdout] error[E0275]: overflow evaluating the requirement `NaturePokeathlonStatAffect: Unpin`
[INFO] [stdout] |
[INFO] [stdout] = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`poke_search`)
[INFO] [stdout] note: required because it appears within the type `PhantomData<NaturePokeathlonStatAffect>`
[INFO] [stdout] --> /rustc/08328a323ecd80b443a8fcc72c6b1071f48e233f/library/core/src/marker.rs:740:12
Alright, it would be very useful to get a minimization of the underlying pattern here. I think we likely want to accept this breakage 🤔
Depending on the result of the investigation, could #126128 end up in the release notes, correct? (just mentioning so we dont forget to label it as such)
Minimized from the triangulate crate (I'm unable to make it any smaller):
pubtraitMappable<T>{typeOutput;}pubtraitMappable2<T>{typeOutput;}// Deleting this impl makes it compile on betaimpl<T>Mappable2<T>forT{typeOutput = i32;}pubtraitGeneric<M>{}// Deleting the `: Mappable<T>` makes it error on stable.pubstructIndexWithIter<I,M:Mappable<T>,T>(I,M,T);// Changing the where clause to be an inline bound (`impl<I: Generic<M>, ....`) causes it to compile on betaimpl<I,M:Mappable<T,Output:Mappable2<T,Output = M>>,T>IndexWithIter<I,M,T>whereI:Generic<M>,{fnnew(_:I){}}pubfnfoo<M:Mappable<T,Output:Mappable2<T,Output = M>>,T>(x:implGeneric<M>){IndexWithIter::new(x);}
Compiles on stable. Gives the following error on beta:
Compiling playground v0.0.1 (/playground)
error[E0275]: overflow evaluating the requirement `<M as Mappable<_>>::Output: Mappable2<_>`
--> src/lib.rs:28:5
|
28 | IndexWithIter::new(x);
| ^^^^^^^^^^^^^^^^^^^^^
|
= help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`playground`)
note: required by a bound in `IndexWithIter::<I, M, T>::new`
--> src/lib.rs:20:45
|
20 | impl<I, M: Mappable<T, Output: Mappable2<T, Output = M>>, T> IndexWithIter<I, M, T>
| ^^^^^^^^^^ required by this bound in `IndexWithIter::<I, M, T>::new`
...
24 | fn new(_: I) {}
| --- required by a bound in this associated function
For more information about this error, try `rustc --explain E0275`.
error: could not compile `playground` (lib) due to 1 previous error
pubtraitMappable<T>{typeOutput;}pubtraitMappable2<T>{typeOutput;}// Deleting this impl makes it compile on betaimpl<T>Mappable2<T>forT{typeOutput = i32;}pubtraitGeneric<M>{}// Deleting the `: Mappable<T>` makes it error on stable.pubstructIndexWithIter<I,M:Mappable<T>,T>(I,M,T);// Changing the where clause to be an inline bound (`impl<I: Generic<M>, ....`) causes it to compile on betaimpl<I,M,T>IndexWithIter<I,M,T>whereM:Mappable<T>,M::Output:Mappable2<T,Output = M>,I:Generic<M>,{fnnew(x:I){IndexWithIter::<_,_,_>::new(x);}}
this is somehow caused by the order in which we evaluate nested goals and also subtyping, but I don't fully understand why this is happening yet.
My crate geoarrow compiled fine for 1.81 but no longer compiles on rust 1.82 because of this issue.
git clone https://github.com/geoarrow/geoarrow-rs
cd geoarrow-rs
git checkout 0b6715c6a56f0115f9078803fae945700713b22f
Compiles fine:
rustup run 1.81 cargo build --release
Fails to compile:
rustup run 1.82 cargo build --release
error[E0275]: overflow evaluating the requirement `<G as geo_traits::geometry::GeometryTrait>::GeometryCollection<'_>: geo_traits::geometry_collection::GeometryCollectionTrait`
|
= help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`geoarrow`)
note: required for `GeometryCollectionIterator<'_, f64, <<... as GeometryTrait>::GeometryCollection<'_> as GeometryCollectionTrait>::ItemType<'_>, ...>` to implement `Iterator`
--> src/geo_traits/iterator.rs:39:15
|
37 | ItemType: 'a + $item_trait<T = T>,
| ----- unsatisfied trait bound introduced here
38 | G: $self_trait<T = T, ItemType<'a> = ItemType>,
39 | > Iterator for $struct_name<'a, T, ItemType, G>
| ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
109 | / impl_iterator!(
110 | | GeometryCollectionIterator,
111 | | GeometryCollectionTrait,
112 | | GeometryTrait,
113 | | geometry_unchecked
114 | | );
| |_- in this macro invocation
= note: required for `GeometryCollectionIterator<'_, f64, <<... as GeometryTrait>::GeometryCollection<'_> as GeometryCollectionTrait>::ItemType<'_>, ...>` to implement `IntoIterator`
= note: the full name for the type has been written to '/Users/kyle/github/geoarrow/geoarrow-rs/target/release/deps/geoarrow-d23c01f6fb33c633.long-type-3599692272401749992.txt'
= note: consider using `--verbose` to print the full type name to the console
= note: the full name for the type has been written to '/Users/kyle/github/geoarrow/geoarrow-rs/target/release/deps/geoarrow-d23c01f6fb33c633.long-type-3599692272401749992.txt'
= note: consider using `--verbose` to print the full type name to the console
= note: this error originates in the macro `impl_iterator` (in Nightly builds, run with -Z macro-backtrace for more info)
For more information about this error, try `rustc --explain E0275`.
warning: `geoarrow` (lib) generated 3 warnings
error: could not compile `geoarrow` (lib) due to 1 previous error; 3 warnings emitted
FWIW it does compile with
RUSTFLAGS='-Zinline-mir=no' rustup run nightly cargo build --release
Activity
compiler-errors commentedon Aug 9, 2024
This regressed in #126128, cc @lcnr
lcnr commentedon Aug 12, 2024
Alright, it would be very useful to get a minimization of the underlying pattern here. I think we likely want to accept this breakage 🤔
theemathas commentedon Aug 12, 2024
Outdated comment
Somewhat minimized from the triangulate crate:
Code (109 lines)
apiraino commentedon Aug 12, 2024
WG-prioritization assigning priority (Zulip discussion).
@rustbot label -I-prioritize +P-high
Depending on the result of the investigation, could #126128 end up in the release notes, correct? (just mentioning so we dont forget to label it as such)
theemathas commentedon Aug 12, 2024
Minimized from the triangulate crate (I'm unable to make it any smaller):
Compiles on stable. Gives the following error on beta:
theemathas commentedon Aug 12, 2024
I am unable to reproduce the issues with poke_search_cli or similari on my computer.
lcnr commentedon Aug 12, 2024
slightly more readable for me 🤔
this is somehow caused by the order in which we evaluate nested goals and also subtyping, but I don't fully understand why this is happening yet.
32 remaining items
kylebarron commentedon Oct 18, 2024
My crate
geoarrowcompiled fine for 1.81 but no longer compiles on rust 1.82 because of this issue.Compiles fine:
Fails to compile:
FWIW it does compile with
theemathas commentedon Oct 20, 2024
I've split the latest geoarrow regression to a separate issue in #131960, to reduce confusion.
Work around upstream compiler bug (#956)
Work around upstream compiler bug (#956)
apiraino commentedon Sep 22, 2025
Given #131960, I'll bump up the priority of this one as well
@rustbot label -I-prioritize +P-high
Redesign GeometryTraitExt to eliminate GAT recursion to work around a…
Rollup merge of rust-lang#146918 - lcnr:add-regression-test, r=jdonsz…
Unrolled build for #146918
add recursion_limit workaround for rustc bug
use geo-bevy from git with recursion_limit workaround
bump geo-bevy to 9.0.0
Fix CI build errors (#149)