Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 92052da

Browse files
committedJul 12, 2016
increased debug output for understanding temp rvalues in e.g. rust-lang#30127
1 parent 2539c15 commit 92052da

File tree

1 file changed

+34
-27
lines changed

1 file changed

+34
-27
lines changed
 

‎src/librustc/middle/region.rs

+34-27
Original file line numberDiff line numberDiff line change
@@ -1001,37 +1001,42 @@ fn resolve_local(visitor: &mut RegionResolutionVisitor, local: &hir::Local) {
10011001
fn record_rvalue_scope_if_borrow_expr(visitor: &mut RegionResolutionVisitor,
10021002
expr: &hir::Expr,
10031003
blk_id: CodeExtent) {
1004-
match expr.node {
1005-
hir::ExprAddrOf(_, ref subexpr) => {
1006-
record_rvalue_scope_if_borrow_expr(visitor, &subexpr, blk_id);
1007-
record_rvalue_scope(visitor, &subexpr, blk_id);
1008-
}
1009-
hir::ExprStruct(_, ref fields, _) => {
1010-
for field in fields {
1011-
record_rvalue_scope_if_borrow_expr(
1012-
visitor, &field.expr, blk_id);
1004+
debug!("record_rvalue_scope_if_borrow_expr recur on \
1005+
expr: {:?} blk_id: {:?}", expr, blk_id);
1006+
return recur(visitor, expr, blk_id);
1007+
1008+
fn recur(visitor: &mut RegionResolutionVisitor,
1009+
expr: &hir::Expr,
1010+
blk_id: CodeExtent) {
1011+
match expr.node {
1012+
hir::ExprAddrOf(_, ref subexpr) => {
1013+
recur(visitor, &subexpr, blk_id);
1014+
record_rvalue_scope(visitor, &subexpr, blk_id);
10131015
}
1014-
}
1015-
hir::ExprVec(ref subexprs) |
1016-
hir::ExprTup(ref subexprs) => {
1017-
for subexpr in subexprs {
1018-
record_rvalue_scope_if_borrow_expr(
1019-
visitor, &subexpr, blk_id);
1016+
hir::ExprStruct(_, ref fields, _) => {
1017+
for field in fields {
1018+
recur(visitor, &field.expr, blk_id);
1019+
}
10201020
}
1021-
}
1022-
hir::ExprCast(ref subexpr, _) => {
1023-
record_rvalue_scope_if_borrow_expr(visitor, &subexpr, blk_id)
1024-
}
1025-
hir::ExprBlock(ref block) => {
1026-
match block.expr {
1027-
Some(ref subexpr) => {
1028-
record_rvalue_scope_if_borrow_expr(
1029-
visitor, &subexpr, blk_id);
1021+
hir::ExprVec(ref subexprs) |
1022+
hir::ExprTup(ref subexprs) => {
1023+
for subexpr in subexprs {
1024+
recur(visitor, &subexpr, blk_id);
10301025
}
1031-
None => { }
10321026
}
1033-
}
1034-
_ => {
1027+
hir::ExprCast(ref subexpr, _) => {
1028+
recur(visitor, &subexpr, blk_id)
1029+
}
1030+
hir::ExprBlock(ref block) => {
1031+
match block.expr {
1032+
Some(ref subexpr) => {
1033+
recur(visitor, &subexpr, blk_id);
1034+
}
1035+
None => { }
1036+
}
1037+
}
1038+
_ => {
1039+
}
10351040
}
10361041
}
10371042
}
@@ -1054,6 +1059,8 @@ fn resolve_local(visitor: &mut RegionResolutionVisitor, local: &hir::Local) {
10541059
fn record_rvalue_scope<'a>(visitor: &mut RegionResolutionVisitor,
10551060
expr: &'a hir::Expr,
10561061
blk_scope: CodeExtent) {
1062+
debug!("record_rvalue_scope loop on \
1063+
expr: {:?} blk_scope: {:?}", expr, blk_scope);
10571064
let mut expr = expr;
10581065
loop {
10591066
// Note: give all the expressions matching `ET` with the

0 commit comments

Comments
 (0)
Failed to load comments.