Skip to content

Commit 25f2696

Browse files
committed
WIP updating to Scala 2.13.1 and bug fixes
1 parent f64f06c commit 25f2696

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

src/main/scala/org/scalaexercises/exercises/Exercises.scala

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import java.io.File
2727
import cats.implicits._
2828
import org.clapper.classutil.ClassFinder
2929
import org.objectweb.asm.Opcodes
30-
import org.scalaexercises.evaluator.types.Dependency
30+
import org.scalaexercises.evaluator.types.EvaluatorDependency
3131
import org.scalaexercises.runtime.model._
3232

3333
import scala.util.Try
@@ -36,10 +36,10 @@ object Exercises {
3636
val LIBRARIES_PACKAGE = "org.scalaexercises.content"
3737

3838
private[this] def classMap(cl: ClassLoader) = {
39-
val files = cl
39+
val files = (cl
4040
.asInstanceOf[URLClassLoader]
4141
.getURLs
42-
.map(url => new File(url.getFile)) filter (_.exists)
42+
.map(url => new File(url.getFile)) filter (_.exists)).toSeq
4343
val classFinder = ClassFinder(files, Some(Opcodes.ASM7))
4444
val classes = classFinder.getClasses
4545
.filter(Try(_).isSuccess)
@@ -50,15 +50,15 @@ object Exercises {
5050
private[this] def subclassesOf[A: ClassTag](cl: ClassLoader): List[String] = {
5151
def loop(currentClassLoader: ClassLoader, acc: List[String]): List[String] =
5252
Option(currentClassLoader) match {
53-
case None acc
54-
case Some(cll: URLClassLoader)
53+
case None => acc
54+
case Some(cll: URLClassLoader) =>
5555
val cn = ClassFinder
5656
.concreteSubclasses(implicitly[ClassTag[A]].runtimeClass.getName, classMap(cll))
5757
.filter(_.name.startsWith(LIBRARIES_PACKAGE))
5858
.map(_.name)
5959
.toList
6060
loop(currentClassLoader.getParent, acc ++ cn)
61-
case Some(o) loop(o.getParent, acc)
61+
case Some(o) => loop(o.getParent, acc)
6262
}
6363
loop(cl, Nil)
6464
}
@@ -67,21 +67,21 @@ object Exercises {
6767
cl: ClassLoader = classOf[Exercise].getClassLoader): (List[String], List[Library]) = {
6868
val classNames: List[String] = subclassesOf[Library](cl)
6969

70-
val errorsAndLibraries = classNames.map { name
70+
val errorsAndLibraries = classNames.map { name =>
7171
for {
72-
loadedClass guard(Class.forName(name, true, cl), s"$name not found")
73-
loadedObject guard(
72+
loadedClass <- guard(Class.forName(name, true, cl), s"$name not found")
73+
loadedObject <- guard(
7474
loadedClass.getField("MODULE$").get(null),
7575
s"$name must be defined as an object")
76-
loadedLibrary guard(loadedObject.asInstanceOf[Library], s"$name must extend Library")
76+
loadedLibrary <- guard(loadedObject.asInstanceOf[Library], s"$name must extend Library")
7777
} yield loadedLibrary
7878
}
7979

8080
errorsAndLibraries.separate
8181
}
8282

83-
private def guard[A](f: A, message: String) =
84-
Either.catchNonFatal(f).leftMap(_ message)
83+
private def guard[A](f: => A, message: => String) =
84+
Either.catchNonFatal(f).leftMap(_ => message)
8585

8686
def buildEvaluatorRequest(
8787
pkg: String,
@@ -90,18 +90,18 @@ object Exercises {
9090
imports: List[String] = Nil,
9191
resolvers: List[String],
9292
libraryDependencies: List[String]
93-
): (List[String], List[Dependency], String) = {
93+
): (List[String], List[EvaluatorDependency], String) = {
9494

9595
val extractEvaluatorResolvers: List[String] = {
96-
resolvers.filter(r => !r.isEmpty && r.contains("http")) map { resolver
96+
resolvers.filter(r => !r.isEmpty && r.contains("http")) map { resolver =>
9797
resolver.substring(resolver.indexOf("http"))
9898
}
9999
}
100100

101-
val extractEvaluatorDependencies: List[Dependency] = {
102-
libraryDependencies map { dep
101+
val extractEvaluatorDependencies: List[EvaluatorDependency] = {
102+
libraryDependencies map { dep =>
103103
val depArray = dep.split(":")
104-
Dependency(groupId = depArray(0), artifactId = depArray(1), version = depArray(2))
104+
EvaluatorDependency(groupId = depArray(0), artifactId = depArray(1), version = depArray(2))
105105
}
106106
}
107107

0 commit comments

Comments
 (0)