Change:
mullvad-vpn build fails after jnix crate upgrade to v0.2.0 I tried this code: sudo pacman -Russnc mullvad-vpn sudo rm -rf /var/cache/mullvad-vpn/ sudo rm -rf /var/log/mullvad-vpn/ git clone cd mullvad-vpn makepkg -si I expected to see this happen: build completes without errors Instead, this happened: rustc panicks at 'assertion failed: data.isempty()', :
cc
ping icebreakers-cleanup-crew
Currently running
prints: searched nightlies: from nightly-2020-02-11 to nightly-2020-02-18 regressed nightly: nightly-2020-02-16 searched commits: from to regressed commit: source code: modify labels: -E-needs-bisection
modify labels: -E-needs-mcve
triage: P-high. Removing nomination.
I'm also getting this error. : Backtrace:

Discussion:
Canonical, CanonicalVarValues, CanonicalizedQueryResponse, Certainty, OriginalQueryValues, QueryOutlivesConstraint, QueryRegionConstraints, QueryResponse, }; <ins> use crate::infer::nll_relate::{NormalizationStrategy, TypeRelating, TypeRelatingDelegate}; </ins> use crate::infer::region_constraints::{Constraint, RegionConstraintData}; <del> use crate::infer::InferCtxtBuilder; use crate::infer::{InferCtxt, InferOk, InferResult}; </del> <ins> use crate::infer::{InferCtxt, InferCtxtBuilder, InferOk, InferResult, NLLRegionVariableOrigin}; </ins> use crate::traits::query::{Fallible, NoSolution}; <del> use crate::traits::TraitEngine; </del> <ins> use crate::traits::{DomainGoal, TraitEngine}; </ins> use crate::traits::{Obligation, ObligationCause, PredicateObligation}; use rustc::arena::ArenaAllocatable; use rustc::ty::fold::TypeFoldable; <ins> use rustc::ty::relate::TypeRelation; </ins> use rustc::ty::subst::{GenericArg, GenericArgKind}; use rustc::ty::{self, BoundVar, Ty, TyCtxt}; use rustc_data_structures::captures::Captures;

} (GenericArgKind::Type(v1), GenericArgKind::Type(v2)) => { <del> let ok = self.at(cause, param_env).eq(v1, v2)?; obligations.extend(ok.into_obligations()); </del> <ins> TypeRelating::new( self, QueryTypeRelatingDelegate { infcx: self, param_env, cause, obligations: &mut obligations, }, ty::Variance::Invariant, ) .relate(&v1, &v2)?; </ins> } (GenericArgKind::Const(v1), GenericArgKind::Const(v2)) => { <del> let ok = self.at(cause, param_env).eq(v1, v2)?; obligations.extend(ok.into_obligations()); </del> <ins> TypeRelating::new( self, QueryTypeRelatingDelegate { infcx: self, param_env, cause, obligations: &mut obligations, }, ty::Variance::Invariant, ) .relate(&v1, &v2)?; </ins> } _ => {

QueryRegionConstraints { outlives, member_constraints: member_constraints.clone() } } <ins> struct QueryTypeRelatingDelegate<'a, 'tcx> { infcx: &'a InferCtxt<'a, 'tcx>, obligations: &'a mut Vec<PredicateObligation<'tcx>>, param_env: ty::ParamEnv<'tcx>, cause: &'a ObligationCause<'tcx>, } impl<'tcx> TypeRelatingDelegate<'tcx> for QueryTypeRelatingDelegate<'_, 'tcx> { fn create_next_universe(&mut self) -> ty::UniverseIndex { self.infcx.create_next_universe() } fn next_existential_region_var(&mut self, from_forall: bool) -> ty::Region<'tcx> { let origin = NLLRegionVariableOrigin::Existential { from_forall }; self.infcx.next_nll_region_var(origin) } fn next_placeholder_region(&mut self, placeholder: ty::PlaceholderRegion) -> ty::Region<'tcx> { self.infcx.tcx.mk_region(ty::RePlaceholder(placeholder)) } fn generalize_existential(&mut self, universe: ty::UniverseIndex) -> ty::Region<'tcx> { self.infcx.next_nll_region_var_in_universe( NLLRegionVariableOrigin::Existential { from_forall: false }, universe, ) } fn push_outlives(&mut self, sup: ty::Region<'tcx>, sub: ty::Region<'tcx>) { self.obligations.push(Obligation { cause: self.cause.clone(), param_env: self.param_env, predicate: ty::Predicate::RegionOutlives(ty::Binder::dummy(ty::OutlivesPredicate( sup, sub, ))), recursion_depth: 0, }); } fn push_domain_goal(&mut self, _: DomainGoal<'tcx>) { bug!("should never be invoked with eager normalization") } fn normalization() -> NormalizationStrategy { NormalizationStrategy::Eager } fn forbid_inference_vars() -> bool { true } } </ins>

<ins> // Regression test for issue #69490 // check-pass pub trait Trait<T> { const S: &'static str; } impl<T> Trait<()> for T where T: for<'a> Trait<&'a ()>, { // Use of `T::S` here caused an ICE const S: &'static str = T::S; } // Some similar cases that didn't ICE: impl<'a, T> Trait<()> for (T,) where T: Trait<&'a ()>, { const S: &'static str = T::S; } impl<T> Trait<()> for [T; 1] where T: Trait<for<'a> fn(&'a ())>, { const S: &'static str = T::S; } fn main() {} </ins>