Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
destruct expected type as (type-)functions with more rationale
  • Loading branch information
Linyxus committed Oct 14, 2022
commit 65e42d3bfd7ee6069e26972c631a1f970a06bc37
11 changes: 5 additions & 6 deletions compiler/src/dotty/tools/dotc/cc/CheckCaptures.scala
Original file line number Diff line number Diff line change
Expand Up @@ -616,13 +616,11 @@ class CheckCaptures extends Recheck, SymTransformer:
curEnv = Env(curEnv.owner, nestedInOwner = true, CaptureSet.Var(), isBoxed = false, if boxed then null else curEnv)

try
val (eargs, eres) = expected.dealias match
val (eargs, eres) = expected.dealias.stripCapturing match
case defn.FunctionOf(eargs, eres, _, _) => (eargs, eres)
case expected => expected.stripped match
case expected: MethodType => (expected.paramInfos, expected.resType)
case expected @ RefinedType(_, _, rinfo: MethodType) if defn.isFunctionType(expected) => (rinfo.paramInfos, rinfo.resType)
case _ =>
(aargs.map(_ => WildcardType), WildcardType)
case expected: MethodType => (expected.paramInfos, expected.resType)
case expected @ RefinedType(_, _, rinfo: MethodType) if defn.isFunctionType(expected) => (rinfo.paramInfos, rinfo.resType)
case _ => (aargs.map(_ => WildcardType), WildcardType)
val aargs1 = aargs.zipWithConserve(eargs) { (aarg, earg) => adapt(aarg, earg, !covariant) }
val ares1 = adapt(ares, eres, covariant)

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

val ares1 = adapt(ares, eres, covariant)
Expand Down