Merge pull request #8115 from xuwei-k/settingAppend1Impl

This commit is contained in:
eugene yokota 2025-05-09 21:27:50 -07:00 committed by GitHub
commit e75cf2218b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 10 deletions

View File

@ -87,7 +87,7 @@ sealed abstract class SettingKey[A1]
${ TaskMacro.settingAssignMacroImpl('this, 'v) }
final inline def +=[A2](inline v: A2)(using inline ev: Append.Value[A1, A2]): Setting[A1] =
${ TaskMacro.settingAppend1Impl[A1, A2]('this, 'v) }
${ TaskMacro.settingAppend1Impl[A1, A2]('this, 'v, 'ev) }
final inline def append1[A2](v: Initialize[A2])(using
a: Append.Value[A1, A2]

View File

@ -142,7 +142,11 @@ object TaskMacro:
}
/** Implementation of += macro for settings. */
def settingAppend1Impl[A1: Type, A2: Type](rec: Expr[SettingKey[A1]], v: Expr[A2])(using
def settingAppend1Impl[A1: Type, A2: Type](
rec: Expr[SettingKey[A1]],
v: Expr[A2],
ev: Expr[Append.Value[A1, A2]]
)(using
qctx: Quotes,
): Expr[Setting[A1]] =
import qctx.reflect.*
@ -158,14 +162,10 @@ object TaskMacro:
case _ =>
report.errorAndAbort(s"Append.Value[${Type.show[A1]}, ${Type.show[Task[a]]}] missing")
case _ =>
Expr.summon[Append.Value[A1, A2]] match
case Some(ev) =>
val init = SettingMacro.settingMacroImpl[A2](v)
'{
$rec.append1[A2]($init)(using $ev)
}
case _ =>
report.errorAndAbort(s"Append.Value[${Type.show[A1]}, ${Type.show[A2]}] missing")
val init = SettingMacro.settingMacroImpl[A2](v)
'{
$rec.append1[A2]($init)(using $ev)
}
/*
private def transformMacroImpl[A](using qctx: Quotes)(init: Expr[A])(