Skip to content

Commit 49c8748

Browse files
committed
More improvements to extra extension methods
1 parent 9cbbbf1 commit 49c8748

File tree

2 files changed

+27
-20
lines changed

2 files changed

+27
-20
lines changed

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

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -242,14 +242,12 @@ object Completion:
242242
val result = adjustedPath match
243243
// Ignore synthetic select from `This` because in code it was `Ident`
244244
// See example in dotty.tools.languageserver.CompletionTest.syntheticThis
245-
case tpd.Select(qual @ tpd.This(_), _) :: _ if qual.span.isSynthetic => completer.scopeCompletions.names
246-
case StringContextApplication(qual) =>
247-
completer.scopeCompletions.names ++ completer.selectionCompletions(qual)
248-
case tpd.Select(qual, _) :: _ if qual.typeOpt.hasSimpleKind =>
249-
completer.selectionCompletions(qual)
250-
case tpd.Select(qual, _) :: _ => Map.empty
251-
case (tree: tpd.ImportOrExport) :: _ => completer.directMemberCompletions(tree.expr)
252-
case _ => completer.scopeCompletions.names
245+
case tpd.Select(qual @ tpd.This(_), _) :: _
246+
if qual.span.isSynthetic => completer.scopeCompletions.names
247+
case StringContextApplication(qual) => completer.scopeCompletions.names ++ completer.selectionCompletions(qual)
248+
case tpd.Select(qual, _) :: _ => completer.selectionCompletions(qual)
249+
case (tree: tpd.ImportOrExport) :: _ => completer.directMemberCompletions(tree.expr)
250+
case _ => completer.scopeCompletions.names
253251

254252
interactiv.println(i"""completion info with pos = $pos,
255253
| term = ${completer.mode.is(Mode.Term)},
@@ -518,17 +516,16 @@ object Completion:
518516
def selectionCompletions(qual: tpd.Tree): CompletionMap =
519517
val adjustedQual = widenQualifier(qual)
520518

521-
val implicitConversionMembers = implicitConversionMemberCompletions(adjustedQual)
522-
val extensionMembers = extensionCompletions(adjustedQual)
523-
val directMembers = directMemberCompletions(adjustedQual)
524-
val namedTupleMembers = namedTupleCompletions(adjustedQual)
525-
526-
List(
527-
implicitConversionMembers,
528-
extensionMembers,
529-
directMembers,
530-
namedTupleMembers
531-
).reduce(_ ++ _)
519+
if qual.symbol.is(Package) then
520+
directMemberCompletions(adjustedQual)
521+
else if qual.typeOpt.hasSimpleKind then
522+
implicitConversionMemberCompletions(adjustedQual) ++
523+
extensionCompletions(adjustedQual) ++
524+
directMemberCompletions(adjustedQual) ++
525+
namedTupleCompletions(adjustedQual)
526+
else
527+
Map.empty
528+
532529

533530
/** Completions for members of `qual`'s type.
534531
* These include inherited definitions but not members added by extensions or implicit conversions

presentation-compiler/test/dotty/tools/pc/tests/completion/CompletionSuite.scala

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2263,5 +2263,15 @@ class CompletionSuite extends BaseCompletionSuite:
22632263
"""object M:
22642264
| scala.runt@@
22652265
|""".stripMargin,
2266-
""
2266+
"""runtime scala
2267+
|PartialFunction scala""".stripMargin // those are the actual members of scala
2268+
)
2269+
2270+
@Test def `no-extension-completions-on-package-objects` =
2271+
check(
2272+
"""package object magic { def test: Int = ??? }
2273+
|object M:
2274+
| magic.@@
2275+
|""".stripMargin,
2276+
"test: Int"
22672277
)

0 commit comments

Comments
 (0)