From b4b884e0f878c2da1f410d51977d36dacfcab536 Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Sat, 21 May 2011 17:45:18 +0000 Subject: Created a PlainDirectory subclass of PlainFile ... Created a PlainDirectory subclass of PlainFile so I can use polymorphism to optimize. No review. --- src/compiler/scala/tools/nsc/io/PlainFile.scala | 10 +++++++++- src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/compiler/scala/tools/nsc/io/PlainFile.scala b/src/compiler/scala/tools/nsc/io/PlainFile.scala index 21c4d95d7a..83b8cc32c4 100644 --- a/src/compiler/scala/tools/nsc/io/PlainFile.scala +++ b/src/compiler/scala/tools/nsc/io/PlainFile.scala @@ -16,7 +16,15 @@ object PlainFile { * by it. Otherwise, returns null. */ def fromPath(file: Path): PlainFile = - if (file.exists) new PlainFile(file) else null + if (file.isDirectory) new PlainDirectory(file.toDirectory) + else if (file.isFile) new PlainFile(file) + else null +} + +class PlainDirectory(givenPath: Directory) extends PlainFile(givenPath) { + override def isDirectory = true + override def iterator = givenPath.list filter (_.exists) map (x => new PlainFile(x)) + override def delete(): Unit = givenPath.deleteRecursively() } /** This class implements an abstract file backed by a File. diff --git a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala index e33491aa29..e03b74d7ab 100644 --- a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala +++ b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala @@ -396,7 +396,7 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers { case ExistentialType(_, res) => specializedTypeVars(res) case AnnotatedType(_, tp, _) => specializedTypeVars(tp) - case TypeBounds(hi, lo) => specializedTypeVars(hi) ++ specializedTypeVars(lo) // @I: it's (lo, hi) - swap them? + case TypeBounds(lo, hi) => specializedTypeVars(lo) ++ specializedTypeVars(hi) case _ => immutable.ListSet.empty[Symbol] } -- cgit v1.2.3