valStart to change synthetic variable names

This commit is contained in:
Eugene Yokota 2022-09-19 14:12:13 -04:00
parent 73c7236c2c
commit d802c2ba04
5 changed files with 23 additions and 23 deletions

View File

@ -6,11 +6,11 @@ import scala.quoted.*
import scala.reflect.TypeTest
import scala.collection.mutable
trait ContextUtil[C <: Quotes & scala.Singleton](val qctx: C):
trait ContextUtil[C <: Quotes & scala.Singleton](val qctx: C, val valStart: Int):
import qctx.reflect.*
given qctx.type = qctx
private var counter: Int = -1
private var counter: Int = valStart - 1
def freshName(prefix: String): String =
counter = counter + 1
s"$$${prefix}${counter}"

View File

@ -15,9 +15,9 @@ import sbt.util.Applicative
import sbt.internal.util.Types.Compose
import scala.quoted.*
class InputInitConvert[C <: Quotes & scala.Singleton](override val qctx: C)
class InputInitConvert[C <: Quotes & scala.Singleton](override val qctx: C, valStart: Int)
extends Convert[C](qctx)
with ContextUtil[C](qctx):
with ContextUtil[C](qctx, valStart):
import qctx.reflect.*
override def convert[A: Type](nme: String, in: Term): Converted =
@ -33,9 +33,9 @@ class InputInitConvert[C <: Quotes & scala.Singleton](override val qctx: C)
end InputInitConvert
/** Converts an input `Term` of type `Parser[A]` or `State => Parser[A]` into a `Term` of type `State => Parser[A]`. */
class ParserConvert[C <: Quotes & scala.Singleton](override val qctx: C)
class ParserConvert[C <: Quotes & scala.Singleton](override val qctx: C, valStart: Int)
extends Convert[C](qctx)
with ContextUtil[C](qctx):
with ContextUtil[C](qctx, valStart):
import qctx.reflect.*
override def convert[A: Type](nme: String, in: Term): Converted =
@ -51,9 +51,9 @@ class ParserConvert[C <: Quotes & scala.Singleton](override val qctx: C)
end ParserConvert
/** Convert instance for plain `Task`s not within the settings system. */
class TaskConvert[C <: Quotes & scala.Singleton](override val qctx: C)
class TaskConvert[C <: Quotes & scala.Singleton](override val qctx: C, valStart: Int)
extends Convert[C](qctx)
with ContextUtil[C](qctx):
with ContextUtil[C](qctx, valStart):
import qctx.reflect.*
override def convert[A: Type](nme: String, in: Term): Converted =
if nme == InputWrapper.WrapTaskName then Converted.success(in)
@ -67,9 +67,9 @@ end TaskConvert
* Converts an input `Term` of type `Initialize[A]`, `Initialize[Task[A]]`, or `Task[A]` into
* a `Term` of type `Initialize[Task[A]]`.
*/
class FullConvert[C <: Quotes & scala.Singleton](override val qctx: C)
class FullConvert[C <: Quotes & scala.Singleton](override val qctx: C, valStart: Int)
extends Convert[C](qctx)
with ContextUtil[C](qctx):
with ContextUtil[C](qctx, valStart):
import qctx.reflect.*
override def convert[A: Type](nme: String, in: Term): Converted =
@ -102,9 +102,9 @@ end FullConvert
* Converts an input `Term` of type `State => Parser[A]` or `Initialize[State => Parser[A]]`
* into a `Term` of type `Initialize[State => Parser[A]]`.
*/
class InitParserConvert[C <: Quotes & scala.Singleton](override val qctx: C)
class InitParserConvert[C <: Quotes & scala.Singleton](override val qctx: C, valStart: Int)
extends Convert[C](qctx)
with ContextUtil[C](qctx):
with ContextUtil[C](qctx, valStart):
import qctx.reflect.*
override def convert[A: Type](nme: String, in: Term): Converted =

View File

@ -42,7 +42,7 @@ object InputTaskMacro:
)(using qctx: Quotes): Expr[Def.Initialize[F1[A1]]] =
import qctx.reflect.*
import InputWrapper.*
val convert1 = new InputInitConvert(qctx)
val convert1 = new InputInitConvert(qctx, 0)
import convert1.Converted
def wrapInitTask[A2: Type](tree: Term): Term =
@ -99,13 +99,13 @@ object InputTaskMacro:
f: Expr[A1] => Expr[F1[A1]]
)(using qctx: Quotes): Expr[State => Parser[F1[A1]]] =
import qctx.reflect.*
val convert1 = new ParserConvert(qctx)
val convert1 = new ParserConvert(qctx, 1000)
val inner: convert1.TermTransform[F1] = (in: Term) => f(in.asExprOf[A1]).asTerm
convert1.contMapN[A1, ParserInstance.F1, F1](tree, convert1.appExpr, inner)
private[this] def iTaskMacro[A1: Type](tree: Expr[A1])(using qctx: Quotes): Expr[Task[A1]] =
import qctx.reflect.*
val convert1 = new TaskConvert(qctx)
val convert1 = new TaskConvert(qctx, 2000)
convert1.contMapN[A1, Task, Id](tree, convert1.appExpr)
/*
@ -214,7 +214,7 @@ object InputTaskMacro:
qctx: Quotes
): Expr[Def.Initialize[InputTask[A2]]] =
import qctx.reflect.*
val convert1 = new FullConvert(qctx) // 1000
val convert1 = new FullConvert(qctx, 1000)
import convert1.Converted
def mkInputTask(params: List[ValDef], body: Term): Expr[Def.Initialize[InputTask[A2]]] =
val lambdaTpe =

View File

@ -20,9 +20,9 @@ import sbt.util.Applicative
import scala.quoted.*
import sbt.internal.util.complete.Parser
class InitializeConvert[C <: Quotes & scala.Singleton](override val qctx: C)
class InitializeConvert[C <: Quotes & scala.Singleton](override val qctx: C, valStart: Int)
extends Convert[C](qctx)
with ContextUtil[C](qctx):
with ContextUtil[C](qctx, valStart):
import qctx.reflect.*
override def convert[A: Type](nme: String, in: Term): Converted =
@ -46,17 +46,17 @@ object SettingMacro:
import ContSyntax.*
def settingMacroImpl[A1: Type](in: Expr[A1])(using qctx: Quotes): Expr[Initialize[A1]] =
val convert1 = InitializeConvert(qctx)
val convert1 = InitializeConvert(qctx, 0)
convert1.contMapN[A1, F, Id](in, convert1.appExpr)
def settingDynImpl[A1: Type](in: Expr[Initialize[A1]])(using qctx: Quotes): Expr[Initialize[A1]] =
val convert1 = InitializeConvert(qctx)
val convert1 = InitializeConvert(qctx, 0)
convert1.contFlatMap[A1, F, Id](in, convert1.appExpr)
def inputMacroImpl[A1: Type](in: Expr[State => Parser[A1]])(using
qctx: Quotes
): Expr[ParserGen[A1]] =
val convert1 = InitializeConvert(qctx)
val convert1 = InitializeConvert(qctx, 0)
val init1 = convert1.contMapN[State => Parser[A1], F, Id](in, convert1.appExpr)
'{ ParserGen[A1]($init1) }
end SettingMacro

View File

@ -56,7 +56,7 @@ object TaskMacro:
t match
case '{ if ($cond) then $thenp else $elsep } => taskIfImpl[A1](t)
case _ =>
val convert1 = new FullConvert(qctx)
val convert1 = new FullConvert(qctx, 0)
convert1.contMapN[A1, F, Id](t, convert1.appExpr)
def taskIfImpl[A1: Type](expr: Expr[A1])(using qctx: Quotes): Expr[Initialize[Task[A1]]] =
@ -76,7 +76,7 @@ object TaskMacro:
def taskDynMacroImpl[A1: Type](
t: Expr[Initialize[Task[A1]]]
)(using qctx: Quotes): Expr[Initialize[Task[A1]]] =
val convert1 = new FullConvert(qctx)
val convert1 = new FullConvert(qctx, 0)
convert1.contFlatMap[A1, F, Id](t, convert1.appExpr)
/*