builder > A.scala B.scala C.scala D.scala
compiling Set(A.scala, B.scala, C.scala, D.scala)
Changes: Map()
builder > A.scala
compiling Set(A.scala)
Changes: Map(trait A -> List(Changed(Class(A))[ tparams: List()]))
invalidate B.scala because parents have changed [Changed(Class(A))[ tparams: List()]]
invalidate C.scala because parents have changed [Changed(Class(A))[ tparams: List()]]
invalidate D.scala because it references changed class [Changed(Class(A))[ tparams: List()]]
compiling Set(B.scala, C.scala, D.scala)
B.scala:1: error: A does not take type parameters
trait B[T] extends A[T]
                   ^
C.scala:2: error: A does not take type parameters
	new A[Int] {}
            ^
D.scala:2: error: A does not take type parameters
	def x[T](a: A[T]) = a
                    ^
