@@ -42,12 +42,6 @@ use log;
42
42
43
43
pub struct CrateLoader < ' a > {
44
44
pub sess : & ' a Session ,
45
- pub creader : CrateReader < ' a > ,
46
- cstore : & ' a CStore ,
47
- }
48
-
49
- pub struct CrateReader < ' a > {
50
- sess : & ' a Session ,
51
45
cstore : & ' a CStore ,
52
46
next_crate_num : CrateNum ,
53
47
foreign_item_map : FnvHashMap < String , Vec < ast:: NodeId > > ,
@@ -159,13 +153,13 @@ pub struct Macros {
159
153
pub dylib : Option < PathBuf > ,
160
154
}
161
155
162
- impl < ' a > CrateReader < ' a > {
156
+ impl < ' a > CrateLoader < ' a > {
163
157
pub fn new ( sess : & ' a Session ,
164
158
cstore : & ' a CStore ,
165
159
local_crate_name : & str ,
166
160
local_crate_config : ast:: CrateConfig )
167
- -> CrateReader < ' a > {
168
- CrateReader {
161
+ -> Self {
162
+ CrateLoader {
169
163
sess : sess,
170
164
cstore : cstore,
171
165
next_crate_num : cstore. next_crate_num ( ) ,
@@ -890,7 +884,7 @@ impl<'a> CrateReader<'a> {
890
884
}
891
885
892
886
impl ExtensionCrate {
893
- fn register ( self , creader : & mut CrateReader ) {
887
+ fn register ( self , loader : & mut CrateLoader ) {
894
888
if !self . should_link {
895
889
return
896
890
}
@@ -901,31 +895,17 @@ impl ExtensionCrate {
901
895
} ;
902
896
903
897
// Register crate now to avoid double-reading metadata
904
- creader. register_crate ( & None ,
905
- & self . ident ,
906
- & self . name ,
907
- self . span ,
908
- library,
909
- true ) ;
898
+ loader. register_crate ( & None , & self . ident , & self . name , self . span , library, true ) ;
910
899
}
911
900
}
912
901
913
902
impl < ' a > CrateLoader < ' a > {
914
- pub fn new ( sess : & ' a Session , cstore : & ' a CStore , krate : & ast:: Crate , crate_name : & str )
915
- -> Self {
916
- let loader = CrateLoader {
917
- sess : sess,
918
- cstore : cstore,
919
- creader : CrateReader :: new ( sess, cstore, crate_name, krate. config . clone ( ) ) ,
920
- } ;
921
-
903
+ pub fn preprocess ( & mut self , krate : & ast:: Crate ) {
922
904
for attr in krate. attrs . iter ( ) . filter ( |m| m. name ( ) == "link_args" ) {
923
905
if let Some ( ref linkarg) = attr. value_str ( ) {
924
- loader . cstore . add_used_link_args ( & linkarg) ;
906
+ self . cstore . add_used_link_args ( & linkarg) ;
925
907
}
926
908
}
927
-
928
- loader
929
909
}
930
910
931
911
fn process_foreign_mod ( & mut self , i : & ast:: Item , fm : & ast:: ForeignMod ) {
@@ -982,7 +962,7 @@ impl<'a> CrateLoader<'a> {
982
962
Some ( name) => name,
983
963
None => continue ,
984
964
} ;
985
- let list = self . creader . foreign_item_map . entry ( lib_name. to_string ( ) )
965
+ let list = self . foreign_item_map . entry ( lib_name. to_string ( ) )
986
966
. or_insert ( Vec :: new ( ) ) ;
987
967
list. extend ( fm. items . iter ( ) . map ( |it| it. id ) ) ;
988
968
}
@@ -991,8 +971,8 @@ impl<'a> CrateLoader<'a> {
991
971
992
972
impl < ' a > middle:: cstore:: CrateLoader for CrateLoader < ' a > {
993
973
fn postprocess ( & mut self , krate : & ast:: Crate ) {
994
- self . creader . inject_allocator_crate ( ) ;
995
- self . creader . inject_panic_runtime ( krate) ;
974
+ self . inject_allocator_crate ( ) ;
975
+ self . inject_panic_runtime ( krate) ;
996
976
997
977
if log_enabled ! ( log:: INFO ) {
998
978
dump_crates ( & self . cstore ) ;
@@ -1001,7 +981,7 @@ impl<'a> middle::cstore::CrateLoader for CrateLoader<'a> {
1001
981
for & ( ref name, kind) in & self . sess . opts . libs {
1002
982
register_native_lib ( self . sess , self . cstore , None , name. clone ( ) , kind) ;
1003
983
}
1004
- self . creader . register_statically_included_foreign_items ( ) ;
984
+ self . register_statically_included_foreign_items ( ) ;
1005
985
}
1006
986
1007
987
fn process_item ( & mut self , item : & ast:: Item , definitions : & hir_map:: Definitions ) {
@@ -1024,12 +1004,12 @@ impl<'a> middle::cstore::CrateLoader for CrateLoader<'a> {
1024
1004
}
1025
1005
}
1026
1006
1027
- if let Some ( info) = self . creader . extract_crate_info ( item) {
1007
+ if let Some ( info) = self . extract_crate_info ( item) {
1028
1008
if !info. should_link {
1029
1009
return ;
1030
1010
}
1031
1011
1032
- let ( cnum, ..) = self . creader . resolve_crate (
1012
+ let ( cnum, ..) = self . resolve_crate (
1033
1013
& None , & info. ident , & info. name , None , item. span , PathKind :: Crate , true ,
1034
1014
) ;
1035
1015
@@ -1038,7 +1018,7 @@ impl<'a> middle::cstore::CrateLoader for CrateLoader<'a> {
1038
1018
1039
1019
let extern_crate =
1040
1020
ExternCrate { def_id : def_id, span : item. span , direct : true , path_len : len } ;
1041
- self . creader . update_extern_crate ( cnum, extern_crate, & mut FnvHashSet ( ) ) ;
1021
+ self . update_extern_crate ( cnum, extern_crate, & mut FnvHashSet ( ) ) ;
1042
1022
1043
1023
self . cstore . add_extern_mod_stmt_cnum ( info. id , cnum) ;
1044
1024
}
0 commit comments