Skip to content

Commit 206f276

Browse files
nicolasstuckiKordyjan
authored andcommitted
Add regression tests
Closes #18228 [Cherry-picked 96c511e]
1 parent 93cdd23 commit 206f276

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

Diff for: tests/neg-macros/i18228.scala

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import scala.quoted.*
2+
3+
case class QueryMeta[T](map: Map[String, String])
4+
5+
object QueryMeta:
6+
given [T]: FromExpr[QueryMeta[T]] = new FromExpr[QueryMeta[T]]:
7+
def unapply(expr: Expr[QueryMeta[T]])(using q: Quotes): Option[QueryMeta[T]] =
8+
import q.reflect.*
9+
expr match
10+
case '{ QueryMeta/*[T]*/(${ map }: Map[String, String]) } => // error: Reference to T within quotes requires a given scala.quoted.Type[T] in scope.
11+
map.value.map(QueryMeta[T].apply)
12+
case _ =>
13+
None

Diff for: tests/pos-macros/i18228.scala

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import scala.quoted.*
2+
3+
case class QueryMeta[T](map: Map[String, String])
4+
5+
object QueryMeta:
6+
given [T: Type]: FromExpr[QueryMeta[T]] = new FromExpr[QueryMeta[T]]:
7+
def unapply(expr: Expr[QueryMeta[T]])(using q: Quotes): Option[QueryMeta[T]] =
8+
import q.reflect.*
9+
expr match
10+
case '{ QueryMeta[t](${ map }: Map[String, String]) } =>
11+
map.value.map(QueryMeta[T].apply)
12+
case _ =>
13+
None

Diff for: tests/pos-macros/i18228b.scala

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import scala.quoted.*
2+
3+
case class QueryMeta[T](map: Map[String, String])
4+
5+
object QueryMeta:
6+
given [T]: FromExpr[QueryMeta[T]] = new FromExpr[QueryMeta[T]]:
7+
def unapply(expr: Expr[QueryMeta[T]])(using q: Quotes): Option[QueryMeta[T]] =
8+
import q.reflect.*
9+
expr match
10+
case '{ QueryMeta[t](${ map }: Map[String, String]) } =>
11+
map.value.map(QueryMeta[T].apply)
12+
case _ =>
13+
None

0 commit comments

Comments
 (0)