Remove some unnecessary indirection from HIR structures
This commit is contained in:
parent
ac0e845224
commit
ca88e9c536
26 changed files with 178 additions and 195 deletions
|
@ -140,7 +140,7 @@ impl<'ast> Visitor<'ast> for NodeCollector<'ast> {
|
||||||
for v in &enum_definition.variants {
|
for v in &enum_definition.variants {
|
||||||
let variant_def_index =
|
let variant_def_index =
|
||||||
self.insert_def(v.node.data.id(),
|
self.insert_def(v.node.data.id(),
|
||||||
NodeVariant(&**v),
|
NodeVariant(v),
|
||||||
DefPathData::EnumVariant(v.node.name));
|
DefPathData::EnumVariant(v.node.name));
|
||||||
|
|
||||||
for field in v.node.data.fields() {
|
for field in v.node.data.fields() {
|
||||||
|
|
|
@ -852,13 +852,13 @@ pub fn map_decoded_item<'ast, F: FoldOps>(map: &Map<'ast>,
|
||||||
II::Item(i) => II::Item(i.map(|i| fld.fold_item(i))),
|
II::Item(i) => II::Item(i.map(|i| fld.fold_item(i))),
|
||||||
II::TraitItem(d, ti) => {
|
II::TraitItem(d, ti) => {
|
||||||
II::TraitItem(fld.fold_ops.new_def_id(d),
|
II::TraitItem(fld.fold_ops.new_def_id(d),
|
||||||
fld.fold_trait_item(ti))
|
ti.map(|ti| fld.fold_trait_item(ti)))
|
||||||
}
|
}
|
||||||
II::ImplItem(d, ii) => {
|
II::ImplItem(d, ii) => {
|
||||||
II::ImplItem(fld.fold_ops.new_def_id(d),
|
II::ImplItem(fld.fold_ops.new_def_id(d),
|
||||||
fld.fold_impl_item(ii))
|
ii.map(|ii| fld.fold_impl_item(ii)))
|
||||||
}
|
}
|
||||||
II::Foreign(i) => II::Foreign(fld.fold_foreign_item(i))
|
II::Foreign(i) => II::Foreign(i.map(|i| fld.fold_foreign_item(i)))
|
||||||
};
|
};
|
||||||
|
|
||||||
let ii_parent = map.forest.inlined_items.alloc(InlinedParent {
|
let ii_parent = map.forest.inlined_items.alloc(InlinedParent {
|
||||||
|
|
|
@ -62,7 +62,7 @@ impl<'a, 'tcx> CFGBuilder<'a, 'tcx> {
|
||||||
fn block(&mut self, blk: &hir::Block, pred: CFGIndex) -> CFGIndex {
|
fn block(&mut self, blk: &hir::Block, pred: CFGIndex) -> CFGIndex {
|
||||||
let mut stmts_exit = pred;
|
let mut stmts_exit = pred;
|
||||||
for stmt in &blk.stmts {
|
for stmt in &blk.stmts {
|
||||||
stmts_exit = self.stmt(&**stmt, stmts_exit);
|
stmts_exit = self.stmt(stmt, stmts_exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
let expr_exit = self.opt_expr(&blk.expr, stmts_exit);
|
let expr_exit = self.opt_expr(&blk.expr, stmts_exit);
|
||||||
|
|
|
@ -61,7 +61,7 @@ fn lookup_variant_by_id<'a>(tcx: &'a ty::ctxt,
|
||||||
enum_def: DefId,
|
enum_def: DefId,
|
||||||
variant_def: DefId)
|
variant_def: DefId)
|
||||||
-> Option<&'a Expr> {
|
-> Option<&'a Expr> {
|
||||||
fn variant_expr<'a>(variants: &'a [P<hir::Variant>], id: ast::NodeId)
|
fn variant_expr<'a>(variants: &'a [hir::Variant], id: ast::NodeId)
|
||||||
-> Option<&'a Expr> {
|
-> Option<&'a Expr> {
|
||||||
for variant in variants {
|
for variant in variants {
|
||||||
if variant.node.data.id() == id {
|
if variant.node.data.id() == id {
|
||||||
|
@ -77,7 +77,7 @@ fn lookup_variant_by_id<'a>(tcx: &'a ty::ctxt,
|
||||||
None => None,
|
None => None,
|
||||||
Some(ast_map::NodeItem(it)) => match it.node {
|
Some(ast_map::NodeItem(it)) => match it.node {
|
||||||
hir::ItemEnum(hir::EnumDef { ref variants }, _) => {
|
hir::ItemEnum(hir::EnumDef { ref variants }, _) => {
|
||||||
variant_expr(&variants[..], variant_node_id)
|
variant_expr(variants, variant_node_id)
|
||||||
}
|
}
|
||||||
_ => None
|
_ => None
|
||||||
},
|
},
|
||||||
|
|
|
@ -637,7 +637,7 @@ impl<'d,'t,'a,'tcx> ExprUseVisitor<'d,'t,'a,'tcx> {
|
||||||
debug!("walk_block(blk.id={})", blk.id);
|
debug!("walk_block(blk.id={})", blk.id);
|
||||||
|
|
||||||
for stmt in &blk.stmts {
|
for stmt in &blk.stmts {
|
||||||
self.walk_stmt(&**stmt);
|
self.walk_stmt(stmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(ref tail_expr) = blk.expr {
|
if let Some(ref tail_expr) = blk.expr {
|
||||||
|
|
|
@ -1501,7 +1501,7 @@ impl<'a, 'tcx> Rebuilder<'a, 'tcx> {
|
||||||
self.rebuild_arg_ty_or_output(&**t, lifetime, anon_nums, region_names)
|
self.rebuild_arg_ty_or_output(&**t, lifetime, anon_nums, region_names)
|
||||||
});
|
});
|
||||||
let new_bindings = data.bindings.map(|b| {
|
let new_bindings = data.bindings.map(|b| {
|
||||||
P(hir::TypeBinding {
|
hir::TypeBinding {
|
||||||
id: b.id,
|
id: b.id,
|
||||||
name: b.name,
|
name: b.name,
|
||||||
ty: self.rebuild_arg_ty_or_output(&*b.ty,
|
ty: self.rebuild_arg_ty_or_output(&*b.ty,
|
||||||
|
@ -1509,7 +1509,7 @@ impl<'a, 'tcx> Rebuilder<'a, 'tcx> {
|
||||||
anon_nums,
|
anon_nums,
|
||||||
region_names),
|
region_names),
|
||||||
span: b.span
|
span: b.span
|
||||||
})
|
}
|
||||||
});
|
});
|
||||||
hir::AngleBracketedParameters(hir::AngleBracketedParameterData {
|
hir::AngleBracketedParameters(hir::AngleBracketedParameterData {
|
||||||
lifetimes: new_lts,
|
lifetimes: new_lts,
|
||||||
|
|
|
@ -866,7 +866,7 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
|
||||||
-> LiveNode {
|
-> LiveNode {
|
||||||
let succ = self.propagate_through_opt_expr(blk.expr.as_ref().map(|e| &**e), succ);
|
let succ = self.propagate_through_opt_expr(blk.expr.as_ref().map(|e| &**e), succ);
|
||||||
blk.stmts.iter().rev().fold(succ, |succ, stmt| {
|
blk.stmts.iter().rev().fold(succ, |succ, stmt| {
|
||||||
self.propagate_through_stmt(&**stmt, succ)
|
self.propagate_through_stmt(stmt, succ)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -720,7 +720,7 @@ fn resolve_block(visitor: &mut RegionResolutionVisitor, blk: &hir::Block) {
|
||||||
parent: stmt_extent,
|
parent: stmt_extent,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
visitor.visit_stmt(&**statement)
|
visitor.visit_stmt(statement)
|
||||||
}
|
}
|
||||||
walk_list!(visitor, visit_expr, &blk.expr);
|
walk_list!(visitor, visit_expr, &blk.expr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ pub trait Folder : Sized {
|
||||||
noop_fold_view_path(view_path, self)
|
noop_fold_view_path(view_path, self)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn fold_foreign_item(&mut self, ni: P<ForeignItem>) -> P<ForeignItem> {
|
fn fold_foreign_item(&mut self, ni: ForeignItem) -> ForeignItem {
|
||||||
noop_fold_foreign_item(ni, self)
|
noop_fold_foreign_item(ni, self)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,11 +67,11 @@ pub trait Folder : Sized {
|
||||||
noop_fold_item_underscore(i, self)
|
noop_fold_item_underscore(i, self)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn fold_trait_item(&mut self, i: P<TraitItem>) -> P<TraitItem> {
|
fn fold_trait_item(&mut self, i: TraitItem) -> TraitItem {
|
||||||
noop_fold_trait_item(i, self)
|
noop_fold_trait_item(i, self)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn fold_impl_item(&mut self, i: P<ImplItem>) -> P<ImplItem> {
|
fn fold_impl_item(&mut self, i: ImplItem) -> ImplItem {
|
||||||
noop_fold_impl_item(i, self)
|
noop_fold_impl_item(i, self)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ pub trait Folder : Sized {
|
||||||
noop_fold_block(b, self)
|
noop_fold_block(b, self)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn fold_stmt(&mut self, s: P<Stmt>) -> P<Stmt> {
|
fn fold_stmt(&mut self, s: Stmt) -> Stmt {
|
||||||
noop_fold_stmt(s, self)
|
noop_fold_stmt(s, self)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ pub trait Folder : Sized {
|
||||||
noop_fold_ty(t, self)
|
noop_fold_ty(t, self)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn fold_ty_binding(&mut self, t: P<TypeBinding>) -> P<TypeBinding> {
|
fn fold_ty_binding(&mut self, t: TypeBinding) -> TypeBinding {
|
||||||
noop_fold_ty_binding(t, self)
|
noop_fold_ty_binding(t, self)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ pub trait Folder : Sized {
|
||||||
noop_fold_foreign_mod(nm, self)
|
noop_fold_foreign_mod(nm, self)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn fold_variant(&mut self, v: P<Variant>) -> P<Variant> {
|
fn fold_variant(&mut self, v: Variant) -> Variant {
|
||||||
noop_fold_variant(v, self)
|
noop_fold_variant(v, self)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -333,15 +333,13 @@ pub fn noop_fold_decl<T: Folder>(d: P<Decl>, fld: &mut T) -> P<Decl> {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn noop_fold_ty_binding<T: Folder>(b: P<TypeBinding>, fld: &mut T) -> P<TypeBinding> {
|
pub fn noop_fold_ty_binding<T: Folder>(b: TypeBinding, fld: &mut T) -> TypeBinding {
|
||||||
b.map(|TypeBinding { id, name, ty, span }| {
|
TypeBinding {
|
||||||
TypeBinding {
|
id: fld.new_id(b.id),
|
||||||
id: fld.new_id(id),
|
name: b.name,
|
||||||
name: name,
|
ty: fld.fold_ty(b.ty),
|
||||||
ty: fld.fold_ty(ty),
|
span: fld.new_span(b.span),
|
||||||
span: fld.new_span(span),
|
}
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn noop_fold_ty<T: Folder>(t: P<Ty>, fld: &mut T) -> P<Ty> {
|
pub fn noop_fold_ty<T: Folder>(t: P<Ty>, fld: &mut T) -> P<Ty> {
|
||||||
|
@ -402,18 +400,16 @@ pub fn noop_fold_foreign_mod<T: Folder>(ForeignMod { abi, items }: ForeignMod,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn noop_fold_variant<T: Folder>(v: P<Variant>, fld: &mut T) -> P<Variant> {
|
pub fn noop_fold_variant<T: Folder>(v: Variant, fld: &mut T) -> Variant {
|
||||||
v.map(|Spanned { node: Variant_ { name, attrs, data, disr_expr }, span }| {
|
Spanned {
|
||||||
Spanned {
|
node: Variant_ {
|
||||||
node: Variant_ {
|
name: v.node.name,
|
||||||
name: name,
|
attrs: fold_attrs(v.node.attrs, fld),
|
||||||
attrs: fold_attrs(attrs, fld),
|
data: fld.fold_variant_data(v.node.data),
|
||||||
data: fld.fold_variant_data(data),
|
disr_expr: v.node.disr_expr.map(|e| fld.fold_expr(e)),
|
||||||
disr_expr: disr_expr.map(|e| fld.fold_expr(e)),
|
},
|
||||||
},
|
span: fld.new_span(v.span),
|
||||||
span: fld.new_span(span),
|
}
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn noop_fold_name<T: Folder>(n: Name, _: &mut T) -> Name {
|
pub fn noop_fold_name<T: Folder>(n: Name, _: &mut T) -> Name {
|
||||||
|
@ -814,51 +810,47 @@ pub fn noop_fold_item_underscore<T: Folder>(i: Item_, folder: &mut T) -> Item_ {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn noop_fold_trait_item<T: Folder>(i: P<TraitItem>,
|
pub fn noop_fold_trait_item<T: Folder>(i: TraitItem,
|
||||||
folder: &mut T)
|
folder: &mut T)
|
||||||
-> P<TraitItem> {
|
-> TraitItem {
|
||||||
i.map(|TraitItem { id, name, attrs, node, span }| {
|
TraitItem {
|
||||||
TraitItem {
|
id: folder.new_id(i.id),
|
||||||
id: folder.new_id(id),
|
name: folder.fold_name(i.name),
|
||||||
name: folder.fold_name(name),
|
attrs: fold_attrs(i.attrs, folder),
|
||||||
attrs: fold_attrs(attrs, folder),
|
node: match i.node {
|
||||||
node: match node {
|
ConstTraitItem(ty, default) => {
|
||||||
ConstTraitItem(ty, default) => {
|
ConstTraitItem(folder.fold_ty(ty), default.map(|x| folder.fold_expr(x)))
|
||||||
ConstTraitItem(folder.fold_ty(ty), default.map(|x| folder.fold_expr(x)))
|
}
|
||||||
}
|
MethodTraitItem(sig, body) => {
|
||||||
MethodTraitItem(sig, body) => {
|
MethodTraitItem(noop_fold_method_sig(sig, folder),
|
||||||
MethodTraitItem(noop_fold_method_sig(sig, folder),
|
body.map(|x| folder.fold_block(x)))
|
||||||
body.map(|x| folder.fold_block(x)))
|
}
|
||||||
}
|
TypeTraitItem(bounds, default) => {
|
||||||
TypeTraitItem(bounds, default) => {
|
TypeTraitItem(folder.fold_bounds(bounds),
|
||||||
TypeTraitItem(folder.fold_bounds(bounds),
|
default.map(|x| folder.fold_ty(x)))
|
||||||
default.map(|x| folder.fold_ty(x)))
|
}
|
||||||
}
|
},
|
||||||
},
|
span: folder.new_span(i.span),
|
||||||
span: folder.new_span(span),
|
}
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn noop_fold_impl_item<T: Folder>(i: P<ImplItem>, folder: &mut T) -> P<ImplItem> {
|
pub fn noop_fold_impl_item<T: Folder>(i: ImplItem, folder: &mut T) -> ImplItem {
|
||||||
i.map(|ImplItem { id, name, attrs, node, vis, span }| {
|
ImplItem {
|
||||||
ImplItem {
|
id: folder.new_id(i.id),
|
||||||
id: folder.new_id(id),
|
name: folder.fold_name(i.name),
|
||||||
name: folder.fold_name(name),
|
attrs: fold_attrs(i.attrs, folder),
|
||||||
attrs: fold_attrs(attrs, folder),
|
vis: i.vis,
|
||||||
vis: vis,
|
node: match i.node {
|
||||||
node: match node {
|
ImplItemKind::Const(ty, expr) => {
|
||||||
ImplItemKind::Const(ty, expr) => {
|
ImplItemKind::Const(folder.fold_ty(ty), folder.fold_expr(expr))
|
||||||
ImplItemKind::Const(folder.fold_ty(ty), folder.fold_expr(expr))
|
}
|
||||||
}
|
ImplItemKind::Method(sig, body) => {
|
||||||
ImplItemKind::Method(sig, body) => {
|
ImplItemKind::Method(noop_fold_method_sig(sig, folder), folder.fold_block(body))
|
||||||
ImplItemKind::Method(noop_fold_method_sig(sig, folder), folder.fold_block(body))
|
}
|
||||||
}
|
ImplItemKind::Type(ty) => ImplItemKind::Type(folder.fold_ty(ty)),
|
||||||
ImplItemKind::Type(ty) => ImplItemKind::Type(folder.fold_ty(ty)),
|
},
|
||||||
},
|
span: folder.new_span(i.span),
|
||||||
span: folder.new_span(span),
|
}
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn noop_fold_mod<T: Folder>(Mod { inner, item_ids }: Mod, folder: &mut T) -> Mod {
|
pub fn noop_fold_mod<T: Folder>(Mod { inner, item_ids }: Mod, folder: &mut T) -> Mod {
|
||||||
|
@ -935,24 +927,22 @@ pub fn noop_fold_item<T: Folder>(item: Item, folder: &mut T) -> Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn noop_fold_foreign_item<T: Folder>(ni: P<ForeignItem>, folder: &mut T) -> P<ForeignItem> {
|
pub fn noop_fold_foreign_item<T: Folder>(ni: ForeignItem, folder: &mut T) -> ForeignItem {
|
||||||
ni.map(|ForeignItem { id, name, attrs, node, span, vis }| {
|
ForeignItem {
|
||||||
ForeignItem {
|
id: folder.new_id(ni.id),
|
||||||
id: folder.new_id(id),
|
name: folder.fold_name(ni.name),
|
||||||
name: folder.fold_name(name),
|
attrs: fold_attrs(ni.attrs, folder),
|
||||||
attrs: fold_attrs(attrs, folder),
|
node: match ni.node {
|
||||||
node: match node {
|
ForeignItemFn(fdec, generics) => {
|
||||||
ForeignItemFn(fdec, generics) => {
|
ForeignItemFn(folder.fold_fn_decl(fdec), folder.fold_generics(generics))
|
||||||
ForeignItemFn(folder.fold_fn_decl(fdec), folder.fold_generics(generics))
|
}
|
||||||
}
|
ForeignItemStatic(t, m) => {
|
||||||
ForeignItemStatic(t, m) => {
|
ForeignItemStatic(folder.fold_ty(t), m)
|
||||||
ForeignItemStatic(folder.fold_ty(t), m)
|
}
|
||||||
}
|
},
|
||||||
},
|
vis: ni.vis,
|
||||||
vis: vis,
|
span: folder.new_span(ni.span),
|
||||||
span: folder.new_span(span),
|
}
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn noop_fold_method_sig<T: Folder>(sig: MethodSig, folder: &mut T) -> MethodSig {
|
pub fn noop_fold_method_sig<T: Folder>(sig: MethodSig, folder: &mut T) -> MethodSig {
|
||||||
|
@ -1147,32 +1137,29 @@ pub fn noop_fold_expr<T: Folder>(Expr { id, node, span, attrs }: Expr, folder: &
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn noop_fold_stmt<T: Folder>(stmt: P<Stmt>, folder: &mut T)
|
pub fn noop_fold_stmt<T: Folder>(stmt: Stmt, folder: &mut T) -> Stmt {
|
||||||
-> P<Stmt> {
|
let span = folder.new_span(stmt.span);
|
||||||
stmt.map(|Spanned { node, span }| {
|
match stmt.node {
|
||||||
let span = folder.new_span(span);
|
StmtDecl(d, id) => {
|
||||||
match node {
|
let id = folder.new_id(id);
|
||||||
StmtDecl(d, id) => {
|
Spanned {
|
||||||
let id = folder.new_id(id);
|
node: StmtDecl(folder.fold_decl(d), id),
|
||||||
Spanned {
|
span: span
|
||||||
node: StmtDecl(folder.fold_decl(d), id),
|
|
||||||
span: span
|
|
||||||
}
|
|
||||||
}
|
|
||||||
StmtExpr(e, id) => {
|
|
||||||
let id = folder.new_id(id);
|
|
||||||
Spanned {
|
|
||||||
node: StmtExpr(folder.fold_expr(e), id),
|
|
||||||
span: span,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
StmtSemi(e, id) => {
|
|
||||||
let id = folder.new_id(id);
|
|
||||||
Spanned {
|
|
||||||
node: StmtSemi(folder.fold_expr(e), id),
|
|
||||||
span: span,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
StmtExpr(e, id) => {
|
||||||
|
let id = folder.new_id(id);
|
||||||
|
Spanned {
|
||||||
|
node: StmtExpr(folder.fold_expr(e), id),
|
||||||
|
span: span,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
StmtSemi(e, id) => {
|
||||||
|
let id = folder.new_id(id);
|
||||||
|
Spanned {
|
||||||
|
node: StmtSemi(folder.fold_expr(e), id),
|
||||||
|
span: span,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -183,7 +183,7 @@ impl PathParameters {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn bindings(&self) -> Vec<&P<TypeBinding>> {
|
pub fn bindings(&self) -> Vec<&TypeBinding> {
|
||||||
match *self {
|
match *self {
|
||||||
AngleBracketedParameters(ref data) => {
|
AngleBracketedParameters(ref data) => {
|
||||||
data.bindings.iter().collect()
|
data.bindings.iter().collect()
|
||||||
|
@ -204,7 +204,7 @@ pub struct AngleBracketedParameterData {
|
||||||
pub types: OwnedSlice<P<Ty>>,
|
pub types: OwnedSlice<P<Ty>>,
|
||||||
/// Bindings (equality constraints) on associated types, if present.
|
/// Bindings (equality constraints) on associated types, if present.
|
||||||
/// E.g., `Foo<A=Bar>`.
|
/// E.g., `Foo<A=Bar>`.
|
||||||
pub bindings: OwnedSlice<P<TypeBinding>>,
|
pub bindings: OwnedSlice<TypeBinding>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AngleBracketedParameterData {
|
impl AngleBracketedParameterData {
|
||||||
|
@ -379,7 +379,7 @@ pub struct MacroDef {
|
||||||
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
||||||
pub struct Block {
|
pub struct Block {
|
||||||
/// Statements in a block
|
/// Statements in a block
|
||||||
pub stmts: Vec<P<Stmt>>,
|
pub stmts: Vec<Stmt>,
|
||||||
/// An expression at the end of the block
|
/// An expression at the end of the block
|
||||||
/// without a semicolon, if any
|
/// without a semicolon, if any
|
||||||
pub expr: Option<P<Expr>>,
|
pub expr: Option<P<Expr>>,
|
||||||
|
@ -1031,12 +1031,12 @@ pub struct Mod {
|
||||||
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
||||||
pub struct ForeignMod {
|
pub struct ForeignMod {
|
||||||
pub abi: Abi,
|
pub abi: Abi,
|
||||||
pub items: Vec<P<ForeignItem>>,
|
pub items: Vec<ForeignItem>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
||||||
pub struct EnumDef {
|
pub struct EnumDef {
|
||||||
pub variants: Vec<P<Variant>>,
|
pub variants: Vec<Variant>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
||||||
|
@ -1287,7 +1287,7 @@ pub enum Item_ {
|
||||||
/// A struct definition, e.g. `struct Foo<A> {x: A}`
|
/// A struct definition, e.g. `struct Foo<A> {x: A}`
|
||||||
ItemStruct(VariantData, Generics),
|
ItemStruct(VariantData, Generics),
|
||||||
/// Represents a Trait Declaration
|
/// Represents a Trait Declaration
|
||||||
ItemTrait(Unsafety, Generics, TyParamBounds, Vec<P<TraitItem>>),
|
ItemTrait(Unsafety, Generics, TyParamBounds, Vec<TraitItem>),
|
||||||
|
|
||||||
// Default trait implementations
|
// Default trait implementations
|
||||||
///
|
///
|
||||||
|
@ -1299,7 +1299,7 @@ pub enum Item_ {
|
||||||
Generics,
|
Generics,
|
||||||
Option<TraitRef>, // (optional) trait this impl implements
|
Option<TraitRef>, // (optional) trait this impl implements
|
||||||
P<Ty>, // self
|
P<Ty>, // self
|
||||||
Vec<P<ImplItem>>),
|
Vec<ImplItem>),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Item_ {
|
impl Item_ {
|
||||||
|
|
|
@ -199,13 +199,13 @@ pub fn lower_decl(lctx: &LoweringContext, d: &Decl) -> P<hir::Decl> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn lower_ty_binding(lctx: &LoweringContext, b: &TypeBinding) -> P<hir::TypeBinding> {
|
pub fn lower_ty_binding(lctx: &LoweringContext, b: &TypeBinding) -> hir::TypeBinding {
|
||||||
P(hir::TypeBinding {
|
hir::TypeBinding {
|
||||||
id: b.id,
|
id: b.id,
|
||||||
name: b.ident.name,
|
name: b.ident.name,
|
||||||
ty: lower_ty(lctx, &b.ty),
|
ty: lower_ty(lctx, &b.ty),
|
||||||
span: b.span,
|
span: b.span,
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn lower_ty(lctx: &LoweringContext, t: &Ty) -> P<hir::Ty> {
|
pub fn lower_ty(lctx: &LoweringContext, t: &Ty) -> P<hir::Ty> {
|
||||||
|
@ -264,8 +264,8 @@ pub fn lower_foreign_mod(lctx: &LoweringContext, fm: &ForeignMod) -> hir::Foreig
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn lower_variant(lctx: &LoweringContext, v: &Variant) -> P<hir::Variant> {
|
pub fn lower_variant(lctx: &LoweringContext, v: &Variant) -> hir::Variant {
|
||||||
P(Spanned {
|
Spanned {
|
||||||
node: hir::Variant_ {
|
node: hir::Variant_ {
|
||||||
name: v.node.name.name,
|
name: v.node.name.name,
|
||||||
attrs: v.node.attrs.clone(),
|
attrs: v.node.attrs.clone(),
|
||||||
|
@ -273,7 +273,7 @@ pub fn lower_variant(lctx: &LoweringContext, v: &Variant) -> P<hir::Variant> {
|
||||||
disr_expr: v.node.disr_expr.as_ref().map(|e| lower_expr(lctx, e)),
|
disr_expr: v.node.disr_expr.as_ref().map(|e| lower_expr(lctx, e)),
|
||||||
},
|
},
|
||||||
span: v.span,
|
span: v.span,
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn lower_path(lctx: &LoweringContext, p: &Path) -> hir::Path {
|
pub fn lower_path(lctx: &LoweringContext, p: &Path) -> hir::Path {
|
||||||
|
@ -650,8 +650,8 @@ pub fn lower_item_underscore(lctx: &LoweringContext, i: &Item_) -> hir::Item_ {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn lower_trait_item(lctx: &LoweringContext, i: &TraitItem) -> P<hir::TraitItem> {
|
pub fn lower_trait_item(lctx: &LoweringContext, i: &TraitItem) -> hir::TraitItem {
|
||||||
P(hir::TraitItem {
|
hir::TraitItem {
|
||||||
id: i.id,
|
id: i.id,
|
||||||
name: i.ident.name,
|
name: i.ident.name,
|
||||||
attrs: i.attrs.clone(),
|
attrs: i.attrs.clone(),
|
||||||
|
@ -670,11 +670,11 @@ pub fn lower_trait_item(lctx: &LoweringContext, i: &TraitItem) -> P<hir::TraitIt
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
span: i.span,
|
span: i.span,
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn lower_impl_item(lctx: &LoweringContext, i: &ImplItem) -> P<hir::ImplItem> {
|
pub fn lower_impl_item(lctx: &LoweringContext, i: &ImplItem) -> hir::ImplItem {
|
||||||
P(hir::ImplItem {
|
hir::ImplItem {
|
||||||
id: i.id,
|
id: i.id,
|
||||||
name: i.ident.name,
|
name: i.ident.name,
|
||||||
attrs: i.attrs.clone(),
|
attrs: i.attrs.clone(),
|
||||||
|
@ -690,7 +690,7 @@ pub fn lower_impl_item(lctx: &LoweringContext, i: &ImplItem) -> P<hir::ImplItem>
|
||||||
ImplItemKind::Macro(..) => panic!("Shouldn't exist any more"),
|
ImplItemKind::Macro(..) => panic!("Shouldn't exist any more"),
|
||||||
},
|
},
|
||||||
span: i.span,
|
span: i.span,
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn lower_mod(lctx: &LoweringContext, m: &Mod) -> hir::Mod {
|
pub fn lower_mod(lctx: &LoweringContext, m: &Mod) -> hir::Mod {
|
||||||
|
@ -760,8 +760,8 @@ pub fn lower_item(lctx: &LoweringContext, i: &Item) -> hir::Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn lower_foreign_item(lctx: &LoweringContext, i: &ForeignItem) -> P<hir::ForeignItem> {
|
pub fn lower_foreign_item(lctx: &LoweringContext, i: &ForeignItem) -> hir::ForeignItem {
|
||||||
P(hir::ForeignItem {
|
hir::ForeignItem {
|
||||||
id: i.id,
|
id: i.id,
|
||||||
name: i.ident.name,
|
name: i.ident.name,
|
||||||
attrs: i.attrs.clone(),
|
attrs: i.attrs.clone(),
|
||||||
|
@ -775,7 +775,7 @@ pub fn lower_foreign_item(lctx: &LoweringContext, i: &ForeignItem) -> P<hir::For
|
||||||
},
|
},
|
||||||
vis: lower_visibility(lctx, i.vis),
|
vis: lower_visibility(lctx, i.vis),
|
||||||
span: i.span,
|
span: i.span,
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn lower_method_sig(lctx: &LoweringContext, sig: &MethodSig) -> hir::MethodSig {
|
pub fn lower_method_sig(lctx: &LoweringContext, sig: &MethodSig) -> hir::MethodSig {
|
||||||
|
@ -1054,7 +1054,7 @@ pub fn lower_expr(lctx: &LoweringContext, e: &Expr) -> P<hir::Expr> {
|
||||||
let place = expr_ident(lctx, e.span, place_ident, None);
|
let place = expr_ident(lctx, e.span, place_ident, None);
|
||||||
let call = make_call(lctx, &inplace_finalize, vec![place]);
|
let call = make_call(lctx, &inplace_finalize, vec![place]);
|
||||||
signal_block_expr(lctx,
|
signal_block_expr(lctx,
|
||||||
vec![P(call_move_val_init)],
|
vec![call_move_val_init],
|
||||||
call,
|
call,
|
||||||
e.span,
|
e.span,
|
||||||
hir::PushUnsafeBlock(hir::CompilerGenerated), None)
|
hir::PushUnsafeBlock(hir::CompilerGenerated), None)
|
||||||
|
@ -1484,25 +1484,25 @@ pub fn lower_expr(lctx: &LoweringContext, e: &Expr) -> P<hir::Expr> {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn lower_stmt(lctx: &LoweringContext, s: &Stmt) -> P<hir::Stmt> {
|
pub fn lower_stmt(lctx: &LoweringContext, s: &Stmt) -> hir::Stmt {
|
||||||
match s.node {
|
match s.node {
|
||||||
StmtDecl(ref d, id) => {
|
StmtDecl(ref d, id) => {
|
||||||
P(Spanned {
|
Spanned {
|
||||||
node: hir::StmtDecl(lower_decl(lctx, d), id),
|
node: hir::StmtDecl(lower_decl(lctx, d), id),
|
||||||
span: s.span,
|
span: s.span,
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
StmtExpr(ref e, id) => {
|
StmtExpr(ref e, id) => {
|
||||||
P(Spanned {
|
Spanned {
|
||||||
node: hir::StmtExpr(lower_expr(lctx, e), id),
|
node: hir::StmtExpr(lower_expr(lctx, e), id),
|
||||||
span: s.span,
|
span: s.span,
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
StmtSemi(ref e, id) => {
|
StmtSemi(ref e, id) => {
|
||||||
P(Spanned {
|
Spanned {
|
||||||
node: hir::StmtSemi(lower_expr(lctx, e), id),
|
node: hir::StmtSemi(lower_expr(lctx, e), id),
|
||||||
span: s.span,
|
span: s.span,
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
StmtMac(..) => panic!("Shouldn't exist here"),
|
StmtMac(..) => panic!("Shouldn't exist here"),
|
||||||
}
|
}
|
||||||
|
@ -1644,7 +1644,7 @@ fn stmt_let(lctx: &LoweringContext,
|
||||||
ident: Ident,
|
ident: Ident,
|
||||||
ex: P<hir::Expr>,
|
ex: P<hir::Expr>,
|
||||||
attrs: ThinAttributes)
|
attrs: ThinAttributes)
|
||||||
-> P<hir::Stmt> {
|
-> hir::Stmt {
|
||||||
let pat = if mutbl {
|
let pat = if mutbl {
|
||||||
pat_ident_binding_mode(lctx, sp, ident, hir::BindByValue(hir::MutMutable))
|
pat_ident_binding_mode(lctx, sp, ident, hir::BindByValue(hir::MutMutable))
|
||||||
} else {
|
} else {
|
||||||
|
@ -1659,7 +1659,7 @@ fn stmt_let(lctx: &LoweringContext,
|
||||||
attrs: attrs,
|
attrs: attrs,
|
||||||
});
|
});
|
||||||
let decl = respan(sp, hir::DeclLocal(local));
|
let decl = respan(sp, hir::DeclLocal(local));
|
||||||
P(respan(sp, hir::StmtDecl(P(decl), lctx.next_id())))
|
respan(sp, hir::StmtDecl(P(decl), lctx.next_id()))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn block_expr(lctx: &LoweringContext, expr: P<hir::Expr>) -> P<hir::Block> {
|
fn block_expr(lctx: &LoweringContext, expr: P<hir::Expr>) -> P<hir::Block> {
|
||||||
|
@ -1668,7 +1668,7 @@ fn block_expr(lctx: &LoweringContext, expr: P<hir::Expr>) -> P<hir::Block> {
|
||||||
|
|
||||||
fn block_all(lctx: &LoweringContext,
|
fn block_all(lctx: &LoweringContext,
|
||||||
span: Span,
|
span: Span,
|
||||||
stmts: Vec<P<hir::Stmt>>,
|
stmts: Vec<hir::Stmt>,
|
||||||
expr: Option<P<hir::Expr>>)
|
expr: Option<P<hir::Expr>>)
|
||||||
-> P<hir::Block> {
|
-> P<hir::Block> {
|
||||||
P(hir::Block {
|
P(hir::Block {
|
||||||
|
@ -1748,7 +1748,7 @@ fn path_all(sp: Span,
|
||||||
mut idents: Vec<Ident>,
|
mut idents: Vec<Ident>,
|
||||||
lifetimes: Vec<hir::Lifetime>,
|
lifetimes: Vec<hir::Lifetime>,
|
||||||
types: Vec<P<hir::Ty>>,
|
types: Vec<P<hir::Ty>>,
|
||||||
bindings: Vec<P<hir::TypeBinding>>)
|
bindings: Vec<hir::TypeBinding>)
|
||||||
-> hir::Path {
|
-> hir::Path {
|
||||||
let last_identifier = idents.pop().unwrap();
|
let last_identifier = idents.pop().unwrap();
|
||||||
let mut segments: Vec<hir::PathSegment> = idents.into_iter()
|
let mut segments: Vec<hir::PathSegment> = idents.into_iter()
|
||||||
|
@ -1791,7 +1791,7 @@ fn core_path(lctx: &LoweringContext, span: Span, components: &[&str]) -> hir::Pa
|
||||||
}
|
}
|
||||||
|
|
||||||
fn signal_block_expr(lctx: &LoweringContext,
|
fn signal_block_expr(lctx: &LoweringContext,
|
||||||
stmts: Vec<P<hir::Stmt>>,
|
stmts: Vec<hir::Stmt>,
|
||||||
expr: P<hir::Expr>,
|
expr: P<hir::Expr>,
|
||||||
span: Span,
|
span: Span,
|
||||||
rule: hir::BlockCheckMode,
|
rule: hir::BlockCheckMode,
|
||||||
|
|
|
@ -473,7 +473,7 @@ impl<'a> State<'a> {
|
||||||
-> io::Result<()> {
|
-> io::Result<()> {
|
||||||
try!(self.print_inner_attributes(attrs));
|
try!(self.print_inner_attributes(attrs));
|
||||||
for item in &nmod.items {
|
for item in &nmod.items {
|
||||||
try!(self.print_foreign_item(&**item));
|
try!(self.print_foreign_item(item));
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -878,7 +878,7 @@ impl<'a> State<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn print_variants(&mut self,
|
pub fn print_variants(&mut self,
|
||||||
variants: &[P<hir::Variant>],
|
variants: &[hir::Variant],
|
||||||
span: codemap::Span)
|
span: codemap::Span)
|
||||||
-> io::Result<()> {
|
-> io::Result<()> {
|
||||||
try!(self.bopen());
|
try!(self.bopen());
|
||||||
|
@ -887,7 +887,7 @@ impl<'a> State<'a> {
|
||||||
try!(self.maybe_print_comment(v.span.lo));
|
try!(self.maybe_print_comment(v.span.lo));
|
||||||
try!(self.print_outer_attributes(&v.node.attrs));
|
try!(self.print_outer_attributes(&v.node.attrs));
|
||||||
try!(self.ibox(indent_unit));
|
try!(self.ibox(indent_unit));
|
||||||
try!(self.print_variant(&**v));
|
try!(self.print_variant(v));
|
||||||
try!(word(&mut self.s, ","));
|
try!(word(&mut self.s, ","));
|
||||||
try!(self.end());
|
try!(self.end());
|
||||||
try!(self.maybe_print_trailing_comment(v.span, None));
|
try!(self.maybe_print_trailing_comment(v.span, None));
|
||||||
|
@ -1107,7 +1107,7 @@ impl<'a> State<'a> {
|
||||||
try!(self.print_inner_attributes(attrs));
|
try!(self.print_inner_attributes(attrs));
|
||||||
|
|
||||||
for st in &blk.stmts {
|
for st in &blk.stmts {
|
||||||
try!(self.print_stmt(&**st));
|
try!(self.print_stmt(st));
|
||||||
}
|
}
|
||||||
match blk.expr {
|
match blk.expr {
|
||||||
Some(ref expr) => {
|
Some(ref expr) => {
|
||||||
|
|
|
@ -394,13 +394,13 @@ fn simplify_ast(ii: InlinedItemRef) -> InlinedItem {
|
||||||
InlinedItem::Item(P(fold::noop_fold_item(i.clone(), &mut fld)))
|
InlinedItem::Item(P(fold::noop_fold_item(i.clone(), &mut fld)))
|
||||||
}
|
}
|
||||||
InlinedItemRef::TraitItem(d, ti) => {
|
InlinedItemRef::TraitItem(d, ti) => {
|
||||||
InlinedItem::TraitItem(d, fold::noop_fold_trait_item(P(ti.clone()), &mut fld))
|
InlinedItem::TraitItem(d, P(fold::noop_fold_trait_item(ti.clone(), &mut fld)))
|
||||||
}
|
}
|
||||||
InlinedItemRef::ImplItem(d, ii) => {
|
InlinedItemRef::ImplItem(d, ii) => {
|
||||||
InlinedItem::ImplItem(d, fold::noop_fold_impl_item(P(ii.clone()), &mut fld))
|
InlinedItem::ImplItem(d, P(fold::noop_fold_impl_item(ii.clone(), &mut fld)))
|
||||||
}
|
}
|
||||||
InlinedItemRef::Foreign(i) => {
|
InlinedItemRef::Foreign(i) => {
|
||||||
InlinedItem::Foreign(fold::noop_fold_foreign_item(P(i.clone()), &mut fld))
|
InlinedItem::Foreign(P(fold::noop_fold_foreign_item(i.clone(), &mut fld)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1156,7 +1156,7 @@ fn encode_info_for_item<'a, 'tcx>(ecx: &EncodeContext<'a, 'tcx>,
|
||||||
let num_implemented_methods = ast_items.len();
|
let num_implemented_methods = ast_items.len();
|
||||||
for (i, &trait_item_def_id) in items.iter().enumerate() {
|
for (i, &trait_item_def_id) in items.iter().enumerate() {
|
||||||
let ast_item = if i < num_implemented_methods {
|
let ast_item = if i < num_implemented_methods {
|
||||||
Some(&*ast_items[i])
|
Some(&ast_items[i])
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
@ -1321,7 +1321,7 @@ fn encode_info_for_item<'a, 'tcx>(ecx: &EncodeContext<'a, 'tcx>,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let trait_item = &*ms[i];
|
let trait_item = &ms[i];
|
||||||
encode_attributes(rbml_w, &trait_item.attrs);
|
encode_attributes(rbml_w, &trait_item.attrs);
|
||||||
match trait_item.node {
|
match trait_item.node {
|
||||||
hir::ConstTraitItem(_, ref default) => {
|
hir::ConstTraitItem(_, ref default) => {
|
||||||
|
|
|
@ -14,7 +14,6 @@ use hair::cx::to_ref::ToRef;
|
||||||
use rustc::middle::region::{BlockRemainder, CodeExtentData};
|
use rustc::middle::region::{BlockRemainder, CodeExtentData};
|
||||||
use rustc_front::hir;
|
use rustc_front::hir;
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
use syntax::ptr::P;
|
|
||||||
|
|
||||||
impl<'tcx> Mirror<'tcx> for &'tcx hir::Block {
|
impl<'tcx> Mirror<'tcx> for &'tcx hir::Block {
|
||||||
type Output = Block<'tcx>;
|
type Output = Block<'tcx>;
|
||||||
|
@ -36,7 +35,7 @@ fn mirror_stmts<'a,'tcx:'a,STMTS>(cx: &mut Cx<'a,'tcx>,
|
||||||
block_id: ast::NodeId,
|
block_id: ast::NodeId,
|
||||||
mut stmts: STMTS)
|
mut stmts: STMTS)
|
||||||
-> Vec<StmtRef<'tcx>>
|
-> Vec<StmtRef<'tcx>>
|
||||||
where STMTS: Iterator<Item=(usize, &'tcx P<hir::Stmt>)>
|
where STMTS: Iterator<Item=(usize, &'tcx hir::Stmt)>
|
||||||
{
|
{
|
||||||
let mut result = vec![];
|
let mut result = vec![];
|
||||||
while let Some((index, stmt)) = stmts.next() {
|
while let Some((index, stmt)) = stmts.next() {
|
||||||
|
|
|
@ -392,7 +392,7 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> {
|
||||||
|
|
||||||
for variant in &(*enum_definition).variants {
|
for variant in &(*enum_definition).variants {
|
||||||
let item_def_id = self.ast_map.local_def_id(item.id);
|
let item_def_id = self.ast_map.local_def_id(item.id);
|
||||||
self.build_reduced_graph_for_variant(&**variant, item_def_id, &module);
|
self.build_reduced_graph_for_variant(variant, item_def_id, &module);
|
||||||
}
|
}
|
||||||
parent.clone()
|
parent.clone()
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,7 +69,6 @@ use syntax::ast::{TyUs, TyU8, TyU16, TyU32, TyU64, TyF64, TyF32};
|
||||||
use syntax::attr::AttrMetaMethods;
|
use syntax::attr::AttrMetaMethods;
|
||||||
use syntax::ext::mtwt;
|
use syntax::ext::mtwt;
|
||||||
use syntax::parse::token::{self, special_names, special_idents};
|
use syntax::parse::token::{self, special_names, special_idents};
|
||||||
use syntax::ptr::P;
|
|
||||||
use syntax::codemap::{self, Span, Pos};
|
use syntax::codemap::{self, Span, Pos};
|
||||||
use syntax::util::lev_distance::{lev_distance, max_suggestion_distance};
|
use syntax::util::lev_distance::{lev_distance, max_suggestion_distance};
|
||||||
|
|
||||||
|
@ -1907,7 +1906,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||||
opt_trait_ref,
|
opt_trait_ref,
|
||||||
&**self_type,
|
&**self_type,
|
||||||
item.id,
|
item.id,
|
||||||
&impl_items[..]);
|
impl_items);
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemTrait(_, ref generics, ref bounds, ref trait_items) => {
|
ItemTrait(_, ref generics, ref bounds, ref trait_items) => {
|
||||||
|
@ -2223,7 +2222,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||||
opt_trait_reference: &Option<TraitRef>,
|
opt_trait_reference: &Option<TraitRef>,
|
||||||
self_type: &Ty,
|
self_type: &Ty,
|
||||||
item_id: NodeId,
|
item_id: NodeId,
|
||||||
impl_items: &[P<ImplItem>]) {
|
impl_items: &[ImplItem]) {
|
||||||
// If applicable, create a rib for the type parameters.
|
// If applicable, create a rib for the type parameters.
|
||||||
self.with_type_parameter_rib(HasTypeParameters(generics,
|
self.with_type_parameter_rib(HasTypeParameters(generics,
|
||||||
TypeSpace,
|
TypeSpace,
|
||||||
|
|
|
@ -2378,7 +2378,7 @@ pub fn trans_item(ccx: &CrateContext, item: &hir::Item) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
hir::ItemImpl(_, _, ref generics, _, _, ref impl_items) => {
|
hir::ItemImpl(_, _, ref generics, _, _, ref impl_items) => {
|
||||||
meth::trans_impl(ccx, item.name, &impl_items[..], generics, item.id);
|
meth::trans_impl(ccx, item.name, impl_items, generics, item.id);
|
||||||
}
|
}
|
||||||
hir::ItemMod(_) => {
|
hir::ItemMod(_) => {
|
||||||
// modules have no equivalent at runtime, they just affect
|
// modules have no equivalent at runtime, they just affect
|
||||||
|
|
|
@ -110,7 +110,7 @@ pub fn trans_block<'blk, 'tcx>(bcx: Block<'blk, 'tcx>,
|
||||||
fcx.push_ast_cleanup_scope(cleanup_debug_loc);
|
fcx.push_ast_cleanup_scope(cleanup_debug_loc);
|
||||||
|
|
||||||
for s in &b.stmts {
|
for s in &b.stmts {
|
||||||
bcx = trans_stmt(bcx, &**s);
|
bcx = trans_stmt(bcx, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
if dest != expr::Ignore {
|
if dest != expr::Ignore {
|
||||||
|
|
|
@ -117,7 +117,7 @@ fn walk_block(cx: &CrateContext,
|
||||||
|
|
||||||
// The interesting things here are statements and the concluding expression.
|
// The interesting things here are statements and the concluding expression.
|
||||||
for statement in &block.stmts {
|
for statement in &block.stmts {
|
||||||
scope_map.insert(rustc_front::util::stmt_id(&**statement),
|
scope_map.insert(rustc_front::util::stmt_id(statement),
|
||||||
scope_stack.last().unwrap().scope_metadata);
|
scope_stack.last().unwrap().scope_metadata);
|
||||||
|
|
||||||
match statement.node {
|
match statement.node {
|
||||||
|
|
|
@ -481,7 +481,7 @@ fn gate_simd_ffi(tcx: &ty::ctxt, decl: &hir::FnDecl, ty: &ty::BareFnTy) {
|
||||||
pub fn trans_foreign_mod(ccx: &CrateContext, foreign_mod: &hir::ForeignMod) {
|
pub fn trans_foreign_mod(ccx: &CrateContext, foreign_mod: &hir::ForeignMod) {
|
||||||
let _icx = push_ctxt("foreign::trans_foreign_mod");
|
let _icx = push_ctxt("foreign::trans_foreign_mod");
|
||||||
for foreign_item in &foreign_mod.items {
|
for foreign_item in &foreign_mod.items {
|
||||||
let lname = link_name(&**foreign_item);
|
let lname = link_name(foreign_item);
|
||||||
|
|
||||||
if let hir::ForeignItemFn(ref decl, _) = foreign_item.node {
|
if let hir::ForeignItemFn(ref decl, _) = foreign_item.node {
|
||||||
match foreign_mod.abi {
|
match foreign_mod.abi {
|
||||||
|
|
|
@ -41,7 +41,6 @@ use middle::ty::MethodCall;
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
use syntax::attr;
|
use syntax::attr;
|
||||||
use syntax::codemap::DUMMY_SP;
|
use syntax::codemap::DUMMY_SP;
|
||||||
use syntax::ptr::P;
|
|
||||||
|
|
||||||
use rustc_front::hir;
|
use rustc_front::hir;
|
||||||
|
|
||||||
|
@ -54,7 +53,7 @@ const VTABLE_OFFSET: usize = 3;
|
||||||
/// see `trans::base::lval_static_fn()` or `trans::base::monomorphic_fn()`.
|
/// see `trans::base::lval_static_fn()` or `trans::base::monomorphic_fn()`.
|
||||||
pub fn trans_impl(ccx: &CrateContext,
|
pub fn trans_impl(ccx: &CrateContext,
|
||||||
name: ast::Name,
|
name: ast::Name,
|
||||||
impl_items: &[P<hir::ImplItem>],
|
impl_items: &[hir::ImplItem],
|
||||||
generics: &hir::Generics,
|
generics: &hir::Generics,
|
||||||
id: ast::NodeId) {
|
id: ast::NodeId) {
|
||||||
let _icx = push_ctxt("meth::trans_impl");
|
let _icx = push_ctxt("meth::trans_impl");
|
||||||
|
|
|
@ -711,11 +711,11 @@ pub fn check_item_type<'a,'tcx>(ccx: &CrateCtxt<'a,'tcx>, it: &'tcx hir::Item) {
|
||||||
hir::ItemForeignMod(ref m) => {
|
hir::ItemForeignMod(ref m) => {
|
||||||
if m.abi == abi::RustIntrinsic {
|
if m.abi == abi::RustIntrinsic {
|
||||||
for item in &m.items {
|
for item in &m.items {
|
||||||
intrinsic::check_intrinsic_type(ccx, &**item);
|
intrinsic::check_intrinsic_type(ccx, item);
|
||||||
}
|
}
|
||||||
} else if m.abi == abi::PlatformIntrinsic {
|
} else if m.abi == abi::PlatformIntrinsic {
|
||||||
for item in &m.items {
|
for item in &m.items {
|
||||||
intrinsic::check_platform_intrinsic_type(ccx, &**item);
|
intrinsic::check_platform_intrinsic_type(ccx, item);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for item in &m.items {
|
for item in &m.items {
|
||||||
|
@ -880,7 +880,7 @@ fn check_method_body<'a, 'tcx>(ccx: &CrateCtxt<'a, 'tcx>,
|
||||||
fn check_impl_items_against_trait<'a, 'tcx>(ccx: &CrateCtxt<'a, 'tcx>,
|
fn check_impl_items_against_trait<'a, 'tcx>(ccx: &CrateCtxt<'a, 'tcx>,
|
||||||
impl_span: Span,
|
impl_span: Span,
|
||||||
impl_trait_ref: &ty::TraitRef<'tcx>,
|
impl_trait_ref: &ty::TraitRef<'tcx>,
|
||||||
impl_items: &[P<hir::ImplItem>]) {
|
impl_items: &[hir::ImplItem]) {
|
||||||
// Locate trait methods
|
// Locate trait methods
|
||||||
let tcx = ccx.tcx;
|
let tcx = ccx.tcx;
|
||||||
let trait_items = tcx.trait_items(impl_trait_ref.def_id);
|
let trait_items = tcx.trait_items(impl_trait_ref.def_id);
|
||||||
|
@ -4024,8 +4024,8 @@ fn check_block_with_expected<'a, 'tcx>(fcx: &FnCtxt<'a, 'tcx>,
|
||||||
let mut any_diverges = false;
|
let mut any_diverges = false;
|
||||||
let mut any_err = false;
|
let mut any_err = false;
|
||||||
for s in &blk.stmts {
|
for s in &blk.stmts {
|
||||||
check_stmt(fcx, &**s);
|
check_stmt(fcx, s);
|
||||||
let s_id = ::rustc_front::util::stmt_id(&**s);
|
let s_id = ::rustc_front::util::stmt_id(s);
|
||||||
let s_ty = fcx.node_ty(s_id);
|
let s_ty = fcx.node_ty(s_id);
|
||||||
if any_diverges && !warned && match s.node {
|
if any_diverges && !warned && match s.node {
|
||||||
hir::StmtDecl(ref decl, _) => {
|
hir::StmtDecl(ref decl, _) => {
|
||||||
|
@ -4193,7 +4193,7 @@ pub fn check_simd(tcx: &ty::ctxt, sp: Span, id: ast::NodeId) {
|
||||||
|
|
||||||
pub fn check_enum_variants<'a,'tcx>(ccx: &CrateCtxt<'a,'tcx>,
|
pub fn check_enum_variants<'a,'tcx>(ccx: &CrateCtxt<'a,'tcx>,
|
||||||
sp: Span,
|
sp: Span,
|
||||||
vs: &'tcx [P<hir::Variant>],
|
vs: &'tcx [hir::Variant],
|
||||||
id: ast::NodeId) {
|
id: ast::NodeId) {
|
||||||
|
|
||||||
fn disr_in_range(ccx: &CrateCtxt,
|
fn disr_in_range(ccx: &CrateCtxt,
|
||||||
|
@ -4224,7 +4224,7 @@ pub fn check_enum_variants<'a,'tcx>(ccx: &CrateCtxt<'a,'tcx>,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn do_check<'a, 'tcx>(ccx: &CrateCtxt<'a, 'tcx>,
|
fn do_check<'a, 'tcx>(ccx: &CrateCtxt<'a, 'tcx>,
|
||||||
vs: &'tcx [P<hir::Variant>],
|
vs: &'tcx [hir::Variant],
|
||||||
id: ast::NodeId,
|
id: ast::NodeId,
|
||||||
hint: attr::ReprAttr) {
|
hint: attr::ReprAttr) {
|
||||||
#![allow(trivial_numeric_casts)]
|
#![allow(trivial_numeric_casts)]
|
||||||
|
|
|
@ -24,7 +24,6 @@ use std::rc::Rc;
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
use syntax::codemap::{Span};
|
use syntax::codemap::{Span};
|
||||||
use syntax::parse::token::{special_idents};
|
use syntax::parse::token::{special_idents};
|
||||||
use syntax::ptr::P;
|
|
||||||
use rustc_front::intravisit::{self, Visitor};
|
use rustc_front::intravisit::{self, Visitor};
|
||||||
use rustc_front::hir;
|
use rustc_front::hir;
|
||||||
|
|
||||||
|
@ -225,7 +224,7 @@ impl<'ccx, 'tcx> CheckTypeWellFormedVisitor<'ccx, 'tcx> {
|
||||||
|
|
||||||
fn check_trait(&mut self,
|
fn check_trait(&mut self,
|
||||||
item: &hir::Item,
|
item: &hir::Item,
|
||||||
items: &[P<hir::TraitItem>])
|
items: &[hir::TraitItem])
|
||||||
{
|
{
|
||||||
let trait_def_id = self.tcx().map.local_def_id(item.id);
|
let trait_def_id = self.tcx().map.local_def_id(item.id);
|
||||||
|
|
||||||
|
|
|
@ -1061,7 +1061,7 @@ fn convert_enum_variant_types<'a, 'tcx>(ccx: &CrateCtxt<'a, 'tcx>,
|
||||||
def: ty::AdtDefMaster<'tcx>,
|
def: ty::AdtDefMaster<'tcx>,
|
||||||
scheme: ty::TypeScheme<'tcx>,
|
scheme: ty::TypeScheme<'tcx>,
|
||||||
predicates: ty::GenericPredicates<'tcx>,
|
predicates: ty::GenericPredicates<'tcx>,
|
||||||
variants: &[P<hir::Variant>]) {
|
variants: &[hir::Variant]) {
|
||||||
// fill the field types
|
// fill the field types
|
||||||
for (variant, ty_variant) in variants.iter().zip(def.variants.iter()) {
|
for (variant, ty_variant) in variants.iter().zip(def.variants.iter()) {
|
||||||
for (f, ty_f) in variant.node.data.fields().iter().zip(ty_variant.fields.iter()) {
|
for (f, ty_f) in variant.node.data.fields().iter().zip(ty_variant.fields.iter()) {
|
||||||
|
@ -1479,7 +1479,7 @@ fn convert_trait_predicates<'a, 'tcx>(ccx: &CrateCtxt<'a, 'tcx>, it: &hir::Item)
|
||||||
ast_generics: &hir::Generics,
|
ast_generics: &hir::Generics,
|
||||||
trait_predicates: &ty::GenericPredicates<'tcx>,
|
trait_predicates: &ty::GenericPredicates<'tcx>,
|
||||||
self_trait_ref: ty::TraitRef<'tcx>,
|
self_trait_ref: ty::TraitRef<'tcx>,
|
||||||
trait_items: &[P<hir::TraitItem>])
|
trait_items: &[hir::TraitItem])
|
||||||
-> Vec<ty::Predicate<'tcx>>
|
-> Vec<ty::Predicate<'tcx>>
|
||||||
{
|
{
|
||||||
trait_items.iter().flat_map(|trait_item| {
|
trait_items.iter().flat_map(|trait_item| {
|
||||||
|
@ -2410,7 +2410,7 @@ fn enforce_impl_params_are_constrained<'tcx>(tcx: &ty::ctxt<'tcx>,
|
||||||
fn enforce_impl_lifetimes_are_constrained<'tcx>(tcx: &ty::ctxt<'tcx>,
|
fn enforce_impl_lifetimes_are_constrained<'tcx>(tcx: &ty::ctxt<'tcx>,
|
||||||
ast_generics: &hir::Generics,
|
ast_generics: &hir::Generics,
|
||||||
impl_def_id: DefId,
|
impl_def_id: DefId,
|
||||||
impl_items: &[P<hir::ImplItem>])
|
impl_items: &[hir::ImplItem])
|
||||||
{
|
{
|
||||||
// Every lifetime used in an associated type must be constrained.
|
// Every lifetime used in an associated type must be constrained.
|
||||||
let impl_scheme = tcx.lookup_item_type(impl_def_id);
|
let impl_scheme = tcx.lookup_item_type(impl_def_id);
|
||||||
|
|
|
@ -176,7 +176,7 @@ pub struct Constant {
|
||||||
pub struct Trait {
|
pub struct Trait {
|
||||||
pub unsafety: hir::Unsafety,
|
pub unsafety: hir::Unsafety,
|
||||||
pub name: Name,
|
pub name: Name,
|
||||||
pub items: Vec<P<hir::TraitItem>>, //should be TraitItem
|
pub items: Vec<hir::TraitItem>,
|
||||||
pub generics: hir::Generics,
|
pub generics: hir::Generics,
|
||||||
pub bounds: Vec<hir::TyParamBound>,
|
pub bounds: Vec<hir::TyParamBound>,
|
||||||
pub attrs: Vec<ast::Attribute>,
|
pub attrs: Vec<ast::Attribute>,
|
||||||
|
@ -192,7 +192,7 @@ pub struct Impl {
|
||||||
pub generics: hir::Generics,
|
pub generics: hir::Generics,
|
||||||
pub trait_: Option<hir::TraitRef>,
|
pub trait_: Option<hir::TraitRef>,
|
||||||
pub for_: P<hir::Ty>,
|
pub for_: P<hir::Ty>,
|
||||||
pub items: Vec<P<hir::ImplItem>>,
|
pub items: Vec<hir::ImplItem>,
|
||||||
pub attrs: Vec<ast::Attribute>,
|
pub attrs: Vec<ast::Attribute>,
|
||||||
pub whence: Span,
|
pub whence: Span,
|
||||||
pub vis: hir::Visibility,
|
pub vis: hir::Visibility,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue