@@ -147,29 +147,6 @@ object SepCheck:
147
147
148
148
case class DefInfo (tree : ValOrDefDef , symbol : Symbol , hidden : Refs , hiddenPeaks : Refs )
149
149
150
- class SepCheck (checker : CheckCaptures .CheckerAPI ) extends tpd.TreeTraverser :
151
- import checker .*
152
- import SepCheck .*
153
-
154
- /** The set of capabilities that are hidden by a polymorphic result type
155
- * of some previous definition.
156
- */
157
- private var defsShadow : Refs = emptyRefs
158
-
159
- /** The previous val or def definitions encountered during separation checking
160
- * in reverse order. These all enclose and precede the current traversal node.
161
- */
162
- private var previousDefs : List [DefInfo ] = Nil
163
-
164
- /** The set of references that were consumed so far in the current method */
165
- private var consumed : MutConsumedSet = MutConsumedSet ()
166
-
167
- /** Infos aboput Labeled expressions enclosing the current traversal point.
168
- * For each labeled expression, it's label name, and a list buffer containing
169
- * all consumed sets of return expressions referring to that label.
170
- */
171
- private var openLabeled : List [(Name , mutable.ListBuffer [ConsumedSet ])] = Nil
172
-
173
150
extension (refs : Refs )
174
151
175
152
/** The footprint of a set of references `refs` the smallest set `F` such that
@@ -280,24 +257,37 @@ class SepCheck(checker: CheckCaptures.CheckerAPI) extends tpd.TreeTraverser:
280
257
refs.filter: ref =>
281
258
! others.exists(_.covers(ref))
282
259
283
- /** Deduct the footprint of `sym` and `sym*` from `refs` */
284
- private def deductSymFootprint (sym : Symbol )(using Context ): Refs =
285
- val ref = sym.termRef
286
- if ref.isTrackableRef then refs.deduct(CaptureSet (ref, ref.reach).elems.footprint())
287
- else refs
288
-
289
260
/** Deduct `sym` and `sym*` from `refs` */
290
261
private def deductSymRefs (sym : Symbol )(using Context ): Refs =
291
262
val ref = sym.termRef
292
263
if ref.isTrackableRef then refs.deduct(SimpleIdentitySet (ref, ref.reach))
293
264
else refs
294
265
295
- /** Deduct the footprint of all captures of trees in `deps` from `refs` */
296
- private def deductCapturesOf (deps : List [Tree ])(using Context ): Refs =
297
- deps.foldLeft(refs): (refs, dep) =>
298
- refs.deduct(captures(dep).footprint())
299
266
end extension
300
267
268
+ class SepCheck (checker : CheckCaptures .CheckerAPI ) extends tpd.TreeTraverser :
269
+ import checker .*
270
+ import SepCheck .*
271
+
272
+ /** The set of capabilities that are hidden by a polymorphic result type
273
+ * of some previous definition.
274
+ */
275
+ private var defsShadow : Refs = emptyRefs
276
+
277
+ /** The previous val or def definitions encountered during separation checking
278
+ * in reverse order. These all enclose and precede the current traversal node.
279
+ */
280
+ private var previousDefs : List [DefInfo ] = Nil
281
+
282
+ /** The set of references that were consumed so far in the current method */
283
+ private var consumed : MutConsumedSet = MutConsumedSet ()
284
+
285
+ /** Infos aboput Labeled expressions enclosing the current traversal point.
286
+ * For each labeled expression, it's label name, and a list buffer containing
287
+ * all consumed sets of return expressions referring to that label.
288
+ */
289
+ private var openLabeled : List [(Name , mutable.ListBuffer [ConsumedSet ])] = Nil
290
+
301
291
/** The deep capture set of an argument or prefix widened to the formal parameter, if
302
292
* the latter contains a cap.
303
293
*/
0 commit comments