Skip to content

Commit b5e9178

Browse files
committed
revert widenDealias removal
1 parent 291a74e commit b5e9178

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: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import dotty.tools.dotc.util.SourcePosition
2323

2424
import scala.collection.mutable
2525
import scala.util.control.NonFatal
26+
import dotty.tools.dotc.core.Types.TypeRef
2627

2728
/**
2829
* One of the results of a completion query.
@@ -310,8 +311,11 @@ object Completion {
310311
resultMappings
311312
}
312313

313-
def widenDealiasAppliedTypes(qual: Tree)(using Context): Tree =
314+
/** Widen only those types which are applied or are exactly nothing
315+
*/
316+
def widenQualifier(qual: Tree)(using Context): Tree =
314317
qual.tpe.widenDealias match
318+
case widenedType if widenedType.isExactlyNothing => qual.withType(widenedType)
315319
case appliedType: AppliedType => qual.withType(appliedType)
316320
case _ => qual
317321

@@ -320,7 +324,7 @@ object Completion {
320324
* and so do members from extensions over members from implicit conversions
321325
*/
322326
def selectionCompletions(qual: Tree)(using Context): CompletionMap =
323-
val adjustedQual = widenDealiasAppliedTypes(qual)
327+
val adjustedQual = widenQualifier(qual)
324328

325329
implicitConversionMemberCompletions(adjustedQual) ++
326330
extensionCompletions(adjustedQual) ++
@@ -377,7 +381,7 @@ object Completion {
377381

378382
/** Completions from implicit conversions including old style extensions using implicit classes */
379383
private def implicitConversionMemberCompletions(qual: Tree)(using Context): CompletionMap =
380-
if qual.tpe.widenDealias.isExactlyNothing || qual.tpe.isNullType then
384+
if qual.tpe.isExactlyNothing || qual.tpe.isNullType then
381385
Map.empty
382386
else
383387
val membersFromConversion =

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1212,7 +1212,7 @@ class CompletionTest {
12121212
| def fooTest(x: Int): Unit = ???
12131213
|}
12141214
|type TestAlias = Test
1215-
|object M:
1215+
|object O:
12161216
| val test: TestAlias = new Test()
12171217
| test.foo${m1}"""
12181218
.completion(("fooTest", Method, "(x: Int): Unit"))
@@ -1225,7 +1225,7 @@ class CompletionTest {
12251225
|}
12261226
|
12271227
|type TestAlias[M[_[_]]] = M[Option]
1228-
|object M:
1228+
|object O:
12291229
| val test: TestAlias[Test] = new Test[Option] {}
12301230
| val test2: Test[Option] = new Test[Option] {}
12311231
| test.foo${m1}
@@ -1234,4 +1234,10 @@ class CompletionTest {
12341234
.completion(m2, expected)
12351235
}
12361236

1237+
@Test def `???`: Unit = {
1238+
code"""object O:
1239+
| ???.${m1}"""
1240+
.noCompletions()
1241+
}
1242+
12371243
}

0 commit comments

Comments
 (0)