diff --git a/.jvmopts b/.jvmopts index 8e6c7e08685..e1ee079356e 100644 --- a/.jvmopts +++ b/.jvmopts @@ -1,6 +1,6 @@ -Xss4m -Xms1G --Xmx2G +-Xmx3G -XX:ReservedCodeCacheSize=1024m -XX:+TieredCompilation -Dfile.encoding=UTF-8 diff --git a/.scalafix3.conf b/.scalafix3.conf index 632539e2234..24d6b64c9bd 100644 --- a/.scalafix3.conf +++ b/.scalafix3.conf @@ -11,3 +11,4 @@ OrganizeImports.groups = [ "scala.meta." "*" ] +OrganizeImports.targetDialect = StandardLayout diff --git a/.scalafmt.conf b/.scalafmt.conf index d57dc0c2d4e..7158d4caf20 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -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 { diff --git a/build.sbt b/build.sbt index 79a8d4a76f5..cf1fe570358 100644 --- a/build.sbt +++ b/build.sbt @@ -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 } 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/metals/ScalafixProvider.scala b/metals/src/main/scala/scala/meta/internal/metals/ScalafixProvider.scala index 6be82a0b030..f090f0834d0 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/ScalafixProvider.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/ScalafixProvider.scala @@ -271,6 +271,7 @@ case class ScalafixProvider( | OrganizeImports |] |OrganizeImports.removeUnused = false + |OrganizeImports.targetDialect = Scala3 | |""".stripMargin ) @@ -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( @@ -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 @@ -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) 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-2.11/scala/meta/internal/metals/ScalametaCompat.scala b/mtags/src/main/scala-2.11/scala/meta/internal/metals/ScalametaCompat.scala new file mode 100644 index 00000000000..4067aa46477 --- /dev/null +++ b/mtags/src/main/scala-2.11/scala/meta/internal/metals/ScalametaCompat.scala @@ -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 + } + } +} diff --git a/mtags/src/main/scala-2.12.12/scala/meta/internal/metals/ScalametaCompat.scala b/mtags/src/main/scala-2.12.12/scala/meta/internal/metals/ScalametaCompat.scala new file mode 100644 index 00000000000..2bdd72f330f --- /dev/null +++ b/mtags/src/main/scala-2.12.12/scala/meta/internal/metals/ScalametaCompat.scala @@ -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 + } + } +} diff --git a/mtags/src/main/scala-2.12.13/scala/meta/internal/metals/ScalametaCompat.scala b/mtags/src/main/scala-2.12.13/scala/meta/internal/metals/ScalametaCompat.scala new file mode 100644 index 00000000000..2bdd72f330f --- /dev/null +++ b/mtags/src/main/scala-2.12.13/scala/meta/internal/metals/ScalametaCompat.scala @@ -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 + } + } +} diff --git a/mtags/src/main/scala-2.12.14/scala/meta/internal/metals/ScalametaCompat.scala b/mtags/src/main/scala-2.12.14/scala/meta/internal/metals/ScalametaCompat.scala new file mode 100644 index 00000000000..2bdd72f330f --- /dev/null +++ b/mtags/src/main/scala-2.12.14/scala/meta/internal/metals/ScalametaCompat.scala @@ -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 + } + } +} diff --git a/mtags/src/main/scala-2.12.15/scala/meta/internal/metals/ScalametaCompat.scala b/mtags/src/main/scala-2.12.15/scala/meta/internal/metals/ScalametaCompat.scala new file mode 100644 index 00000000000..4067aa46477 --- /dev/null +++ b/mtags/src/main/scala-2.12.15/scala/meta/internal/metals/ScalametaCompat.scala @@ -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 + } + } +} diff --git a/mtags/src/main/scala-2.12.16/scala/meta/internal/metals/ScalametaCompat.scala b/mtags/src/main/scala-2.12.16/scala/meta/internal/metals/ScalametaCompat.scala new file mode 100644 index 00000000000..4067aa46477 --- /dev/null +++ b/mtags/src/main/scala-2.12.16/scala/meta/internal/metals/ScalametaCompat.scala @@ -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 + } + } +} diff --git a/mtags/src/main/scala-2.12.17/scala/meta/internal/metals/ScalametaCompat.scala b/mtags/src/main/scala-2.12.17/scala/meta/internal/metals/ScalametaCompat.scala new file mode 100644 index 00000000000..4067aa46477 --- /dev/null +++ b/mtags/src/main/scala-2.12.17/scala/meta/internal/metals/ScalametaCompat.scala @@ -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 + } + } +} diff --git a/mtags/src/main/scala-2.12.18/scala/meta/internal/metals/ScalametaCompat.scala b/mtags/src/main/scala-2.12.18/scala/meta/internal/metals/ScalametaCompat.scala new file mode 100644 index 00000000000..4067aa46477 --- /dev/null +++ b/mtags/src/main/scala-2.12.18/scala/meta/internal/metals/ScalametaCompat.scala @@ -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 + } + } +} diff --git a/mtags/src/main/scala-2.12.19/scala/meta/internal/metals/ScalametaCompat.scala b/mtags/src/main/scala-2.12.19/scala/meta/internal/metals/ScalametaCompat.scala new file mode 100644 index 00000000000..4067aa46477 --- /dev/null +++ b/mtags/src/main/scala-2.12.19/scala/meta/internal/metals/ScalametaCompat.scala @@ -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 + } + } +} diff --git a/mtags/src/main/scala-2.13.5/meta/internal/metals/ScalametaCompat.scala b/mtags/src/main/scala-2.13.5/meta/internal/metals/ScalametaCompat.scala new file mode 100644 index 00000000000..2bdd72f330f --- /dev/null +++ b/mtags/src/main/scala-2.13.5/meta/internal/metals/ScalametaCompat.scala @@ -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 + } + } +} diff --git a/mtags/src/main/scala-2.13.6/meta/internal/metals/ScalametaCompat.scala b/mtags/src/main/scala-2.13.6/meta/internal/metals/ScalametaCompat.scala new file mode 100644 index 00000000000..2bdd72f330f --- /dev/null +++ b/mtags/src/main/scala-2.13.6/meta/internal/metals/ScalametaCompat.scala @@ -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 + } + } +} diff --git a/mtags/src/main/scala-2.13.7/meta/internal/metals/ScalametaCompat.scala b/mtags/src/main/scala-2.13.7/meta/internal/metals/ScalametaCompat.scala new file mode 100644 index 00000000000..2bdd72f330f --- /dev/null +++ b/mtags/src/main/scala-2.13.7/meta/internal/metals/ScalametaCompat.scala @@ -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 + } + } +} diff --git a/mtags/src/main/scala-2.13.8/meta/internal/metals/ScalametaCompat.scala b/mtags/src/main/scala-2.13.8/meta/internal/metals/ScalametaCompat.scala new file mode 100644 index 00000000000..2bdd72f330f --- /dev/null +++ b/mtags/src/main/scala-2.13.8/meta/internal/metals/ScalametaCompat.scala @@ -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 + } + } +} diff --git a/mtags/src/main/scala-2.13/scala/meta/internal/metals/ScalametaCompat.scala b/mtags/src/main/scala-2.13/scala/meta/internal/metals/ScalametaCompat.scala new file mode 100644 index 00000000000..4067aa46477 --- /dev/null +++ b/mtags/src/main/scala-2.13/scala/meta/internal/metals/ScalametaCompat.scala @@ -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 + } + } +} diff --git a/mtags/src/main/scala-3-wrapper/ScalaPresentationCompiler.scala b/mtags/src/main/scala-3-wrapper/ScalaPresentationCompiler.scala index 2627aea449e..51eac872a8b 100644 --- a/mtags/src/main/scala-3-wrapper/ScalaPresentationCompiler.scala +++ b/mtags/src/main/scala-3-wrapper/ScalaPresentationCompiler.scala @@ -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 @@ -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 diff --git a/mtags/src/main/scala-3.3.3/scala/meta/internal/pc/printer/RefinedDotcPrinter.scala b/mtags/src/main/scala-3.3.3/scala/meta/internal/pc/printer/RefinedDotcPrinter.scala index 866fd2987a0..3281c027579 100644 --- a/mtags/src/main/scala-3.3.3/scala/meta/internal/pc/printer/RefinedDotcPrinter.scala +++ b/mtags/src/main/scala-3.3.3/scala/meta/internal/pc/printer/RefinedDotcPrinter.scala @@ -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 diff --git a/mtags/src/main/scala-3.3/scala/meta/internal/pc/MetalsSealedDesc.scala b/mtags/src/main/scala-3.3/scala/meta/internal/pc/MetalsSealedDesc.scala index d416e0e859d..539a7865ad2 100644 --- a/mtags/src/main/scala-3.3/scala/meta/internal/pc/MetalsSealedDesc.scala +++ b/mtags/src/main/scala-3.3/scala/meta/internal/pc/MetalsSealedDesc.scala @@ -1,8 +1,8 @@ package scala.meta.internal.pc import dotty.tools.dotc.core.Contexts.Context -import dotty.tools.dotc.core.Flags.* -import dotty.tools.dotc.core.StdNames.* +import dotty.tools.dotc.core.Flags._ +import dotty.tools.dotc.core.StdNames._ import dotty.tools.dotc.core.Symbols.Symbol object MetalsSealedDesc: diff --git a/mtags/src/main/scala-3.3/scala/meta/internal/pc/MetalsSignatures.scala b/mtags/src/main/scala-3.3/scala/meta/internal/pc/MetalsSignatures.scala index cfbba4edbf4..78c86878db6 100644 --- a/mtags/src/main/scala-3.3/scala/meta/internal/pc/MetalsSignatures.scala +++ b/mtags/src/main/scala-3.3/scala/meta/internal/pc/MetalsSignatures.scala @@ -1,8 +1,8 @@ package scala.meta.internal.pc import dotty.tools.dotc.ast.tpd -import dotty.tools.dotc.core.Contexts.* -import dotty.tools.dotc.core.Denotations.* +import dotty.tools.dotc.core.Contexts._ +import dotty.tools.dotc.core.Denotations._ import dotty.tools.dotc.util.Signatures import dotty.tools.dotc.util.Signatures.Signature import dotty.tools.dotc.util.SourcePosition diff --git a/mtags/src/main/scala-3/scala/meta/internal/metals/ScalametaCompat.scala b/mtags/src/main/scala-3/scala/meta/internal/metals/ScalametaCompat.scala new file mode 100644 index 00000000000..9a7d8f46046 --- /dev/null +++ b/mtags/src/main/scala-3/scala/meta/internal/metals/ScalametaCompat.scala @@ -0,0 +1,9 @@ +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 diff --git a/mtags/src/main/scala-3/scala/meta/internal/mtags/MtagsEnrichments.scala b/mtags/src/main/scala-3/scala/meta/internal/mtags/MtagsEnrichments.scala index c4023c1717d..740e67b10a1 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/mtags/MtagsEnrichments.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/mtags/MtagsEnrichments.scala @@ -27,7 +27,7 @@ import dotty.tools.dotc.interactive.InteractiveDriver import dotty.tools.dotc.util.SourcePosition import dotty.tools.dotc.util.Spans import dotty.tools.dotc.util.Spans.Span -import org.eclipse.{lsp4j as l} +import org.eclipse.lsp4j as l object MtagsEnrichments extends ScalametaCommonEnrichments: diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/AutoImports.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/AutoImports.scala index 086f8b7900c..df40056d22d 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/AutoImports.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/AutoImports.scala @@ -14,7 +14,7 @@ import dotty.tools.dotc.core.Names.* import dotty.tools.dotc.core.Symbols.* import dotty.tools.dotc.util.SourcePosition import dotty.tools.dotc.util.Spans -import org.eclipse.{lsp4j as l} +import org.eclipse.lsp4j as l object AutoImports: diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/AutoImportsProvider.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/AutoImportsProvider.scala index 96b8ee7cd15..5aafdfa524a 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/AutoImportsProvider.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/AutoImportsProvider.scala @@ -16,7 +16,7 @@ import dotty.tools.dotc.core.Symbols.* import dotty.tools.dotc.interactive.Interactive import dotty.tools.dotc.interactive.InteractiveDriver import dotty.tools.dotc.util.SourceFile -import org.eclipse.{lsp4j as l} +import org.eclipse.lsp4j as l final class AutoImportsProvider( search: SymbolSearch, diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/ConvertToNamedArgumentsProvider.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/ConvertToNamedArgumentsProvider.scala index 96ac7bba6aa..ebb43daf1f9 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/ConvertToNamedArgumentsProvider.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/ConvertToNamedArgumentsProvider.scala @@ -12,7 +12,7 @@ import dotty.tools.dotc.core.Types.MethodType import dotty.tools.dotc.interactive.Interactive import dotty.tools.dotc.interactive.InteractiveDriver import dotty.tools.dotc.util.SourceFile -import org.eclipse.{lsp4j as l} +import org.eclipse.lsp4j as l final class ConvertToNamedArgumentsProvider( driver: InteractiveDriver, diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/ExtractMethodProvider.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/ExtractMethodProvider.scala index 67ae10abaa7..04ea0bdfaf0 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/ExtractMethodProvider.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/ExtractMethodProvider.scala @@ -24,8 +24,8 @@ import dotty.tools.dotc.interactive.Interactive import dotty.tools.dotc.interactive.InteractiveDriver import dotty.tools.dotc.util.SourceFile import dotty.tools.dotc.util.SourcePosition +import org.eclipse.lsp4j as l import org.eclipse.lsp4j.TextEdit -import org.eclipse.{lsp4j as l} final class ExtractMethodProvider( range: RangeParams, diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/HoverProvider.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/HoverProvider.scala index 603cc338988..2b9e1a2de57 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/HoverProvider.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/HoverProvider.scala @@ -1,6 +1,6 @@ package scala.meta.internal.pc -import java.{util as ju} +import java.util as ju import scala.meta.internal.metals.Report import scala.meta.internal.metals.ReportContext diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/InferredTypeProvider.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/InferredTypeProvider.scala index d6afe899129..9ee85b9a0e6 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/InferredTypeProvider.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/InferredTypeProvider.scala @@ -26,8 +26,8 @@ import dotty.tools.dotc.util.SourceFile import dotty.tools.dotc.util.SourcePosition import dotty.tools.dotc.util.Spans import dotty.tools.dotc.util.Spans.Span -import org.eclipse.lsp4j.TextEdit import org.eclipse.lsp4j as l +import org.eclipse.lsp4j.TextEdit /** * Tries to calculate edits needed to insert the inferred type annotation diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/MetalsDriver.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/MetalsDriver.scala index b3328cfe6d9..c6d5ed8e7cd 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/MetalsDriver.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/MetalsDriver.scala @@ -1,7 +1,7 @@ package scala.meta.internal.pc import java.net.URI -import java.{util as ju} +import java.util as ju import dotty.tools.dotc.interactive.InteractiveDriver import dotty.tools.dotc.reporting.Diagnostic diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/PcInlayHintsProvider.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/PcInlayHintsProvider.scala index 818745746cf..a05b5245ab0 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/PcInlayHintsProvider.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/PcInlayHintsProvider.scala @@ -21,9 +21,9 @@ import dotty.tools.dotc.interactive.InteractiveDriver import dotty.tools.dotc.util.SourceFile import dotty.tools.dotc.util.SourcePosition import dotty.tools.dotc.util.Spans.Span +import org.eclipse.lsp4j as l import org.eclipse.lsp4j.InlayHint import org.eclipse.lsp4j.InlayHintKind -import org.eclipse.{lsp4j as l} class PcInlayHintsProvider( driver: InteractiveDriver, diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/PcInlineValueProviderImpl.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/PcInlineValueProviderImpl.scala index e5f4bf5fa08..90ec8f921cd 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/PcInlineValueProviderImpl.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/PcInlineValueProviderImpl.scala @@ -14,7 +14,7 @@ import dotty.tools.dotc.core.Symbols.Symbol import dotty.tools.dotc.interactive.Interactive import dotty.tools.dotc.interactive.InteractiveDriver import dotty.tools.dotc.util.SourcePosition -import org.eclipse.{lsp4j as l} +import org.eclipse.lsp4j as l final class PcInlineValueProviderImpl( val driver: InteractiveDriver, diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/PcRenameProvider.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/PcRenameProvider.scala index 61041c68080..e918a0aa9a5 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/PcRenameProvider.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/PcRenameProvider.scala @@ -9,7 +9,7 @@ import dotty.tools.dotc.core.Flags.* import dotty.tools.dotc.core.Symbols.Symbol import dotty.tools.dotc.interactive.InteractiveDriver import dotty.tools.dotc.util.SourcePosition -import org.eclipse.{lsp4j as l} +import org.eclipse.lsp4j as l final class PcRenameProvider( driver: InteractiveDriver, 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/SelectionRangeProvider.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/SelectionRangeProvider.scala index 17af13ceb6d..8593087cab5 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/SelectionRangeProvider.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/SelectionRangeProvider.scala @@ -1,7 +1,7 @@ package scala.meta.internal.pc import java.nio.file.Paths -import java.{util as ju} +import java.util as ju import scala.jdk.CollectionConverters.* diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/SignatureHelpProvider.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/SignatureHelpProvider.scala index 5f552c1bd95..2259565c8af 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/SignatureHelpProvider.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/SignatureHelpProvider.scala @@ -20,7 +20,7 @@ import dotty.tools.dotc.interactive.InteractiveDriver import dotty.tools.dotc.util.Signatures import dotty.tools.dotc.util.Signatures.Signature import dotty.tools.dotc.util.SourcePosition -import org.eclipse.{lsp4j as l} +import org.eclipse.lsp4j as l object SignatureHelpProvider: diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/completions/AmmoniteFileCompletions.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/completions/AmmoniteFileCompletions.scala index 1fa8c6adba3..9f42ce7de22 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/completions/AmmoniteFileCompletions.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/completions/AmmoniteFileCompletions.scala @@ -6,12 +6,12 @@ import java.nio.file.Path import scala.meta.internal.mtags.MtagsEnrichments.* -import dotty.tools.dotc.ast.tpd.Tree import dotty.tools.dotc.ast.tpd.* +import dotty.tools.dotc.ast.tpd.Tree import dotty.tools.dotc.ast.untpd.ImportSelector import dotty.tools.dotc.core.Contexts.Context import dotty.tools.dotc.core.StdNames.* -import org.eclipse.{lsp4j as l} +import org.eclipse.lsp4j as l object AmmoniteFileCompletions: diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/completions/CompletionPos.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/completions/CompletionPos.scala index 147351e5636..6cd6d88122f 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/completions/CompletionPos.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/completions/CompletionPos.scala @@ -15,7 +15,7 @@ import dotty.tools.dotc.core.Contexts.* import dotty.tools.dotc.core.StdNames.* import dotty.tools.dotc.util.SourcePosition import dotty.tools.dotc.util.Spans -import org.eclipse.{lsp4j as l} +import org.eclipse.lsp4j as l enum CompletionKind: case Empty, Scope, Members diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/completions/CompletionProvider.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/completions/CompletionProvider.scala index fccef018d92..6da5f175824 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/completions/CompletionProvider.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/completions/CompletionProvider.scala @@ -27,8 +27,8 @@ import org.eclipse.lsp4j.CompletionItemKind import org.eclipse.lsp4j.CompletionList import org.eclipse.lsp4j.InsertTextFormat import org.eclipse.lsp4j.InsertTextMode -import org.eclipse.lsp4j.TextEdit import org.eclipse.lsp4j.Range as LspRange +import org.eclipse.lsp4j.TextEdit class CompletionProvider( search: SymbolSearch, diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/completions/InterpolatorCompletions.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/completions/InterpolatorCompletions.scala index 25a606de501..a77bfefc35a 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/completions/InterpolatorCompletions.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/completions/InterpolatorCompletions.scala @@ -18,7 +18,7 @@ import dotty.tools.dotc.core.Flags.* import dotty.tools.dotc.core.Symbols.Symbol import dotty.tools.dotc.core.Types.Type import dotty.tools.dotc.util.SourcePosition -import org.eclipse.{lsp4j as l} +import org.eclipse.lsp4j as l object InterpolatorCompletions: diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/completions/MatchCaseCompletions.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/completions/MatchCaseCompletions.scala index 81953013a23..4a8e5b916cd 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/completions/MatchCaseCompletions.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/completions/MatchCaseCompletions.scala @@ -30,7 +30,7 @@ import dotty.tools.dotc.core.Types.OrType import dotty.tools.dotc.core.Types.Type import dotty.tools.dotc.core.Types.TypeRef import dotty.tools.dotc.util.SourcePosition -import org.eclipse.{lsp4j as l} +import org.eclipse.lsp4j as l object CaseKeywordCompletion: diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/completions/OverrideCompletions.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/completions/OverrideCompletions.scala index 3d1ec98e555..cfb29cf9ce6 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/completions/OverrideCompletions.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/completions/OverrideCompletions.scala @@ -1,7 +1,7 @@ package scala.meta.internal.pc package completions -import java.{util as ju} +import java.util as ju import scala.collection.JavaConverters.* @@ -15,8 +15,8 @@ import scala.meta.pc.PresentationCompilerConfig import scala.meta.pc.PresentationCompilerConfig.OverrideDefFormat import scala.meta.pc.SymbolSearch -import dotty.tools.dotc.ast.tpd.Tree import dotty.tools.dotc.ast.tpd.* +import dotty.tools.dotc.ast.tpd.Tree import dotty.tools.dotc.core.Contexts.Context import dotty.tools.dotc.core.Flags import dotty.tools.dotc.core.Flags.* @@ -30,7 +30,7 @@ import dotty.tools.dotc.interactive.Interactive import dotty.tools.dotc.interactive.InteractiveDriver import dotty.tools.dotc.util.SourceFile import dotty.tools.dotc.util.SourcePosition -import org.eclipse.{lsp4j as l} +import org.eclipse.lsp4j as l object OverrideCompletions: private type TargetDef = TypeDef | DefDef diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/printer/MetalsPrinter.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/printer/MetalsPrinter.scala index dcced6bc88b..633899cba5f 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/printer/MetalsPrinter.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/printer/MetalsPrinter.scala @@ -24,8 +24,8 @@ import dotty.tools.dotc.core.Names.Name import dotty.tools.dotc.core.StdNames import dotty.tools.dotc.core.Symbols.NoSymbol import dotty.tools.dotc.core.Symbols.Symbol -import dotty.tools.dotc.core.Types.Type import dotty.tools.dotc.core.Types.* +import dotty.tools.dotc.core.Types.Type class MetalsPrinter( names: ShortenedNames, 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..7ac60e3769a 100644 --- a/mtags/src/main/scala/scala/meta/internal/metals/ScaladocIndexer.scala +++ b/mtags/src/main/scala/scala/meta/internal/metals/ScaladocIndexer.scala @@ -11,7 +11,6 @@ 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 /** @@ -29,17 +28,17 @@ class ScaladocIndexer( owner: String ): Unit = { val docstring = currentTree.origin match { - case Origin.None => "" - case parsed: Origin.Parsed => + case ScalametaCompat.ParsedOrigin(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") diff --git a/tests/unit/src/test/resources/expect/toplevels-scala3.expect b/tests/unit/src/test/resources/expect/toplevels-scala3.expect index eec168dc759..10b24a39e44 100644 --- a/tests/unit/src/test/resources/expect/toplevels-scala3.expect +++ b/tests/unit/src/test/resources/expect/toplevels-scala3.expect @@ -57,4 +57,4 @@ example/nested/LocalClass.scala -> example/nested/LocalClass# example/nested/package.scala -> example/PackageObjectSibling# example/nested/package.scala -> example/nested/package. example/package.scala -> example/package. -example/type/Backtick.scala -> example/type/Backtick# +example/type/Backtick.scala -> example/type/Backtick# \ No newline at end of file diff --git a/tests/unit/src/test/resources/inlayHints/example/MacroAnnotation.scala b/tests/unit/src/test/resources/inlayHints/example/MacroAnnotation.scala index 4418d0d7223..51b9ae3a27a 100644 --- a/tests/unit/src/test/resources/inlayHints/example/MacroAnnotation.scala +++ b/tests/unit/src/test/resources/inlayHints/example/MacroAnnotation.scala @@ -16,10 +16,10 @@ object MacroAnnotations { // due to the macro annotations. val x: Defn.Class = Defn.Class( Nil, - Type.Name("test"), + Type.Name("test")/*(current<>)*/, Nil, - Ctor.Primary(Nil, Term.Name("this"), Nil), - Template(Nil, Nil, Self(Name.Anonymous(), None), Nil), - ) - val y: Mod.Final = Mod.Final() + Ctor.Primary(Nil, Term.Name("this")/*(current<>)*/, Nil)/*(current<>)*/, + Template(Nil, Nil, Self(Name.Anonymous()/*(current<>)*/, None), Nil), + )/*(current<>)*/ + val y: Mod.Final = Mod.Final()/*(current<>)*/ } \ No newline at end of file diff --git a/tests/unit/src/test/resources/inlayHints3/example/dotted.filename.scala b/tests/unit/src/test/resources/inlayHints3/example/dotted.filename.scala index 876bde134d4..a9d2a7fb4a0 100644 --- a/tests/unit/src/test/resources/inlayHints3/example/dotted.filename.scala +++ b/tests/unit/src/test/resources/inlayHints3/example/dotted.filename.scala @@ -1,3 +1,3 @@ package example -type Toplevel = Int +type Toplevel = Int \ No newline at end of file diff --git a/tests/unit/src/test/resources/semanticTokens3/example/dotted.filename.scala b/tests/unit/src/test/resources/semanticTokens3/example/dotted.filename.scala index b704249be2a..ab449098dcc 100644 --- a/tests/unit/src/test/resources/semanticTokens3/example/dotted.filename.scala +++ b/tests/unit/src/test/resources/semanticTokens3/example/dotted.filename.scala @@ -1,3 +1,3 @@ <>/*keyword*/ <>/*namespace*/ -<>/*keyword*/ <>/*type,definition*/ = <>/*class,abstract*/ +<>/*keyword*/ <>/*type,definition*/ = <>/*class,abstract*/ \ No newline at end of file diff --git a/tests/unit/src/test/scala/tests/codeactions/OrganizeImportsLspSuite.scala b/tests/unit/src/test/scala/tests/codeactions/OrganizeImportsLspSuite.scala index f792e797e9f..d778eed7b77 100644 --- a/tests/unit/src/test/scala/tests/codeactions/OrganizeImportsLspSuite.scala +++ b/tests/unit/src/test/scala/tests/codeactions/OrganizeImportsLspSuite.scala @@ -212,23 +212,29 @@ class OrganizeImportsLspSuite |import scala.concurrent.duration.* |import scala.concurrent.{Future<<>> as ScalaFuture} |import scala.concurrent.ExecutionContext.global + |import scala.concurrent.ExecutionContext | |object A { + | implicit val ec: ExecutionContext = global | val d = Duration(10, MICROSECONDS) | val k = ScalaFuture.successful(1) + | ScalaFuture{ println("Hello!") } |} |""".stripMargin, s"${SourceOrganizeImports.title}", - """ - |package a - |import scala.concurrent.duration.* - |import scala.concurrent.{Future as ScalaFuture} - | - |object A { - | val d = Duration(10, MICROSECONDS) - | val k = ScalaFuture.successful(1) - |} - |""".stripMargin, + """|package a + |import scala.concurrent.ExecutionContext + |import scala.concurrent.ExecutionContext.global + |import scala.concurrent.Future as ScalaFuture + |import scala.concurrent.duration.* + | + |object A { + | implicit val ec: ExecutionContext = global + | val d = Duration(10, MICROSECONDS) + | val k = ScalaFuture.successful(1) + | ScalaFuture{ println("Hello!") } + |} + |""".stripMargin, kind = List(sourceKind), scalacOptions = scalacOption ++ List("-Xsource:3"), )