Skip to content

Instantly share code, notes, and snippets.

@bmc
Created September 2, 2011 15:08
Show Gist options
  • Save bmc/1188867 to your computer and use it in GitHub Desktop.
Save bmc/1188867 to your computer and use it in GitHub Desktop.
Scala compiler oddity #1
// So, given this declaration:
import java.io.File
val scalaDirs = new File("target").listFiles.filter(_.getName.startsWith("scala"))
// Why does this work:
scalaDirs.take(1).map(new File(_, "classes")).toList(0)
// but this fails to compile?
scalaDirs.take(1).map(new File(_, "classes")).toArray(0)
// <console>:15: error: type mismatch;
// found : Int(0)
// required: scala.reflect.ClassManifest[?]
// res8.take(1).map(new File(_, "classes")).toArray(0)
// This also fails to compile, though the error is slightly different:
scalaDirs.take(1).map(new File(_, "classes"))(0)
// <console>:15: error: type mismatch;
// found : Int(0)
// required: scala.collection.generic.CanBuildFrom[Array[java.io.File],java.io.File,?]
// res8.take(1).map(new File(_, "classes"))(0)
// ... even though
scalaDirs.take(1).map(new File(_, "classes"))
// is of type Array[File]
@bmc
Copy link
Author

bmc commented Sep 2, 2011

I think you'll find that Josh and I agree with you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment