@@ -73,7 +73,7 @@ use syntax_pos::Span;
7373const  HIR_ID_COUNTER_LOCKED :  u32  = 0xFFFFFFFF ; 
7474
7575pub  struct  LoweringContext < ' a >  { 
76-     crate_root :  Option < & ' static   str > , 
76+     crate_root :  Option < Symbol > , 
7777
7878    /// Used to assign ids to HIR nodes that do not directly correspond to an AST node. 
7979sess :  & ' a  Session , 
@@ -164,8 +164,8 @@ pub trait Resolver {
164164fn  resolve_str_path ( 
165165        & mut  self , 
166166        span :  Span , 
167-         crate_root :  Option < & str > , 
168-         components :  & [ & str ] , 
167+         crate_root :  Option < Symbol > , 
168+         components :  & [ Symbol ] , 
169169        is_value :  bool , 
170170    )  -> hir:: Path ; 
171171} 
@@ -228,7 +228,7 @@ pub fn lower_crate(
228228    dep_graph. assert_ignored ( ) ; 
229229
230230    LoweringContext  { 
231-         crate_root :  std_inject:: injected_crate_name ( ) , 
231+         crate_root :  std_inject:: injected_crate_name ( ) . map ( Symbol :: intern ) , 
232232        sess, 
233233        cstore, 
234234        resolver, 
@@ -1149,7 +1149,7 @@ impl<'a> LoweringContext<'a> {
11491149            ] . into ( ) ) , 
11501150        ) ; 
11511151        let  gen_future = self . expr_std_path ( 
1152-             unstable_span,  & [ " future" ,   " from_generator" ] ,  None ,  ThinVec :: new ( ) ) ; 
1152+             unstable_span,  & [ sym :: future,  sym :: from_generator] ,  None ,  ThinVec :: new ( ) ) ; 
11531153        hir:: ExprKind :: Call ( P ( gen_future) ,  hir_vec ! [ generator] ) 
11541154    } 
11551155
@@ -2548,7 +2548,7 @@ impl<'a> LoweringContext<'a> {
25482548
25492549        // ::std::future::Future<future_params> 
25502550        let  future_path =
2551-             self . std_path ( span,  & [ " future" ,   " Future" ] ,  Some ( future_params) ,  false ) ; 
2551+             self . std_path ( span,  & [ sym :: future,  sym :: Future ] ,  Some ( future_params) ,  false ) ; 
25522552
25532553        hir:: GenericBound :: Trait ( 
25542554            hir:: PolyTraitRef  { 
@@ -4194,7 +4194,7 @@ impl<'a> LoweringContext<'a> {
41944194                        |x :  P < hir:: Expr > | x. into_inner ( ) , 
41954195                    ) ; 
41964196                    block. expr  = Some ( this. wrap_in_try_constructor ( 
4197-                         " from_ok" ,  tail,  unstable_span) ) ; 
4197+                         sym :: from_ok,  tail,  unstable_span) ) ; 
41984198                    hir:: ExprKind :: Block ( P ( block) ,  None ) 
41994199                } ) 
42004200            } 
@@ -4336,7 +4336,7 @@ impl<'a> LoweringContext<'a> {
43364336                self . expr_call_std_assoc_fn ( 
43374337                    id, 
43384338                    e. span , 
4339-                     & [ " ops" ,   " RangeInclusive" ] , 
4339+                     & [ sym :: ops,  sym :: RangeInclusive ] , 
43404340                    "new" , 
43414341                    hir_vec ! [ e1,  e2] , 
43424342                ) 
@@ -4345,11 +4345,11 @@ impl<'a> LoweringContext<'a> {
43454345                use  syntax:: ast:: RangeLimits :: * ; 
43464346
43474347                let  path = match  ( e1,  e2,  lims)  { 
4348-                     ( & None ,  & None ,  HalfOpen )  => " RangeFull" , 
4349-                     ( & Some ( ..) ,  & None ,  HalfOpen )  => " RangeFrom" , 
4350-                     ( & None ,  & Some ( ..) ,  HalfOpen )  => " RangeTo" , 
4351-                     ( & Some ( ..) ,  & Some ( ..) ,  HalfOpen )  => " Range" , 
4352-                     ( & None ,  & Some ( ..) ,  Closed )  => " RangeToInclusive" , 
4348+                     ( & None ,  & None ,  HalfOpen )  => sym :: RangeFull , 
4349+                     ( & Some ( ..) ,  & None ,  HalfOpen )  => sym :: RangeFrom , 
4350+                     ( & None ,  & Some ( ..) ,  HalfOpen )  => sym :: RangeTo , 
4351+                     ( & Some ( ..) ,  & Some ( ..) ,  HalfOpen )  => sym :: Range , 
4352+                     ( & None ,  & Some ( ..) ,  Closed )  => sym :: RangeToInclusive , 
43534353                    ( & Some ( ..) ,  & Some ( ..) ,  Closed )  => unreachable ! ( ) , 
43544354                    ( _,  & None ,  Closed )  => self . diagnostic ( ) 
43554355                        . span_fatal ( e. span ,  "inclusive range with no end" ) 
@@ -4367,7 +4367,7 @@ impl<'a> LoweringContext<'a> {
43674367                    . collect :: < P < [ hir:: Field ] > > ( ) ; 
43684368
43694369                let  is_unit = fields. is_empty ( ) ; 
4370-                 let  struct_path = [ " ops" ,  path] ; 
4370+                 let  struct_path = [ sym :: ops,  path] ; 
43714371                let  struct_path = self . std_path ( e. span ,  & struct_path,  None ,  is_unit) ; 
43724372                let  struct_path = hir:: QPath :: Resolved ( None ,  P ( struct_path) ) ; 
43734373
@@ -4656,7 +4656,7 @@ impl<'a> LoweringContext<'a> {
46564656                let  match_expr = { 
46574657                    let  iter = P ( self . expr_ident ( head_sp,  iter,  iter_pat_nid) ) ; 
46584658                    let  ref_mut_iter = self . expr_mut_addr_of ( head_sp,  iter) ; 
4659-                     let  next_path = & [ " iter" ,   " Iterator" ,   " next" ] ; 
4659+                     let  next_path = & [ sym :: iter,  sym :: Iterator ,  sym :: next] ; 
46604660                    let  next_expr = P ( self . expr_call_std_path ( 
46614661                        head_sp, 
46624662                        next_path, 
@@ -4723,7 +4723,8 @@ impl<'a> LoweringContext<'a> {
47234723
47244724                // `match ::std::iter::IntoIterator::into_iter(<head>) { ... }` 
47254725                let  into_iter_expr = { 
4726-                     let  into_iter_path = & [ "iter" ,  "IntoIterator" ,  "into_iter" ] ; 
4726+                     let  into_iter_path =
4727+                         & [ sym:: iter,  sym:: IntoIterator ,  sym:: into_iter] ; 
47274728                    P ( self . expr_call_std_path ( 
47284729                        head_sp, 
47294730                        into_iter_path, 
@@ -4780,7 +4781,7 @@ impl<'a> LoweringContext<'a> {
47804781                    // expand <expr> 
47814782                    let  sub_expr = self . lower_expr ( sub_expr) ; 
47824783
4783-                     let  path = & [ " ops" ,   " Try" ,   " into_result" ] ; 
4784+                     let  path = & [ sym :: ops,  sym :: Try ,  sym :: into_result] ; 
47844785                    P ( self . expr_call_std_path ( 
47854786                        unstable_span, 
47864787                        path, 
@@ -4822,12 +4823,12 @@ impl<'a> LoweringContext<'a> {
48224823                    let  err_ident = self . str_to_ident ( "err" ) ; 
48234824                    let  ( err_local,  err_local_nid)  = self . pat_ident ( try_span,  err_ident) ; 
48244825                    let  from_expr = { 
4825-                         let  from_path = & [ " convert" ,   " From" ,   " from" ] ; 
4826+                         let  from_path = & [ sym :: convert,  sym :: From ,  sym :: from] ; 
48264827                        let  err_expr = self . expr_ident ( try_span,  err_ident,  err_local_nid) ; 
48274828                        self . expr_call_std_path ( try_span,  from_path,  hir_vec ! [ err_expr] ) 
48284829                    } ; 
48294830                    let  from_err_expr =
4830-                         self . wrap_in_try_constructor ( " from_error" ,  from_expr,  unstable_span) ; 
4831+                         self . wrap_in_try_constructor ( sym :: from_error,  from_expr,  unstable_span) ; 
48314832                    let  thin_attrs = ThinVec :: from ( attrs) ; 
48324833                    let  catch_scope = self . catch_scopes . last ( ) . map ( |x| * x) ; 
48334834                    let  ret_expr = if  let  Some ( catch_node)  = catch_scope { 
@@ -5057,7 +5058,7 @@ impl<'a> LoweringContext<'a> {
50575058    fn  expr_call_std_path ( 
50585059        & mut  self , 
50595060        span :  Span , 
5060-         path_components :  & [ & str ] , 
5061+         path_components :  & [ Symbol ] , 
50615062        args :  hir:: HirVec < hir:: Expr > , 
50625063    )  -> hir:: Expr  { 
50635064        let  path = P ( self . expr_std_path ( span,  path_components,  None ,  ThinVec :: new ( ) ) ) ; 
@@ -5077,7 +5078,7 @@ impl<'a> LoweringContext<'a> {
50775078        & mut  self , 
50785079        ty_path_id :  hir:: HirId , 
50795080        span :  Span , 
5080-         ty_path_components :  & [ & str ] , 
5081+         ty_path_components :  & [ Symbol ] , 
50815082        assoc_fn_name :  & str , 
50825083        args :  hir:: HirVec < hir:: Expr > , 
50835084    )  -> hir:: ExprKind  { 
@@ -5119,7 +5120,7 @@ impl<'a> LoweringContext<'a> {
51195120    fn  expr_std_path ( 
51205121        & mut  self , 
51215122        span :  Span , 
5122-         components :  & [ & str ] , 
5123+         components :  & [ Symbol ] , 
51235124        params :  Option < P < hir:: GenericArgs > > , 
51245125        attrs :  ThinVec < Attribute > , 
51255126    )  -> hir:: Expr  { 
@@ -5250,25 +5251,25 @@ impl<'a> LoweringContext<'a> {
52505251    } 
52515252
52525253    fn  pat_ok ( & mut  self ,  span :  Span ,  pat :  P < hir:: Pat > )  -> P < hir:: Pat >  { 
5253-         self . pat_std_enum ( span,  & [ " result" ,   " Result" ,   "Ok" ] ,  hir_vec ! [ pat] ) 
5254+         self . pat_std_enum ( span,  & [ sym :: result,  sym :: Result ,  sym :: Ok ] ,  hir_vec ! [ pat] ) 
52545255    } 
52555256
52565257    fn  pat_err ( & mut  self ,  span :  Span ,  pat :  P < hir:: Pat > )  -> P < hir:: Pat >  { 
5257-         self . pat_std_enum ( span,  & [ " result" ,   " Result" ,   " Err" ] ,  hir_vec ! [ pat] ) 
5258+         self . pat_std_enum ( span,  & [ sym :: result,  sym :: Result ,  sym :: Err ] ,  hir_vec ! [ pat] ) 
52585259    } 
52595260
52605261    fn  pat_some ( & mut  self ,  span :  Span ,  pat :  P < hir:: Pat > )  -> P < hir:: Pat >  { 
5261-         self . pat_std_enum ( span,  & [ " option" ,   " Option" ,   " Some" ] ,  hir_vec ! [ pat] ) 
5262+         self . pat_std_enum ( span,  & [ sym :: option,  sym :: Option ,  sym :: Some ] ,  hir_vec ! [ pat] ) 
52625263    } 
52635264
52645265    fn  pat_none ( & mut  self ,  span :  Span )  -> P < hir:: Pat >  { 
5265-         self . pat_std_enum ( span,  & [ " option" ,   " Option" ,   " None" ] ,  hir_vec ! [ ] ) 
5266+         self . pat_std_enum ( span,  & [ sym :: option,  sym :: Option ,  sym :: None ] ,  hir_vec ! [ ] ) 
52665267    } 
52675268
52685269    fn  pat_std_enum ( 
52695270        & mut  self , 
52705271        span :  Span , 
5271-         components :  & [ & str ] , 
5272+         components :  & [ Symbol ] , 
52725273        subpats :  hir:: HirVec < P < hir:: Pat > > , 
52735274    )  -> P < hir:: Pat >  { 
52745275        let  path = self . std_path ( span,  components,  None ,  true ) ; 
@@ -5321,7 +5322,7 @@ impl<'a> LoweringContext<'a> {
53215322fn  std_path ( 
53225323        & mut  self , 
53235324        span :  Span , 
5324-         components :  & [ & str ] , 
5325+         components :  & [ Symbol ] , 
53255326        params :  Option < P < hir:: GenericArgs > > , 
53265327        is_value :  bool , 
53275328    )  -> hir:: Path  { 
@@ -5520,11 +5521,11 @@ impl<'a> LoweringContext<'a> {
55205521
55215522    fn  wrap_in_try_constructor ( 
55225523        & mut  self , 
5523-         method :  & ' static   str , 
5524+         method :  Symbol , 
55245525        e :  hir:: Expr , 
55255526        unstable_span :  Span , 
55265527    )  -> P < hir:: Expr >  { 
5527-         let  path = & [ " ops" ,   " Try" ,  method] ; 
5528+         let  path = & [ sym :: ops,  sym :: Try ,  method] ; 
55285529        let  from_err = P ( self . expr_std_path ( unstable_span,  path,  None , 
55295530                                            ThinVec :: new ( ) ) ) ; 
55305531        P ( self . expr_call ( e. span ,  from_err,  hir_vec ! [ e] ) ) 
@@ -5594,15 +5595,15 @@ impl<'a> LoweringContext<'a> {
55945595            let  new_unchecked_expr_kind = self . expr_call_std_assoc_fn ( 
55955596                pin_ty_id, 
55965597                span, 
5597-                 & [ " pin" ,   " Pin" ] , 
5598+                 & [ sym :: pin,  sym :: Pin ] , 
55985599                "new_unchecked" , 
55995600                hir_vec ! [ ref_mut_pinned] , 
56005601            ) ; 
56015602            let  new_unchecked = P ( self . expr ( span,  new_unchecked_expr_kind,  ThinVec :: new ( ) ) ) ; 
56025603            let  unsafe_expr = self . expr_unsafe ( new_unchecked) ; 
56035604            P ( self . expr_call_std_path ( 
56045605                gen_future_span, 
5605-                 & [ " future" ,   " poll_with_tls_context" ] , 
5606+                 & [ sym :: future,  sym :: poll_with_tls_context] , 
56065607                hir_vec ! [ unsafe_expr] , 
56075608            ) ) 
56085609        } ; 
@@ -5616,7 +5617,7 @@ impl<'a> LoweringContext<'a> {
56165617            let  x_expr = P ( self . expr_ident ( span,  x_ident,  x_pat_hid) ) ; 
56175618            let  ready_pat = self . pat_std_enum ( 
56185619                span, 
5619-                 & [ " task" ,   " Poll" ,   " Ready" ] , 
5620+                 & [ sym :: task,  sym :: Poll ,  sym :: Ready ] , 
56205621                hir_vec ! [ x_pat] , 
56215622            ) ; 
56225623            let  break_x = self . with_loop_scope ( loop_node_id,  |this| { 
@@ -5633,7 +5634,7 @@ impl<'a> LoweringContext<'a> {
56335634        let  pending_arm = { 
56345635            let  pending_pat = self . pat_std_enum ( 
56355636                span, 
5636-                 & [ " task" ,   " Poll" ,   " Pending" ] , 
5637+                 & [ sym :: task,  sym :: Poll ,  sym :: Pending ] , 
56375638                hir_vec ! [ ] , 
56385639            ) ; 
56395640            let  empty_block = P ( self . expr_block_empty ( span) ) ; 
0 commit comments