From cbc065f0ffa1c06d4da806a1faaba7eb83e8186d Mon Sep 17 00:00:00 2001 From: xuwei-k <6b656e6a69@gmail.com> Date: Thu, 13 Mar 2025 08:05:05 +0900 Subject: [PATCH] remove scala 3 issues 21779 workaround --- .../internal/util/appmacro/ContextUtil.scala | 28 ++----------------- 1 file changed, 2 insertions(+), 26 deletions(-) diff --git a/core-macros/src/main/scala/sbt/internal/util/appmacro/ContextUtil.scala b/core-macros/src/main/scala/sbt/internal/util/appmacro/ContextUtil.scala index 99495f45e..4bcd3e0a4 100644 --- a/core-macros/src/main/scala/sbt/internal/util/appmacro/ContextUtil.scala +++ b/core-macros/src/main/scala/sbt/internal/util/appmacro/ContextUtil.scala @@ -41,40 +41,16 @@ trait ContextUtil[C <: Quotes & scala.Singleton](val valStart: Int): def typed[A: Type](value: Term): Term = Typed(value, TypeTree.of[A]) - /** - * [[https://github.com/sbt/sbt/issues/7768]] - * [[https://github.com/scala/scala3/issues/21779]] - */ - private def exprOfTupleFromSeq(seq: Seq[Expr[Any]])(using q: Quotes): Expr[scala.Tuple] = { - def tupleTypeFromSeq(seq: Seq[Expr[Any]]): q.reflect.TypeRepr = { - import q.reflect.* - val consRef = Symbol.classSymbol("scala.*:").typeRef - seq.foldRight(TypeRepr.of[EmptyTuple]) { (expr, ts) => - AppliedType(consRef, expr.asTerm.tpe :: ts :: Nil) - } - } - - if (seq.sizeIs <= 22) { - Expr.ofTupleFromSeq(seq) - } else { - val tupleTpe = tupleTypeFromSeq(seq) - tupleTpe.asType match { - case '[tpe] => - '{ Tuple.fromIArray(IArray(${ Varargs(seq) }*)).asInstanceOf[tpe & scala.Tuple] } - } - } - } - def makeTuple(inputs: List[Input]): BuilderResult = new BuilderResult: override lazy val inputTupleTypeRepr: TypeRepr = tupleTypeRepr(inputs.map(_.tpe)) override def tupleExpr: Expr[Tuple] = - exprOfTupleFromSeq(inputs.map(_.term.asExpr)) + Expr.ofTupleFromSeq(inputs.map(_.term.asExpr)) override def cacheInputTupleTypeRepr: TypeRepr = tupleTypeRepr(inputs.withFilter(_.isCacheInput).map(_.tpe)) override def cacheInputExpr(tupleTerm: Term): Expr[Tuple] = - exprOfTupleFromSeq(inputs.zipWithIndex.flatMap { (input, idx) => + Expr.ofTupleFromSeq(inputs.zipWithIndex.flatMap { (input, idx) => if input.tags.nonEmpty then input.tpe.asType match case '[a] =>