correct lease visibility

This commit is contained in:
Mark Canlas 2022-11-20 02:25:19 -05:00
parent 87be54418f
commit a13a366b2c

View File

@ -12,21 +12,22 @@ object ComplicatedResourceSuite extends FunSuite:
def setHead(x: Int)(using W: WriteLease[A]): Asm2[Register.A, A] = def setHead(x: Int)(using W: WriteLease[A]): Asm2[Register.A, A] =
Move.constA(x, W.to(_.headAddr)) Move.constA(x, W.to(_.headAddr))
class FastLease[A](x: A) extends WriteLease[A]:
def canon: A =
x
class PlayerOne extends Player[PlayerOne](40) class PlayerOne extends Player[PlayerOne](40)
object PlayerOne extends PlayerOne: object PlayerOne extends PlayerOne:
given WriteLease[PlayerOne] with val lease: WriteLease[PlayerOne] =
def canon: PlayerOne = FastLease(PlayerOne)
PlayerOne
class PlayerTwo extends Player[PlayerTwo](80) class PlayerTwo extends Player[PlayerTwo](80)
object PlayerTwo extends PlayerTwo: object PlayerTwo extends PlayerTwo:
given WriteLease[PlayerTwo] with val lease: WriteLease[PlayerTwo] =
def canon: PlayerTwo = FastLease(PlayerTwo)
PlayerTwo
test("use write lease") { test("use write lease") {
// TODO actually this doesn't make sense. the lease shouldn't be canonical/globally available. only when lease is given... expect.eql(List("LDA", "STA"), PlayerOne.setHead(0)(using PlayerOne.lease).xs)
expect.eql(List("LDA", "STA"), PlayerOne.setHead(0).xs)
} }