object Test { def main(args: Array[String]): Unit = { def foo = {println("foo"); 0} lazyDep(X)(foo) } trait T { type U } object X extends T { type U = Int } def lazyDep(t: T)(us: t.U*): Unit = { List(us: _*) } }