@@ -949,7 +949,12 @@ class CheckCaptures extends Recheck, SymTransformer:
949
949
// TODO follow up on this
950
950
try
951
951
matchParams(mdef.paramss, pt)
952
- recheckDef(mdef, mdef.symbol)
952
+ capt.println(i " recheck closure block $mdef: ${mdef.symbol.infoOrCompleter}" )
953
+ if ! mdef.symbol.isCompleted then
954
+ mdef.symbol.ensureCompleted() // this will recheck def
955
+ else
956
+ recheckDef(mdef, mdef.symbol)
957
+
953
958
recheckClosure(expr, pt, forceDependent = true )
954
959
finally
955
960
openClosures = openClosures.tail
@@ -1112,6 +1117,10 @@ class CheckCaptures extends Recheck, SymTransformer:
1112
1117
finally
1113
1118
curEnv = saved
1114
1119
1120
+ override def recheckTypeDef (tree : TypeDef , sym : Symbol )(using Context ): Type =
1121
+ try super .recheckTypeDef(tree, sym)
1122
+ finally completed += sym
1123
+
1115
1124
/** Recheck classDef by enforcing the following class-specific capture set relations:
1116
1125
* 1. The capture set of a class includes the capture sets of its parents.
1117
1126
* 2. The capture set of the self type of a class includes the capture set of the class.
@@ -1156,6 +1165,7 @@ class CheckCaptures extends Recheck, SymTransformer:
1156
1165
ccState.inNestedLevelUnless(cls.is(Module )):
1157
1166
super .recheckClassDef(tree, impl, cls)
1158
1167
finally
1168
+ completed += cls
1159
1169
curEnv = saved
1160
1170
1161
1171
/** If type is of the form `T @requiresCapability(x)`,
0 commit comments