@@ -25,7 +25,7 @@ use rustc::session::config::{Sanitizer, self};
2525use rustc_target:: spec:: { PanicStrategy , TargetTriple } ;
2626use rustc:: session:: search_paths:: PathKind ;
2727use rustc:: middle;
28- use rustc:: middle:: cstore:: { validate_crate_name , ExternCrate , ExternCrateSource } ;
28+ use rustc:: middle:: cstore:: { ExternCrate , ExternCrateSource } ;
2929use rustc:: util:: common:: record_time;
3030use rustc:: util:: nodemap:: FxHashSet ;
3131use rustc:: hir:: map:: Definitions ;
@@ -1165,3 +1165,30 @@ impl<'a> middle::cstore::CrateLoader for CrateLoader<'a> {
11651165 cnum
11661166 }
11671167}
1168+
1169+ pub fn validate_crate_name ( sess : Option < & Session > , s : & str , sp : Option < Span > ) {
1170+ let mut err_count = 0 ;
1171+ {
1172+ let mut say = |s : & str | {
1173+ match ( sp, sess) {
1174+ ( _, None ) => bug ! ( "{}" , s) ,
1175+ ( Some ( sp) , Some ( sess) ) => sess. span_err ( sp, s) ,
1176+ ( None , Some ( sess) ) => sess. err ( s) ,
1177+ }
1178+ err_count += 1 ;
1179+ } ;
1180+ if s. is_empty ( ) {
1181+ say ( "crate name must not be empty" ) ;
1182+ }
1183+ for c in s. chars ( ) {
1184+ if c. is_alphanumeric ( ) { continue }
1185+ if c == '_' { continue }
1186+ say ( & format ! ( "invalid character `{}` in crate name: `{}`" , c, s) ) ;
1187+ }
1188+ }
1189+
1190+ if err_count > 0 {
1191+ sess. unwrap ( ) . abort_if_errors ( ) ;
1192+ }
1193+ }
1194+
0 commit comments