@@ -949,7 +949,12 @@ class CheckCaptures extends Recheck, SymTransformer:
949949 // TODO follow up on this
950950 try
951951 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+
953958 recheckClosure(expr, pt, forceDependent = true )
954959 finally
955960 openClosures = openClosures.tail
@@ -1112,6 +1117,10 @@ class CheckCaptures extends Recheck, SymTransformer:
11121117 finally
11131118 curEnv = saved
11141119
1120+ override def recheckTypeDef (tree : TypeDef , sym : Symbol )(using Context ): Type =
1121+ try super .recheckTypeDef(tree, sym)
1122+ finally completed += sym
1123+
11151124 /** Recheck classDef by enforcing the following class-specific capture set relations:
11161125 * 1. The capture set of a class includes the capture sets of its parents.
11171126 * 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:
11561165 ccState.inNestedLevelUnless(cls.is(Module )):
11571166 super .recheckClassDef(tree, impl, cls)
11581167 finally
1168+ completed += cls
11591169 curEnv = saved
11601170
11611171 /** If type is of the form `T @requiresCapability(x)`,
0 commit comments