summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-09-10 00:52:10 +0200
committerJason Zaugg <jzaugg@gmail.com>2013-09-10 00:52:10 +0200
commit6e585e1261552c29a9d463057fd7977072bb824b (patch)
tree29aa9c9a4c12e87d32199c0fd7f673a46a978c18
parent288b12e48af3222134f3985b65e40f202af81df2 (diff)
downloadscala-6e585e1261552c29a9d463057fd7977072bb824b.tar.gz
scala-6e585e1261552c29a9d463057fd7977072bb824b.tar.bz2
scala-6e585e1261552c29a9d463057fd7977072bb824b.zip
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.
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala b/src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala
index c354f8707b..3a188c0044 100644
--- a/src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala
@@ -376,7 +376,7 @@ abstract class TreeCheckers extends Analyzer {
val treeInfo = infoOf(tree)
val treeTpe = typeOf(tree)
- def isOk(sym: Symbol) = treeSym hasTransOwner sym.safeOwner
+ def isOk(sym: Symbol) = treeSym hasTransOwner sym.enclosingSuchThat(x => !x.isTypeParameterOrSkolem) // account for higher order type params
def isEligible(sym: Symbol) = (sym ne NoSymbol) && (
sym.isTypeParameter
|| sym.isLocal