@@ -320,22 +320,20 @@ extends tpd.TreeTraverser:
320
320
321
321
def traverse (tree : Tree )(using Context ): Unit =
322
322
tree match
323
- case tree : DefDef =>
323
+ case tree @ DefDef (_, paramss, tpt : TypeTree , _) =>
324
324
if isExcluded(tree.symbol) then
325
325
return
326
326
inContext(ctx.withOwner(tree.symbol)):
327
327
if tree.symbol.isAnonymousFunction && tree.symbol.definedLocalRoot.exists then
328
328
// closures that define parameters of type caps.Cap count as level owners
329
329
tree.symbol.setNestingLevel(ctx.owner.nestingLevel + 1 )
330
- tree.tpt match
331
- case tpt : TypeTree if tree.symbol.allOverriddenSymbols.hasNext =>
332
- tree.paramss.foreach(traverse)
333
- transformTT(tpt, boxed = false , exact = true , mapRoots = true )
334
- traverse(tree.rhs)
335
- // println(i"TYPE of ${tree.symbol.showLocated} = ${tpt.knownType}")
336
- case _ =>
337
- traverseChildren(tree)
338
- case tree @ ValDef (_, tpt : TypeTree , rhs) =>
330
+ paramss.foreach(traverse)
331
+ transformTT(tpt, boxed = false ,
332
+ exact = tree.symbol.allOverriddenSymbols.hasNext,
333
+ mapRoots = true )
334
+ traverse(tree.rhs)
335
+ // println(i"TYPE of ${tree.symbol.showLocated} = ${tpt.knownType}")
336
+ case tree @ ValDef (_, tpt : TypeTree , _) =>
339
337
def containsCap (tp : Type ) = tp.existsPart:
340
338
case CapturingType (_, refs) => refs.isUniversal
341
339
case _ => false
@@ -345,7 +343,7 @@ extends tpd.TreeTraverser:
345
343
case _ : InferredTypeTree => false
346
344
case _ : TypeTree => containsCap(expandAliases(tree.tpe))
347
345
case _ => false
348
- val mapRoots = rhs match
346
+ val mapRoots = tree. rhs match
349
347
case possiblyTypedClosureDef(ddef) if ! mentionsCap(rhsOfEtaExpansion(ddef)) =>
350
348
ddef.symbol.setNestingLevel(ctx.owner.nestingLevel + 1 )
351
349
// Toplevel closures bound to vals count as level owners
0 commit comments