@@ -195,7 +195,7 @@ class CheckCaptures extends Recheck, SymTransformer:
195
195
capt.println(i " solving $t" )
196
196
refs.solve()
197
197
traverse(parent)
198
- case t @ RefinedType (_, nme.apply, rinfo) if defn.isFunctionType(t ) =>
198
+ case defn.RefinedFunctionOf (rinfo ) =>
199
199
traverse(rinfo)
200
200
case tp : TypeVar =>
201
201
case tp : TypeRef =>
@@ -302,8 +302,8 @@ class CheckCaptures extends Recheck, SymTransformer:
302
302
t
303
303
case _ =>
304
304
val t1 = t match
305
- case t @ RefinedType (parent, rname, rinfo : MethodType ) if defn.isFunctionType(t ) =>
306
- t.derivedRefinedType(parent, rname , this (rinfo))
305
+ case t @ defn. RefinedFunctionOf ( rinfo : MethodType ) =>
306
+ t.derivedRefinedType(t. parent, t.refinedName , this (rinfo))
307
307
case _ =>
308
308
mapOver(t)
309
309
if variance > 0 then t1
@@ -782,7 +782,6 @@ class CheckCaptures extends Recheck, SymTransformer:
782
782
val (eargs, eres) = expected.dealias.stripCapturing match
783
783
case expected : MethodType => (expected.paramInfos, expected.resType)
784
784
case defn.FunctionOf (mt : MethodType ) => (mt.paramInfos, mt.resType)
785
- case expected @ RefinedType (_, _, rinfo : MethodType ) if defn.isFunctionNType(expected) => (rinfo.paramInfos, rinfo.resType)
786
785
case _ => (aargs.map(_ => WildcardType ), WildcardType )
787
786
val aargs1 = aargs.zipWithConserve(eargs) { (aarg, earg) => adapt(aarg, earg, ! covariant) }
788
787
val ares1 = adapt(ares, eres, covariant)
@@ -844,23 +843,23 @@ class CheckCaptures extends Recheck, SymTransformer:
844
843
case actual @ AppliedType (tycon, args) if defn.isFunctionNType(actual) =>
845
844
adaptFun(actual, args.init, args.last, expected, covariant, insertBox,
846
845
(aargs1, ares1) => actual.derivedAppliedType(tycon, aargs1 :+ ares1))
847
- case actual @ RefinedType (_, _, rinfo : MethodType ) if defn.isFunctionType(actual ) =>
846
+ case actual @ defn. RefinedFunctionOf ( rinfo : MethodType ) =>
848
847
// TODO Find a way to combine handling of generic and dependent function types (here and elsewhere)
849
848
adaptFun(actual, rinfo.paramInfos, rinfo.resType, expected, covariant, insertBox,
850
849
(aargs1, ares1) =>
851
850
rinfo.derivedLambdaType(paramInfos = aargs1, resType = ares1)
852
851
.toFunctionType(alwaysDependent = true ))
853
- case actual : MethodType =>
854
- adaptFun(actual, actual.paramInfos, actual.resType, expected, covariant, insertBox,
855
- (aargs1, ares1) =>
856
- actual.derivedLambdaType(paramInfos = aargs1, resType = ares1))
857
- case actual @ RefinedType (p, nme, rinfo : PolyType ) if defn.isFunctionType(actual) =>
852
+ case actual @ defn.RefinedFunctionOf (rinfo : PolyType ) =>
858
853
adaptTypeFun(actual, rinfo.resType, expected, covariant, insertBox,
859
854
ares1 =>
860
855
val rinfo1 = rinfo.derivedLambdaType(rinfo.paramNames, rinfo.paramInfos, ares1)
861
- val actual1 = actual.derivedRefinedType(p, nme , rinfo1)
856
+ val actual1 = actual.derivedRefinedType(actual.parent, actual.refinedName , rinfo1)
862
857
actual1
863
858
)
859
+ case actual : MethodType =>
860
+ adaptFun(actual, actual.paramInfos, actual.resType, expected, covariant, insertBox,
861
+ (aargs1, ares1) =>
862
+ actual.derivedLambdaType(paramInfos = aargs1, resType = ares1))
864
863
case _ =>
865
864
(styp, CaptureSet ())
866
865
}
@@ -1079,7 +1078,7 @@ class CheckCaptures extends Recheck, SymTransformer:
1079
1078
case CapturingType (parent, refs) =>
1080
1079
healCaptureSet(refs)
1081
1080
traverse(parent)
1082
- case tp @ RefinedType (parent, rname, rinfo : MethodType ) if defn.isFunctionType(tp ) =>
1081
+ case defn. RefinedFunctionOf ( rinfo : MethodType ) =>
1083
1082
traverse(rinfo)
1084
1083
case tp : TermLambda =>
1085
1084
val saved = allowed
0 commit comments