diff options
7 files changed, 33 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/dependencies/Changes.scala b/src/compiler/scala/tools/nsc/dependencies/Changes.scala index ddab003752..a1250dc40f 100644 --- a/src/compiler/scala/tools/nsc/dependencies/Changes.scala +++ b/src/compiler/scala/tools/nsc/dependencies/Changes.scala @@ -101,7 +101,7 @@ abstract class Changes { case (mt1 @ MethodType(params1, res1), mt2 @ MethodType(params2, res2)) => // new dependent types: probably fix this, use substSym as done for PolyType (sameTypes(tp1.paramTypes, tp2.paramTypes) && - (tp1.params corresponds tp2.params)((t1, t2) => sameSymbol(t1, t2) && sameFlags(t1, t2)) && // @PP: corresponds + (tp1.params corresponds tp2.params)((t1, t2) => sameSymbol(t1, t2) && sameFlags(t1, t2)) && sameType(res1, res2) && mt1.isImplicit == mt2.isImplicit) diff --git a/src/compiler/scala/tools/nsc/dependencies/DependencyAnalysis.scala b/src/compiler/scala/tools/nsc/dependencies/DependencyAnalysis.scala index 761b9dac3c..008fc73a53 100644 --- a/src/compiler/scala/tools/nsc/dependencies/DependencyAnalysis.scala +++ b/src/compiler/scala/tools/nsc/dependencies/DependencyAnalysis.scala @@ -167,7 +167,8 @@ trait DependencyAnalysis extends SubComponent with Files { } tree match { - case cdef: ClassDef if !cdef.symbol.hasFlag(Flags.PACKAGE) => + case cdef: ClassDef if !cdef.symbol.hasFlag(Flags.PACKAGE) && + !cdef.symbol.isAnonymousFunction => buf += cdef.symbol atPhase(currentRun.erasurePhase.prev) { for (s <- cdef.symbol.info.decls) diff --git a/src/compiler/scala/tools/nsc/interactive/RefinedBuildManager.scala b/src/compiler/scala/tools/nsc/interactive/RefinedBuildManager.scala index 9d66564c18..ee103b8d33 100644 --- a/src/compiler/scala/tools/nsc/interactive/RefinedBuildManager.scala +++ b/src/compiler/scala/tools/nsc/interactive/RefinedBuildManager.scala @@ -131,9 +131,9 @@ class RefinedBuildManager(val settings: Settings) extends Changes with BuildMana // Deterministic behaviour required by partest val changesOf = new mutable.HashMap[Symbol, List[Change]] { override def toString: String = { - val syms = toList.sort(_._1.fullName < _._1.fullName) + val syms = toList.sortWith(_._1.fullName < _._1.fullName) val changesOrdered = syms.map(entry => { - val list = entry._2.sort(_.toString < _.toString) + val list = entry._2.sortWith(_.toString < _.toString) entry._1.toString + " -> " + list.mkString("List(", ", ", ")") }) changesOrdered.mkString("Map(", ", ", ")") diff --git a/test/files/buildmanager/freshnames/A.scala b/test/files/buildmanager/freshnames/A.scala new file mode 100644 index 0000000000..88ea44b3c7 --- /dev/null +++ b/test/files/buildmanager/freshnames/A.scala @@ -0,0 +1,16 @@ +abstract class A { + + var t: List[B] + + def foo(n: String): Option[B] = { + t.reverse find (_.names contains n) + } + + def bar(n: Int): Option[B] = { + t.reverse find (_.names contains n) + } +} + +//class A +case class B(names: List[String]) + diff --git a/test/files/buildmanager/freshnames/B.scala b/test/files/buildmanager/freshnames/B.scala new file mode 100644 index 0000000000..d700225c08 --- /dev/null +++ b/test/files/buildmanager/freshnames/B.scala @@ -0,0 +1,4 @@ +abstract class C extends A { + def test(n: Int) = bar(n) +} + diff --git a/test/files/buildmanager/freshnames/freshnames.check b/test/files/buildmanager/freshnames/freshnames.check new file mode 100644 index 0000000000..9f05fb8a36 --- /dev/null +++ b/test/files/buildmanager/freshnames/freshnames.check @@ -0,0 +1,6 @@ +builder > B.scala A.scala +compiling Set(A.scala, B.scala) +Changes: Map() +builder > A.scala +compiling Set(A.scala) +Changes: Map(class A -> List(), class B -> List(), object B -> List()) diff --git a/test/files/buildmanager/freshnames/freshnames.test b/test/files/buildmanager/freshnames/freshnames.test new file mode 100644 index 0000000000..20b20298f9 --- /dev/null +++ b/test/files/buildmanager/freshnames/freshnames.test @@ -0,0 +1,2 @@ +>>compile B.scala A.scala +>>compile A.scala |