diff options
-rw-r--r-- | src/compiler/scala/tools/nsc/dependencies/Changes.scala | 4 | ||||
-rw-r--r-- | test/files/buildmanager/infer/A.scala | 16 | ||||
-rw-r--r-- | test/files/buildmanager/infer/infer.check | 6 | ||||
-rw-r--r-- | test/files/buildmanager/infer/infer.test | 2 |
4 files changed, 27 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/dependencies/Changes.scala b/src/compiler/scala/tools/nsc/dependencies/Changes.scala index 5d261c67a2..c5669d6214 100644 --- a/src/compiler/scala/tools/nsc/dependencies/Changes.scala +++ b/src/compiler/scala/tools/nsc/dependencies/Changes.scala @@ -75,7 +75,9 @@ abstract class Changes { case (ConstantType(value1), ConstantType(value2)) => value1 == value2 case (TypeRef(pre1, sym1, args1), TypeRef(pre2, sym2, args2)) => - sameType(pre1, pre2) && sameSymbol(sym1, sym2) && + sameType(pre1, pre2) && + (sameSymbol(sym1, sym2) || + ( sym1.isType && sym2.isType && sameType(sym1.info, sym2.info))) && (sym1.variance == sym2.variance) && ((tp1.isHigherKinded && tp2.isHigherKinded && tp1.normalize =:= tp2.normalize) || sameTypes(args1, args2)) diff --git a/test/files/buildmanager/infer/A.scala b/test/files/buildmanager/infer/A.scala new file mode 100644 index 0000000000..5e0e268122 --- /dev/null +++ b/test/files/buildmanager/infer/A.scala @@ -0,0 +1,16 @@ +class Foo(flag: Boolean) { + val classpath = + if (flag) + new AClasspath + else + new BClasspath +} + +class AClasspath extends MergedClasspath[A] + +class BClasspath extends MergedClasspath[B] + +abstract class MergedClasspath[T] + +class A +class B diff --git a/test/files/buildmanager/infer/infer.check b/test/files/buildmanager/infer/infer.check new file mode 100644 index 0000000000..1f736977ff --- /dev/null +++ b/test/files/buildmanager/infer/infer.check @@ -0,0 +1,6 @@ +builder > A.scala +compiling Set(A.scala) +Changes: Map() +builder > A.scala +compiling Set(A.scala) +Changes: Map(class A -> List(), class AClasspath -> List(), class B -> List(), class BClasspath -> List(), class Foo -> List(), class MergedClasspath -> List()) diff --git a/test/files/buildmanager/infer/infer.test b/test/files/buildmanager/infer/infer.test new file mode 100644 index 0000000000..392e0d365f --- /dev/null +++ b/test/files/buildmanager/infer/infer.test @@ -0,0 +1,2 @@ +>>compile A.scala +>>compile A.scala |