@@ -23,28 +23,9 @@ use stdx::always;
2323use syntax:: ast:: RangeOp ;
2424
2525use crate :: {
26- Adjust , Adjustment , AdtId , AutoBorrow , Binders , CallableDefId , CallableSig , DeclContext ,
27- DeclOrigin , IncorrectGenericsLenKind , Interner , Rawness , Scalar , Substitution ,
28- TraitEnvironment , TraitRef , Ty , TyBuilder , TyExt , TyKind ,
29- autoderef:: { Autoderef , builtin_deref, deref_by_trait} ,
30- consteval,
31- generics:: generics,
32- infer:: {
33- BreakableKind ,
34- coerce:: { CoerceMany , CoerceNever , CoercionCause } ,
35- find_continuable,
36- pat:: contains_explicit_ref_binding,
37- } ,
38- lang_items:: lang_items_for_bin_op,
39- lower:: {
40- LifetimeElisionKind , ParamLoweringMode , lower_to_chalk_mutability,
41- path:: { GenericArgsLowerer , TypeLikeConst , substs_from_args_and_bindings} ,
42- } ,
43- mapping:: { ToChalk , from_chalk} ,
44- method_resolution:: { self , VisibleFromModule } ,
45- primitive:: { self , UintTy } ,
46- static_lifetime, to_chalk_trait_id,
47- traits:: FnTrait ,
26+ autoderef:: { builtin_deref, deref_by_trait, Autoderef } , consteval, generics:: generics, infer:: {
27+ coerce:: { CoerceMany , CoerceNever , CoercionCause } , find_continuable, pat:: contains_explicit_ref_binding, BreakableKind
28+ } , lang_items:: lang_items_for_bin_op, lower:: { lower_to_chalk_mutability, path:: { substs_from_args_and_bindings, GenericArgsLowerer , TypeLikeConst } , ParamLoweringMode } , mapping:: { from_chalk, ToChalk } , method_resolution:: { self , VisibleFromModule } , next_solver:: mapping:: ChalkToNextSolver , primitive:: { self , UintTy } , static_lifetime, to_chalk_trait_id, traits:: FnTrait , Adjust , Adjustment , AdtId , AutoBorrow , Binders , CallableDefId , CallableSig , DeclContext , DeclOrigin , IncorrectGenericsLenKind , Interner , LifetimeElisionKind , Rawness , Scalar , Substitution , TraitEnvironment , TraitRef , Ty , TyBuilder , TyExt , TyKind
4829} ;
4930
5031use super :: {
@@ -826,7 +807,7 @@ impl InferenceContext<'_> {
826807 let index_ty = self . infer_expr ( * index, & Expectation :: none ( ) , ExprIsRead :: Yes ) ;
827808
828809 if let Some ( index_trait) = self . resolve_lang_trait ( LangItem :: Index ) {
829- let canonicalized = self . canonicalize ( base_ty. clone ( ) ) ;
810+ let canonicalized = ChalkToNextSolver :: from_nextsolver ( self . canonicalize ( base_ty. clone ( ) . to_nextsolver ( self . table . interner ) ) , self . table . interner ) ;
830811 let receiver_adjustments = method_resolution:: resolve_indexing_op (
831812 self . db ,
832813 self . table . trait_env . clone ( ) ,
@@ -932,6 +913,7 @@ impl InferenceContext<'_> {
932913 }
933914 None => {
934915 let expected_ty = expected. to_option ( & mut self . table ) ;
916+ tracing:: debug!( ?expected_ty) ;
935917 let opt_ty = match expected_ty. as_ref ( ) . map ( |it| it. kind ( Interner ) ) {
936918 Some ( TyKind :: Scalar ( Scalar :: Int ( _) | Scalar :: Uint ( _) ) ) => expected_ty,
937919 Some ( TyKind :: Scalar ( Scalar :: Char ) ) => {
@@ -1678,7 +1660,7 @@ impl InferenceContext<'_> {
16781660 None => {
16791661 // no field found, lets attempt to resolve it like a function so that IDE things
16801662 // work out while people are typing
1681- let canonicalized_receiver = self . canonicalize ( receiver_ty. clone ( ) ) ;
1663+ let canonicalized_receiver = self . canonicalize ( receiver_ty. clone ( ) . to_nextsolver ( self . table . interner ) ) ;
16821664 let resolved = method_resolution:: lookup_method (
16831665 self . db ,
16841666 & canonicalized_receiver,
@@ -1824,7 +1806,7 @@ impl InferenceContext<'_> {
18241806 expected : & Expectation ,
18251807 ) -> Ty {
18261808 let receiver_ty = self . infer_expr_inner ( receiver, & Expectation :: none ( ) , ExprIsRead :: Yes ) ;
1827- let canonicalized_receiver = self . canonicalize ( receiver_ty. clone ( ) ) ;
1809+ let canonicalized_receiver = self . canonicalize ( receiver_ty. clone ( ) . to_nextsolver ( self . table . interner ) ) ;
18281810
18291811 let resolved = method_resolution:: lookup_method (
18301812 self . db ,
0 commit comments