Skip to content

Commit 45ef446

Browse files
Merge pull request #4893 from dotty-staging/fix-#4890
Fix #4890: Mark level of pattern bindings
2 parents d8889ec + e09b1b8 commit 45ef446

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

compiler/src/dotty/tools/dotc/transform/ReifyQuotes.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -559,6 +559,16 @@ class ReifyQuotes extends MacroTransformWithImplicits {
559559
val last = enteredSyms
560560
stats.foreach(markDef)
561561
mapOverTree(last)
562+
case CaseDef(pat, guard, body) =>
563+
val last = enteredSyms
564+
// mark all bindings
565+
new TreeTraverser {
566+
def traverse(tree: Tree)(implicit ctx: Context): Unit = {
567+
markDef(tree)
568+
traverseChildren(tree)
569+
}
570+
}.traverse(pat)
571+
mapOverTree(last)
562572
case _: Import =>
563573
tree
564574
case tree: DefDef if tree.symbol.is(Macro) && level == 0 =>

tests/neg/i4890.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import scala.quoted._
2+
3+
object Test {
4+
def toExpr(x: Option[String]): Expr[String] = x match {
5+
case Some(s) =>
6+
'(s) // error
7+
}
8+
}

0 commit comments

Comments
 (0)