summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2007-01-30 15:40:23 +0000
committerMartin Odersky <odersky@gmail.com>2007-01-30 15:40:23 +0000
commit2aee8120ee96800ba607e12079b4d3adb639be5c (patch)
tree4ef6a4659e812ab4ac2cfd8f7aedfc0416af13ff /src/compiler/scala/tools/nsc/typechecker/Typers.scala
parent4a64ac9c7b94b249087cd25712dfb547013f5ed4 (diff)
downloadscala-2aee8120ee96800ba607e12079b4d3adb639be5c.tar.gz
scala-2aee8120ee96800ba607e12079b4d3adb639be5c.tar.bz2
scala-2aee8120ee96800ba607e12079b4d3adb639be5c.zip
added subClasses method to symbols.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Typers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index a90472d56b..e13bc27aff 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -774,9 +774,9 @@ trait Typers requires Analyzer {
def validateParentClass(parent: Tree, superclazz: Symbol): unit = {
if (!parent.tpe.isError) {
val psym = parent.tpe.symbol.initialize
- if (!psym.isClass)
+ if (!psym.isClass) {
error(parent.pos, "class type expected")
- else if (psym != superclazz)
+ } else if (psym != superclazz) {
if (psym.isTrait) {
val ps = psym.info.parents
if (!ps.isEmpty && !superclazz.isSubClass(ps.head.symbol))
@@ -788,11 +788,14 @@ trait Typers requires Analyzer {
}else {
error(parent.pos, ""+psym+" needs to be a trait be mixed in")
}
- else if (psym hasFlag FINAL)
+ } else if (psym hasFlag FINAL) {
error(parent.pos, "illegal inheritance from final class")
- else if (!phase.erasedTypes && psym.isSealed &&
- context.unit.source.file != psym.sourceFile)
- error(parent.pos, "illegal inheritance from sealed "+psym)
+ } else if (psym.isSealed && !phase.erasedTypes) {
+ if (context.unit.source.file != psym.sourceFile)
+ error(parent.pos, "illegal inheritance from sealed "+psym)
+ else
+ psym addSubClass context.owner
+ }
if (!(selfType <:< parent.tpe.typeOfThis) && !phase.erasedTypes) {
//Console.println(context.owner);//DEBUG
//Console.println(context.owner.unsafeTypeParams);//DEBUG