Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: Bump scalameta and scalafix #6199

Merged
merged 4 commits into from Mar 10, 2024
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .jvmopts
@@ -1,6 +1,6 @@
-Xss4m
-Xms1G
-Xmx2G
-Xmx3G
-XX:ReservedCodeCacheSize=1024m
-XX:+TieredCompilation
-Dfile.encoding=UTF-8
1 change: 1 addition & 0 deletions .scalafix3.conf
Expand Up @@ -11,3 +11,4 @@ OrganizeImports.groups = [
"scala.meta."
"*"
]
OrganizeImports.targetDialect = StandardLayout
2 changes: 2 additions & 0 deletions .scalafmt.conf
Expand Up @@ -21,6 +21,8 @@ project.excludeFilters = [
"tests/unit/src/test/resources"
"tests/input/src/main/scala"
"mtags/src/main/scala-2.11/scala/tools/nsc/symtab/classfile/ClassfileParser.scala"
"mtags/src/main/scala-3-wrapper"
"mtags/src/main/scala-3."
]

fileOverride {
Expand Down
5 changes: 4 additions & 1 deletion build.sbt
Expand Up @@ -722,7 +722,10 @@ lazy val mtest = project
Compile / unmanagedSourceDirectories ++= {
val base = (mtags / Compile / sourceDirectory).value
if (isScala3WithPresentationCompiler(scalaVersion.value)) {
List(base / "scala")
List(
base / "scala",
base / "scala-3" / "scala" / "meta" / "internal" / "metals",
)
} else {
Nil
}
Expand Down
Expand Up @@ -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
Expand Down Expand Up @@ -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
}

Expand Down
Expand Up @@ -271,6 +271,7 @@ case class ScalafixProvider(
| OrganizeImports
|]
|OrganizeImports.removeUnused = false
|OrganizeImports.targetDialect = Scala3
|
|""".stripMargin
)
Expand Down Expand Up @@ -376,6 +377,7 @@ case class ScalafixProvider(
val classpath =
(targetRoot.toList ++ scalaTarget.fullClasspath).asJava

val isSource3 = scalaTarget.scalac.getOptions().contains("-Xsource:3")
for {
api <- getScalafix(scalaBinaryVersion)
urlClassLoaderWithExternalRule <- getRuleClassLoader(
Expand All @@ -389,7 +391,7 @@ case class ScalafixProvider(
if (scalaBinaryVersion == "2.13") list.add("-Wunused:imports")
else list.add("-Ywarn-unused-import")

if (!isScala3 && scalaTarget.scalac.getOptions().contains("-Xsource:3"))
if (!isScala3 && isSource3)
list.add("-Xsource:3")

// We always compile with synthetics:on but scalafix will fail if we don't set it here
Expand All @@ -402,7 +404,7 @@ case class ScalafixProvider(
.withScalaVersion(scalaVersion)
.withClasspath(classpath)
.withToolClasspath(urlClassLoaderWithExternalRule)
.withConfig(scalafixConf(isScala3).asJava)
.withConfig(scalafixConf(isScala3 || isSource3).asJava)
.withRules(rules.asJava)
.withPaths(List(diskFilePath.toNIO).asJava)
.withSourceroot(sourceroot.toNIO)
Expand Down
Expand Up @@ -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
Expand All @@ -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
}
Expand Down
32 changes: 17 additions & 15 deletions metals/src/main/scala/scala/meta/internal/tvp/IndexedSymbols.scala
Expand Up @@ -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,
Expand Down Expand Up @@ -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])
Expand Down
@@ -0,0 +1,12 @@
package scala.meta.internal.metals

import scala.meta.trees.Origin

object ScalametaCompat {
object ParsedOrigin {
def unapply(origin: Origin): Option[(Int, Int)] = origin match {
case Origin.Parsed(_, start, end) => Some((start, end))
case _ => None
}
}
}
@@ -0,0 +1,13 @@
package scala.meta.internal.metals

import scala.meta.internal.trees.Origin

object ScalametaCompat {
object ParsedOrigin {
def unapply(origin: Origin): Option[(Int, Int)] = origin match {
case parsed: Origin.Parsed =>
Some((parsed.pos.start, parsed.pos.end))
case _ => None
}
}
}
@@ -0,0 +1,13 @@
package scala.meta.internal.metals

import scala.meta.internal.trees.Origin

object ScalametaCompat {
object ParsedOrigin {
def unapply(origin: Origin): Option[(Int, Int)] = origin match {
case parsed: Origin.Parsed =>
Some((parsed.pos.start, parsed.pos.end))
case _ => None
}
}
}
@@ -0,0 +1,13 @@
package scala.meta.internal.metals

import scala.meta.internal.trees.Origin

object ScalametaCompat {
object ParsedOrigin {
def unapply(origin: Origin): Option[(Int, Int)] = origin match {
case parsed: Origin.Parsed =>
Some((parsed.pos.start, parsed.pos.end))
case _ => None
}
}
}
@@ -0,0 +1,12 @@
package scala.meta.internal.metals

import scala.meta.trees.Origin

object ScalametaCompat {
object ParsedOrigin {
def unapply(origin: Origin): Option[(Int, Int)] = origin match {
case Origin.Parsed(_, start, end) => Some((start, end))
case _ => None
}
}
}
@@ -0,0 +1,12 @@
package scala.meta.internal.metals

import scala.meta.trees.Origin

object ScalametaCompat {
object ParsedOrigin {
def unapply(origin: Origin): Option[(Int, Int)] = origin match {
case Origin.Parsed(_, start, end) => Some((start, end))
case _ => None
}
}
}
@@ -0,0 +1,12 @@
package scala.meta.internal.metals

import scala.meta.trees.Origin

object ScalametaCompat {
object ParsedOrigin {
def unapply(origin: Origin): Option[(Int, Int)] = origin match {
case Origin.Parsed(_, start, end) => Some((start, end))
case _ => None
}
}
}
@@ -0,0 +1,12 @@
package scala.meta.internal.metals

import scala.meta.trees.Origin

object ScalametaCompat {
object ParsedOrigin {
def unapply(origin: Origin): Option[(Int, Int)] = origin match {
case Origin.Parsed(_, start, end) => Some((start, end))
case _ => None
}
}
}
@@ -0,0 +1,12 @@
package scala.meta.internal.metals

import scala.meta.trees.Origin

object ScalametaCompat {
object ParsedOrigin {
def unapply(origin: Origin): Option[(Int, Int)] = origin match {
case Origin.Parsed(_, start, end) => Some((start, end))
case _ => None
}
}
}
@@ -0,0 +1,13 @@
package scala.meta.internal.metals

import scala.meta.internal.trees.Origin

object ScalametaCompat {
object ParsedOrigin {
def unapply(origin: Origin): Option[(Int, Int)] = origin match {
case parsed: Origin.Parsed =>
Some((parsed.pos.start, parsed.pos.end))
case _ => None
}
}
}
@@ -0,0 +1,13 @@
package scala.meta.internal.metals

import scala.meta.internal.trees.Origin

object ScalametaCompat {
object ParsedOrigin {
def unapply(origin: Origin): Option[(Int, Int)] = origin match {
case parsed: Origin.Parsed =>
Some((parsed.pos.start, parsed.pos.end))
case _ => None
}
}
}
@@ -0,0 +1,13 @@
package scala.meta.internal.metals

import scala.meta.internal.trees.Origin

object ScalametaCompat {
object ParsedOrigin {
def unapply(origin: Origin): Option[(Int, Int)] = origin match {
case parsed: Origin.Parsed =>
Some((parsed.pos.start, parsed.pos.end))
case _ => None
}
}
}
@@ -0,0 +1,13 @@
package scala.meta.internal.metals

import scala.meta.internal.trees.Origin

object ScalametaCompat {
object ParsedOrigin {
def unapply(origin: Origin): Option[(Int, Int)] = origin match {
case parsed: Origin.Parsed =>
Some((parsed.pos.start, parsed.pos.end))
case _ => None
}
}
}
@@ -0,0 +1,12 @@
package scala.meta.internal.metals

import scala.meta.trees.Origin

object ScalametaCompat {
object ParsedOrigin {
def unapply(origin: Origin): Option[(Int, Int)] = origin match {
case Origin.Parsed(_, start, end) => Some((start, end))
case _ => None
}
}
}
Expand Up @@ -5,11 +5,11 @@ import java.nio.file.Path
import java.util.concurrent.CompletableFuture
import java.util.concurrent.ExecutorService
import java.util.concurrent.ScheduledExecutorService
import java.{util as ju}
import java.{util => ju}

import scala.concurrent.ExecutionContext
import scala.concurrent.ExecutionContextExecutor
import scala.jdk.CollectionConverters.*
import scala.jdk.CollectionConverters._

import scala.meta.internal.metals.ReportLevel
import scala.meta.pc.AutoImportsResult
Expand All @@ -24,7 +24,7 @@ import scala.meta.pc.RangeParams
import scala.meta.pc.SymbolSearch
import scala.meta.pc.VirtualFileParams

import dotty.tools.pc.{ScalaPresentationCompiler as DottyPresentationCompiler}
import dotty.tools.pc.{ScalaPresentationCompiler => DottyPresentationCompiler}
import org.eclipse.lsp4j.CompletionItem
import org.eclipse.lsp4j.CompletionList
import org.eclipse.lsp4j.Diagnostic
Expand Down
@@ -1,9 +1,9 @@
package scala.meta.internal.pc.printer

import dotty.tools.dotc.core.Contexts.Context
import dotty.tools.dotc.core.Flags.*
import dotty.tools.dotc.core.StdNames.*
import dotty.tools.dotc.core.Types.*
import dotty.tools.dotc.core.Flags._
import dotty.tools.dotc.core.StdNames._
import dotty.tools.dotc.core.Types._
import dotty.tools.dotc.printing.RefinedPrinter
import dotty.tools.dotc.printing.Texts.Text

Expand Down