mirror of https://github.com/sbt/sbt.git
valStart to change synthetic variable names
This commit is contained in:
parent
73c7236c2c
commit
d802c2ba04
|
|
@ -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}"
|
||||
|
|
|
|||
|
|
@ -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 =
|
||||
|
|
|
|||
|
|
@ -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 =
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in New Issue