@@ -138,38 +138,38 @@ trait CPSUtils {
138
138
}
139
139
140
140
def isTailReturn (retExpr : Tree , body : Tree ): Boolean = {
141
- val removedIds = ListBuffer [Int ]()
142
- removeTailReturn(body, removedIds )
143
- removedIds contains retExpr.id
141
+ val removed = ListBuffer [Tree ]()
142
+ removeTailReturn(body, removed )
143
+ removed contains retExpr
144
144
}
145
145
146
- def removeTailReturn (tree : Tree , ids : ListBuffer [Int ]): Tree = tree match {
146
+ def removeTailReturn (tree : Tree , removed : ListBuffer [Tree ]): Tree = tree match {
147
147
case Block (stms, r @ Return (expr)) =>
148
- ids += r.id
148
+ removed += r
149
149
treeCopy.Block (tree, stms, expr)
150
150
151
151
case Block (stms, expr) =>
152
- treeCopy.Block (tree, stms, removeTailReturn(expr, ids ))
152
+ treeCopy.Block (tree, stms, removeTailReturn(expr, removed ))
153
153
154
154
case If (cond, r1 @ Return (thenExpr), r2 @ Return (elseExpr)) =>
155
- ids ++= Seq (r1.id , r2.id )
156
- treeCopy.If (tree, cond, removeTailReturn(thenExpr, ids ), removeTailReturn(elseExpr, ids ))
155
+ removed ++= Seq (r1, r2)
156
+ treeCopy.If (tree, cond, removeTailReturn(thenExpr, removed ), removeTailReturn(elseExpr, removed ))
157
157
158
158
case If (cond, thenExpr, elseExpr) =>
159
- treeCopy.If (tree, cond, removeTailReturn(thenExpr, ids ), removeTailReturn(elseExpr, ids ))
159
+ treeCopy.If (tree, cond, removeTailReturn(thenExpr, removed ), removeTailReturn(elseExpr, removed ))
160
160
161
161
case Try (block, catches, finalizer) =>
162
162
treeCopy.Try (tree,
163
- removeTailReturn(block, ids ),
164
- (catches map (t => removeTailReturn(t, ids ))).asInstanceOf [List [CaseDef ]],
165
- removeTailReturn(finalizer, ids ))
163
+ removeTailReturn(block, removed ),
164
+ (catches map (t => removeTailReturn(t, removed ))).asInstanceOf [List [CaseDef ]],
165
+ removeTailReturn(finalizer, removed ))
166
166
167
167
case CaseDef (pat, guard, r @ Return (expr)) =>
168
- ids += r.id
168
+ removed += r
169
169
treeCopy.CaseDef (tree, pat, guard, expr)
170
170
171
171
case CaseDef (pat, guard, body) =>
172
- treeCopy.CaseDef (tree, pat, guard, removeTailReturn(body, ids ))
172
+ treeCopy.CaseDef (tree, pat, guard, removeTailReturn(body, removed ))
173
173
174
174
case _ =>
175
175
tree
0 commit comments