trait Bip extends Any trait Foo extends Any trait Bar extends AnyRef trait Quux object Test { def f(x: Bip) = 1 def g1(x: Foo with Bip) = f(x) def main(args: Array[String]): Unit = { f(new Bip with Foo { }) f(new Foo with Bip { }) g1(new Bip with Foo { }) g1(new Foo with Bip { }) } }