Skip to content

Commit d2c6d60

Browse files
committed
fix: use already imported package aliases for auto import
1 parent 857c6c8 commit d2c6d60

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

presentation-compiler/src/main/dotty/tools/pc/AutoImports.scala

+8-1
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,14 @@ object AutoImports:
269269
private def importName(sym: Symbol): String =
270270
if indexedContext.importContext.toplevelClashes(sym) then
271271
s"_root_.${sym.fullNameBackticked(false)}"
272-
else sym.fullNameBackticked(false)
272+
else
273+
sym.ownersIterator.zipWithIndex.foldLeft((List.empty[String], false)) { case ((acc, isDone), (sym, idx)) =>
274+
if(isDone || sym.isEmptyPackage || sym.isRoot) (acc, true)
275+
else indexedContext.rename(sym) match
276+
case Some(renamed) => (renamed :: acc, true)
277+
case None if !sym.isPackageObject => (sym.nameBackticked(false) :: acc, false)
278+
case None => (acc, false)
279+
}._1.mkString(".")
273280
end AutoImportsGenerator
274281

275282
private def autoImportPosition(

presentation-compiler/test/dotty/tools/pc/tests/edit/AutoImportsSuite.scala

+13
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,19 @@ class AutoImportsSuite extends BaseAutoImportsSuite:
436436
|""".stripMargin
437437
)
438438

439+
@Test def `use-packages-in-scope` =
440+
checkEdit(
441+
"""|import scala.collection.mutable as mut
442+
|
443+
|val l = <<ListBuffer>>(2)
444+
|""".stripMargin,
445+
"""|import scala.collection.mutable as mut
446+
|import mut.ListBuffer
447+
|
448+
|val l = ListBuffer(2)
449+
|""".stripMargin
450+
)
451+
439452
private def ammoniteWrapper(code: String): String =
440453
// Vaguely looks like a scala file that Ammonite generates
441454
// from a sc file.

0 commit comments

Comments
 (0)