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
This looks like a "soft" deadlock on normalize_param_env_or_error caused by implied bounds.
Minified:
pubtraitStream{typeItem;typeError;}pubtraitParseError<I>{typeOutput;}pubstructLex<'a,I>whereI:Stream,I::Error:ParseError<char>,
<<IasStream>::ErrorasParseError<char>>::Output:'a{x:&'a <I::ErrorasParseError<char>>::Output}pubstructReserved<'a,I>whereI:Stream<Item=char> + 'a,I::Error:ParseError<I::Item>,// uncomment this to make it fail on stable too// <<I as Stream>::Error as ParseError<char>>::Output: 'a{x:Lex<'a,I>}fnmain(){}
to detail: normalize_param_env_or_error does not try to normalize the param env in some sort of fixed-point computation - that would be hard without lazy normalization or some other major refactor of the trait system. Therefore, it normalizes the param env insided the unnormalized param env.
This means that bounds such as <<I as Stream>::Error as ParseError<char>>::Output: 'a are normalized in the unnormalized param env, which contains I::Error: ParseError<I::Item>, instead of I::Error: ParseError<char>,.
I think a possible hacky fix would be to normalize the implied outlives bounds (or maybe, all outlives bounds) in the normalized param env instead of the unnormalized param env.
Trying to investigate more deeply. (Also, I realize now that @Mark-Simulacrum this is likely the issue you were talking about when you were talking about re-regressing..?)
Activity
Marwes commentedon Sep 23, 2018
For combine it seems like rustc no longer sees that
I::Item == chardespite that being specified in thewherebound :/arielb1 commentedon Sep 24, 2018
This looks like a "soft" deadlock on
normalize_param_env_or_errorcaused by implied bounds.Minified:
arielb1 commentedon Sep 24, 2018
to detail:
normalize_param_env_or_errordoes not try to normalize the param env in some sort of fixed-point computation - that would be hard without lazy normalization or some other major refactor of the trait system. Therefore, it normalizes the param env insided the unnormalized param env.This means that bounds such as
<<I as Stream>::Error as ParseError<char>>::Output: 'aare normalized in the unnormalized param env, which containsI::Error: ParseError<I::Item>,instead ofI::Error: ParseError<char>,.I think a possible hacky fix would be to normalize the implied outlives bounds (or maybe, all outlives bounds) in the normalized param env instead of the unnormalized param env.
arielb1 commentedon Sep 24, 2018
Note that this is broken even on older nightlies as long as
#![feature(infer_outlives_requirements)]is enabled.arielb1 commentedon Sep 24, 2018
I'll try to get a fix done later this week.
pnkfelix commentedon Sep 27, 2018
visited at T-compiler. P-high.
11 remaining items
[-][1.30 beta] Trait bound is not satisfied[/-][+][1.31 beta] Trait bound is not satisfied[/+]Mark-Simulacrum commentedon Nov 9, 2018
Interestingly, this is not fixed on current beta (or perhaps re-regressed); I'm reopening and retagging.
Specifically at least postgis is failing to build: https://crater-reports.s3.amazonaws.com/beta-1.31-1/beta-2018-10-30/reg/vectortile-0.2.2/log.txt
Mark-Simulacrum commentedon Nov 9, 2018
cc @arielb1 @pnkfelix @rust-lang/compiler
pnkfelix commentedon Nov 9, 2018
Maybe we need to reconsider backporting PR #54701 ... will investigate...
nikomatsakis commentedon Nov 15, 2018
Test results
postgis 0.6.0
combine-language 3.0.1:
nikomatsakis commentedon Nov 15, 2018
Seems like postgis-0.6.0 simply wasn't fixed.
nikomatsakis commentedon Nov 15, 2018
Trying to investigate more deeply. (Also, I realize now that @Mark-Simulacrum this is likely the issue you were talking about when you were talking about re-regressing..?)
nikomatsakis commentedon Nov 16, 2018
Found the problem. Fix coming shortly.
Auto merge of #56003 - nikomatsakis:issue-54467-infer-outlives-bounds…
Auto merge of #56003 - nikomatsakis:issue-54467-infer-outlives-bounds…