aboutsummaryrefslogblamecommitdiff
path: root/tests/pos/Fileish.scala
blob: d226bb0bdeeebb65264bf6545ae6d1e02b764b2e (plain) (tree)




















































                                                                                                                   
// Inspired by the original Fileish,
// testing combinations of lazy and non-lazy vals for their treatment in constructors
package dotty.tools
package io

import java.io.{ InputStream }
import java.util.jar.JarEntry
import language.postfixOps

/** A common interface for File-based things and Stream-based things.
 *  (In particular, io.File and JarEntry.)
 */
class Fileish(val path: Path, val input: () => InputStream) extends Streamable.Chars {
  def inputStream() = input()

  def parent       = path.parent
  def name         = path.name
  def isSourceFile = path.hasExtension("java", "scala")

  private lazy val pkgLines = lines() collect { case x if x startsWith "package " => x stripPrefix "package" trim }
  lazy val pkgFromPath      = parent.path.replaceAll("""[/\\]""", ".")
  lazy val pkgFromSource    = pkgLines map (_ stripSuffix ";") mkString "."

  override def toString = path.path
}
class Fileish2(val path: Path, val input: () => InputStream) extends Streamable.Chars {
  def inputStream() = input()

  def parent       = path.parent
  def name         = path.name
  def isSourceFile = path.hasExtension("java", "scala")

  private val pkgLines = lines() collect { case x if x startsWith "package " => x stripPrefix "package" trim }
  lazy val pkgFromPath      = parent.path.replaceAll("""[/\\]""", ".")
  lazy val pkgFromSource    = pkgLines map (_ stripSuffix ";") mkString "."

  override def toString = path.path
}

class Fileish3(val path: Path, val input: () => InputStream) extends Streamable.Chars {
  def inputStream() = input()

  def parent       = path.parent
  def name         = path.name
  def isSourceFile = path.hasExtension("java", "scala")

  private val pkgLines = lines() collect { case x if x startsWith "package " => x stripPrefix "package" trim }
  private val pkgFromPath      = parent.path.replaceAll("""[/\\]""", ".")
  private val pkgFromSource    = pkgLines map (_ stripSuffix ";") mkString "."

  override def toString = path.path
}