File tree Expand file tree Collapse file tree 1 file changed +7
-15
lines changed
compiler/src/dotty/tools/dotc/typer Expand file tree Collapse file tree 1 file changed +7
-15
lines changed Original file line number Diff line number Diff line change @@ -3411,22 +3411,14 @@ class Typer extends Namer
3411
3411
// Member lookup cannot take GADTs into account b/c of cache, so we
3412
3412
// approximate types based on GADT constraints instead. For an example,
3413
3413
// see MemberHealing in gadt-approximation-interaction.scala.
3414
- lazy val gadtApprox = Inferencing .approximateGADT(wtp)
3415
- gadts.println(
3416
- i """ GADT approximation {
3417
- approximation = $gadtApprox
3418
- pt.isMatchedBy = ${
3419
- if (pt.isInstanceOf [SelectionProto ])
3420
- pt.asInstanceOf [SelectionProto ].isMatchedBy(gadtApprox).toString
3421
- else
3422
- " <not a SelectionProto>"
3423
- }
3424
- }
3425
- """
3426
- )
3427
3414
pt match {
3428
- case pt : SelectionProto if ctx.gadt.nonEmpty && pt.isMatchedBy(gadtApprox) =>
3429
- return tpd.Typed (tree, TypeTree (gadtApprox))
3415
+ case pt : SelectionProto if ctx.gadt.nonEmpty =>
3416
+ gadts.println(i " Trying to heal member selection by GADT-approximating $wtp" )
3417
+ val gadtApprox = Inferencing .approximateGADT(wtp)
3418
+ gadts.println(i " GADT-approximated $wtp ~~ $gadtApprox" )
3419
+ if pt.isMatchedBy(gadtApprox) then
3420
+ gadts.println(i " Member selection healed by GADT approximation " )
3421
+ return tpd.Typed (tree, TypeTree (gadtApprox))
3430
3422
case _ => ;
3431
3423
}
3432
3424
You can’t perform that action at this time.
0 commit comments