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..d1dfaa03e9f 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 parsed: Origin.Parsed => + val tokens = parsed.dialect(parsed.input).tokenize.get + tokens.slice(0, parsed.begTokenIdx - 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 parsed: Origin.Parsed => + val tokens = parsed.dialect(parsed.input).tokenize.get + tokens.slice(parsed.endTokenIdx, 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..d2314930de6 100644 --- a/metals/src/main/scala/scala/meta/internal/tvp/IndexedSymbols.scala +++ b/metals/src/main/scala/scala/meta/internal/tvp/IndexedSymbols.scala @@ -7,6 +7,7 @@ import scala.collection.concurrent.TrieMap import scala.meta.Dialect import scala.meta._ import scala.meta.inputs.Input +import scala.meta.inputs.Input.VirtualFile import scala.meta.internal.io.FileIO import scala.meta.internal.metals.Buffers import scala.meta.internal.metals.MetalsEnrichments._ @@ -20,8 +21,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, @@ -80,12 +81,21 @@ class IndexedSymbols( (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 + parsed.input match { + case input: VirtualFile => + Seq.empty[SymbolInformation] + val mtags = new ScalaMtags(input, parsed.dialect, Some(src)) + mtags + .index() + .symbols + case input => + scribe.error( + s"[$in] Unexpected input type ${input} in IndexedSymbols" + ) + Seq.empty[SymbolInformation] + } case (tree, origin) => // Trees don't return anything else than Source, and it should be impossible to get here 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..00483d9f617 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 => val leadingDocstring = ScaladocIndexer.findLeadingDocstring( source.tokens, - parsed.pos.start - 1 + parsed.begTokenIdx - 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..11c07c5aace 100644 --- a/project/V.scala +++ b/project/V.scala @@ -46,7 +46,7 @@ object V { val scalaCli = "1.1.3" val scalafix = "0.11.1" val scalafmt = "3.7.15" - val scalameta = "4.8.15" + val scalameta = "4.9.1-RC1" val scribe = "3.13.0" val qdox = "2.1.0"