Skip to content

Commit e593512

Browse files
committed
Also dealias applied types when looking for refinement types for hover info
1 parent 4641ad1 commit e593512

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,12 +224,17 @@ object HoverProvider:
224224

225225
def extractRefinements(t: Type): List[Type] = t match
226226
case r: RefinedType => List(r)
227-
case t: TypeRef => extractRefinements(t.deepDealiasAndSimplify)
228-
case t: (TermRef | TypeProxy) => List(t.termSymbol.info.deepDealiasAndSimplify)
227+
case t: (TypeRef | AppliedType) =>
228+
// deepDealiasAndSimplify can succeed with no progress, so we have to avoid infinite loops
229+
val t1 = t.deepDealiasAndSimplify
230+
if t1 == t then Nil
231+
else extractRefinements(t1)
232+
case t: TermRef => extractRefinements(t.widen)
233+
case t: TypeProxy => List(t.termSymbol.info.deepDealiasAndSimplify)
229234
case AndType(l , r) => List(extractRefinements(l), extractRefinements(r)).flatten
230235
case _ => Nil
231236

232-
val refTpe: List[Type] = extractRefinements(sel.typeOpt.widen)
237+
val refTpe: List[Type] = extractRefinements(sel.typeOpt)
233238

234239
refTpe.flatMap(findRefinement).headOption.asJava
235240
case _ =>

presentation-compiler/test/dotty/tools/pc/tests/hover/HoverTermSuite.scala

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -913,3 +913,16 @@ class HoverTermSuite extends BaseHoverSuite:
913913
|""".stripMargin,
914914
"val aa: Int".hover
915915
)
916+
917+
@Test def `intersection_of_selectable-5` =
918+
check(
919+
"""|class Record extends Selectable:
920+
| def selectDynamic(name: String): Any = ???
921+
|
922+
|type AL = List[Int] & Record { val aa: Int }
923+
|
924+
|val al: AL = ???.asInstanceOf[ABC]
925+
|val al_a = al.a@@a
926+
|""".stripMargin,
927+
"val aa: Int".hover
928+
)

0 commit comments

Comments
 (0)