@@ -106,7 +106,7 @@ pub fn borrowck_query<'db>(
106106 // FIXME(next-solver): Opaques.
107107 let infcx = interner. infer_ctxt ( ) . build ( typing_mode) ;
108108 res. push ( BorrowckResult {
109- mutability_of_locals : mutability_of_locals ( & infcx, & body) ,
109+ mutability_of_locals : mutability_of_locals ( & infcx, env , & body) ,
110110 moved_out_of_ref : moved_out_of_ref ( & infcx, env, & body) ,
111111 partially_moved : partially_moved ( & infcx, env, & body) ,
112112 borrow_regions : borrow_regions ( db, & body) ,
@@ -146,6 +146,7 @@ fn moved_out_of_ref<'db>(
146146 }
147147 ty = proj. projected_ty (
148148 infcx,
149+ env,
149150 ty,
150151 make_fetch_closure_field ( db) ,
151152 body. owner . module ( db) . krate ( db) ,
@@ -242,6 +243,7 @@ fn partially_moved<'db>(
242243 for proj in p. projection . lookup ( & body. projection_store ) {
243244 ty = proj. projected_ty (
244245 infcx,
246+ env,
245247 ty,
246248 make_fetch_closure_field ( db) ,
247249 body. owner . module ( db) . krate ( db) ,
@@ -374,6 +376,7 @@ enum ProjectionCase {
374376
375377fn place_case < ' db > (
376378 infcx : & InferCtxt < ' db > ,
379+ env : ParamEnv < ' db > ,
377380 body : & MirBody < ' db > ,
378381 lvalue : & Place < ' db > ,
379382) -> ProjectionCase {
@@ -395,6 +398,7 @@ fn place_case<'db>(
395398 }
396399 ty = proj. projected_ty (
397400 infcx,
401+ env,
398402 ty,
399403 make_fetch_closure_field ( db) ,
400404 body. owner . module ( db) . krate ( db) ,
@@ -535,6 +539,7 @@ fn record_usage_for_operand<'db>(
535539
536540fn mutability_of_locals < ' db > (
537541 infcx : & InferCtxt < ' db > ,
542+ env : ParamEnv < ' db > ,
538543 body : & MirBody < ' db > ,
539544) -> ArenaMap < LocalId < ' db > , MutabilityReason > {
540545 let db = infcx. interner . db ;
@@ -547,7 +552,7 @@ fn mutability_of_locals<'db>(
547552 for statement in & block. statements {
548553 match & statement. kind {
549554 StatementKind :: Assign ( place, value) => {
550- match place_case ( infcx, body, place) {
555+ match place_case ( infcx, env , body, place) {
551556 ProjectionCase :: Direct => {
552557 if ever_init_map. get ( place. local ) . copied ( ) . unwrap_or_default ( ) {
553558 push_mut_span ( place. local , statement. span , & mut result) ;
@@ -596,7 +601,7 @@ fn mutability_of_locals<'db>(
596601 } ,
597602 p,
598603 ) = value
599- && place_case ( infcx, body, p) != ProjectionCase :: Indirect
604+ && place_case ( infcx, env , body, p) != ProjectionCase :: Indirect
600605 {
601606 push_mut_span ( p. local , statement. span , & mut result) ;
602607 }
0 commit comments