summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-03-06 05:25:38 +0000
committerPaul Phillips <paulp@improving.org>2011-03-06 05:25:38 +0000
commita3d2d3b1ceaa7090a993b4a4f0ea53f4fe343e08 (patch)
treedef2b37fb66bd1677efdfc764639f5a9881c77a6 /src
parentbcb42e12dcb30e9a3416910dae0dc3447c3c3748 (diff)
downloadscala-a3d2d3b1ceaa7090a993b4a4f0ea53f4fe343e08.tar.gz
scala-a3d2d3b1ceaa7090a993b4a4f0ea53f4fe343e08.tar.bz2
scala-a3d2d3b1ceaa7090a993b4a4f0ea53f4fe343e08.zip
Some naming clarifications and a test rewrite.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/symtab/Symbols.scala6
-rw-r--r--src/compiler/scala/tools/nsc/transform/Erasure.scala6
2 files changed, 9 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Symbols.scala b/src/compiler/scala/tools/nsc/symtab/Symbols.scala
index e6b2c1e450..0240e80816 100644
--- a/src/compiler/scala/tools/nsc/symtab/Symbols.scala
+++ b/src/compiler/scala/tools/nsc/symtab/Symbols.scala
@@ -355,6 +355,7 @@ trait Symbols extends reflect.generic.Symbols { self: SymbolTable =>
final def isErroneous = isError || isInitialized && tpe.isErroneous
override final def isTrait: Boolean = isClass && hasFlag(TRAIT | notDEFERRED) // A virtual class becomes a trait (part of DEVIRTUALIZE)
final def isTypeParameterOrSkolem = isType && hasFlag(PARAM)
+ final def isHigherOrderTypeParameter = owner.isTypeParameterOrSkolem
final def isTypeSkolem = isSkolem && hasFlag(PARAM)
// a type symbol bound by an existential type, for instance the T in
// List[T] forSome { type T }
@@ -607,6 +608,11 @@ trait Symbols extends reflect.generic.Symbols { self: SymbolTable =>
}
def ownerChain: List[Symbol] = this :: owner.ownerChain
+ def enclClassChain: List[Symbol] = {
+ if (this eq NoSymbol) Nil
+ else if (isClass && !isPackageClass) this :: owner.enclClassChain
+ else owner.enclClassChain
+ }
def ownersIterator: Iterator[Symbol] = new Iterator[Symbol] {
private var current = Symbol.this
diff --git a/src/compiler/scala/tools/nsc/transform/Erasure.scala b/src/compiler/scala/tools/nsc/transform/Erasure.scala
index a63d057bf8..a6c862c19d 100644
--- a/src/compiler/scala/tools/nsc/transform/Erasure.scala
+++ b/src/compiler/scala/tools/nsc/transform/Erasure.scala
@@ -242,16 +242,16 @@ abstract class Erasure extends AddInterfaces
case tp => tp :: Nil
}) map squashBoxed
- def jsig2(toplevel: Boolean, tparams: List[Symbol], tp0: Type): String = {
+ def jsig2(toplevel: Boolean, existentiallyBound: List[Symbol], tp0: Type): String = {
val tp = tp0.dealias
tp match {
case st: SubType =>
- jsig2(toplevel, tparams, st.supertype)
+ jsig2(toplevel, existentiallyBound, st.supertype)
case ExistentialType(tparams, tpe) =>
jsig2(toplevel, tparams, tpe)
case TypeRef(pre, sym, args) =>
def argSig(tp: Type) =
- if (tparams contains tp.typeSymbol) {
+ if (existentiallyBound contains tp.typeSymbol) {
val bounds = tp.typeSymbol.info.bounds
if (AnyRefClass.tpe <:< bounds.hi) {
if (bounds.lo <:< NullClass.tpe) "*"