diff --git a/src/main/scala/seed/generation/Idea.scala b/src/main/scala/seed/generation/Idea.scala
index 2367a52..08482a2 100644
--- a/src/main/scala/seed/generation/Idea.scala
+++ b/src/main/scala/seed/generation/Idea.scala
@@ -31,8 +31,7 @@ object Idea {
): Unit = {
val xml = IdeaFile.createLibrary(IdeaFile.Library(
libraryJar.getFileName.toString,
- isScalaCompiler = false,
- compilerClasses = List(),
+ compilerInfo = None,
classes = List(libraryJar.toAbsolutePath.toString),
javaDoc = javaDocJar.toList.map(_.toAbsolutePath.toString),
sources = sourcesJar.toList.map(_.toAbsolutePath.toString)))
@@ -122,8 +121,8 @@ object Idea {
val xml = IdeaFile.createLibrary(IdeaFile.Library(
name = build.project.scalaOrganisation + "-" + scalaVersion,
- isScalaCompiler = true,
- compilerClasses = scalaCompiler.compilerJars.map(_.toString),
+ compilerInfo = Some(IdeaFile.CompilerInfo(
+ scalaVersion, scalaCompiler.compilerJars.map(_.toString))),
classes = scalaCompiler.fullClassPath.map(_.toString),
javaDoc = List(),
sources = List()))
diff --git a/src/main/scala/seed/generation/util/IdeaFile.scala b/src/main/scala/seed/generation/util/IdeaFile.scala
index cd92878..7d7f2cb 100644
--- a/src/main/scala/seed/generation/util/IdeaFile.scala
+++ b/src/main/scala/seed/generation/util/IdeaFile.scala
@@ -1,5 +1,7 @@
package seed.generation.util
+import seed.generation.Bloop
+
import pine._
/** XML writers for IDEA files */
@@ -14,9 +16,10 @@ object IdeaFile {
moduleDeps: List[String],
output: Option[Output])
+ case class CompilerInfo(version: String, compilerClasses: List[String])
+
case class Library(name: String,
- isScalaCompiler: Boolean,
- compilerClasses: List[String],
+ compilerInfo: Option[CompilerInfo],
classes: List[String],
javaDoc: List[String],
sources: List[String])
@@ -83,11 +86,20 @@ object IdeaFile {
}
def createLibrary(library: Library): String = {
- val tpe = if (library.isScalaCompiler) Some("Scala") else None
- val compilerPaths = library.compilerClasses
- .map(path => xml"""""")
+ val tpe = library.compilerInfo.map(_ => "Scala")
+ val languageLevel =
+ library.compilerInfo.map { case CompilerInfo(version, _) =>
+ val level = "Scala_" + Bloop.majorMinorVersion(version)
+ .replaceAllLiterally(".", "_")
+ xml"""$level"""
+ }.toList
+ val compilerPaths = library.compilerInfo.fold(List[pine.Tag[Singleton]]())(
+ _.compilerClasses.map(path => xml""""""))
val properties = if (compilerPaths.isEmpty) List() else List(xml"""
- $compilerPaths
+
+ $languageLevel
+ $compilerPaths
+
""")
val classes = library.classes.map(path => xml"""""")
val javaDoc = library.javaDoc.map(path => xml"""""")
diff --git a/src/test/scala/seed/generation/IdeaSpec.scala b/src/test/scala/seed/generation/IdeaSpec.scala
index 5b9534f..32ba603 100644
--- a/src/test/scala/seed/generation/IdeaSpec.scala
+++ b/src/test/scala/seed/generation/IdeaSpec.scala
@@ -108,6 +108,19 @@ object IdeaSpec extends SimpleTestSuite {
assertEquals(profileNodes.head.attr("modules"),
Some("module212,module211"))
+ val scalaLibrary2_11_11 =
+ pine.XmlParser.fromString(FileUtils.readFileToString(
+ ideaPath.resolve("libraries").resolve("org_scala_lang_2_11_11.xml").toFile,
+ "UTF-8"))
+ val scalaLibrary2_12_8 =
+ pine.XmlParser.fromString(FileUtils.readFileToString(
+ ideaPath.resolve("libraries").resolve("org_scala_lang_2_12_8.xml").toFile,
+ "UTF-8"))
+ assertEquals(scalaLibrary2_11_11.byTagAll["language-level"].map(_.toText),
+ List("Scala_2_11"))
+ assertEquals(scalaLibrary2_12_8.byTagAll["language-level"].map(_.toText),
+ List("Scala_2_12"))
+
val module211 =
pine.XmlParser.fromString(FileUtils.readFileToString(
ideaPath.resolve("modules").resolve("module211.iml").toFile,