Skip to content

Commit 65e42d3

Browse files
committed
destruct expected type as (type-)functions with more rationale
1 parent 3e690a8 commit 65e42d3

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

compiler/src/dotty/tools/dotc/cc/CheckCaptures.scala

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -616,13 +616,11 @@ class CheckCaptures extends Recheck, SymTransformer:
616616
curEnv = Env(curEnv.owner, nestedInOwner = true, CaptureSet.Var(), isBoxed = false, if boxed then null else curEnv)
617617

618618
try
619-
val (eargs, eres) = expected.dealias match
619+
val (eargs, eres) = expected.dealias.stripCapturing match
620620
case defn.FunctionOf(eargs, eres, _, _) => (eargs, eres)
621-
case expected => expected.stripped match
622-
case expected: MethodType => (expected.paramInfos, expected.resType)
623-
case expected @ RefinedType(_, _, rinfo: MethodType) if defn.isFunctionType(expected) => (rinfo.paramInfos, rinfo.resType)
624-
case _ =>
625-
(aargs.map(_ => WildcardType), WildcardType)
621+
case expected: MethodType => (expected.paramInfos, expected.resType)
622+
case expected @ RefinedType(_, _, rinfo: MethodType) if defn.isFunctionType(expected) => (rinfo.paramInfos, rinfo.resType)
623+
case _ => (aargs.map(_ => WildcardType), WildcardType)
626624
val aargs1 = aargs.zipWithConserve(eargs) { (aarg, earg) => adapt(aarg, earg, !covariant) }
627625
val ares1 = adapt(ares, eres, covariant)
628626

@@ -647,6 +645,7 @@ class CheckCaptures extends Recheck, SymTransformer:
647645
try
648646
val eres = expected.dealias.stripCapturing match
649647
case RefinedType(_, _, rinfo: PolyType) => rinfo.resType
648+
case expected: PolyType => expected.resType
650649
case _ => WildcardType
651650

652651
val ares1 = adapt(ares, eres, covariant)

0 commit comments

Comments
 (0)