@@ -21,10 +21,11 @@ use fold::{self, Folder};
21
21
use parse:: { self , parser, DirectoryOwnership } ;
22
22
use parse:: token;
23
23
use ptr:: P ;
24
- use symbol:: Symbol ;
24
+ use symbol:: { keywords , Ident , Symbol } ;
25
25
use util:: small_vector:: SmallVector ;
26
26
27
27
use std:: collections:: HashMap ;
28
+ use std:: iter;
28
29
use std:: path:: PathBuf ;
29
30
use std:: rc:: Rc ;
30
31
use std:: default:: Default ;
@@ -664,7 +665,6 @@ pub struct ExpansionData {
664
665
pub struct ExtCtxt < ' a > {
665
666
pub parse_sess : & ' a parse:: ParseSess ,
666
667
pub ecfg : expand:: ExpansionConfig < ' a > ,
667
- pub crate_root : Option < & ' static str > ,
668
668
pub root_path : PathBuf ,
669
669
pub resolver : & ' a mut Resolver ,
670
670
pub resolve_err_count : usize ,
@@ -680,7 +680,6 @@ impl<'a> ExtCtxt<'a> {
680
680
ExtCtxt {
681
681
parse_sess,
682
682
ecfg,
683
- crate_root : None ,
684
683
root_path : PathBuf :: new ( ) ,
685
684
resolver,
686
685
resolve_err_count : 0 ,
@@ -822,12 +821,10 @@ impl<'a> ExtCtxt<'a> {
822
821
ast:: Ident :: from_str ( st)
823
822
}
824
823
pub fn std_path ( & self , components : & [ & str ] ) -> Vec < ast:: Ident > {
825
- let mut v = Vec :: new ( ) ;
826
- if let Some ( s) = self . crate_root {
827
- v. push ( self . ident_of ( s) ) ;
828
- }
829
- v. extend ( components. iter ( ) . map ( |s| self . ident_of ( s) ) ) ;
830
- v
824
+ let def_site = SyntaxContext :: empty ( ) . apply_mark ( self . current_expansion . mark ) ;
825
+ iter:: once ( Ident { ctxt : def_site, ..keywords:: DollarCrate . ident ( ) } )
826
+ . chain ( components. iter ( ) . map ( |s| self . ident_of ( s) ) )
827
+ . collect ( )
831
828
}
832
829
pub fn name_of ( & self , st : & str ) -> ast:: Name {
833
830
Symbol :: intern ( st)
0 commit comments