@@ -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.
7979 sess : & ' a Session ,
@@ -164,8 +164,8 @@ pub trait Resolver {
164164 fn 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> {
53215322 fn 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