summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-01-24 14:12:25 -0800
committerPaul Phillips <paulp@improving.org>2012-01-24 14:14:03 -0800
commit856d4e403c63c4ddb5d30f2cb7213e059eafb1e4 (patch)
tree4444a42ee3e2c004a9ec7c31ddcad4bd0af58ee2
parent05e302de53ff42bf2602b66efd97c9058e5e9fad (diff)
downloadscala-856d4e403c63c4ddb5d30f2cb7213e059eafb1e4.tar.gz
scala-856d4e403c63c4ddb5d30f2cb7213e059eafb1e4.tar.bz2
scala-856d4e403c63c4ddb5d30f2cb7213e059eafb1e4.zip
Created NoAbstractFile.
A very distinguished value in case one feels (as this one does) that null is disheartening and Option only marginally better.
-rw-r--r--src/compiler/scala/tools/nsc/io/MsilFile.scala4
-rw-r--r--src/compiler/scala/tools/nsc/io/NoAbstractFile.scala30
2 files changed, 33 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/io/MsilFile.scala b/src/compiler/scala/tools/nsc/io/MsilFile.scala
index 69db23923d..d970d0e9c9 100644
--- a/src/compiler/scala/tools/nsc/io/MsilFile.scala
+++ b/src/compiler/scala/tools/nsc/io/MsilFile.scala
@@ -13,4 +13,6 @@ import ch.epfl.lamp.compiler.msil.{ Type => MsilType, _ }
* uniformly, as AbstractFiles.
*/
class MsilFile(val msilType: MsilType) extends VirtualFile(msilType.FullName, msilType.Namespace) {
-} \ No newline at end of file
+}
+
+object NoMsilFile extends MsilFile(null) { }
diff --git a/src/compiler/scala/tools/nsc/io/NoAbstractFile.scala b/src/compiler/scala/tools/nsc/io/NoAbstractFile.scala
new file mode 100644
index 0000000000..36cf42d7ec
--- /dev/null
+++ b/src/compiler/scala/tools/nsc/io/NoAbstractFile.scala
@@ -0,0 +1,30 @@
+/* NSC -- new Scala compiler
+ * Copyright 2005-2011 LAMP/EPFL
+ * @author Paul Phillips
+ */
+
+package scala.tools.nsc
+package io
+
+import java.io.InputStream
+
+/** A distinguished object so you can avoid both null
+ * and Option.
+ */
+object NoAbstractFile extends AbstractFile {
+ def absolute: AbstractFile = this
+ def container: AbstractFile = this
+ def create(): Unit = ???
+ def delete(): Unit = ???
+ def file: JFile = null
+ def input: InputStream = null
+ def isDirectory: Boolean = false
+ def iterator: Iterator[AbstractFile] = Iterator.empty
+ def lastModified: Long = 0L
+ def lookupName(name: String, directory: Boolean): AbstractFile = null
+ def lookupNameUnchecked(name: String, directory: Boolean): AbstractFile = null
+ def name: String = ""
+ def output: java.io.OutputStream = null
+ def path: String = ""
+ override def toByteArray = Array[Byte]()
+}