@@ -681,13 +681,18 @@ impl<'a> LoweringContext<'a> {
681681 Ident :: with_empty_ctxt ( Symbol :: gensym ( s) )
682682 }
683683
684- fn allow_internal_unstable ( & self , reason : CompilerDesugaringKind , span : Span ) -> Span {
684+ fn allow_internal_unstable (
685+ & self ,
686+ reason : CompilerDesugaringKind ,
687+ span : Span ,
688+ allow_internal_unstable : Vec < Symbol > ,
689+ ) -> Span {
685690 let mark = Mark :: fresh ( Mark :: root ( ) ) ;
686691 mark. set_expn_info ( source_map:: ExpnInfo {
687692 call_site : span,
688693 def_site : Some ( span) ,
689694 format : source_map:: CompilerDesugaring ( reason) ,
690- allow_internal_unstable : true ,
695+ allow_internal_unstable,
691696 allow_internal_unsafe : false ,
692697 local_inner_macros : false ,
693698 edition : source_map:: hygiene:: default_edition ( ) ,
@@ -964,7 +969,13 @@ impl<'a> LoweringContext<'a> {
964969 attrs : ThinVec :: new ( ) ,
965970 } ;
966971
967- let unstable_span = self . allow_internal_unstable ( CompilerDesugaringKind :: Async , span) ;
972+ let unstable_span = self . allow_internal_unstable (
973+ CompilerDesugaringKind :: Async ,
974+ span,
975+ vec ! [
976+ Symbol :: intern( "gen_future" ) ,
977+ ] ,
978+ ) ;
968979 let gen_future = self . expr_std_path (
969980 unstable_span, & [ "future" , "from_generator" ] , None , ThinVec :: new ( ) ) ;
970981 hir:: ExprKind :: Call ( P ( gen_future) , hir_vec ! [ generator] )
@@ -1363,6 +1374,7 @@ impl<'a> LoweringContext<'a> {
13631374 let exist_ty_span = self . allow_internal_unstable (
13641375 CompilerDesugaringKind :: ExistentialReturnType ,
13651376 span,
1377+ Vec :: new ( ) , // doesn'c actually allow anything unstable
13661378 ) ;
13671379
13681380 let exist_ty_def_index = self
@@ -3927,8 +3939,13 @@ impl<'a> LoweringContext<'a> {
39273939 } ) ,
39283940 ExprKind :: TryBlock ( ref body) => {
39293941 self . with_catch_scope ( body. id , |this| {
3930- let unstable_span =
3931- this. allow_internal_unstable ( CompilerDesugaringKind :: TryBlock , body. span ) ;
3942+ let unstable_span = this. allow_internal_unstable (
3943+ CompilerDesugaringKind :: TryBlock ,
3944+ body. span ,
3945+ vec ! [
3946+ Symbol :: intern( "try_trait" ) ,
3947+ ] ,
3948+ ) ;
39323949 let mut block = this. lower_block ( body, true ) . into_inner ( ) ;
39333950 let tail = block. expr . take ( ) . map_or_else (
39343951 || {
@@ -4363,6 +4380,7 @@ impl<'a> LoweringContext<'a> {
43634380 let desugared_span = self . allow_internal_unstable (
43644381 CompilerDesugaringKind :: ForLoop ,
43654382 head_sp,
4383+ Vec :: new ( ) ,
43664384 ) ;
43674385
43684386 let iter = self . str_to_ident ( "iter" ) ;
@@ -4525,8 +4543,13 @@ impl<'a> LoweringContext<'a> {
45254543 // return Try::from_error(From::from(err)),
45264544 // }
45274545
4528- let unstable_span =
4529- self . allow_internal_unstable ( CompilerDesugaringKind :: QuestionMark , e. span ) ;
4546+ let unstable_span = self . allow_internal_unstable (
4547+ CompilerDesugaringKind :: QuestionMark ,
4548+ e. span ,
4549+ vec ! [
4550+ Symbol :: intern( "try_trait" )
4551+ ] ,
4552+ ) ;
45304553
45314554 // `Try::into_result(<expr>)`
45324555 let discr = {
0 commit comments