@@ -763,6 +763,28 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
763
763
self . resolver . get_import_res ( id) . present_items ( )
764
764
}
765
765
766
+ fn make_lang_item_path (
767
+ & mut self ,
768
+ lang_item : hir:: LangItem ,
769
+ span : Span ,
770
+ args : Option < & ' hir hir:: GenericArgs < ' hir > > ,
771
+ ) -> & ' hir hir:: Path < ' hir > {
772
+ let def_id = self . tcx . require_lang_item ( lang_item, Some ( span) ) ;
773
+ let def_kind = self . tcx . def_kind ( def_id) ;
774
+ let res = Res :: Def ( def_kind, def_id) ;
775
+ self . arena . alloc ( hir:: Path {
776
+ span,
777
+ res,
778
+ segments : self . arena . alloc_from_iter ( [ hir:: PathSegment {
779
+ ident : Ident :: new ( lang_item. name ( ) , span) ,
780
+ hir_id : self . next_id ( ) ,
781
+ res,
782
+ args,
783
+ infer_args : false ,
784
+ } ] ) ,
785
+ } )
786
+ }
787
+
766
788
/// Reuses the span but adds information like the kind of the desugaring and features that are
767
789
/// allowed inside this span.
768
790
fn mark_span_with_reason (
@@ -1957,12 +1979,17 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
1957
1979
span_ext : DUMMY_SP ,
1958
1980
} ) ;
1959
1981
1960
- hir:: GenericBound :: LangItemTrait (
1961
- // ::std::future::Future<future_params>
1962
- hir:: LangItem :: Future ,
1963
- self . lower_span ( span) ,
1964
- self . next_id ( ) ,
1965
- future_args,
1982
+ let span = self . lower_span ( span) ;
1983
+ hir:: GenericBound :: Trait (
1984
+ hir:: PolyTraitRef {
1985
+ bound_generic_params : & [ ] ,
1986
+ trait_ref : hir:: TraitRef {
1987
+ path : self . make_lang_item_path ( hir:: LangItem :: Future , span, Some ( future_args) ) ,
1988
+ hir_ref_id : self . next_id ( ) ,
1989
+ } ,
1990
+ span,
1991
+ } ,
1992
+ hir:: TraitBoundModifier :: None ,
1966
1993
)
1967
1994
}
1968
1995
0 commit comments