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