builder > A.scala B.scala compiling Set(A.scala, B.scala) Changes: Map() builder > A.scala compiling Set(A.scala) Changes: Map(class A -> List(Changed(Class(A))[ tparams: List((type T,type T))], Changed(Definition(A.))[constructor A changed from ()A[T] to ()A[T] flags: ])) invalidate B.scala because it references changed class [Changed(Class(A))[ tparams: List((type T,type T))]] compiling Set(B.scala) B.scala:2: error: type mismatch; found : A[Int] required: A[Any] Note: Int <: Any, but class A is invariant in type T. You may wish to define T as +T instead. (SLS 4.5) val a: A[Any] = new A[Int] ^