Skip to content

Commit 67b1a60

Browse files
committed
Allow future system to enable more name freshening
1 parent c09aa77 commit 67b1a60

File tree

2 files changed

+32
-13
lines changed

2 files changed

+32
-13
lines changed

src/main/scala/scala/async/internal/FutureSystem.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ trait FutureSystem {
7474
}
7575

7676
def mkOps(c0: Context): Ops { val c: c0.type }
77+
78+
def freshenAllNames: Boolean = false
7779
}
7880

7981
object ScalaConcurrentFutureSystem extends FutureSystem {

src/main/scala/scala/async/internal/TransformUtils.scala

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,40 @@ private[async] trait TransformUtils {
1717
import c.internal._
1818
import decorators._
1919

20+
private object baseNames {
21+
22+
val matchRes = "matchres"
23+
val ifRes = "ifres"
24+
val bindSuffix = "$bind"
25+
val completed = newTermName("completed")
26+
27+
val state = newTermName("state")
28+
val result = newTermName("result")
29+
val execContext = newTermName("execContext")
30+
val tr = newTermName("tr")
31+
val t = newTermName("throwable")
32+
}
33+
2034
object name {
21-
val resume = newTermName("resume")
22-
val apply = newTermName("apply")
23-
val matchRes = "matchres"
24-
val ifRes = "ifres"
25-
val await = "await"
26-
val bindSuffix = "$bind"
27-
val completed = newTermName("completed")
28-
29-
val state = newTermName("state")
30-
val result = newTermName("result")
31-
val execContext = newTermName("execContext")
35+
def matchRes = maybeFresh(baseNames.matchRes)
36+
def ifRes = maybeFresh(baseNames.ifRes)
37+
def bindSuffix = maybeFresh(baseNames.bindSuffix)
38+
def completed = maybeFresh(baseNames.completed)
39+
40+
val state = maybeFresh(baseNames.state)
41+
val result = maybeFresh(baseNames.result)
42+
val execContext = maybeFresh(baseNames.execContext)
43+
val tr = maybeFresh(baseNames.tr)
44+
val t = maybeFresh(baseNames.t)
45+
46+
val await = "await"
47+
val resume = newTermName("resume")
48+
val apply = newTermName("apply")
3249
val stateMachine = newTermName(fresh("stateMachine"))
3350
val stateMachineT = stateMachine.toTypeName
34-
val tr = newTermName("tr")
35-
val t = newTermName("throwable")
3651

52+
def maybeFresh(name: TermName): TermName = if (self.asyncBase.futureSystem.freshenAllNames) fresh(name) else name
53+
def maybeFresh(name: String): String = if (self.asyncBase.futureSystem.freshenAllNames) fresh(name) else name
3754
def fresh(name: TermName): TermName = c.freshName(name)
3855

3956
def fresh(name: String): String = c.freshName(name)

0 commit comments

Comments
 (0)