Skip to content

Commit

Permalink
Fix #18211: Add regression test.
Browse files Browse the repository at this point in the history
This is also fixed by the parent commit.
  • Loading branch information
sjrd committed Aug 30, 2023
1 parent ad29ce8 commit 1036c83
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions tests/pos/i18211.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import scala.compiletime.ops.int.*

type AnyInt[A <: Int] <: Int = A match {
case _ => A
}

type IndexOf[A, T <: Tuple] <: Int = T match {
case EmptyTuple => -1
case A *: t => 0
case _ *: t =>
IndexOf[A, t] match {
case -1 => -1
case AnyInt[a] => S[a]
}
}

type Indexes[A, T <: Tuple]
object Indexes {
given of[A, T <: Tuple](using IndexOf[A, T] >= 0 =:= true)(using
index: ValueOf[IndexOf[A, T]],
next: Indexes[A, Tuple.Drop[T, S[IndexOf[A, T]]]]
): Indexes[A, T] = ???

given empty[A, T <: Tuple](using IndexOf[A, T] =:= -1): Indexes[A, T] = ???
}

class GetAll[A]:
def apply[T <: Tuple](t: T)(using indexes: Indexes[A, T]): List[A] = ???

def getAll[A]: GetAll[A] = new GetAll[A]

def test =
// the code here is trying to get all values from a tuple that has type [X] as a list

// this works if there are only two strings in the tuple
getAll[String](("str1", 1, "str2", false))

//but this not compiles if there are more than two strings in the tuple
getAll[String](("str1", 1, "str2", false, "str3"))

0 comments on commit 1036c83

Please sign in to comment.