Skip to content

Commit 6e585e1

Browse files
committed
Avoid spurious tree checker warning for higher order type params
TreeCheckers is trying to find references to a) local types (term owned) or b) to type parameters from a trees that are not ancestors of the a) term or b) type param owner. Such references are ill-scoped and suggest that a tree has been transplanted without proper substitution. However, this check failed to account for higher order type parameters, as seen in the spurious warning emitted by: test/pending/pos/treecheckers/c5.scala.
1 parent 288b12e commit 6e585e1

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ abstract class TreeCheckers extends Analyzer {
376376
val treeInfo = infoOf(tree)
377377
val treeTpe = typeOf(tree)
378378

379-
def isOk(sym: Symbol) = treeSym hasTransOwner sym.safeOwner
379+
def isOk(sym: Symbol) = treeSym hasTransOwner sym.enclosingSuchThat(x => !x.isTypeParameterOrSkolem) // account for higher order type params
380380
def isEligible(sym: Symbol) = (sym ne NoSymbol) && (
381381
sym.isTypeParameter
382382
|| sym.isLocal

0 commit comments

Comments
 (0)