@@ -61,9 +61,8 @@ use crate::{
61
61
next_solver:: {
62
62
BoundExistentialPredicate , Ctor , DbInterner , GenericArgs , SolverDefId ,
63
63
mapping:: {
64
- ChalkToNextSolver , bound_var_to_lifetime_idx, bound_var_to_type_or_const_param_idx,
65
- convert_args_for_result, convert_const_for_result, convert_region_for_result,
66
- convert_ty_for_result,
64
+ ChalkToNextSolver , convert_args_for_result, convert_const_for_result,
65
+ convert_region_for_result, convert_ty_for_result,
67
66
} ,
68
67
} ,
69
68
primitive, to_assoc_type_id,
@@ -641,7 +640,7 @@ impl HirDisplay for ProjectionTy {
641
640
&& !f. bounds_formatting_ctx . contains ( self )
642
641
{
643
642
let db = f. db ;
644
- let id = from_placeholder_idx ( db, * idx) ;
643
+ let id = from_placeholder_idx ( db, * idx) . 0 ;
645
644
let generics = generics ( db, id. parent ) ;
646
645
647
646
let substs = generics. placeholder_subst ( db) ;
@@ -736,14 +735,14 @@ impl HirDisplay for Const {
736
735
impl < ' db > HirDisplay for crate :: next_solver:: Const < ' db > {
737
736
fn hir_fmt ( & self , f : & mut HirFormatter < ' _ > ) -> Result < ( ) , HirDisplayError > {
738
737
match self . kind ( ) {
738
+ rustc_type_ir:: ConstKind :: Placeholder ( _) => write ! ( f, "<placeholder>" ) ,
739
739
rustc_type_ir:: ConstKind :: Bound ( db, bound_const) => {
740
740
write ! ( f, "?{}.{}" , db. as_u32( ) , bound_const. as_u32( ) )
741
741
}
742
742
rustc_type_ir:: ConstKind :: Infer ( ..) => write ! ( f, "#c#" ) ,
743
- rustc_type_ir:: ConstKind :: Placeholder ( idx) => {
744
- let id = bound_var_to_type_or_const_param_idx ( f. db , idx. bound ) ;
745
- let generics = generics ( f. db , id. parent ) ;
746
- let param_data = & generics[ id. local_id ] ;
743
+ rustc_type_ir:: ConstKind :: Param ( param) => {
744
+ let generics = generics ( f. db , param. id . parent ( ) ) ;
745
+ let param_data = & generics[ param. id . local_id ( ) ] ;
747
746
write ! ( f, "{}" , param_data. name( ) . unwrap( ) . display( f. db, f. edition( ) ) ) ?;
748
747
Ok ( ( ) )
749
748
}
@@ -765,7 +764,6 @@ impl<'db> HirDisplay for crate::next_solver::Const<'db> {
765
764
}
766
765
rustc_type_ir:: ConstKind :: Error ( ..) => f. write_char ( '_' ) ,
767
766
rustc_type_ir:: ConstKind :: Expr ( ..) => write ! ( f, "<const-expr>" ) ,
768
- rustc_type_ir:: ConstKind :: Param ( _) => write ! ( f, "<param>" ) ,
769
767
}
770
768
}
771
769
}
@@ -1178,7 +1176,7 @@ impl<'db> HirDisplay for crate::next_solver::Ty<'db> {
1178
1176
if let TyKind :: Ref ( l, _, _) = kind {
1179
1177
f. write_char ( '&' ) ?;
1180
1178
if f. render_region ( l) {
1181
- convert_region_for_result ( l) . hir_fmt ( f) ?;
1179
+ convert_region_for_result ( interner , l) . hir_fmt ( f) ?;
1182
1180
f. write_char ( ' ' ) ?;
1183
1181
}
1184
1182
match m {
@@ -1611,14 +1609,10 @@ impl<'db> HirDisplay for crate::next_solver::Ty<'db> {
1611
1609
write ! ( f, "{{closure}}" ) ?;
1612
1610
}
1613
1611
}
1614
- TyKind :: Placeholder ( idx) => {
1615
- let placeholder_index = chalk_ir:: PlaceholderIndex {
1616
- idx : idx. bound . var . as_usize ( ) ,
1617
- ui : chalk_ir:: UniverseIndex { counter : idx. universe . as_usize ( ) } ,
1618
- } ;
1619
- let id = from_placeholder_idx ( db, placeholder_index) ;
1620
- let generics = generics ( db, id. parent ) ;
1621
- let param_data = & generics[ id. local_id ] ;
1612
+ TyKind :: Placeholder ( _) => write ! ( f, "{{placeholder}}" ) ?,
1613
+ TyKind :: Param ( param) => {
1614
+ let generics = generics ( db, param. id . parent ( ) ) ;
1615
+ let param_data = & generics[ param. id . local_id ( ) ] ;
1622
1616
match param_data {
1623
1617
TypeOrConstParamData :: TypeParamData ( p) => match p. provenance {
1624
1618
TypeParamProvenance :: TypeParamList | TypeParamProvenance :: TraitSelf => {
@@ -1634,7 +1628,7 @@ impl<'db> HirDisplay for crate::next_solver::Ty<'db> {
1634
1628
TypeParamProvenance :: ArgumentImplTrait => {
1635
1629
let substs = generics. placeholder_subst ( db) ;
1636
1630
let bounds = db
1637
- . generic_predicates ( id. parent )
1631
+ . generic_predicates ( param . id . parent ( ) )
1638
1632
. iter ( )
1639
1633
. map ( |pred| pred. clone ( ) . substitute ( Interner , & substs) )
1640
1634
. filter ( |wc| match wc. skip_binders ( ) {
@@ -1656,7 +1650,7 @@ impl<'db> HirDisplay for crate::next_solver::Ty<'db> {
1656
1650
WhereClause :: LifetimeOutlives ( _) => false ,
1657
1651
} )
1658
1652
. collect :: < Vec < _ > > ( ) ;
1659
- let krate = id. parent . module ( db) . krate ( ) ;
1653
+ let krate = param . id . parent ( ) . module ( db) . krate ( ) ;
1660
1654
write_bounds_like_dyn_trait_with_prefix (
1661
1655
f,
1662
1656
"impl" ,
@@ -1671,7 +1665,6 @@ impl<'db> HirDisplay for crate::next_solver::Ty<'db> {
1671
1665
}
1672
1666
}
1673
1667
}
1674
- TyKind :: Param ( _) => write ! ( f, "{{param}}" ) ?,
1675
1668
TyKind :: Bound ( debruijn_index, ty) => {
1676
1669
let idx = chalk_ir:: BoundVar {
1677
1670
debruijn : chalk_ir:: DebruijnIndex :: new ( debruijn_index. as_u32 ( ) ) ,
@@ -2294,7 +2287,7 @@ impl HirDisplay for LifetimeData {
2294
2287
fn hir_fmt ( & self , f : & mut HirFormatter < ' _ > ) -> Result < ( ) , HirDisplayError > {
2295
2288
match self {
2296
2289
LifetimeData :: Placeholder ( idx) => {
2297
- let id = lt_from_placeholder_idx ( f. db , * idx) ;
2290
+ let id = lt_from_placeholder_idx ( f. db , * idx) . 0 ;
2298
2291
let generics = generics ( f. db , id. parent ) ;
2299
2292
let param_data = & generics[ id. local_id ] ;
2300
2293
write ! ( f, "{}" , param_data. name. display( f. db, f. edition( ) ) ) ?;
@@ -2319,10 +2312,9 @@ impl HirDisplay for LifetimeData {
2319
2312
impl < ' db > HirDisplay for crate :: next_solver:: Region < ' db > {
2320
2313
fn hir_fmt ( & self , f : & mut HirFormatter < ' _ > ) -> Result < ( ) , HirDisplayError > {
2321
2314
match self . kind ( ) {
2322
- rustc_type_ir:: RegionKind :: RePlaceholder ( idx) => {
2323
- let id = bound_var_to_lifetime_idx ( f. db , idx. bound . var ) ;
2324
- let generics = generics ( f. db , id. parent ) ;
2325
- let param_data = & generics[ id. local_id ] ;
2315
+ rustc_type_ir:: RegionKind :: ReEarlyParam ( param) => {
2316
+ let generics = generics ( f. db , param. id . parent ) ;
2317
+ let param_data = & generics[ param. id . local_id ] ;
2326
2318
write ! ( f, "{}" , param_data. name. display( f. db, f. edition( ) ) ) ?;
2327
2319
Ok ( ( ) )
2328
2320
}
@@ -2339,7 +2331,7 @@ impl<'db> HirDisplay for crate::next_solver::Region<'db> {
2339
2331
}
2340
2332
}
2341
2333
rustc_type_ir:: RegionKind :: ReErased => write ! ( f, "'<erased>" ) ,
2342
- rustc_type_ir:: RegionKind :: ReEarlyParam ( _) => write ! ( f, "<param >" ) ,
2334
+ rustc_type_ir:: RegionKind :: RePlaceholder ( _) => write ! ( f, "<placeholder >" ) ,
2343
2335
rustc_type_ir:: RegionKind :: ReLateParam ( _) => write ! ( f, "<late-param>" ) ,
2344
2336
}
2345
2337
}
0 commit comments