提交 14893ba9 编写于 作者: C csmoe 提交者: Oliver Schneider

DeclKind

上级 114314c9
...@@ -126,12 +126,12 @@ fn stmt(&mut self, stmt: &hir::Stmt, pred: CFGIndex) -> CFGIndex { ...@@ -126,12 +126,12 @@ fn stmt(&mut self, stmt: &hir::Stmt, pred: CFGIndex) -> CFGIndex {
fn decl(&mut self, decl: &hir::Decl, pred: CFGIndex) -> CFGIndex { fn decl(&mut self, decl: &hir::Decl, pred: CFGIndex) -> CFGIndex {
match decl.node { match decl.node {
hir::DeclLocal(ref local) => { hir::DeclKind::Local(ref local) => {
let init_exit = self.opt_expr(&local.init, pred); let init_exit = self.opt_expr(&local.init, pred);
self.pat(&local.pat, init_exit) self.pat(&local.pat, init_exit)
} }
hir::DeclItem(_) => pred, hir::DeclKind::Item(_) => pred,
} }
} }
......
...@@ -949,8 +949,8 @@ pub fn walk_stmt<'v, V: Visitor<'v>>(visitor: &mut V, statement: &'v Stmt) { ...@@ -949,8 +949,8 @@ pub fn walk_stmt<'v, V: Visitor<'v>>(visitor: &mut V, statement: &'v Stmt) {
pub fn walk_decl<'v, V: Visitor<'v>>(visitor: &mut V, declaration: &'v Decl) { pub fn walk_decl<'v, V: Visitor<'v>>(visitor: &mut V, declaration: &'v Decl) {
match declaration.node { match declaration.node {
DeclLocal(ref local) => visitor.visit_local(local), DeclKind::Local(ref local) => visitor.visit_local(local),
DeclItem(item) => visitor.visit_nested_item(item), DeclKind::Item(item) => visitor.visit_nested_item(item),
} }
} }
......
...@@ -4248,7 +4248,7 @@ fn lower_stmt(&mut self, s: &Stmt) -> SmallVector<hir::Stmt> { ...@@ -4248,7 +4248,7 @@ fn lower_stmt(&mut self, s: &Stmt) -> SmallVector<hir::Stmt> {
StmtKind::Local(ref l) => Spanned { StmtKind::Local(ref l) => Spanned {
node: hir::StmtKind::Decl( node: hir::StmtKind::Decl(
P(Spanned { P(Spanned {
node: hir::DeclLocal(self.lower_local(l)), node: hir::DeclKind::Local(self.lower_local(l)),
span: s.span, span: s.span,
}), }),
self.lower_node_id(s.id).node_id, self.lower_node_id(s.id).node_id,
...@@ -4263,7 +4263,7 @@ fn lower_stmt(&mut self, s: &Stmt) -> SmallVector<hir::Stmt> { ...@@ -4263,7 +4263,7 @@ fn lower_stmt(&mut self, s: &Stmt) -> SmallVector<hir::Stmt> {
.map(|item_id| Spanned { .map(|item_id| Spanned {
node: hir::StmtKind::Decl( node: hir::StmtKind::Decl(
P(Spanned { P(Spanned {
node: hir::DeclItem(item_id), node: hir::DeclKind::Item(item_id),
span: s.span, span: s.span,
}), }),
id.take() id.take()
...@@ -4493,7 +4493,7 @@ fn stmt_let_pat( ...@@ -4493,7 +4493,7 @@ fn stmt_let_pat(
attrs: ThinVec::new(), attrs: ThinVec::new(),
source, source,
}); });
let decl = respan(sp, hir::DeclLocal(local)); let decl = respan(sp, hir::DeclKind::Local(local));
respan(sp, hir::StmtKind::Decl(P(decl), self.next_id().node_id)) respan(sp, hir::StmtKind::Decl(P(decl), self.next_id().node_id))
} }
......
...@@ -12,8 +12,7 @@ ...@@ -12,8 +12,7 @@
pub use self::BlockCheckMode::*; pub use self::BlockCheckMode::*;
pub use self::CaptureClause::*; pub use self::CaptureClause::*;
pub use self::Decl_::*; pub use self::ExprKind::*;
pub use self::Expr_::*;
pub use self::FunctionRetTy::*; pub use self::FunctionRetTy::*;
pub use self::ForeignItem_::*; pub use self::ForeignItem_::*;
pub use self::Item_::*; pub use self::Item_::*;
...@@ -1158,27 +1157,27 @@ pub struct Local { ...@@ -1158,27 +1157,27 @@ pub struct Local {
pub source: LocalSource, pub source: LocalSource,
} }
pub type Decl = Spanned<Decl_>; pub type Decl = Spanned<DeclKind>;
#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] #[derive(Clone, RustcEncodable, RustcDecodable, Debug)]
pub enum Decl_ { pub enum DeclKind {
/// A local (let) binding: /// A local (let) binding:
DeclLocal(P<Local>), Local(P<Local>),
/// An item binding: /// An item binding:
DeclItem(ItemId), Item(ItemId),
} }
impl Decl_ { impl DeclKind {
pub fn attrs(&self) -> &[Attribute] { pub fn attrs(&self) -> &[Attribute] {
match *self { match *self {
DeclLocal(ref l) => &l.attrs, DeclKind::Local(ref l) => &l.attrs,
DeclItem(_) => &[] DeclKind::Item(_) => &[]
} }
} }
pub fn is_local(&self) -> bool { pub fn is_local(&self) -> bool {
match *self { match *self {
Decl_::DeclLocal(_) => true, DeclKind::Local(_) => true,
_ => false, _ => false,
} }
} }
......
...@@ -1575,7 +1575,7 @@ pub fn print_local_decl(&mut self, loc: &hir::Local) -> io::Result<()> { ...@@ -1575,7 +1575,7 @@ pub fn print_local_decl(&mut self, loc: &hir::Local) -> io::Result<()> {
pub fn print_decl(&mut self, decl: &hir::Decl) -> io::Result<()> { pub fn print_decl(&mut self, decl: &hir::Decl) -> io::Result<()> {
self.maybe_print_comment(decl.span.lo())?; self.maybe_print_comment(decl.span.lo())?;
match decl.node { match decl.node {
hir::DeclLocal(ref loc) => { hir::DeclKind::Local(ref loc) => {
self.space_if_not_bol()?; self.space_if_not_bol()?;
self.ibox(indent_unit)?; self.ibox(indent_unit)?;
self.word_nbsp("let")?; self.word_nbsp("let")?;
...@@ -1590,7 +1590,7 @@ pub fn print_decl(&mut self, decl: &hir::Decl) -> io::Result<()> { ...@@ -1590,7 +1590,7 @@ pub fn print_decl(&mut self, decl: &hir::Decl) -> io::Result<()> {
} }
self.end() self.end()
} }
hir::DeclItem(item) => { hir::DeclKind::Item(item) => {
self.ann.nested(self, Nested::Item(item)) self.ann.nested(self, Nested::Item(item))
} }
} }
...@@ -2400,8 +2400,8 @@ fn stmt_ends_with_semi(stmt: &hir::StmtKind) -> bool { ...@@ -2400,8 +2400,8 @@ fn stmt_ends_with_semi(stmt: &hir::StmtKind) -> bool {
match *stmt { match *stmt {
hir::StmtKind::Decl(ref d, _) => { hir::StmtKind::Decl(ref d, _) => {
match d.node { match d.node {
hir::DeclLocal(_) => true, hir::DeclKind::Local(_) => true,
hir::DeclItem(_) => false, hir::DeclKind::Item(_) => false,
} }
} }
hir::StmtKind::Expr(ref e, _) => { hir::StmtKind::Expr(ref e, _) => {
......
...@@ -479,10 +479,10 @@ fn hash_stable<W: StableHasherResult>(&self, ...@@ -479,10 +479,10 @@ fn hash_stable<W: StableHasherResult>(&self,
source source
}); });
impl_stable_hash_for_spanned!(hir::Decl_); impl_stable_hash_for_spanned!(hir::DeclKind);
impl_stable_hash_for!(enum hir::Decl_ { impl_stable_hash_for!(enum hir::DeclKind {
DeclLocal(local), Local(local),
DeclItem(item_id) Item(item_id)
}); });
impl_stable_hash_for!(struct hir::Arm { impl_stable_hash_for!(struct hir::Arm {
......
...@@ -588,11 +588,11 @@ fn walk_stmt(&mut self, stmt: &hir::Stmt) { ...@@ -588,11 +588,11 @@ fn walk_stmt(&mut self, stmt: &hir::Stmt) {
match stmt.node { match stmt.node {
hir::StmtKind::Decl(ref decl, _) => { hir::StmtKind::Decl(ref decl, _) => {
match decl.node { match decl.node {
hir::DeclLocal(ref local) => { hir::DeclKind::Local(ref local) => {
self.walk_local(&local); self.walk_local(&local);
} }
hir::DeclItem(_) => { hir::DeclKind::Item(_) => {
// we don't visit nested items in this visitor, // we don't visit nested items in this visitor,
// only the fn body we were given. // only the fn body we were given.
} }
......
...@@ -873,10 +873,10 @@ fn propagate_through_stmt(&mut self, stmt: &hir::Stmt, succ: LiveNode) ...@@ -873,10 +873,10 @@ fn propagate_through_stmt(&mut self, stmt: &hir::Stmt, succ: LiveNode)
fn propagate_through_decl(&mut self, decl: &hir::Decl, succ: LiveNode) fn propagate_through_decl(&mut self, decl: &hir::Decl, succ: LiveNode)
-> LiveNode { -> LiveNode {
match decl.node { match decl.node {
hir::DeclLocal(ref local) => { hir::DeclKind::Local(ref local) => {
self.propagate_through_local(&local, succ) self.propagate_through_local(&local, succ)
} }
hir::DeclItem(_) => succ, hir::DeclKind::Item(_) => succ,
} }
} }
......
...@@ -67,10 +67,10 @@ fn mirror_stmts<'a, 'gcx, 'tcx>(cx: &mut Cx<'a, 'gcx, 'tcx>, ...@@ -67,10 +67,10 @@ fn mirror_stmts<'a, 'gcx, 'tcx>(cx: &mut Cx<'a, 'gcx, 'tcx>,
} }
hir::StmtKind::Decl(ref decl, _) => { hir::StmtKind::Decl(ref decl, _) => {
match decl.node { match decl.node {
hir::DeclItem(..) => { hir::DeclKind::Item(..) => {
// ignore for purposes of the MIR // ignore for purposes of the MIR
} }
hir::DeclLocal(ref local) => { hir::DeclKind::Local(ref local) => {
let remainder_scope = region::Scope::Remainder(BlockRemainder { let remainder_scope = region::Scope::Remainder(BlockRemainder {
block: block_id, block: block_id,
first_statement_index: region::FirstStatementIndex::new(index), first_statement_index: region::FirstStatementIndex::new(index),
......
...@@ -263,7 +263,7 @@ fn check_stmt(&mut self, stmt: &'tcx hir::Stmt) -> Promotability { ...@@ -263,7 +263,7 @@ fn check_stmt(&mut self, stmt: &'tcx hir::Stmt) -> Promotability {
match stmt.node { match stmt.node {
hir::StmtKind::Decl(ref decl, _node_id) => { hir::StmtKind::Decl(ref decl, _node_id) => {
match &decl.node { match &decl.node {
hir::DeclLocal(local) => { hir::DeclKind::Local(local) => {
if self.remove_mut_rvalue_borrow(&local.pat) { if self.remove_mut_rvalue_borrow(&local.pat) {
if let Some(init) = &local.init { if let Some(init) = &local.init {
self.mut_rvalue_borrows.insert(init.id); self.mut_rvalue_borrows.insert(init.id);
...@@ -277,7 +277,7 @@ fn check_stmt(&mut self, stmt: &'tcx hir::Stmt) -> Promotability { ...@@ -277,7 +277,7 @@ fn check_stmt(&mut self, stmt: &'tcx hir::Stmt) -> Promotability {
NotPromotable NotPromotable
} }
// Item statements are allowed // Item statements are allowed
hir::DeclItem(_) => Promotable hir::DeclKind::Item(_) => Promotable
} }
} }
hir::StmtKind::Expr(ref box_expr, _node_id) | hir::StmtKind::Expr(ref box_expr, _node_id) |
......
...@@ -4379,8 +4379,8 @@ pub fn check_stmt(&self, stmt: &'gcx hir::Stmt) { ...@@ -4379,8 +4379,8 @@ pub fn check_stmt(&self, stmt: &'gcx hir::Stmt) {
match stmt.node { match stmt.node {
hir::StmtKind::Decl(ref decl, _) => { hir::StmtKind::Decl(ref decl, _) => {
match decl.node { match decl.node {
hir::DeclLocal(_) => {} hir::DeclKind::Local(_) => {}
hir::DeclItem(_) => { hir::DeclKind::Item(_) => {
return; return;
} }
} }
...@@ -4399,10 +4399,10 @@ pub fn check_stmt(&self, stmt: &'gcx hir::Stmt) { ...@@ -4399,10 +4399,10 @@ pub fn check_stmt(&self, stmt: &'gcx hir::Stmt) {
match stmt.node { match stmt.node {
hir::StmtKind::Decl(ref decl, _) => { hir::StmtKind::Decl(ref decl, _) => {
match decl.node { match decl.node {
hir::DeclLocal(ref l) => { hir::DeclKind::Local(ref l) => {
self.check_decl_local(&l); self.check_decl_local(&l);
} }
hir::DeclItem(_) => {/* ignore for now */} hir::DeclKind::Item(_) => {/* ignore for now */}
} }
} }
hir::StmtKind::Expr(ref expr, _) => { hir::StmtKind::Expr(ref expr, _) => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册