X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustc%2Fmiddle%2Fcstore.rs;h=973fd65beb3d88031936d271563ede90c60465e4;hb=cb3680c08028e4cfe241cf7e68a5d8d6e5dbd2d7;hp=380f543f969f06b4c2a77dde7c27233957032325;hpb=d228cd3964b7cbac7665ff38bde46da67586b87d;p=rust.git diff --git a/src/librustc/middle/cstore.rs b/src/librustc/middle/cstore.rs index 380f543f969..973fd65beb3 100644 --- a/src/librustc/middle/cstore.rs +++ b/src/librustc/middle/cstore.rs @@ -24,9 +24,9 @@ use back::svh::Svh; use front::map as hir_map; -use middle::def; +use middle::def::{self, Def}; use middle::lang_items; -use middle::ty::{self, Ty}; +use middle::ty::{self, Ty, VariantKind}; use middle::def_id::{DefId, DefIndex}; use mir::repr::Mir; use session::Session; @@ -84,7 +84,7 @@ pub enum NativeLibraryKind { // Something that a name can resolve to. #[derive(Copy, Clone, Debug)] pub enum DefLike { - DlDef(def::Def), + DlDef(Def), DlImpl(DefId), DlField } @@ -211,6 +211,8 @@ fn crate_struct_field_attrs(&self, cnum: ast::CrateNum) // resolve fn def_path(&self, def: DefId) -> hir_map::DefPath; + fn variant_kind(&self, def_id: DefId) -> Option; + fn struct_ctor_def_id(&self, struct_def_id: DefId) -> Option; fn tuple_struct_definition_if_ctor(&self, did: DefId) -> Option; fn struct_field_names(&self, def: DefId) -> Vec; fn item_children(&self, did: DefId) -> Vec; @@ -265,24 +267,28 @@ pub fn visit_ids(&self, operation: &mut O) { // FIXME: find a better place for this? pub fn validate_crate_name(sess: Option<&Session>, s: &str, sp: Option) { - let say = |s: &str| { - match (sp, sess) { - (_, None) => panic!("{}", s), - (Some(sp), Some(sess)) => sess.span_err(sp, s), - (None, Some(sess)) => sess.err(s), + let mut err_count = 0; + { + let mut say = |s: &str| { + match (sp, sess) { + (_, None) => panic!("{}", s), + (Some(sp), Some(sess)) => sess.span_err(sp, s), + (None, Some(sess)) => sess.err(s), + } + err_count += 1; + }; + if s.is_empty() { + say("crate name must not be empty"); + } + for c in s.chars() { + if c.is_alphanumeric() { continue } + if c == '_' { continue } + say(&format!("invalid character `{}` in crate name: `{}`", c, s)); } - }; - if s.is_empty() { - say("crate name must not be empty"); - } - for c in s.chars() { - if c.is_alphanumeric() { continue } - if c == '_' { continue } - say(&format!("invalid character `{}` in crate name: `{}`", c, s)); } - match sess { - Some(sess) => sess.abort_if_errors(), - None => {} + + if err_count > 0 { + sess.unwrap().abort_if_errors(); } } @@ -380,6 +386,9 @@ fn reachable_ids(&self, cnum: ast::CrateNum) -> Vec { unimplemented!() } // resolve fn def_path(&self, def: DefId) -> hir_map::DefPath { unimplemented!() } + fn variant_kind(&self, def_id: DefId) -> Option { unimplemented!() } + fn struct_ctor_def_id(&self, struct_def_id: DefId) -> Option + { unimplemented!() } fn tuple_struct_definition_if_ctor(&self, did: DefId) -> Option { unimplemented!() } fn struct_field_names(&self, def: DefId) -> Vec { unimplemented!() }