Skip to content

Commit cba62c9

Browse files
committed
Drop old footprint computation
1 parent d62d3d1 commit cba62c9

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

compiler/src/dotty/tools/dotc/cc/SepCheck.scala

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -175,15 +175,18 @@ object SepCheck:
175175
* 2. if `f in F` then the footprint of `f`'s info is also in `F`.
176176
*/
177177
private def oldFootprint(using Context): Refs =
178-
def retain(ref: Capability) = !ref.isTerminalCapability
179-
def recur(elems: Refs, newElems: List[Capability]): Refs = newElems match
180-
case newElem :: newElems1 =>
181-
val superElems = newElem.captureSetOfInfo.elems.filter: superElem =>
182-
retain(superElem) && !elems.contains(superElem)
183-
recur(elems ++ superElems, newElems1 ++ superElems.toList)
184-
case Nil => elems
185-
val elems: Refs = refs.filter(retain)
186-
recur(elems, elems.toList)
178+
if ccConfig.newScheme then
179+
directFootprint.nonPeaks
180+
else
181+
def retain(ref: Capability) = !ref.isTerminalCapability
182+
def recur(elems: Refs, newElems: List[Capability]): Refs = newElems match
183+
case newElem :: newElems1 =>
184+
val superElems = newElem.captureSetOfInfo.elems.filter: superElem =>
185+
retain(superElem) && !elems.contains(superElem)
186+
recur(elems ++ superElems, newElems1 ++ superElems.toList)
187+
case Nil => elems
188+
val elems: Refs = refs.filter(retain)
189+
recur(elems, elems.toList)
187190

188191
/** The footprint of a set of capabilities `refs` is the closure
189192
* of `refs` under `_.captureSetOfInfo`, dropping any shared terminal

tests/neg-custom-args/captures/lazyref.check

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
| Hidden set of current argument : {cap2}
5555
| Hidden footprint of current argument : {cap2}
5656
| Capture set of function prefix : {ref1, ref2, ref2*}
57-
| Footprint set of function prefix : {ref1, ref2, ref2*, cap1, cap2}
57+
| Footprint set of function prefix : {ref1, cap1, ref2, cap2, ref2*}
5858
| The two sets overlap at : {cap2}
5959
|
6060
|where: => refers to a fresh root capability created in value ref4 when checking argument to parameter f of method map

0 commit comments

Comments
 (0)