diff --git a/metals/src/main/scala/scala/meta/internal/metals/MetalsEnrichments.scala b/metals/src/main/scala/scala/meta/internal/metals/MetalsEnrichments.scala index 17a63e4b4d4..93dff4440f7 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/MetalsEnrichments.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/MetalsEnrichments.scala @@ -42,11 +42,11 @@ import scala.meta.internal.mtags.MtagsEnrichments import scala.meta.internal.parsing.EmptyResult import scala.meta.internal.semanticdb.Scala.Descriptor import scala.meta.internal.semanticdb.Scala.Symbols -import scala.meta.internal.trees.Origin -import scala.meta.internal.trees.Origin.Parsed import scala.meta.internal.{semanticdb => s} import scala.meta.io.AbsolutePath import scala.meta.io.RelativePath +import scala.meta.trees.Origin +import scala.meta.trees.Origin.Parsed import ch.epfl.scala.{bsp4j => b} import com.google.gson.Gson @@ -1182,17 +1182,17 @@ object MetalsEnrichments def leadingTokens: Iterator[m.Token] = tree.origin match { - case Origin.Parsed(input, dialect, pos) => - val tokens = dialect(input).tokenize.get - tokens.slice(0, pos.start - 1).reverseIterator + case Origin.Parsed(parsed, start, _) => + val tokens = parsed.dialect(parsed.input).tokenize.get + tokens.slice(0, start - 1).reverseIterator case _ => Iterator.empty } def trailingTokens: Iterator[m.Token] = tree.origin match { - case Origin.Parsed(input, dialect, pos) => - val tokens = dialect(input).tokenize.get - tokens.slice(pos.end, tokens.length).iterator + case Origin.Parsed(parsed, _, end) => + val tokens = parsed.dialect(parsed.input).tokenize.get + tokens.slice(end, tokens.length).iterator case _ => Iterator.empty } diff --git a/metals/src/main/scala/scala/meta/internal/parsing/DocumentSymbolProvider.scala b/metals/src/main/scala/scala/meta/internal/parsing/DocumentSymbolProvider.scala index c45fb241ec6..836cbafe4b2 100644 --- a/metals/src/main/scala/scala/meta/internal/parsing/DocumentSymbolProvider.scala +++ b/metals/src/main/scala/scala/meta/internal/parsing/DocumentSymbolProvider.scala @@ -4,8 +4,8 @@ import java.util import scala.meta._ import scala.meta.internal.metals.MetalsEnrichments._ -import scala.meta.internal.trees.Origin import scala.meta.transversers.SimpleTraverser +import scala.meta.trees.Origin import org.eclipse.lsp4j.DocumentSymbol import org.eclipse.lsp4j.SymbolKind @@ -29,7 +29,7 @@ final class DocumentSymbolProvider( tree <- trees.get(path) } yield { implicit val dialect = tree.origin match { - case Origin.Parsed(_, dialect, _) => dialect + case parsed: Origin.Parsed => parsed.dialect case Origin.None => dialects.Scala213 case _ => dialects.Scala213 } diff --git a/metals/src/main/scala/scala/meta/internal/tvp/IndexedSymbols.scala b/metals/src/main/scala/scala/meta/internal/tvp/IndexedSymbols.scala index de000d87658..31ed47342a1 100644 --- a/metals/src/main/scala/scala/meta/internal/tvp/IndexedSymbols.scala +++ b/metals/src/main/scala/scala/meta/internal/tvp/IndexedSymbols.scala @@ -20,8 +20,8 @@ import scala.meta.internal.mtags.Symbol import scala.meta.internal.mtags.SymbolDefinition import scala.meta.internal.parsing.Trees import scala.meta.internal.semanticdb.SymbolInformation -import scala.meta.internal.trees.Origin import scala.meta.io.AbsolutePath +import scala.meta.trees.Origin class IndexedSymbols( isStatisticsEnabled: Boolean, @@ -77,23 +77,25 @@ class IndexedSymbols( trees .get(in) .map { tree => - (tree, tree.origin) match { + ((tree, tree.origin) match { case ( src: Source, - Origin.Parsed(input: Input.VirtualFile, dialect, _), + parsed: Origin.Parsed, ) => - val mtags = new ScalaMtags(input, dialect, Some(src)) - mtags - .index() - .symbols - - case (tree, origin) => - // Trees don't return anything else than Source, and it should be impossible to get here - scribe.error( - s"[$in] Unexpected tree type ${tree.getClass} in IndexedSymbols with origin:\n$origin " - ) - Seq.empty[SymbolInformation] - + parsed.input match { + case input: Input.VirtualFile => + val mtags = + new ScalaMtags(input, parsed.dialect, Some(src)) + Some(mtags.index().symbols) + case _ => None + } + case _ => None + }).getOrElse { + // Trees don't return anything else than Source, and it should be impossible to get here + scribe.error( + s"[$in] Unexpected tree type ${tree.getClass} in IndexedSymbols with origin:\n${tree.origin} " + ) + Seq.empty[SymbolInformation] } } .getOrElse(Seq.empty[SymbolInformation]) diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/ScalaPresentationCompiler.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/ScalaPresentationCompiler.scala index 0fe3963e477..66ffd1a321e 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/ScalaPresentationCompiler.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/ScalaPresentationCompiler.scala @@ -3,11 +3,11 @@ package scala.meta.internal.pc import java.io.File import java.net.URI import java.nio.file.Path +import java.util as ju import java.util.Optional import java.util.concurrent.CompletableFuture import java.util.concurrent.ExecutorService import java.util.concurrent.ScheduledExecutorService -import java.{util as ju} import scala.collection.JavaConverters.* import scala.concurrent.ExecutionContext @@ -24,12 +24,12 @@ import scala.meta.internal.mtags.MtagsEnrichments.given import scala.meta.internal.pc.completions.CompletionProvider import scala.meta.internal.pc.completions.OverrideCompletions import scala.meta.pc.* -import scala.meta.pc.{PcSymbolInformation as IPcSymbolInformation} +import scala.meta.pc.PcSymbolInformation as IPcSymbolInformation import dotty.tools.dotc.reporting.StoreReporter +import org.eclipse.lsp4j as l import org.eclipse.lsp4j.DocumentHighlight import org.eclipse.lsp4j.TextEdit -import org.eclipse.{lsp4j as l} case class ScalaPresentationCompiler( buildTargetIdentifier: String = "", diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/printer/ShortenedNames.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/printer/ShortenedNames.scala index 5ea619eeb0a..be4abc95845 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/printer/ShortenedNames.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/printer/ShortenedNames.scala @@ -1,6 +1,6 @@ package scala.meta.internal.pc.printer -import java.{util as ju} +import java.util as ju import scala.annotation.tailrec diff --git a/mtags/src/main/scala/scala/meta/internal/metals/ScaladocIndexer.scala b/mtags/src/main/scala/scala/meta/internal/metals/ScaladocIndexer.scala index 98d75602634..9f82a29153c 100644 --- a/mtags/src/main/scala/scala/meta/internal/metals/ScaladocIndexer.scala +++ b/mtags/src/main/scala/scala/meta/internal/metals/ScaladocIndexer.scala @@ -11,8 +11,8 @@ import scala.meta.internal.semanticdb.Scala.Descriptor import scala.meta.internal.semanticdb.Scala.Symbols import scala.meta.internal.semanticdb.SymbolInformation import scala.meta.internal.semanticdb.SymbolOccurrence -import scala.meta.internal.trees.Origin import scala.meta.pc.SymbolDocumentation +import scala.meta.trees.Origin /** * Extracts Scaladoc from Scala source code. @@ -29,17 +29,17 @@ class ScaladocIndexer( owner: String ): Unit = { val docstring = currentTree.origin match { - case Origin.None => "" - case parsed: Origin.Parsed => + case Origin.Parsed(_, start, _) => val leadingDocstring = ScaladocIndexer.findLeadingDocstring( source.tokens, - parsed.pos.start - 1 + start - 1 ) leadingDocstring match { case Some(value) => value case None => "" } + case _ => "" } // Register `@define` macros to use for expanding in later docstrings. defines ++= ScaladocParser.extractDefines(docstring) diff --git a/project/V.scala b/project/V.scala index d89ce13eafa..f3c5ca54cc1 100644 --- a/project/V.scala +++ b/project/V.scala @@ -44,9 +44,9 @@ object V { val sbtBloop = bloop val sbtJdiTools = "1.1.1" val scalaCli = "1.1.3" - val scalafix = "0.11.1" + val scalafix = "0.12.0" val scalafmt = "3.7.15" - val scalameta = "4.8.15" + val scalameta = "4.9.1" val scribe = "3.13.0" val qdox = "2.1.0" diff --git a/project/plugins.sbt b/project/plugins.sbt index 7ea1cc270f2..f1aa7866847 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,5 +1,5 @@ addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7") -addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.11.1") +addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.0") addSbtPlugin("com.github.sbt" % "sbt-ci-release" % "1.5.12") addSbtPlugin("org.scalameta" % "sbt-mdoc" % "2.5.2") addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0")