@@ -195,7 +195,7 @@ class CheckCaptures extends Recheck, SymTransformer:
195195 capt.println(i " solving $t" )
196196 refs.solve()
197197 traverse(parent)
198- case t @ RefinedType (_, nme.apply, rinfo) if defn.isFunctionType(t ) =>
198+ case defn.RefinedFunctionOf (rinfo ) =>
199199 traverse(rinfo)
200200 case tp : TypeVar =>
201201 case tp : TypeRef =>
@@ -302,8 +302,8 @@ class CheckCaptures extends Recheck, SymTransformer:
302302 t
303303 case _ =>
304304 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))
307307 case _ =>
308308 mapOver(t)
309309 if variance > 0 then t1
@@ -782,7 +782,6 @@ class CheckCaptures extends Recheck, SymTransformer:
782782 val (eargs, eres) = expected.dealias.stripCapturing match
783783 case expected : MethodType => (expected.paramInfos, expected.resType)
784784 case defn.FunctionOf (mt : MethodType ) => (mt.paramInfos, mt.resType)
785- case expected @ RefinedType (_, _, rinfo : MethodType ) if defn.isFunctionNType(expected) => (rinfo.paramInfos, rinfo.resType)
786785 case _ => (aargs.map(_ => WildcardType ), WildcardType )
787786 val aargs1 = aargs.zipWithConserve(eargs) { (aarg, earg) => adapt(aarg, earg, ! covariant) }
788787 val ares1 = adapt(ares, eres, covariant)
@@ -844,23 +843,23 @@ class CheckCaptures extends Recheck, SymTransformer:
844843 case actual @ AppliedType (tycon, args) if defn.isFunctionNType(actual) =>
845844 adaptFun(actual, args.init, args.last, expected, covariant, insertBox,
846845 (aargs1, ares1) => actual.derivedAppliedType(tycon, aargs1 :+ ares1))
847- case actual @ RefinedType (_, _, rinfo : MethodType ) if defn.isFunctionType(actual ) =>
846+ case actual @ defn. RefinedFunctionOf ( rinfo : MethodType ) =>
848847 // TODO Find a way to combine handling of generic and dependent function types (here and elsewhere)
849848 adaptFun(actual, rinfo.paramInfos, rinfo.resType, expected, covariant, insertBox,
850849 (aargs1, ares1) =>
851850 rinfo.derivedLambdaType(paramInfos = aargs1, resType = ares1)
852851 .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 ) =>
858853 adaptTypeFun(actual, rinfo.resType, expected, covariant, insertBox,
859854 ares1 =>
860855 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)
862857 actual1
863858 )
859+ case actual : MethodType =>
860+ adaptFun(actual, actual.paramInfos, actual.resType, expected, covariant, insertBox,
861+ (aargs1, ares1) =>
862+ actual.derivedLambdaType(paramInfos = aargs1, resType = ares1))
864863 case _ =>
865864 (styp, CaptureSet ())
866865 }
@@ -1079,7 +1078,7 @@ class CheckCaptures extends Recheck, SymTransformer:
10791078 case CapturingType (parent, refs) =>
10801079 healCaptureSet(refs)
10811080 traverse(parent)
1082- case tp @ RefinedType (parent, rname, rinfo : MethodType ) if defn.isFunctionType(tp ) =>
1081+ case defn. RefinedFunctionOf ( rinfo : MethodType ) =>
10831082 traverse(rinfo)
10841083 case tp : TermLambda =>
10851084 val saved = allowed
0 commit comments