diff --git a/compiler/src/dotty/tools/dotc/transform/ReifyQuotes.scala b/compiler/src/dotty/tools/dotc/transform/ReifyQuotes.scala index b30b65f45001..e5dfb3b41446 100644 --- a/compiler/src/dotty/tools/dotc/transform/ReifyQuotes.scala +++ b/compiler/src/dotty/tools/dotc/transform/ReifyQuotes.scala @@ -559,6 +559,16 @@ class ReifyQuotes extends MacroTransformWithImplicits { val last = enteredSyms stats.foreach(markDef) mapOverTree(last) + case CaseDef(pat, guard, body) => + val last = enteredSyms + // mark all bindings + new TreeTraverser { + def traverse(tree: Tree)(implicit ctx: Context): Unit = { + markDef(tree) + traverseChildren(tree) + } + }.traverse(pat) + mapOverTree(last) case _: Import => tree case tree: DefDef if tree.symbol.is(Macro) && level == 0 => diff --git a/tests/neg/i4890.scala b/tests/neg/i4890.scala new file mode 100644 index 000000000000..2e44839b03ad --- /dev/null +++ b/tests/neg/i4890.scala @@ -0,0 +1,8 @@ +import scala.quoted._ + +object Test { + def toExpr(x: Option[String]): Expr[String] = x match { + case Some(s) => + '(s) // error + } +}