diff --git a/compiler/src/dotty/tools/dotc/tastyreflect/KernelImpl.scala b/compiler/src/dotty/tools/dotc/tastyreflect/KernelImpl.scala index 1db12eece0df..6201cc9496f1 100644 --- a/compiler/src/dotty/tools/dotc/tastyreflect/KernelImpl.scala +++ b/compiler/src/dotty/tools/dotc/tastyreflect/KernelImpl.scala @@ -1670,7 +1670,7 @@ class KernelImpl(val rootContext: core.Contexts.Context, val rootPosition: util. type NoSymbol = core.Symbols.NoSymbol.type - def matchNoSymbol(symbol: Symbol)(implicit ctx: Context): Boolean = symbol ne core.Symbols.NoSymbol + def matchNoSymbol(symbol: Symbol)(implicit ctx: Context): Boolean = symbol eq core.Symbols.NoSymbol // // FLAGS diff --git a/tests/run-macros/no-symbol/1.scala b/tests/run-macros/no-symbol/1.scala new file mode 100644 index 000000000000..e6bf19a7f7b1 --- /dev/null +++ b/tests/run-macros/no-symbol/1.scala @@ -0,0 +1,19 @@ +import scala.quoted._ +import scala.deriving._ + +case class Foo(i: Int) +case class Box[A](x: A) + +object Macro { + inline def foo[T](implicit inline t: Type[T]): String = + ${ fooImpl } + + def fooImpl[T](implicit t: Type[T], q: QuoteContext): Expr[String] = { + import q.tasty._ + t.unseal.symbol match { + case IsClassDefSymbol(self) => '{ "symbol" } + case NoSymbol() => '{ "no symbol" } + case _ => '{ "match error" } + } + } +} diff --git a/tests/run-macros/no-symbol/2.scala b/tests/run-macros/no-symbol/2.scala new file mode 100644 index 000000000000..0e9357d2cc20 --- /dev/null +++ b/tests/run-macros/no-symbol/2.scala @@ -0,0 +1,6 @@ +object Test { + def main(args: Array[String]): Unit = { + assert(Macro.foo[Foo] == "symbol") + assert(Macro.foo[Box] == "no symbol") + } +}