Skip to content

Commit 88f0860

Browse files
authored
[Blocked by Scala 3 Bug] Implement Scala 3 recompilation token (#1805)
* Revert "Disable recompilation trigger functionality on Scala 3 completely due to bug scala/scala3#15976" This reverts commit 2ab8bf4. * use random token again. Waiting on usability fix for scala/scala3#18623 before merge * CI workaround for scala/scala3#19745 * Due to Scala 3 bug scala/scala3#19745 remove `distage.plugins.{PluginDef,BootstrapPluginDef}` aliases on Scala 3
1 parent 1bd6caa commit 88f0860

File tree

16 files changed

+33
-68
lines changed

16 files changed

+33
-68
lines changed

distage/distage-extension-plugins/.jvm/src/main/scala/izumi/distage/plugins/load/PluginLoaderDefaultImpl.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package izumi.distage.plugins.load
22

33
import io.github.classgraph.ClassGraph
4-
import izumi.distage.plugins.{PluginBase, PluginConfig}
4+
import izumi.distage.plugins.{PluginBase, PluginConfig, PluginDef}
55
import izumi.fundamentals.platform.cache.SyncCache
66
import izumi.fundamentals.reflection.TypeUtil
77

@@ -25,7 +25,7 @@ class PluginLoaderDefaultImpl extends PluginLoader {
2525
val disabledPackages = config.packagesDisabled
2626

2727
val pluginBase = classOf[PluginBase]
28-
val pluginDef = classOf[PluginDefType]
28+
val pluginDef = classOf[PluginDef[?]]
2929
val whitelistedClasses = Seq(pluginDef.getName)
3030

3131
def loadPkgs(pkgs: Seq[String]): Seq[PluginBase] = {

distage/distage-extension-plugins/src/main/scala-2/izumi/distage/plugins/load/package.scala

Lines changed: 0 additions & 5 deletions
This file was deleted.

distage/distage-extension-plugins/src/main/scala-3/distage/plugins/DistagePlugins.scala

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,18 @@ trait DistagePlugins {
88
type PluginBase = plugins.PluginBase
99
val PluginBase: plugins.PluginBase.type = plugins.PluginBase
1010

11-
type PluginDef = plugins.PluginDef
11+
// Because of Scala 3 bug https://github.com/scala/scala3/issues/19745
12+
// we can't use a type alias or export to alias PluginDef name anymore,
13+
// use the longer package izumi.distage.plugins.PluginDef instead.
14+
// type PluginDef[T] = plugins.PluginDef[T]
1215

1316
type BootstrapPlugin = plugins.BootstrapPlugin
1417
val BootstrapPlugin: plugins.BootstrapPlugin.type = plugins.BootstrapPlugin
1518

16-
type BootstrapPluginDef = plugins.BootstrapPluginDef
19+
// Because of Scala 3 bug https://github.com/scala/scala3/issues/19745
20+
// we can't use a type alias or export to alias BootstrapPluginDef name anymore,
21+
// use the longer package izumi.distage.plugins.BootstrapPluginDef instead.
22+
// type BootstrapPluginDef[T] = plugins.BootstrapPluginDef[T]
1723

1824
type PluginLoader = load.PluginLoader
1925
val PluginLoader: load.PluginLoader.type = load.PluginLoader

distage/distage-extension-plugins/src/main/scala-3/distage/plugins/package.scala

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,18 @@ package object plugins extends DistagePlugins {
77
override type PluginBase = izumi.distage.plugins.PluginBase
88
override val PluginBase: izumi.distage.plugins.PluginBase.type = izumi.distage.plugins.PluginBase
99

10-
override type PluginDef = izumi.distage.plugins.PluginDef
10+
// Because of Scala 3 bug https://github.com/scala/scala3/issues/19745
11+
// we can't use a type alias or export to alias PluginDef name anymore,
12+
// use the longer package izumi.distage.plugins.PluginDef instead.
13+
// override type PluginDef[T] = izumi.distage.plugins.PluginDef[T]
1114

1215
override type BootstrapPlugin = izumi.distage.plugins.BootstrapPlugin
1316
override val BootstrapPlugin: izumi.distage.plugins.BootstrapPlugin.type = izumi.distage.plugins.BootstrapPlugin
1417

15-
override type BootstrapPluginDef = izumi.distage.plugins.BootstrapPluginDef
18+
// Because of Scala 3 bug https://github.com/scala/scala3/issues/19745
19+
// we can't use a type alias or export to alias BootstrapPluginDef name anymore,
20+
// use the longer package izumi.distage.plugins.BootstrapPluginDef instead.
21+
// override type BootstrapPluginDef[T] = izumi.distage.plugins.BootstrapPluginDef[T]
1622

1723
override type PluginLoader = load.PluginLoader
1824
override val PluginLoader: load.PluginLoader.type = load.PluginLoader

distage/distage-extension-plugins/src/main/scala-3/izumi/distage/plugins/BootstrapPluginDef.scala

Lines changed: 0 additions & 7 deletions
This file was deleted.

distage/distage-extension-plugins/src/main/scala-3/izumi/distage/plugins/ForcedRecompilationToken.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ object ForcedRecompilationToken {
3636
// TODO: research if caching typed trees optimization is possible and meaningful in Dotty
3737
def materializeImpl[T](using quotes: Quotes): Expr[ForcedRecompilationToken[T]] = {
3838
import quotes.reflect.*
39-
val typeTree = ConstantType(StringConstant("abc"))
39+
val typeTree = ConstantType(StringConstant(compilerLaunchId))
4040
typeTree.asType.asInstanceOf[Type[T]] match {
4141
case given Type[uuid] =>
4242
'{ null.asInstanceOf[ForcedRecompilationToken[uuid]] }

distage/distage-extension-plugins/src/main/scala-3/izumi/distage/plugins/PluginDef.scala

Lines changed: 0 additions & 27 deletions
This file was deleted.

distage/distage-extension-plugins/src/main/scala-3/izumi/distage/plugins/load/package.scala

Lines changed: 0 additions & 5 deletions
This file was deleted.

distage/distage-framework/.jvm/src/test/scala/com/github/pshirshov/test3/bootstrap/BootstrapFixture3.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.github.pshirshov.test3.bootstrap
22

3-
import distage.plugins.BootstrapPluginDef
43
import izumi.distage.config.ConfigModuleDef
54
import izumi.distage.model.definition.{Activation, BootstrapModule, Id}
65
import izumi.distage.model.provisioning.strategies.EffectStrategy
76
import izumi.distage.planning.solver.PlanSolver
7+
import izumi.distage.plugins.BootstrapPluginDef
88

99
object BootstrapFixture3 {
1010

distage/distage-framework/.jvm/src/test/scala/izumi/distage/roles/test/RoleAppTest.scala

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@ import cats.effect.unsafe.IORuntime
55
import com.github.pshirshov.test.plugins.{StaticTestMainLogIO2, StaticTestRole}
66
import com.github.pshirshov.test3.plugins.Fixture3
77
import com.typesafe.config.ConfigFactory
8-
import distage.plugins.{PluginBase, PluginDef}
98
import distage.{DIKey, Injector, Locator, LocatorRef}
109
import izumi.distage.framework.config.PlanningOptions
1110
import izumi.distage.framework.services.RoleAppPlanner
1211
import izumi.distage.model.PlannerInput
1312
import izumi.distage.model.definition.{Activation, BootstrapModule, Lifecycle}
1413
import izumi.distage.model.provisioning.IntegrationCheck
1514
import izumi.distage.modules.DefaultModule
16-
import izumi.distage.plugins.PluginConfig
15+
import izumi.distage.plugins.{PluginBase, PluginConfig}
1716
import izumi.distage.roles.DebugProperties
1817
import izumi.distage.roles.test.fixtures.*
1918
import izumi.distage.roles.test.fixtures.Fixture.*
@@ -39,7 +38,7 @@ class RoleAppTest extends AnyWordSpec with WithProperties {
3938
"testservice.systemPropList.1" -> "222",
4039
)
4140

42-
class XXX_TestWhiteboxProbe extends PluginDef {
41+
class XXX_TestWhiteboxProbe extends izumi.distage.plugins.PluginDef {
4342
val resources = new XXX_ResourceEffectsRecorder[IO]
4443
private var locator0: LocatorRef = null
4544
lazy val locator: Locator = locator0.get
@@ -90,7 +89,7 @@ class RoleAppTest extends AnyWordSpec with WithProperties {
9089
new TestPluginCatsIO,
9190
new AdaptedAutocloseablesCasePlugin,
9291
probe,
93-
new PluginDef {
92+
new izumi.distage.plugins.PluginDef {
9493
make[TestResource[IO]].from[IntegrationResource0[IO]]
9594
many[TestResource[IO]]
9695
.ref[TestResource[IO]]

distage/distage-testkit-scalatest/src/test/scala/izumi/distage/testkit/autosets/AutosetTest.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package izumi.distage.testkit.autosets
22

3-
import distage.plugins.{BootstrapPluginDef, PluginConfig, PluginDef}
43
import izumi.distage.model.planning.PlanningHook
54
import izumi.distage.planning.AutoSetHook
5+
import izumi.distage.plugins.{BootstrapPluginDef, PluginConfig, PluginDef}
66
import izumi.distage.testkit.model.TestConfig
77
import izumi.distage.testkit.scalatest.Spec1
88
import izumi.fundamentals.platform.functional.Identity

distage/distage-testkit-scalatest/src/test/scala/izumi/distage/testkit/distagesuite/generic/tests.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package izumi.distage.testkit.distagesuite.generic
22

33
import distage.*
4-
import distage.plugins.{PluginConfig, PluginDef}
4+
import distage.plugins.PluginConfig
55
import izumi.distage.modules.DefaultModule
66
import izumi.distage.testkit.distagesuite.fixtures.*
77
import izumi.distage.testkit.distagesuite.generic.DistageTestExampleBase.*
@@ -92,7 +92,7 @@ object DistageTestExampleBase {
9292
abstract class DistageTestExampleBase[F[_]: TagK: DefaultModule](implicit F: QuasiIO[F]) extends Spec1[F] with DistageMemoizeExample[F] {
9393

9494
override protected def config: TestConfig = super.config.copy(
95-
pluginConfig = super.config.pluginConfig.enablePackage("xxx") ++ new PluginDef {
95+
pluginConfig = super.config.pluginConfig.enablePackage("xxx") ++ new izumi.distage.plugins.PluginDef {
9696
make[SetCounter]
9797

9898
make[SetElement1]

distage/distage-testkit-scalatest/src/test/scala/izumi/distage/testkit/distagesuite/memoized/DistageMemoizationEnvsTest.scala

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package izumi.distage.testkit.distagesuite.memoized
22

33
import distage.DIKey
4-
import distage.plugins.PluginDef
54
import izumi.distage.model.definition.StandardAxis.Repo
65
import izumi.distage.model.providers.Functoid
76
import izumi.distage.testkit.distagesuite.memoized.MemoizationEnv.*
@@ -45,7 +44,7 @@ abstract class DistageMemoizationEnvsTest extends SpecZIO with AssertZIO {
4544
1 -> Set(DIKey[MemoizedInstance], DIKey[MemoizedLevel1]),
4645
2 -> Set(DIKey[MemoizedLevel2]),
4746
),
48-
pluginConfig = super.config.pluginConfig.enablePackage("izumi.distage.testkit.distagesuite") ++ new PluginDef {
47+
pluginConfig = super.config.pluginConfig.enablePackage("izumi.distage.testkit.distagesuite") ++ new izumi.distage.plugins.PluginDef {
4948
make[MemoizedInstance].from {
5049
MemoizationEnv.makeInstance(MemoizationEnv.memoizedInstance)(MemoizationEnv.MemoizedInstance.apply)
5150
}
@@ -97,7 +96,7 @@ class SameLevel_1_WithoutLastMemoizationLevel extends DistageMemoizationEnvsTest
9796
memoizationRoots = Map(
9897
1 -> Set(DIKey.get[MemoizedInstance], DIKey.get[MemoizedLevel1])
9998
),
100-
pluginConfig = super.config.pluginConfig overriddenBy new PluginDef {
99+
pluginConfig = super.config.pluginConfig overriddenBy new izumi.distage.plugins.PluginDef {
101100
make[MemoizedLevel2].from(MemoizedLevel2(UUID.randomUUID()))
102101
},
103102
activation = distage.Activation(Repo -> Repo.Prod),
@@ -132,7 +131,7 @@ class SameLevel_1_2_WithAdditionalLevel3 extends DistageMemoizationEnvsTest {
132131
class SameLevel_1_WithModuleOverride extends DistageMemoizationEnvsTest {
133132
override protected def config: TestConfig = {
134133
super.config.copy(
135-
pluginConfig = super.config.pluginConfig overriddenBy new PluginDef {
134+
pluginConfig = super.config.pluginConfig overriddenBy new izumi.distage.plugins.PluginDef {
136135
make[TestInstance].from(MemoizationEnv.anotherTestInstance)
137136
}
138137
)
@@ -154,7 +153,7 @@ class SameLevel_1_WithActivationsOverride extends DistageMemoizationEnvsTest {
154153
trait DifferentLevelsWithLevel1 extends DistageMemoizationEnvsTest {
155154
override protected def config: TestConfig = {
156155
super.config.copy(
157-
pluginConfig = super.config.pluginConfig overriddenBy new PluginDef {
156+
pluginConfig = super.config.pluginConfig overriddenBy new izumi.distage.plugins.PluginDef {
158157
make[MemoizedInstance].from(MemoizedInstance(UUID.randomUUID()))
159158
make[MemoizedLevel1].from(MemoizedLevel1(UUID.randomUUID()))
160159
make[MemoizedLevel2].from(MemoizedLevel2(UUID.randomUUID()))
@@ -173,7 +172,7 @@ class DifferentLevelsWithLevel1InstanceOverride1 extends DifferentLevelsWithLeve
173172
class DifferentLevelsWithLevel1InstanceOverride2 extends DifferentLevelsWithLevel1 {
174173
override protected def config: TestConfig = {
175174
super.config.copy(
176-
pluginConfig = super.config.pluginConfig overriddenBy new PluginDef {
175+
pluginConfig = super.config.pluginConfig overriddenBy new izumi.distage.plugins.PluginDef {
177176
make[MemoizedLevel2].from(MemoizedLevel2(UUID.randomUUID()))
178177
}
179178
)
@@ -187,7 +186,7 @@ class DifferentLevelsWithLevel1InstanceOverride2 extends DifferentLevelsWithLeve
187186
class SameLevel_1_WithLevel2InstanceOverride extends DistageMemoizationEnvsTest {
188187
override protected def config: TestConfig = {
189188
super.config.copy(
190-
pluginConfig = super.config.pluginConfig overriddenBy new PluginDef {
189+
pluginConfig = super.config.pluginConfig overriddenBy new izumi.distage.plugins.PluginDef {
191190
make[MemoizedLevel2].from(MemoizedLevel2(UUID.randomUUID()))
192191
}
193192
)

distage/distage-testkit-scalatest/src/test/scala/izumi/distage/testkit/distagesuite/tagged/DistageTestTaggedAxesExampleBase.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package izumi.distage.testkit.distagesuite.tagged
22

33
import distage.DIKey
4-
import distage.plugins.PluginDef
54
import izumi.distage.model.definition.StandardAxis.Repo
65
import izumi.distage.testkit.distagesuite.tagged.DistageTestTaggedAxesExampleBase.{DepsCounters, DummyDep, PrdDep}
76
import izumi.distage.testkit.model.TestConfig
@@ -15,7 +14,7 @@ abstract class DistageTestTaggedAxesExampleBase extends SpecZIO with AssertZIO {
1514
Set(Repo.Prod) -> Set(DIKey[PrdDep]),
1615
Set(Repo.Dummy) -> Set(DIKey[DummyDep]),
1716
),
18-
pluginConfig = super.config.pluginConfig.enablePackage("izumi.distage.testkit.distagesuite") ++ new PluginDef {
17+
pluginConfig = super.config.pluginConfig.enablePackage("izumi.distage.testkit.distagesuite") ++ new izumi.distage.plugins.PluginDef {
1918
make[PrdDep]
2019
make[DummyDep]
2120
make[DepsCounters]

0 commit comments

Comments
 (0)