Skip to content

Commit 5e70e5e

Browse files
Move validate_crate_name to rustc_metadata
1 parent f898179 commit 5e70e5e

File tree

6 files changed

+34
-30
lines changed

6 files changed

+34
-30
lines changed

src/Cargo.lock

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2115,6 +2115,7 @@ dependencies = [
21152115
"rustc 0.0.0",
21162116
"rustc_data_structures 0.0.0",
21172117
"rustc_incremental 0.0.0",
2118+
"rustc_metadata 0.0.0",
21182119
"rustc_mir 0.0.0",
21192120
"rustc_target 0.0.0",
21202121
"syntax 0.0.0",

src/librustc/middle/cstore.rs

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -260,33 +260,6 @@ pub trait CrateStore {
260260

261261
pub type CrateStoreDyn = dyn CrateStore + sync::Sync;
262262

263-
// FIXME: find a better place for this?
264-
pub fn validate_crate_name(sess: Option<&Session>, s: &str, sp: Option<Span>) {
265-
let mut err_count = 0;
266-
{
267-
let mut say = |s: &str| {
268-
match (sp, sess) {
269-
(_, None) => bug!("{}", s),
270-
(Some(sp), Some(sess)) => sess.span_err(sp, s),
271-
(None, Some(sess)) => sess.err(s),
272-
}
273-
err_count += 1;
274-
};
275-
if s.is_empty() {
276-
say("crate name must not be empty");
277-
}
278-
for c in s.chars() {
279-
if c.is_alphanumeric() { continue }
280-
if c == '_' { continue }
281-
say(&format!("invalid character `{}` in crate name: `{}`", c, s));
282-
}
283-
}
284-
285-
if err_count > 0 {
286-
sess.unwrap().abort_if_errors();
287-
}
288-
}
289-
290263
/// A dummy crate store that does not support any non-local crates,
291264
/// for test purposes.
292265
pub struct DummyCrateStore;

src/librustc_codegen_utils/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ rustc_target = { path = "../librustc_target" }
2020
rustc_data_structures = { path = "../librustc_data_structures" }
2121
rustc_mir = { path = "../librustc_mir" }
2222
rustc_incremental = { path = "../librustc_incremental" }
23+
rustc_metadata = { path = "../librustc_metadata" }

src/librustc_codegen_utils/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ extern crate rustc_incremental;
3737
extern crate syntax;
3838
extern crate syntax_pos;
3939
#[macro_use] extern crate rustc_data_structures;
40+
extern crate rustc_metadata;
4041

4142
use rustc::ty::TyCtxt;
4243

src/librustc_codegen_utils/link.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@
1010

1111
use rustc::session::config::{self, OutputFilenames, Input, OutputType};
1212
use rustc::session::Session;
13-
use rustc::middle::cstore::{self, LinkMeta};
13+
use rustc::middle::cstore::LinkMeta;
1414
use rustc::hir::svh::Svh;
1515
use std::path::{Path, PathBuf};
1616
use syntax::{ast, attr};
1717
use syntax_pos::Span;
18+
use rustc_metadata::creader;
1819

1920
pub fn out_filename(sess: &Session,
2021
crate_type: config::CrateType,
@@ -61,7 +62,7 @@ pub fn find_crate_name(sess: Option<&Session>,
6162
attrs: &[ast::Attribute],
6263
input: &Input) -> String {
6364
let validate = |s: String, span: Option<Span>| {
64-
cstore::validate_crate_name(sess, &s, span);
65+
creader::validate_crate_name(sess, &s, span);
6566
s
6667
};
6768

src/librustc_metadata/creader.rs

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use rustc::session::config::{Sanitizer, self};
2525
use rustc_target::spec::{PanicStrategy, TargetTriple};
2626
use rustc::session::search_paths::PathKind;
2727
use rustc::middle;
28-
use rustc::middle::cstore::{validate_crate_name, ExternCrate, ExternCrateSource};
28+
use rustc::middle::cstore::{ExternCrate, ExternCrateSource};
2929
use rustc::util::common::record_time;
3030
use rustc::util::nodemap::FxHashSet;
3131
use 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

Comments
 (0)