From dadbd6e0231d7e022f90c691f7dd934cf72d93f4 Mon Sep 17 00:00:00 2001 From: Tom Grigg Date: Fri, 9 Oct 2020 10:26:25 -0700 Subject: [PATCH 1/6] Revert "Avoid round-trip through sourceModule in scalacLinkedClass." This reverts commit e88c5b782b30ea6c74be1c285fd1a7217c0ecc3e. Fixes #9916 --- compiler/src/dotty/tools/dotc/core/SymDenotations.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/src/dotty/tools/dotc/core/SymDenotations.scala b/compiler/src/dotty/tools/dotc/core/SymDenotations.scala index 44e9d162d8a6..2ddf92eb2eb6 100644 --- a/compiler/src/dotty/tools/dotc/core/SymDenotations.scala +++ b/compiler/src/dotty/tools/dotc/core/SymDenotations.scala @@ -1176,7 +1176,7 @@ object SymDenotations { final def scalacLinkedClass(using Context): Symbol = if (this.is(ModuleClass)) companionNamed(effectiveName.toTypeName) - else if (this.isClass) companionNamed(effectiveName.moduleClassName) + else if (this.isClass) companionNamed(effectiveName.moduleClassName).sourceModule.moduleClass else NoSymbol /** Find companion class symbol with given name, or NoSymbol if none exists. From e7e7eb5b2cf9767fb727c7e27cc85c8efc7f190d Mon Sep 17 00:00:00 2001 From: Tom Grigg Date: Fri, 9 Oct 2020 15:48:13 -0700 Subject: [PATCH 2/6] Add test for #9916 --- sbt-dotty/sbt-test/scala2-compat/finagle/build.sbt | 4 ++++ sbt-dotty/sbt-test/scala2-compat/finagle/i9916.scala | 10 ++++++++++ .../sbt-test/scala2-compat/finagle/project/plugins.sbt | 1 + sbt-dotty/sbt-test/scala2-compat/finagle/test | 1 + 4 files changed, 16 insertions(+) create mode 100644 sbt-dotty/sbt-test/scala2-compat/finagle/build.sbt create mode 100644 sbt-dotty/sbt-test/scala2-compat/finagle/i9916.scala create mode 100644 sbt-dotty/sbt-test/scala2-compat/finagle/project/plugins.sbt create mode 100644 sbt-dotty/sbt-test/scala2-compat/finagle/test diff --git a/sbt-dotty/sbt-test/scala2-compat/finagle/build.sbt b/sbt-dotty/sbt-test/scala2-compat/finagle/build.sbt new file mode 100644 index 000000000000..a3c28b3d6943 --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/finagle/build.sbt @@ -0,0 +1,4 @@ +scalaVersion := sys.props("plugin.scalaVersion") + +libraryDependencies += + ("com.twitter" %% "finagle-core" % "20.9.0").withDottyCompat(scalaVersion.value) diff --git a/sbt-dotty/sbt-test/scala2-compat/finagle/i9916.scala b/sbt-dotty/sbt-test/scala2-compat/finagle/i9916.scala new file mode 100644 index 000000000000..7c692f529428 --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/finagle/i9916.scala @@ -0,0 +1,10 @@ +import com.twitter.finagle.Stack +import com.twitter.finagle.liveness.FailureAccrualFactory + +trait T { + def p: FailureAccrualFactory.Param +} + +class A { + val t = Stack.Param[FailureAccrualFactory.Param](FailureAccrualFactory.Param(???)) +} diff --git a/sbt-dotty/sbt-test/scala2-compat/finagle/project/plugins.sbt b/sbt-dotty/sbt-test/scala2-compat/finagle/project/plugins.sbt new file mode 100644 index 000000000000..c17caab2d98c --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/finagle/project/plugins.sbt @@ -0,0 +1 @@ +addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % sys.props("plugin.version")) diff --git a/sbt-dotty/sbt-test/scala2-compat/finagle/test b/sbt-dotty/sbt-test/scala2-compat/finagle/test new file mode 100644 index 000000000000..5df2af1f3956 --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/finagle/test @@ -0,0 +1 @@ +> compile From 8f784300063daf905bd3c198a958187a380209d0 Mon Sep 17 00:00:00 2001 From: Tom Grigg Date: Fri, 9 Oct 2020 15:48:58 -0700 Subject: [PATCH 3/6] TODO REVERT THIS COMMIT: always run `test_sbt` in CI --- .github/workflows/ci.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 56b0b7457f83..89ddc730c979 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -167,11 +167,6 @@ jobs: test_sbt: runs-on: [self-hosted, Linux] container: lampepfl/dotty:2020-04-24 - if: ( - github.event_name == 'push' && - startsWith(github.event.ref, 'refs/tags/') - ) || - github.event_name == 'schedule' steps: - name: Checkout cleanup script From f76918712313b88e0a4ce6fa40db30a3f14db7c9 Mon Sep 17 00:00:00 2001 From: Tom Grigg Date: Sat, 10 Oct 2020 22:29:46 -0700 Subject: [PATCH 4/6] TODO REVERT THIS: skip community build in CI --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 89ddc730c979..b46f3ebede7b 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -126,7 +126,7 @@ jobs: community_build: runs-on: [self-hosted, Linux] container: lampepfl/dotty:2020-04-24 - + if: false steps: - name: Checkout cleanup script uses: actions/checkout@v2 From 2ad4a06796246896fce60656ccee307f65afa337 Mon Sep 17 00:00:00 2001 From: Tom Grigg Date: Sat, 10 Oct 2020 22:32:48 -0700 Subject: [PATCH 5/6] Add more tests --- sbt-dotty/sbt-test/scala2-compat/i9916a/build.sbt | 14 ++++++++++++++ .../scala2-compat/i9916a/lib/i9916a-lib.scala | 7 +++++++ .../scala2-compat/i9916a/main/i9916a-test.scala | 5 +++++ .../scala2-compat/i9916a/project/plugins.sbt | 1 + sbt-dotty/sbt-test/scala2-compat/i9916a/test | 2 ++ sbt-dotty/sbt-test/scala2-compat/i9916b/build.sbt | 14 ++++++++++++++ .../scala2-compat/i9916b/lib/i9916b-lib.scala | 7 +++++++ .../scala2-compat/i9916b/main/i9916b-test.scala | 5 +++++ .../scala2-compat/i9916b/project/plugins.sbt | 1 + sbt-dotty/sbt-test/scala2-compat/i9916b/test | 2 ++ 10 files changed, 58 insertions(+) create mode 100644 sbt-dotty/sbt-test/scala2-compat/i9916a/build.sbt create mode 100644 sbt-dotty/sbt-test/scala2-compat/i9916a/lib/i9916a-lib.scala create mode 100644 sbt-dotty/sbt-test/scala2-compat/i9916a/main/i9916a-test.scala create mode 100644 sbt-dotty/sbt-test/scala2-compat/i9916a/project/plugins.sbt create mode 100644 sbt-dotty/sbt-test/scala2-compat/i9916a/test create mode 100644 sbt-dotty/sbt-test/scala2-compat/i9916b/build.sbt create mode 100644 sbt-dotty/sbt-test/scala2-compat/i9916b/lib/i9916b-lib.scala create mode 100644 sbt-dotty/sbt-test/scala2-compat/i9916b/main/i9916b-test.scala create mode 100644 sbt-dotty/sbt-test/scala2-compat/i9916b/project/plugins.sbt create mode 100644 sbt-dotty/sbt-test/scala2-compat/i9916b/test diff --git a/sbt-dotty/sbt-test/scala2-compat/i9916a/build.sbt b/sbt-dotty/sbt-test/scala2-compat/i9916a/build.sbt new file mode 100644 index 000000000000..8955ce8724e8 --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/i9916a/build.sbt @@ -0,0 +1,14 @@ +val scala3Version = sys.props("plugin.scalaVersion") +val scala2Version = "2.13.3" + +ThisBuild / organization := "test.dotty" +ThisBuild / version := "0.1.0-SNAPSHOT" + +lazy val `i9916a-lib` = (project in file ("lib")) + .settings(scalaVersion := scala2Version) + +lazy val `i9916a-test` = (project in file ("main")) + .settings( + scalaVersion := scala3Version, + libraryDependencies += (organization.value %% "i9916a-lib" % version.value).withDottyCompat(scalaVersion.value) + ) diff --git a/sbt-dotty/sbt-test/scala2-compat/i9916a/lib/i9916a-lib.scala b/sbt-dotty/sbt-test/scala2-compat/i9916a/lib/i9916a-lib.scala new file mode 100644 index 000000000000..44882333a2f5 --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/i9916a/lib/i9916a-lib.scala @@ -0,0 +1,7 @@ +package i9916a + +object Lib { + trait P + object P + def P(x: Int): P = ??? +} diff --git a/sbt-dotty/sbt-test/scala2-compat/i9916a/main/i9916a-test.scala b/sbt-dotty/sbt-test/scala2-compat/i9916a/main/i9916a-test.scala new file mode 100644 index 000000000000..1b10c3504ca7 --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/i9916a/main/i9916a-test.scala @@ -0,0 +1,5 @@ +import i9916a.Lib + +trait Test { + def foo: Lib.P +} diff --git a/sbt-dotty/sbt-test/scala2-compat/i9916a/project/plugins.sbt b/sbt-dotty/sbt-test/scala2-compat/i9916a/project/plugins.sbt new file mode 100644 index 000000000000..c17caab2d98c --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/i9916a/project/plugins.sbt @@ -0,0 +1 @@ +addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % sys.props("plugin.version")) diff --git a/sbt-dotty/sbt-test/scala2-compat/i9916a/test b/sbt-dotty/sbt-test/scala2-compat/i9916a/test new file mode 100644 index 000000000000..d848a29e61cd --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/i9916a/test @@ -0,0 +1,2 @@ +> i9916a-lib/publishLocal +> i9916a-test/compile diff --git a/sbt-dotty/sbt-test/scala2-compat/i9916b/build.sbt b/sbt-dotty/sbt-test/scala2-compat/i9916b/build.sbt new file mode 100644 index 000000000000..7a6761e9275e --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/i9916b/build.sbt @@ -0,0 +1,14 @@ +val scala3Version = sys.props("plugin.scalaVersion") +val scala2Version = "2.13.3" + +ThisBuild / organization := "test.dotty" +ThisBuild / version := "0.1.0-SNAPSHOT" + +lazy val `i9916b-lib` = (project in file ("lib")) + .settings(scalaVersion := scala2Version) + +lazy val `i9916b-test` = (project in file ("main")) + .settings( + scalaVersion := scala3Version, + libraryDependencies += (organization.value %% "i9916b-lib" % version.value).withDottyCompat(scalaVersion.value) + ) diff --git a/sbt-dotty/sbt-test/scala2-compat/i9916b/lib/i9916b-lib.scala b/sbt-dotty/sbt-test/scala2-compat/i9916b/lib/i9916b-lib.scala new file mode 100644 index 000000000000..0ce017246f86 --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/i9916b/lib/i9916b-lib.scala @@ -0,0 +1,7 @@ +package i9916b + +trait T { + class A + object A + def A(x: Int): Unit = ??? +} diff --git a/sbt-dotty/sbt-test/scala2-compat/i9916b/main/i9916b-test.scala b/sbt-dotty/sbt-test/scala2-compat/i9916b/main/i9916b-test.scala new file mode 100644 index 000000000000..fb702d1a8617 --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/i9916b/main/i9916b-test.scala @@ -0,0 +1,5 @@ +import i9916b.T + +trait Test { + def foo: T +} diff --git a/sbt-dotty/sbt-test/scala2-compat/i9916b/project/plugins.sbt b/sbt-dotty/sbt-test/scala2-compat/i9916b/project/plugins.sbt new file mode 100644 index 000000000000..c17caab2d98c --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/i9916b/project/plugins.sbt @@ -0,0 +1 @@ +addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % sys.props("plugin.version")) diff --git a/sbt-dotty/sbt-test/scala2-compat/i9916b/test b/sbt-dotty/sbt-test/scala2-compat/i9916b/test new file mode 100644 index 000000000000..070ee75b37ea --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/i9916b/test @@ -0,0 +1,2 @@ +> i9916b-lib/publishLocal +> i9916b-test/compile From 2d4f3c04a819b3fb6794cc6678ca1259b7f0594f Mon Sep 17 00:00:00 2001 From: Tom Grigg Date: Sun, 11 Oct 2020 12:09:26 -0700 Subject: [PATCH 6/6] Avoid publishLocal in tests --- sbt-dotty/sbt-test/scala2-compat/i9916a/build.sbt | 9 +++++---- sbt-dotty/sbt-test/scala2-compat/i9916a/test | 1 - sbt-dotty/sbt-test/scala2-compat/i9916b/build.sbt | 9 +++++---- sbt-dotty/sbt-test/scala2-compat/i9916b/test | 1 - 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/sbt-dotty/sbt-test/scala2-compat/i9916a/build.sbt b/sbt-dotty/sbt-test/scala2-compat/i9916a/build.sbt index 8955ce8724e8..e9c732d4853a 100644 --- a/sbt-dotty/sbt-test/scala2-compat/i9916a/build.sbt +++ b/sbt-dotty/sbt-test/scala2-compat/i9916a/build.sbt @@ -1,14 +1,15 @@ val scala3Version = sys.props("plugin.scalaVersion") val scala2Version = "2.13.3" -ThisBuild / organization := "test.dotty" -ThisBuild / version := "0.1.0-SNAPSHOT" - lazy val `i9916a-lib` = (project in file ("lib")) .settings(scalaVersion := scala2Version) lazy val `i9916a-test` = (project in file ("main")) + .dependsOn(`i9916a-lib`) .settings( scalaVersion := scala3Version, - libraryDependencies += (organization.value %% "i9916a-lib" % version.value).withDottyCompat(scalaVersion.value) + // https://github.com/sbt/sbt/issues/5369 + projectDependencies := { + projectDependencies.value.map(_.withDottyCompat(scalaVersion.value)) + } ) diff --git a/sbt-dotty/sbt-test/scala2-compat/i9916a/test b/sbt-dotty/sbt-test/scala2-compat/i9916a/test index d848a29e61cd..2a848354ed12 100644 --- a/sbt-dotty/sbt-test/scala2-compat/i9916a/test +++ b/sbt-dotty/sbt-test/scala2-compat/i9916a/test @@ -1,2 +1 @@ -> i9916a-lib/publishLocal > i9916a-test/compile diff --git a/sbt-dotty/sbt-test/scala2-compat/i9916b/build.sbt b/sbt-dotty/sbt-test/scala2-compat/i9916b/build.sbt index 7a6761e9275e..51a2d056ddad 100644 --- a/sbt-dotty/sbt-test/scala2-compat/i9916b/build.sbt +++ b/sbt-dotty/sbt-test/scala2-compat/i9916b/build.sbt @@ -1,14 +1,15 @@ val scala3Version = sys.props("plugin.scalaVersion") val scala2Version = "2.13.3" -ThisBuild / organization := "test.dotty" -ThisBuild / version := "0.1.0-SNAPSHOT" - lazy val `i9916b-lib` = (project in file ("lib")) .settings(scalaVersion := scala2Version) lazy val `i9916b-test` = (project in file ("main")) + .dependsOn(`i9916b-lib`) .settings( scalaVersion := scala3Version, - libraryDependencies += (organization.value %% "i9916b-lib" % version.value).withDottyCompat(scalaVersion.value) + // https://github.com/sbt/sbt/issues/5369 + projectDependencies := { + projectDependencies.value.map(_.withDottyCompat(scalaVersion.value)) + } ) diff --git a/sbt-dotty/sbt-test/scala2-compat/i9916b/test b/sbt-dotty/sbt-test/scala2-compat/i9916b/test index 070ee75b37ea..064736132510 100644 --- a/sbt-dotty/sbt-test/scala2-compat/i9916b/test +++ b/sbt-dotty/sbt-test/scala2-compat/i9916b/test @@ -1,2 +1 @@ -> i9916b-lib/publishLocal > i9916b-test/compile