blob: 61fab1d951894421e91c9420e8dbd5188b1c9fad (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package magnolia.examples
import language.experimental.macros
import magnolia._
trait TypeNameInfo[T] { def name: TypeName }
object TypeNameInfo {
type Typeclass[T] = TypeNameInfo[T]
def combine[T](ctx: CaseClass[TypeNameInfo, T]): TypeNameInfo[T] =
new TypeNameInfo[T] { def name: TypeName = ctx.typeName }
def dispatch[T](ctx: SealedTrait[TypeNameInfo, T]): TypeNameInfo[T] =
new TypeNameInfo[T] { def name: TypeName = ctx.typeName }
implicit def gen[T]: TypeNameInfo[T] = macro Magnolia.gen[T]
}
|