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.

[Cherry-picked eb18e53][modified]
  • Loading branch information
WojciechMazur committed Jun 20, 2024
1 parent 76ae989 commit 6f194ed
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
1 change: 1 addition & 0 deletions compiler/test/dotc/pos-test-pickling.blacklist
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ i6505.scala
i15158.scala
i15155.scala
i15827.scala
i18211.scala

# Opaque type
i5720.scala
Expand Down
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 6f194ed

Please sign in to comment.