diff options
author | Paul Phillips <paulp@improving.org> | 2011-07-29 21:42:25 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-07-29 21:42:25 +0000 |
commit | 9bdc1a0b6deb5bf8a056af0253b25fcf5d92c7f7 (patch) | |
tree | 9625ceb6358baf68b84eae5e1dc6fa74d267e425 /src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | |
parent | 902c61f397069b9918f1854b8bf95a50b52c08fc (diff) | |
download | scala-9bdc1a0b6deb5bf8a056af0253b25fcf5d92c7f7.tar.gz scala-9bdc1a0b6deb5bf8a056af0253b25fcf5d92c7f7.tar.bz2 scala-9bdc1a0b6deb5bf8a056af0253b25fcf5d92c7f7.zip |
Following up on things that -Xlint told me, som...
Following up on things that -Xlint told me, sometimes because Mr. Linty
was being sensible and other times just to shut him up so we can hear
better in the future.
- made xml.Equality public because it occurs in public method signatures
- made some actor classes with inaccessible-unoverridable methods final
- eliminated a bunch of "dead code follows" warnings by deleting the
dead code which really did follow - improved the reliability of warnings
about inaccessible types
For the changes in actors, review by phaller.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/RefChecks.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala index 8e1ee97387..37b5870ac5 100644 --- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala +++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala @@ -1221,22 +1221,27 @@ abstract class RefChecks extends InfoTransform with reflect.internal.transform.R otherSym.decodedName, cannot, memberSym.decodedName) ) } + /** Warn about situations where a method signature will include a type which * has more restrictive access than the method itself. */ private def checkAccessibilityOfReferencedTypes(tree: Tree) { val member = tree.symbol - // types of the value parameters - member.paramss.flatten foreach { p => - val normalized = p.tpe.normalize - if ((normalized ne p.tpe) && lessAccessibleSymsInType(normalized, member).isEmpty) () - else lessAccessibleSymsInType(p.tpe, member) foreach (sym => warnLessAccessible(sym, member)) + def checkAccessibilityOfType(tpe: Type) { + val inaccessible = lessAccessibleSymsInType(tpe, member) + // if the unnormalized type is accessible, that's good enough + if (inaccessible.isEmpty) () + // or if the normalized type is, that's good too + else if ((tpe ne tpe.normalize) && lessAccessibleSymsInType(tpe.normalize, member).isEmpty) () + // otherwise warn about the inaccessible syms in the unnormalized type + else inaccessible foreach (sym => warnLessAccessible(sym, member)) } + + // types of the value parameters + member.paramss.flatten foreach (p => checkAccessibilityOfType(p.tpe)) // upper bounds of type parameters - member.typeParams.map(_.info.bounds.hi.widen) foreach { tp => - lessAccessibleSymsInType(tp, member) foreach (sym => warnLessAccessible(sym, member)) - } + member.typeParams.map(_.info.bounds.hi.widen) foreach checkAccessibilityOfType } /** Check that a deprecated val or def does not override a |