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

DeclKind

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