public
Created

  • Download Gist
gistfile1.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
import scala.reflect.runtime.universe._
import scala.reflect.runtime.{currentMirror => cm}
 
trait Base {
def companion: MetaBase = {
val classSymbol = cm.classSymbol(getClass)
val moduleSymbol = classSymbol.companionSymbol.asModule
val moduleMirror = cm.reflectModule(moduleSymbol)
moduleMirror.instance.asInstanceOf[MetaBase]
}
}
 
trait MetaBase {
// stuff
}
 
object Test extends App {
class Foo extends Base
object Foo extends MetaBase
println(new Foo().companion)
}

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.