Skip to content

Commit 1e69251

Browse files
committed
Avoid spurious error message
Avoid spurious error message "cannot be tracked since its capture set is empty". This arose in lazyref.scala for a DependentTypeTree in an anaonymois function. Dependent type trees map to normal TypeTrees, not InferredTypeTrees (and things go wrong if we try to change that).
1 parent b20a929 commit 1e69251

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

compiler/src/dotty/tools/dotc/typer/CheckCaptures.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ class CheckCaptures extends Recheck:
388388
def traverse(tree: Tree)(using Context) =
389389
tree match
390390
case _: InferredTypeTree =>
391-
case tree: TypeTree =>
391+
case tree: TypeTree if !tree.span.isZeroExtent =>
392392
knownType(tree).foreachPart(
393393
checkWellformedPost(_, tree.srcPos))
394394
knownType(tree).foreachPart {
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class CC
2+
type Cap = {*} CC
3+
4+
class LazyRef[T](val elem: {*} () => T):
5+
val get = elem
6+
7+
def map[A, B](ref: {*} LazyRef[A], f: {*} A => B): {f, ref} LazyRef[B] =
8+
new LazyRef(() => f(ref.elem()))
9+
10+
def mapc[A, B]: (ref: {*} LazyRef[A], f: {*} A => B) => {f, ref} LazyRef[B] =
11+
(ref1, f1) => map[A, B](ref1, f1)

0 commit comments

Comments
 (0)