diff --git a/metals/src/main/scala/scala/meta/internal/builds/Digest.scala b/metals/src/main/scala/scala/meta/internal/builds/Digest.scala index dbcec6208ee..91479f3b3d2 100644 --- a/metals/src/main/scala/scala/meta/internal/builds/Digest.scala +++ b/metals/src/main/scala/scala/meta/internal/builds/Digest.scala @@ -3,11 +3,10 @@ package scala.meta.internal.builds import java.nio.charset.StandardCharsets import java.nio.file.Files import java.security.MessageDigest - import scala.meta.internal.builds.Digest.Status import scala.meta.internal.io.PathIO -import scala.meta.internal.mtags.MD5 import scala.meta.internal.metals.MetalsEnrichments._ +import scala.meta.internal.mtags.MD5 import scala.meta.io.AbsolutePath import scala.util.control.NonFatal import scala.xml.Node @@ -186,7 +185,6 @@ trait Digestable { } digest.update(workspace.toString.getBytes(StandardCharsets.UTF_8)) - val isSuccess = digestWorkspace(workspace, digest) if (isSuccess) Some(MD5.bytesToHex(digest.digest())) else None diff --git a/metals/src/main/scala/scala/meta/internal/builds/MavenDigest.scala b/metals/src/main/scala/scala/meta/internal/builds/MavenDigest.scala index a9154892533..7b91ddd4484 100644 --- a/metals/src/main/scala/scala/meta/internal/builds/MavenDigest.scala +++ b/metals/src/main/scala/scala/meta/internal/builds/MavenDigest.scala @@ -3,6 +3,7 @@ package scala.meta.internal.builds import java.security.MessageDigest import scala.meta.io.AbsolutePath import scala.meta.internal.metals.MetalsEnrichments._ +import scala.meta.io.AbsolutePath object MavenDigest extends Digestable { override protected def digestWorkspace( diff --git a/metals/src/main/scala/scala/meta/internal/builds/SbtDigest.scala b/metals/src/main/scala/scala/meta/internal/builds/SbtDigest.scala index 783e94ff35d..26736d7e505 100644 --- a/metals/src/main/scala/scala/meta/internal/builds/SbtDigest.scala +++ b/metals/src/main/scala/scala/meta/internal/builds/SbtDigest.scala @@ -1,7 +1,6 @@ package scala.meta.internal.builds import java.security.MessageDigest - import scala.meta.internal.builds.Digest.digestScala import scala.meta.internal.metals.MetalsEnrichments._ import scala.meta.io.AbsolutePath diff --git a/mtags/src/main/scala/scala/meta/internal/mtags/MtagsEnrichments.scala b/mtags/src/main/scala/scala/meta/internal/mtags/MtagsEnrichments.scala index c5b96e9df70..4e79ecb654c 100644 --- a/mtags/src/main/scala/scala/meta/internal/mtags/MtagsEnrichments.scala +++ b/mtags/src/main/scala/scala/meta/internal/mtags/MtagsEnrichments.scala @@ -57,6 +57,17 @@ trait MtagsEnrichments { else Language.UNKNOWN_LANGUAGE } implicit class XtensionPathMetals(file: Path) { + def enclosingSourceDirectory: Option[Path] = { + def loop(p: Path): Option[Path] = + if (p.endsWith("java") || p.endsWith("scala")) Some(p) + else { + Option(p.getParent()) match { + case None => None + case Some(parent) => loop(parent) + } + } + loop(file) + } def isClassfile: Boolean = filename.endsWith(".class") def filename: String = file.getFileName().toString() def toLanguage: Language = { @@ -107,6 +118,9 @@ trait MtagsEnrichments { case _ => false } } + def isScalaScript: Boolean = { + filename.endsWith(".sc") + } def isWorksheet: Boolean = { filename.endsWith(".worksheet.sc") } @@ -395,6 +409,10 @@ trait MtagsEnrichments { } implicit class XtensionAbsolutePath(path: AbsolutePath) { + def isEmptyDirectory: Boolean = { + path.isDirectory && + !path.list.exists(_ => true) + } def parent: AbsolutePath = { AbsolutePath(path.toNIO.getParent) } diff --git a/mtags/src/main/scala/scala/meta/internal/pc/LogMessages.scala b/mtags/src/main/scala/scala/meta/internal/pc/LogMessages.scala index 2abc293b7cf..c43ba22fb52 100644 --- a/mtags/src/main/scala/scala/meta/internal/pc/LogMessages.scala +++ b/mtags/src/main/scala/scala/meta/internal/pc/LogMessages.scala @@ -2,6 +2,8 @@ package scala.meta.internal.pc object LogMessages { def cancelled: String = "cancelled presentation compiler" + def pluralName(name: String, count: Int): String = + s"${count} ${name}${plural(count)}" def plural(count: Int): String = if (count == 1) "" else "s" diff --git a/tests/slow/src/test/scala/tests/BaseImportSuite.scala b/tests/unit/src/main/scala/tests/BaseImportSuite.scala similarity index 100% rename from tests/slow/src/test/scala/tests/BaseImportSuite.scala rename to tests/unit/src/main/scala/tests/BaseImportSuite.scala diff --git a/tests/unit/src/main/scala/tests/TestingClient.scala b/tests/unit/src/main/scala/tests/TestingClient.scala index 609bf94e76b..097ee840f42 100644 --- a/tests/unit/src/main/scala/tests/TestingClient.scala +++ b/tests/unit/src/main/scala/tests/TestingClient.scala @@ -4,7 +4,6 @@ import java.util.concurrent.CompletableFuture import java.util.concurrent.ConcurrentLinkedDeque import java.util.concurrent.ConcurrentLinkedQueue import java.util.concurrent.atomic.AtomicInteger - import org.eclipse.lsp4j.ApplyWorkspaceEditParams import org.eclipse.lsp4j.ApplyWorkspaceEditResponse import org.eclipse.lsp4j.Diagnostic