From ee62af9b97f2c7d1421a0c01c412954ee0bdfdd2 Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Wed, 7 Aug 2024 08:27:36 +0200 Subject: [PATCH 1/2] GenIdea: Make Scala SDK specific for JS / Native --- idea/src/mill/idea/GenIdeaImpl.scala | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/idea/src/mill/idea/GenIdeaImpl.scala b/idea/src/mill/idea/GenIdeaImpl.scala index 9c84ce5a795..75b6780e7fd 100755 --- a/idea/src/mill/idea/GenIdeaImpl.scala +++ b/idea/src/mill/idea/GenIdeaImpl.scala @@ -11,11 +11,13 @@ import mill.api.{PathRef, Strict} import mill.define.{Ctx => _, _} import mill.eval.Evaluator import mill.main.BuildInfo +import mill.scalajslib.ScalaJSModule import mill.scalalib.GenIdeaModule.{IdeaConfigFile, JavaFacet} import mill.scalalib.internal.JavaModuleUtils import mill.util.Classpath import mill.{T, scalalib} import mill.scalalib.{GenIdeaImpl => _, _} +import mill.scalanativelib.ScalaNativeModule case class GenIdeaImpl( private val evaluators: Seq[Evaluator] @@ -570,14 +572,19 @@ case class GenIdeaImpl( val scalaSdkFile = { Option.when(scalaVersion.isDefined && compilerClasspath.nonEmpty) { - val name = s"scala-SDK-${scalaVersion.get}" + val name = mod match { + case _: ScalaJSModule => "scala-js-SDK" + case _: ScalaNativeModule => "scala-native-SDK" + case _: ScalaModule => "scala-SDK" + } + val nameAndVersion = s"${name}-${scalaVersion.get}" val languageLevel = scalaVersion.map(_.split("[.]", 3).take(2).mkString("Scala_", "_", "")) Tuple2( - os.sub / "libraries" / libraryNameToFileSystemPathPart(name, "xml"), + os.sub / "libraries" / libraryNameToFileSystemPathPart(nameAndVersion, "xml"), scalaSdkTemplate( - name = name, + name = nameAndVersion, languageLevel = languageLevel, scalaCompilerClassPath = compilerClasspath, // FIXME: fill in these fields From 031c08b4b32d11d475edb51c93393ba2907aa709 Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Wed, 7 Aug 2024 18:10:09 +0200 Subject: [PATCH 2/2] Added test case for Scala.JS project --- idea/src/mill/idea/GenIdeaImpl.scala | 24 ++++++++++-------- .../ide/gen-idea/repo/hello-idea/build.sc | 13 +++++++++- .../idea/libraries/scala_js_SDK_3_3_1.xml | 25 +++++++++++++++++++ .../idea/mill_modules/helloideajs.iml | 18 +++++++++++++ .../idea/mill_modules/helloideajs.test.iml | 22 ++++++++++++++++ .../gen-idea/repo/hello-idea/idea/modules.xml | 2 ++ 6 files changed, 92 insertions(+), 12 deletions(-) create mode 100644 integration/ide/gen-idea/repo/hello-idea/idea/libraries/scala_js_SDK_3_3_1.xml create mode 100644 integration/ide/gen-idea/repo/hello-idea/idea/mill_modules/helloideajs.iml create mode 100644 integration/ide/gen-idea/repo/hello-idea/idea/mill_modules/helloideajs.test.iml diff --git a/idea/src/mill/idea/GenIdeaImpl.scala b/idea/src/mill/idea/GenIdeaImpl.scala index 75b6780e7fd..77bc22def57 100755 --- a/idea/src/mill/idea/GenIdeaImpl.scala +++ b/idea/src/mill/idea/GenIdeaImpl.scala @@ -552,9 +552,17 @@ case class GenIdeaImpl( val isTest = mod.isInstanceOf[TestModule] + val sdkName = (mod match { + case _: ScalaJSModule => Some("scala-js-SDK") + case _: ScalaNativeModule => Some("scala-native-SDK") + case _: ScalaModule => Some("scala-SDK") + case _ => None + }) + .map { name => s"${name}-${scalaVersion.get}" } + val moduleXml = moduleXmlTemplate( basePath = mod.intellijModulePath, - scalaVersionOpt = scalaVersion, + sdkOpt = sdkName, resourcePaths = Strict.Agg.from(resourcesPathRefs.map(_.path)), normalSourcePaths = Strict.Agg.from(normalSourcePaths), generatedSourcePaths = Strict.Agg.from(generatedSourcePaths), @@ -571,13 +579,7 @@ case class GenIdeaImpl( ) val scalaSdkFile = { - Option.when(scalaVersion.isDefined && compilerClasspath.nonEmpty) { - val name = mod match { - case _: ScalaJSModule => "scala-js-SDK" - case _: ScalaNativeModule => "scala-native-SDK" - case _: ScalaModule => "scala-SDK" - } - val nameAndVersion = s"${name}-${scalaVersion.get}" + sdkName.map { nameAndVersion => val languageLevel = scalaVersion.map(_.split("[.]", 3).take(2).mkString("Scala_", "_", "")) @@ -808,7 +810,7 @@ case class GenIdeaImpl( */ def moduleXmlTemplate( basePath: os.Path, - scalaVersionOpt: Option[String], + sdkOpt: Option[String], resourcePaths: Strict.Agg[os.Path], normalSourcePaths: Strict.Agg[os.Path], generatedSourcePaths: Strict.Agg[os.Path], @@ -892,8 +894,8 @@ case class GenIdeaImpl( { for { - scalaVersion <- scalaVersionOpt.toSeq - } yield + sdk <- sdkOpt.toSeq + } yield } { diff --git a/integration/ide/gen-idea/repo/hello-idea/build.sc b/integration/ide/gen-idea/repo/hello-idea/build.sc index 9fd44b6ac6e..7002dfc5a8f 100644 --- a/integration/ide/gen-idea/repo/hello-idea/build.sc +++ b/integration/ide/gen-idea/repo/hello-idea/build.sc @@ -1,6 +1,7 @@ import mill.api.Loose.Agg import mill.define.Target import mill._ +import mill.scalajslib.ScalaJSModule import mill.scalalib.{Dep, DepSyntax, TestModule} trait HelloIdeaModule extends scalalib.ScalaModule { @@ -22,10 +23,20 @@ trait HelloIdeaModule extends scalalib.ScalaModule { object HelloIdea extends HelloIdeaModule { object scala3 extends HelloIdeaModule { - def scalaVersion = "3.3.1" + override def scalaVersion = "3.3.1" } } object HiddenIdea extends HelloIdeaModule { override def skipIdea = true } + +object HelloIdeaJs extends ScalaJSModule { + override def scalaVersion = "3.3.1" + override def scalaJSVersion = "1.16.0" + object test extends ScalaJSTests with TestModule.Utest { + override def ivyDeps: Target[Agg[Dep]] = Agg( + ivy"com.lihaoyi::utest::0.8.4" + ) + } +} \ No newline at end of file diff --git a/integration/ide/gen-idea/repo/hello-idea/idea/libraries/scala_js_SDK_3_3_1.xml b/integration/ide/gen-idea/repo/hello-idea/idea/libraries/scala_js_SDK_3_3_1.xml new file mode 100644 index 00000000000..ba436c6de78 --- /dev/null +++ b/integration/ide/gen-idea/repo/hello-idea/idea/libraries/scala_js_SDK_3_3_1.xml @@ -0,0 +1,25 @@ + + + + Scala_3_3 + + + + + + + + + + + + + + + + + + + + + diff --git a/integration/ide/gen-idea/repo/hello-idea/idea/mill_modules/helloideajs.iml b/integration/ide/gen-idea/repo/hello-idea/idea/mill_modules/helloideajs.iml new file mode 100644 index 00000000000..91491089157 --- /dev/null +++ b/integration/ide/gen-idea/repo/hello-idea/idea/mill_modules/helloideajs.iml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/integration/ide/gen-idea/repo/hello-idea/idea/mill_modules/helloideajs.test.iml b/integration/ide/gen-idea/repo/hello-idea/idea/mill_modules/helloideajs.test.iml new file mode 100644 index 00000000000..363889666d0 --- /dev/null +++ b/integration/ide/gen-idea/repo/hello-idea/idea/mill_modules/helloideajs.test.iml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/integration/ide/gen-idea/repo/hello-idea/idea/modules.xml b/integration/ide/gen-idea/repo/hello-idea/idea/modules.xml index d180def48a7..dbb4e87d0ab 100644 --- a/integration/ide/gen-idea/repo/hello-idea/idea/modules.xml +++ b/integration/ide/gen-idea/repo/hello-idea/idea/modules.xml @@ -5,6 +5,8 @@ + +