Skip to content

Commit 0ada070

Browse files
committed
Remove unneeded use of Tree#id
1 parent 51c92f0 commit 0ada070

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

src/continuations/plugin/scala/tools/selectivecps/CPSUtils.scala

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -138,38 +138,38 @@ trait CPSUtils {
138138
}
139139

140140
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
144144
}
145145

146-
def removeTailReturn(tree: Tree, ids: ListBuffer[Int]): Tree = tree match {
146+
def removeTailReturn(tree: Tree, removed: ListBuffer[Tree]): Tree = tree match {
147147
case Block(stms, r @ Return(expr)) =>
148-
ids += r.id
148+
removed += r
149149
treeCopy.Block(tree, stms, expr)
150150

151151
case Block(stms, expr) =>
152-
treeCopy.Block(tree, stms, removeTailReturn(expr, ids))
152+
treeCopy.Block(tree, stms, removeTailReturn(expr, removed))
153153

154154
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))
157157

158158
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))
160160

161161
case Try(block, catches, finalizer) =>
162162
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))
166166

167167
case CaseDef(pat, guard, r @ Return(expr)) =>
168-
ids += r.id
168+
removed += r
169169
treeCopy.CaseDef(tree, pat, guard, expr)
170170

171171
case CaseDef(pat, guard, body) =>
172-
treeCopy.CaseDef(tree, pat, guard, removeTailReturn(body, ids))
172+
treeCopy.CaseDef(tree, pat, guard, removeTailReturn(body, removed))
173173

174174
case _ =>
175175
tree

src/continuations/plugin/scala/tools/selectivecps/SelectiveANFTransform.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,12 @@ abstract class SelectiveANFTransform extends PluginComponent with Transform with
5252
debuglog("transforming " + dd.symbol)
5353

5454
atOwner(dd.symbol) {
55-
val tailReturns = ListBuffer[Int]()
55+
val tailReturns = ListBuffer[Tree]()
5656
val rhs = removeTailReturn(rhs0, tailReturns)
5757
// throw an error if there is a Return tree which is not in tail position
5858
rhs0 foreach {
5959
case r @ Return(_) =>
60-
if (!tailReturns.contains(r.id))
60+
if (!tailReturns.contains(r))
6161
unit.error(r.pos, "return expressions in CPS code must be in tail position")
6262
case _ => /* do nothing */
6363
}

0 commit comments

Comments
 (0)