Skip to content

Instantly share code, notes, and snippets.

@travisbrown
Created September 9, 2013 14:26
Show Gist options
  • Save travisbrown/6496323 to your computer and use it in GitHub Desktop.
Save travisbrown/6496323 to your computer and use it in GitHub Desktop.
sealed trait Foo
case object X extends Foo
case class Y(i: Int) extends Foo
import scala.language.experimental.macros
import scala.reflect.macros.Context
object Example {
def childPositions[A] = macro childPositions_impl[A]
def childPositions_impl[A: c.WeakTypeTag](c: Context) = {
import c.universe._
weakTypeOf[A].typeSymbol.asClass.knownDirectSubclasses.toList.map(
_.asInstanceOf[scala.reflect.internal.Symbols#Symbol].pos
).foreach(println)
c.literalUnit
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment