summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/Types.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-10-28 12:08:37 -0700
committerPaul Phillips <paulp@improving.org>2012-11-09 16:44:53 -0700
commit632daed4ed846f773bb9a730c0721d21f3fa53c0 (patch)
treecdcee82e8f75e686442ccf1abdcfce5f7c68ae18 /src/reflect/scala/reflect/internal/Types.scala
parent2a1d0202f1b7f59f6312263b7a80ea750657296d (diff)
downloadscala-632daed4ed846f773bb9a730c0721d21f3fa53c0.tar.gz
scala-632daed4ed846f773bb9a730c0721d21f3fa53c0.tar.bz2
scala-632daed4ed846f773bb9a730c0721d21f3fa53c0.zip
Minor tweaks in Types/Scopes.
All methods to do with handling imports more uniformly and early filtering of symbols which cannot be imported. Also make TypeBounds treat a Wildcard in lower or upper bounds as an empty bound, so we don't see all these method signatures like def f[T >: ? <: ?] because that's not helpful.
Diffstat (limited to 'src/reflect/scala/reflect/internal/Types.scala')
-rw-r--r--src/reflect/scala/reflect/internal/Types.scala12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/reflect/scala/reflect/internal/Types.scala b/src/reflect/scala/reflect/internal/Types.scala
index 91a64def83..3104c1e74e 100644
--- a/src/reflect/scala/reflect/internal/Types.scala
+++ b/src/reflect/scala/reflect/internal/Types.scala
@@ -1516,8 +1516,8 @@ trait Types extends api.Types { self: SymbolTable =>
}
private def lowerString = if (emptyLowerBound) "" else " >: " + lo
private def upperString = if (emptyUpperBound) "" else " <: " + hi
- private def emptyLowerBound = typeIsNothing(lo)
- private def emptyUpperBound = typeIsAny(hi)
+ private def emptyLowerBound = typeIsNothing(lo) || lo.isWildcard
+ private def emptyUpperBound = typeIsAny(hi) || hi.isWildcard
def isEmptyBounds = emptyLowerBound && emptyUpperBound
// override def isNullable: Boolean = NullClass.tpe <:< lo;
@@ -7240,8 +7240,12 @@ trait Types extends api.Types { self: SymbolTable =>
/** Members of the given class, other than those inherited
* from Any or AnyRef.
*/
- def nonTrivialMembers(clazz: Symbol): Iterable[Symbol] =
- clazz.info.members filterNot (sym => sym.owner == ObjectClass || sym.owner == AnyClass)
+ def nonTrivialMembers(clazz: Symbol): Scope = clazz.info.members filterNot isUniversalMember
+
+ /** Members which can be imported into other scopes.
+ */
+ def importableMembers(clazz: Symbol): Scope = importableMembers(clazz.info)
+ def importableMembers(pre: Type): Scope = pre.members filter isImportable
def objToAny(tp: Type): Type =
if (!phase.erasedTypes && tp.typeSymbol == ObjectClass) AnyClass.tpe