Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion api/src/main/scala/org/scastie/api/ScalaTarget.scala
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,12 @@ case class Scala3(scalaVersion: String) extends SbtScalaTarget {
else renderSbtDouble(lib)
}

def sbtConfig: String = sbtConfigScalaVersion
def sbtConfig: String =
if (ScalaVersions.isNightly(scalaVersion))
// TODO: change this to "resolvers += Resolver.scalaNightlyRepository" after upgrading to sbt 1.11.5
s"""|$sbtConfigScalaVersion
|resolvers += "scala-nightly" at "https://repo.scala-lang.org/artifactory/maven-nightlies"""".stripMargin
else sbtConfigScalaVersion

def sbtPluginsConfig: String = ""

Expand Down
2 changes: 2 additions & 0 deletions api/src/main/scala/org/scastie/api/ScalaVersions.scala
Original file line number Diff line number Diff line change
Expand Up @@ -129,4 +129,6 @@ object ScalaVersions {

def find(tpe: ScalaTargetType, sv: String): String =
allVersions(tpe).find(_.startsWith(sv)).getOrElse(sv)

def isNightly(version: String): Boolean = version.endsWith("-NIGHTLY")
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import japgolly.scalajs.react._

import vdom.all._
import org.scastie.buildinfo.BuildInfo
import org.scastie.client.scalacli.ScalaVersionUtil
import scala.scalajs.concurrent.JSExecutionContext.Implicits.queue

case class VersionSelector(scalaTarget: SbtScalaTarget, onChange: ScalaTarget ~=> Callback) {
@inline def render: VdomElement = VersionSelector.versionSelectorHook(this)
Expand All @@ -16,7 +18,11 @@ object VersionSelector {
val versionSelectorHook =
ScalaFnComponent
.withHooks[VersionSelector]
.render(props => {
.useState(Option.empty[String])
.useEffectOnMountBy((_, nightly) =>
Callback.future(ScalaVersionUtil.resolveScala3Nightly.map(nightly.setState))
)
.render((props, nightly) => {
def versionSelectors(scalaVersion: String) =
props.scalaTarget match {
case d: Scala2 => Scala2.apply(scalaVersion)
Expand Down Expand Up @@ -49,12 +55,29 @@ object VersionSelector {
)
}
.toTagMod,
TagMod.when(props.scalaTarget.targetType == ScalaTargetType.Scala3)(
nightly.value match {
case Some(nightlyVersion) =>
li(
input(
`type` := "radio",
id := "scala-nightly",
name := "scalaV",
onChange --> props.onChange(Scala3(nightlyVersion)),
checked := ScalaVersions.isNightly(props.scalaTarget.scalaVersion)
),
label(`for` := "scala-nightly", className := "radio", role := "button", "Nightly")
)
case None => EmptyVdom
}
),
li(
label(
div(cls := "select-wrapper"){
val isRecommended = ScalaVersions
.suggestedScalaVersions(props.scalaTarget.targetType)
.contains(props.scalaTarget.scalaVersion)
.contains(props.scalaTarget.scalaVersion) ||
ScalaVersions.isNightly(props.scalaTarget.scalaVersion)

select(
name := "scalaVersion",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import org.scalajs.dom
import scala.util.matching.Regex
import scala.scalajs.concurrent.JSExecutionContext.Implicits.queue
import org.scastie.buildinfo.BuildInfo
import org.scastie.api.ScalaVersions

object ScalaVersionUtil {
val location = dom.window.location
Expand Down Expand Up @@ -102,4 +103,7 @@ object ScalaVersionUtil {
Future.successful(version)
}
}

def resolveScala3Nightly: Future[Option[String]] =
resolveVersion(scala3Nightly).map(v => Option.when(ScalaVersions.isNightly(v))(v))
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ object Instrument {

def instrumentOne(term: Term, tpeTree: Option[Type], offset: Int, isScalaJs: Boolean): Patch = {

// TODO: rename `$t` to a `$`-free identifier to silence the warning:
// "The identifier `$t` should not contain `$`, which is reserved for internal compiler use."
val treeQuote =
tpeTree match {
case None => s"val $$t = $term"
Expand Down
Loading