在 Scala 宏中检测大小写 class

Detect case class in scala macro

在一个被称为 scala (2.11) 宏的方法中,有没有办法以编程方式确定 Type 是否是 case class

我正在使用的方法的 API 归结为:

def typeIsCaseClass(c: Context)(targetType: c.universe.Type): Boolean = {
  // targetType "is case class?"
}

如果需要,我愿意改变 API。

这些符号通常包含所有有趣的信息:

def typeIsCaseClass(c: Context)(targetType: c.universe.Type): Boolean = {
  val sym = targetType.typeSymbol
  sym.isClass && sym.asClass.isCaseClass
}