From 495e3ec014c4d5a02d7555d7bb61c66710a15472 Mon Sep 17 00:00:00 2001 From: Mark Canlas Date: Mon, 19 Jun 2023 05:30:17 -0400 Subject: [PATCH] implicit to using :robot: --- .../com/htmlism/firepower/core/RegisterSuite.scala | 2 +- .../htmlism/mos6502/dsl/AsmDocumentContext.scala | 4 ++-- .../scala/com/htmlism/mos6502/dsl/DslDemo.scala | 14 +++++++------- .../mos6502/dsl/IndexedAddressCollection.scala | 4 ++-- .../scala/com/htmlism/mos6502/dsl/Mapping.scala | 4 ++-- .../scala/com/htmlism/mos6502/dsl/Operand.scala | 2 +- .../htmlism/mos6502/dsl/ReadWriteLocation.scala | 4 ++-- .../scala/com/htmlism/mos6502/dsl/Statement.scala | 2 +- .../com/htmlism/mos6502/dsl/VolatileDevice.scala | 2 +- .../htmlism/mos6502/dsl/syntax/AsmDocSyntax.scala | 10 +++++----- .../com/htmlism/mos6502/dsl/syntax/AsmSyntax.scala | 4 ++-- .../mos6502/dsl/syntax/DefinitionGroupSyntax.scala | 4 ++-- 12 files changed, 28 insertions(+), 28 deletions(-) diff --git a/firepower-core/src/test/scala/com/htmlism/firepower/core/RegisterSuite.scala b/firepower-core/src/test/scala/com/htmlism/firepower/core/RegisterSuite.scala index 1670979..2510cbe 100644 --- a/firepower-core/src/test/scala/com/htmlism/firepower/core/RegisterSuite.scala +++ b/firepower-core/src/test/scala/com/htmlism/firepower/core/RegisterSuite.scala @@ -3,7 +3,7 @@ package com.htmlism.firepower.core import weaver.* object RegisterSuite extends FunSuite: - private def reg[A](implicit ev: Register[A]) = + private def reg[A](using ev: Register[A]) = ev test("the accumulator is a register"): diff --git a/src/main/scala/com/htmlism/mos6502/dsl/AsmDocumentContext.scala b/src/main/scala/com/htmlism/mos6502/dsl/AsmDocumentContext.scala index abb7625..42af18f 100644 --- a/src/main/scala/com/htmlism/mos6502/dsl/AsmDocumentContext.scala +++ b/src/main/scala/com/htmlism/mos6502/dsl/AsmDocumentContext.scala @@ -65,7 +65,7 @@ class DefinitionGroupContext: private val xs: ListBuffer[Definition[_]] = ListBuffer() - def push[A](x: A)(implicit ev: NamedResource[A]): Unit = + def push[A](x: A)(using ev: NamedResource[A]): Unit = ev .toDefinitions(x) .foreach(xs.append) @@ -77,7 +77,7 @@ class DefinitionGroupContext: * @param comment * Typically used by resources to describe their type safety */ -case class Definition[A](name: String, x: A, comment: Option[String])(implicit ev: DefinitionValue[A]): +case class Definition[A](name: String, x: A, comment: Option[String])(using ev: DefinitionValue[A]): lazy val value: String = ev .value(x) diff --git a/src/main/scala/com/htmlism/mos6502/dsl/DslDemo.scala b/src/main/scala/com/htmlism/mos6502/dsl/DslDemo.scala index 7540d79..11eac5a 100644 --- a/src/main/scala/com/htmlism/mos6502/dsl/DslDemo.scala +++ b/src/main/scala/com/htmlism/mos6502/dsl/DslDemo.scala @@ -58,7 +58,7 @@ object registers: sealed trait IndexRegister case object A extends Register: - def add[A](x: A)(implicit ctx: AssemblyContext, ev: Operand[A]): Unit = + def add[A](x: A)(using ctx: AssemblyContext, ev: Operand[A]): Unit = ev.operandType match case ValueLiteral => ctx.push(ADC, x, s"add LITERAL to a") @@ -67,10 +67,10 @@ object registers: ctx.push(ADC, x, s"add ADDR to a") case object X extends Register with DestinationA with IndexRegister: - def incr(implicit ctx: AssemblyContext): Unit = + def incr(using ctx: AssemblyContext): Unit = ctx.push(INX, "incr x") - def loop(s: String, spec: RangeSpec)(f: AssemblyContext => Unit)(implicit ctx: AssemblyContext): Unit = + def loop(s: String, spec: RangeSpec)(f: AssemblyContext => Unit)(using ctx: AssemblyContext): Unit = val (start, stop, instruction) = spec match case Incrementing(from, to) => @@ -95,10 +95,10 @@ class CPU: def A: registers.A.type = registers.A - def A_=[A](x: A)(implicit ctx: AssemblyContext, ev: Operand[A]): Unit = + def A_=[A](x: A)(using ctx: AssemblyContext, ev: Operand[A]): Unit = ctx.push(LDA, x, "set A to " + ev.toShow(x)) - def A_=(reg: registers.DestinationA)(implicit ctx: AssemblyContext): Unit = + def A_=(reg: registers.DestinationA)(using ctx: AssemblyContext): Unit = reg match case registers.X => ctx.push(TXA) @@ -108,13 +108,13 @@ class CPU: def X: registers.X.type = registers.X - def X_=(reg: registers.A.type)(implicit ctx: AssemblyContext): Unit = + def X_=(reg: registers.A.type)(using ctx: AssemblyContext): Unit = ctx.push(TAX, s"set x to register $reg") def Y: registers.Y.type = registers.Y - def Y_=(reg: registers.A.type)(implicit ctx: AssemblyContext): Unit = + def Y_=(reg: registers.A.type)(using ctx: AssemblyContext): Unit = ctx.push(TAY, s"set x to register $reg") class AssemblyContext: diff --git a/src/main/scala/com/htmlism/mos6502/dsl/IndexedAddressCollection.scala b/src/main/scala/com/htmlism/mos6502/dsl/IndexedAddressCollection.scala index 59d9929..d44a6e4 100644 --- a/src/main/scala/com/htmlism/mos6502/dsl/IndexedAddressCollection.scala +++ b/src/main/scala/com/htmlism/mos6502/dsl/IndexedAddressCollection.scala @@ -5,10 +5,10 @@ import com.htmlism.mos6502.model._ /** * A typed collection, like memory mapped to screen pixels. Access by index instead of by address. */ -case class IndexedAddressCollection[A](baseAddress: Int, name: String)(implicit ev: Operand[A]): +case class IndexedAddressCollection[A](baseAddress: Int, name: String)(using ev: Operand[A]): def apply(n: Int): GlobalAddress = GlobalAddress(baseAddress + n) - def write(n: Int, x: A)(implicit ctx: AssemblyContext): Unit = + def write(n: Int, x: A)(using ctx: AssemblyContext): Unit = ctx.push(LDA, x, s"write ${ev.toShow(x)} to $name ($n)") ctx.push(STA, GlobalAddress(baseAddress + n), "") diff --git a/src/main/scala/com/htmlism/mos6502/dsl/Mapping.scala b/src/main/scala/com/htmlism/mos6502/dsl/Mapping.scala index 361fdcc..97fb019 100644 --- a/src/main/scala/com/htmlism/mos6502/dsl/Mapping.scala +++ b/src/main/scala/com/htmlism/mos6502/dsl/Mapping.scala @@ -26,7 +26,7 @@ trait Mapping[A]: def comment(x: A): String object Mapping: - implicit def mappingForBitField[A](implicit ev: BitField[A]): Mapping[A] = + implicit def mappingForBitField[A](using ev: BitField[A]): Mapping[A] = new Mapping[A]: private lazy val valueMap = ev.all @@ -49,7 +49,7 @@ object Mapping: def comment(x: A): String = "" // TODO - implicit def mappingForEnumAsm[A](implicit ev: EnumAsm[A]): Mapping[A] = + implicit def mappingForEnumAsm[A](using ev: EnumAsm[A]): Mapping[A] = new Mapping[A]: private lazy val valueMap = ev.all diff --git a/src/main/scala/com/htmlism/mos6502/dsl/Operand.scala b/src/main/scala/com/htmlism/mos6502/dsl/Operand.scala index 8228eb8..9d2c9ad 100644 --- a/src/main/scala/com/htmlism/mos6502/dsl/Operand.scala +++ b/src/main/scala/com/htmlism/mos6502/dsl/Operand.scala @@ -24,7 +24,7 @@ object Operand: def toAddressLiteral(x: Int): String = String.format("#$%02x", x) - implicit def operandForMapping[A](implicit ev: Mapping[A]): Operand[A] = + implicit def operandForMapping[A](using ev: Mapping[A]): Operand[A] = new Operand[A]: def toAddressLiteral(x: A): String = "#" + ev.label(x) diff --git a/src/main/scala/com/htmlism/mos6502/dsl/ReadWriteLocation.scala b/src/main/scala/com/htmlism/mos6502/dsl/ReadWriteLocation.scala index 0e0ba12..7452a54 100644 --- a/src/main/scala/com/htmlism/mos6502/dsl/ReadWriteLocation.scala +++ b/src/main/scala/com/htmlism/mos6502/dsl/ReadWriteLocation.scala @@ -10,11 +10,11 @@ import com.htmlism.mos6502.model._ * The input type of the write and the output type of the read */ case class ReadWriteLocation[A: Operand](name: String, address: ZeroAddress): - def read(implicit ctx: AssemblyContext): Unit = + def read(using ctx: AssemblyContext): Unit = val _ = ctx // ctx.push(LDA, ev, s"write ${ev.toShow(x)} to $name ($n)") - def write(x: A)(implicit ctx: AssemblyContext): Unit = + def write(x: A)(using ctx: AssemblyContext): Unit = ctx.push(LDA, x) ctx.push(STA, this) diff --git a/src/main/scala/com/htmlism/mos6502/dsl/Statement.scala b/src/main/scala/com/htmlism/mos6502/dsl/Statement.scala index c37235a..e3efda1 100644 --- a/src/main/scala/com/htmlism/mos6502/dsl/Statement.scala +++ b/src/main/scala/com/htmlism/mos6502/dsl/Statement.scala @@ -27,7 +27,7 @@ case class UnaryInstruction(instruction: Instruction, comment: Option[String]) e def toTriplet: (String, Option[String], Option[String]) = (instruction.toString, None, comment) -case class InstructionWithOperand[A](instruction: Instruction, operand: A, comment: Option[String])(implicit +case class InstructionWithOperand[A](instruction: Instruction, operand: A, comment: Option[String])(using ev: Operand[A] ) extends Statement: def toAsm: String = diff --git a/src/main/scala/com/htmlism/mos6502/dsl/VolatileDevice.scala b/src/main/scala/com/htmlism/mos6502/dsl/VolatileDevice.scala index 5bc1c22..cd15cea 100644 --- a/src/main/scala/com/htmlism/mos6502/dsl/VolatileDevice.scala +++ b/src/main/scala/com/htmlism/mos6502/dsl/VolatileDevice.scala @@ -12,7 +12,7 @@ package com.htmlism.mos6502.dsl * The return type of the read */ case class VolatileDevice[A](name: String, address: ZeroAddress): - def read(implicit ctx: AssemblyContext): Unit = + def read(using ctx: AssemblyContext): Unit = val _ = ctx // ctx.push(LDA, ev, s"write ${ev.toShow(x)} to $name ($n)") diff --git a/src/main/scala/com/htmlism/mos6502/dsl/syntax/AsmDocSyntax.scala b/src/main/scala/com/htmlism/mos6502/dsl/syntax/AsmDocSyntax.scala index a97a5a3..f576085 100644 --- a/src/main/scala/com/htmlism/mos6502/dsl/syntax/AsmDocSyntax.scala +++ b/src/main/scala/com/htmlism/mos6502/dsl/syntax/AsmDocSyntax.scala @@ -2,7 +2,7 @@ package com.htmlism.mos6502.dsl package syntax trait AsmDocSyntax: - def asm(f: AssemblyContext => Unit)(implicit ctx: AsmDocumentContext): Unit = + def asm(f: AssemblyContext => Unit)(using ctx: AsmDocumentContext): Unit = val asmCtx: AssemblyContext = new AssemblyContext @@ -14,7 +14,7 @@ trait AsmDocSyntax: ctx .push(asmCtx.toFragment) - def group[A](s: String)(f: DefinitionGroupContext => A)(implicit ctx: AsmDocumentContext): Unit = + def group[A](s: String)(f: DefinitionGroupContext => A)(using ctx: AsmDocumentContext): Unit = val g: DefinitionGroupContext = new DefinitionGroupContext @@ -23,17 +23,17 @@ trait AsmDocSyntax: ctx .push(g.toGroup(s)) - def enumAsm[A: EnumAsm: Mapping](implicit ctx: AsmDocumentContext): Unit = + def enumAsm[A: EnumAsm: Mapping](using ctx: AsmDocumentContext): Unit = val _ = implicitly[EnumAsm[A]] // TODO unused mapping - def bitField[A: BitField: Mapping](implicit ctx: AsmDocumentContext): Unit = + def bitField[A: BitField: Mapping](using ctx: AsmDocumentContext): Unit = val _ = implicitly[BitField[A]] // TODO unused mapping - def mapping[A](implicit ctx: AsmDocumentContext, ev: Mapping[A]): Unit = + def mapping[A](using ctx: AsmDocumentContext, ev: Mapping[A]): Unit = val xs = ev.all .map(x => ev.label(x) -> ev.value(x)) diff --git a/src/main/scala/com/htmlism/mos6502/dsl/syntax/AsmSyntax.scala b/src/main/scala/com/htmlism/mos6502/dsl/syntax/AsmSyntax.scala index 1243acc..1dd907d 100644 --- a/src/main/scala/com/htmlism/mos6502/dsl/syntax/AsmSyntax.scala +++ b/src/main/scala/com/htmlism/mos6502/dsl/syntax/AsmSyntax.scala @@ -4,7 +4,7 @@ package syntax import com.htmlism.mos6502.model._ trait AsmSyntax: - def label(s: String)(implicit ctx: AssemblyContext): Unit = + def label(s: String)(using ctx: AssemblyContext): Unit = ctx .label(s) @@ -18,7 +18,7 @@ trait AsmSyntax: Subroutine(s, ctx.toFragment, ctx.getJumps) - def jump(s: Subroutine)(implicit ctx: AssemblyContext): Unit = + def jump(s: Subroutine)(using ctx: AssemblyContext): Unit = ctx .addJump(s) diff --git a/src/main/scala/com/htmlism/mos6502/dsl/syntax/DefinitionGroupSyntax.scala b/src/main/scala/com/htmlism/mos6502/dsl/syntax/DefinitionGroupSyntax.scala index dae7754..c3ab3ba 100644 --- a/src/main/scala/com/htmlism/mos6502/dsl/syntax/DefinitionGroupSyntax.scala +++ b/src/main/scala/com/htmlism/mos6502/dsl/syntax/DefinitionGroupSyntax.scala @@ -2,7 +2,7 @@ package com.htmlism.mos6502.dsl package syntax trait DefinitionGroupSyntax: - def define[A <: Address: DefinitionValue](name: String, x: A)(implicit ctx: DefinitionGroupContext): Definition[A] = + def define[A <: Address: DefinitionValue](name: String, x: A)(using ctx: DefinitionGroupContext): Definition[A] = val definition = Definition(name, x) @@ -11,7 +11,7 @@ trait DefinitionGroupSyntax: definition - def constant(name: String, x: Int)(implicit ctx: DefinitionGroupContext): Definition[Int] = + def constant(name: String, x: Int)(using ctx: DefinitionGroupContext): Definition[Int] = val definition = Definition(name, x)