Skip to content

Commit ed1f399

Browse files
committed
Fix issues with multiple java.lang and scala shadowing improts
1 parent 40ae7ee commit ed1f399

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

compiler/src/dotty/tools/dotc/interactive/Completion.scala

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import dotty.tools.dotc.printing.Texts._
2424
import dotty.tools.dotc.util.{NameTransformer, NoSourcePosition, SourcePosition}
2525

2626
import scala.collection.mutable
27+
import scala.util.control.NonFatal
2728

2829
/**
2930
* One of the results of a completion query.
@@ -223,11 +224,11 @@ object Completion {
223224
// import java.lang.annotation
224225
// is shadowed by
225226
// import scala.annotation
226-
def isJavaLangAndScala = denotss match
227-
case List(first, second) =>
228-
isScalaPackage(first) && isJavaLangPackage(second) ||
229-
isScalaPackage(second) && isJavaLangPackage(first)
230-
case _ => false
227+
def isJavaLangAndScala =
228+
try
229+
denotss.forall(denots => isScalaPackage(denots) || isJavaLangPackage(denots))
230+
catch
231+
case NonFatal(_) => false
231232

232233
denotss.find(!_.ctx.isImportContext) match {
233234
// most deeply nested member or local definition if not shadowed by an import

language-server/test/dotty/tools/languageserver/CompletionTest.scala

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -985,4 +985,13 @@ class CompletionTest {
985985
("annotation", Module, "scala.annotation")
986986
)
987987
)
988+
989+
@Test def importAnnotationAfterImport : Unit =
990+
code"""import java.lang.annotation; import annot${m1}"""
991+
.withSource
992+
.completion(m1,
993+
Set(
994+
("annotation", Module, "scala.annotation")
995+
)
996+
)
988997
}

0 commit comments

Comments
 (0)