Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package util
- import util.DepTrait.{WithEvidence, WithoutEvidence}
- import shapeless.tag
- import shapeless.tag.@@
- object DepTrait {
- trait WithEvidence
- trait WithoutEvidence
- }
- object TestImplicits extends App {
- trait Dep {
- def t = "Test"
- }
- implicit val e = "Test"
- implicit def De(implicit a: String) = tag[WithEvidence][Dep](new Dep {override def t: String = a})
- implicit val Dep = tag[WithoutEvidence][Dep](new Dep {})
- class TestDependencyUser {
- def a(implicit a: Dep @@ WithEvidence) = {
- a.t
- }
- def b(implicit a: Dep @@ WithoutEvidence) = {
- a.t
- }
- }
- val test = new TestDependencyUser
- val s = test.a
- val d = test.b
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement