2

I have a Scala app that compiles and runs fine with sbt 0.13.9 but with the same options it won't compile in ScalaIDE (Eclipse). I am using Scala 2.11.7 and jdk8_60 with the options -Ydelambdafy:method -Ybackend:GenBCode. If I remove the options it will compile. This is not really urgent for me but if it is a bug it would be nice to find someone who could figure out what is wrong so it could get recorded.

Thanks.

object TestDataApp extends App {

  val outputDir = "src/main/scala"

  def writeFile(fileName: String, contents: String) {
    import java.nio.file._
    val p  = Paths.get(outputDir, fileName)
    Files.write(p, contents.getBytes)
  }

  def createLines(strs: IndexedSeq[String]) = {
    strs.mkString("\n")
  }

  def createUsersString() = {
    val nums = 1 to 50000            
    val strs = nums.map("ta_" + _.toString)
    createLines("userId" +: strs)
  }

  def createActorsString(actors: List[String]) = {

    def createActorString(actor: String) = {
      val searches = actor.scanLeft("")((a,b) => a + b).tail
      createLines(searches)
    }

    // accumulater acc is a StringBuilder - term is header
    val initSb = new StringBuilder("term\n" + createActorString(actors.head))
    val sb = actors.tail.foldLeft(initSb)((acc, e) => acc.append("\n").append(createActorString(e)))
    sb.toString()
  }

  def readActorList(fileName: String): List[String] = {
    import scala.io.{Source, Codec}
    import java.io.InputStream
    val stream = getClass.getResourceAsStream(fileName)
    val lines = Source.fromInputStream(stream)(Codec.UTF8).getLines
    lines.map(line => line.split("\\t").head).toList
  }

  // write the files
  println("Writing files...")
  writeFile("userId.txt", createUsersString())
  val actors = readActorList("input.txt")
  writeFile("term.txt", createActorsString(actors))
  println("Done.")
}

The input.txt file is tab delimited and looks like this.

Alex Colls  124
Larry Jacobs    65
Graham Falk 64
Pere Clos   60
Hunter Parrish  41

Jvm targets of 1.6 and 1.7 and 1.8 will not work. Sbt does with these options: scalacOptions ++= Seq("-deprecation", "-feature", "-Ydelambdafy:method", "-Ybackend:GenBCode") Here are the errors from the IDE.

Description Resource    Path    Location    Type
Couldn't create file for class TestDataApp$lambda$$readActorList$1 null TestDataApp.scala   /sc-test/src/main/scala line 3  Scala Problem

Couldn't create file for class TestDataApp$lambda$$sb$1 null    TestDataApp.scala   /sc-test/src/main/scala line 3  Scala Problem

Couldn't create file for class TestDataApp$lambda$$searches$1 null  TestDataApp.scala   /sc-test/src/main/scala line 3  Scala Problem

Couldn't create file for class TestDataApp$lambda$$strs$1 null  TestDataApp.scala   /sc-test/src/main/scala line 3  Scala Problem

Error in Scala compiler: assertion failed:    Precisely this override requires its invoker to hand out a non-null AbstractFile.      while compiling: C:\Users\erichardson\workspaces\scala\sc-test\src\main\scala\TestDataApp.scala         during phase: jvm      library version: version 2.11.7     compiler version: version 2.11.7   reconstructed args: -Ydelambdafy:method -deprecation -classpath C:\Users\erichardson\workspaces\scala\sc-test\bin;C:\Users\erichardson\eclipse-scala-ide-4.1.1\plugins\org.scala-lang.scala-reflect_2.11.7.v20150622-112736-1fbce4612c.jar;C:\Users\erichardson\eclipse-scala-ide-4.1.1\plugins\org.scala-lang.scala-actors_2.11.7.v20150622-112736-1fbce4612c.jar -Ybackend:GenBCode -javabootclasspath C:\Program Files\Java\jre1.8.0_60\lib\resources.jar;C:\Program Files\Java\jre1.8.0_60\lib\rt.jar;C:\Program Files\Java\jre1.8.0_60\lib\jsse.jar;C:\Program Files\Java\jre1.8.0_60\lib\jce.jar;C:\Program Files\Java\jre1.8.0_60\lib\charsets.jar;C:\Program Files\Java\jre1.8.0_60\lib\jfr.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\cldrdata.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\dnsns.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\jaccess.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\jfxrt.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\localedata.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\nashorn.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\sunec.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\sunmscapi.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\zipfs.jar -javaextdirs   -target:jvm-1.7 -bootclasspath C:\Users\erichardson\eclipse-scala-ide-4.1.1\plugins\org.scala-lang.scala-library_2.11.7.v20150622-112736-1fbce4612c.jar    last tree to typer: TypeTree(class String)        tree position: line 26 of C:\Users\erichardson\workspaces\scala\sc-test\src\main\scala\TestDataApp.scala             tree tpe: String               symbol: final class String in package lang    symbol definition: final class String extends Serializable with Comparable with CharSequence (a ClassSymbol)       symbol package: java.lang        symbol owners: class String            call site: constructor TestDataApp$delayedInit$body in class TestDataApp$delayedInit$body in package <empty>  == Source file context for tree position ==      23      24     def createActorString(actor: String) = {     25       val searches = actor.scanLeft("")((a,b) => a + b).tail     26       createLines(searches)     27     }     28      29     // accumulater acc is a StringBuilder - term is header   sc-test     Unknown Scala Problem

SBT builder crashed while compiling. The error message is 'assertion failed:    Precisely this override requires its invoker to hand out a non-null AbstractFile.      while compiling: C:\Users\erichardson\workspaces\scala\sc-test\src\main\scala\TestDataApp.scala         during phase: jvm      library version: version 2.11.7     compiler version: version 2.11.7   reconstructed args: -Ydelambdafy:method -deprecation -classpath C:\Users\erichardson\workspaces\scala\sc-test\bin;C:\Users\erichardson\eclipse-scala-ide-4.1.1\plugins\org.scala-lang.scala-reflect_2.11.7.v20150622-112736-1fbce4612c.jar;C:\Users\erichardson\eclipse-scala-ide-4.1.1\plugins\org.scala-lang.scala-actors_2.11.7.v20150622-112736-1fbce4612c.jar -Ybackend:GenBCode -javabootclasspath C:\Program Files\Java\jre1.8.0_60\lib\resources.jar;C:\Program Files\Java\jre1.8.0_60\lib\rt.jar;C:\Program Files\Java\jre1.8.0_60\lib\jsse.jar;C:\Program Files\Java\jre1.8.0_60\lib\jce.jar;C:\Program Files\Java\jre1.8.0_60\lib\charsets.jar;C:\Program Files\Java\jre1.8.0_60\lib\jfr.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\cldrdata.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\dnsns.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\jaccess.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\jfxrt.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\localedata.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\nashorn.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\sunec.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\sunmscapi.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jre1.8.0_60\lib\ext\zipfs.jar -javaextdirs   -target:jvm-1.7 -bootclasspath C:\Users\erichardson\eclipse-scala-ide-4.1.1\plugins\org.scala-lang.scala-library_2.11.7.v20150622-112736-1fbce4612c.jar    last tree to typer: TypeTree(class String)        tree position: line 26 of C:\Users\erichardson\workspaces\scala\sc-test\src\main\scala\TestDataApp.scala             tree tpe: String               symbol: final class String in package lang    symbol definition: final class String extends Serializable with Comparable with CharSequence (a ClassSymbol)       symbol package: java.lang        symbol owners: class String            call site: constructor TestDataApp$delayedInit$body in class TestDataApp$delayedInit$body in package <empty>  == Source file context for tree position ==      23      24     def createActorString(actor: String) = {     25       val searches = actor.scanLeft("")((a,b) => a + b).tail     26       createLines(searches)     27     }     28      29     // accumulater acc is a StringBuilder - term is header'. Check Error Log for details.  sc-test     Unknown Scala Problem

sc-test's tests not built due to errors in dependent scope(s) main  sc-test     Unknown Scala Problem
ekrich
  • 357
  • 2
  • 10

0 Answers0